<?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>189277</bug_id>
          
          <creation_ts>2018-09-04 15:39:40 -0700</creation_ts>
          <short_desc>[WebAuthN] Polish AuthenticatorManager and rename it to AuthenticatorCoordinator</short_desc>
          <delta_ts>2018-09-11 10:56:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alex.gaynor</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1456482</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-09-04 15:39:40 -0700</bug_when>
    <thetext>This task aims to polish AuthenticatorManager such that:
1) it is no longer a singleton. Instead, it will live with Page. It was a singleton simply because static PublicKeyCredential::isUserVerifyingPlatformAuthenticatorAvailable() have to access it. However, the issue can be solved by adding an attribute [CallWith=Document]. Therefore, there is no such need. Also, the singleton is illy implemented as it also owns a single IPC proxy to UI Process which means different web pages will talk to the same web page proxy. Anyway, making it live with Page should solve the problem.
2) Since we are now planning to support external authenticators, the manager of all authenticators will then have to live in UI Process which makes this AuthenticatorManager obsolete. Instead, rename it to AuthenticatorCoordinator.
3) Rename CredentialsMessenger to AuthenticatorCoordinatorClient to tight it to WebAuthN. Also, simplify the message reply model as PublicKeyCredentialCreationOptions/PublicKeyCredentialRequestOptions =&gt; ExceptionData/PublicKeyCredential for makeCredential/getAssertion operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456483</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-04 15:40:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/44115936&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457945</commentid>
    <comment_count>2</comment_count>
      <attachid>349266</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-09-08 17:09:32 -0700</bug_when>
    <thetext>Created attachment 349266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457975</commentid>
    <comment_count>3</comment_count>
      <attachid>349274</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-09-08 20:21:10 -0700</bug_when>
    <thetext>Created attachment 349274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458159</commentid>
    <comment_count>4</comment_count>
      <attachid>349318</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-09-10 11:11:33 -0700</bug_when>
    <thetext>Created attachment 349318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458179</commentid>
    <comment_count>5</comment_count>
      <attachid>349318</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-10 12:35:41 -0700</bug_when>
    <thetext>Comment on attachment 349318
Patch

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

r=me with suggestions.

&gt; Source/WebCore/Modules/webauthn/PublicKeyCredentialCreationOptions.h:98
&gt; +    encoder.encodeFixedLengthData(reinterpret_cast&lt;const uint8_t*&gt;(user.id.data()), user.id.length(), 1);

Why do we need the reinterpret_cast here?

Also, it seems like this could construct a temporary IPC::DataReference and encode that.

&gt; Source/WebCore/page/Page.h:910
&gt; +    std::unique_ptr&lt;AuthenticatorCoordinator&gt; m_authenticatorCoordinator;

Could this be a UniqueRef instead of a unique_ptr? It seems it cannot be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458221</commentid>
    <comment_count>6</comment_count>
      <attachid>349318</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-09-10 14:06:58 -0700</bug_when>
    <thetext>Comment on attachment 349318
Patch

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

Thanks Chris for r+ this patch.

&gt;&gt; Source/WebCore/Modules/webauthn/PublicKeyCredentialCreationOptions.h:98
&gt;&gt; +    encoder.encodeFixedLengthData(reinterpret_cast&lt;const uint8_t*&gt;(user.id.data()), user.id.length(), 1);
&gt; 
&gt; Why do we need the reinterpret_cast here?
&gt; 
&gt; Also, it seems like this could construct a temporary IPC::DataReference and encode that.

It doesn&apos;t need to. IPC::DataReference is in WebKit so I could&apos;t use it in WebCore.

&gt;&gt; Source/WebCore/page/Page.h:910
&gt;&gt; +    std::unique_ptr&lt;AuthenticatorCoordinator&gt; m_authenticatorCoordinator;
&gt; 
&gt; Could this be a UniqueRef instead of a unique_ptr? It seems it cannot be null.

Sure, I was not aware of UniqueRef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458261</commentid>
    <comment_count>7</comment_count>
      <attachid>349336</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-09-10 15:29:20 -0700</bug_when>
    <thetext>Created attachment 349336
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458289</commentid>
    <comment_count>8</comment_count>
      <attachid>349347</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-09-10 16:00:01 -0700</bug_when>
    <thetext>Created attachment 349347
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458293</commentid>
    <comment_count>9</comment_count>
      <attachid>349347</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-09-10 16:01:42 -0700</bug_when>
    <thetext>Comment on attachment 349347
Patch for landing

Added #include &lt;JavaScriptCore/HeapInlines.h&gt; to VRStageParameters.cpp to resolve the Win EWS bots linker error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458422</commentid>
    <comment_count>10</comment_count>
      <attachid>349347</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-11 00:59:28 -0700</bug_when>
    <thetext>Comment on attachment 349347
Patch for landing

Clearing flags on attachment: 349347

Committed r235888: &lt;https://trac.webkit.org/changeset/235888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458520</commentid>
    <comment_count>11</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-09-11 10:56:47 -0700</bug_when>
    <thetext>Build fix:
Committed r235900: &lt;https://trac.webkit.org/changeset/235900&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349266</attachid>
            <date>2018-09-08 17:09:32 -0700</date>
            <delta_ts>2018-09-08 20:21:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189277-20180908170931.patch</filename>
            <type>text/plain</type>
            <size>278044</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg1Njc4NjhiZTAyNmRm
MWU5YjMyNWU4YzVmM2U3MThkOTk0ZmU2ZC4uNDMzMTA4NzA0YzViZGY1ODVkMmJmZmE0ZmQxNDRl
ODQwYjU1OGY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxOC0wOS0wOCAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gUG9s
aXNoIEF1dGhlbnRpY2F0b3JNYW5hZ2VyIGFuZCByZW5hbWUgaXQgdG8gQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODkyNzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTE1OTM2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWltcyB0byBw
b2xpc2ggQXV0aGVudGljYXRvck1hbmFnZXIgc3VjaCB0aGF0OgorICAgICAgICAxKSBJdCBpcyBu
byBsb25nZXIgYSBzaW5nbGV0b24uIEluc3RlYWQsIGl0IHdpbGwgbGl2ZSB3aXRoIFBhZ2UuIEl0
IHdhcyBhIHNpbmdsZXRvbiBzaW1wbHkgYmVjYXVzZSBzdGF0aWMKKyAgICAgICAgUHVibGljS2V5
Q3JlZGVudGlhbDo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxl
KCkgaGF2ZSB0byBhY2Nlc3MgaXQuIEhvd2V2ZXIsIHRoaXMgcmVxdWVzdAorICAgICAgICBjYW4g
YmUgZnVsZmlsbGVkIGJ5IGFkZGluZyBhbiBhdHRyaWJ1dGUgW0NhbGxXaXRoPURvY3VtZW50XSB0
byB0aGUgSURMIGRlZmluYXRpb24uIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KKyAgICAgICAgc3Vj
aCBuZWVkLiBBbHNvLCB0aGUgc2luZ2xldG9uIGlzIGlsbHkgaW1wbGVtZW50ZWQgYXMgaXQgb3du
cyBhIHNpbmdsZSBJUEMgcHJveHkgdG8gVUkgUHJvY2VzcyB3aGljaCBtZWFucworICAgICAgICBk
aWZmZXJlbnQgd2ViIHBhZ2VzIHdpbGwgdGFsayB0byB0aGUgc2FtZSB3ZWIgcGFnZSBwcm94eS4g
QW55d2F5LCBtYWtpbmcgaXQgbGl2ZSB3aXRoIFBhZ2Ugc2hvdWxkIGZpeCBldmVyeXRoaW5nLgor
ICAgICAgICAyKSBTaW5jZSB3ZSBhcmUgbm93IHBsYW5uaW5nIHRvIHN1cHBvcnQgZXh0ZXJuYWwg
YXV0aGVudGljYXRvcnMsIHRoZSBtYW5hZ2VyIG9mIGFsbCBhdXRoZW50aWNhdG9ycyB3aWxsIHRo
ZW4KKyAgICAgICAgaGF2ZSB0byBsaXZlIGluIFVJIFByb2Nlc3Mgd2hpY2ggbWFrZXMgdGhpcyBB
dXRoZW50aWNhdG9yTWFuYWdlciBvYnNvbGV0ZS4gSW5zdGVhZCwgcmVuYW1lIGl0IHRvIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci4KKyAgICAgICAgMykgUmVuYW1lIENyZWRlbnRpYWxzTWVzc2Vu
Z2VyIHRvIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCB0byB0aWdodCBpdCB0byBXZWJB
dXRoTi4gQWxzbywgc2ltcGxpZnkgdGhlCisgICAgICAgIG1lc3NhZ2UgcmVwbHkgbW9kZWwgYXMg
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy9QdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMgPT4KKyAgICAgICAgRXhjZXB0aW9uRGF0YS9QdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSBmb3IgbWFrZUNyZWRlbnRpYWwvZ2V0QXNzZXJ0aW9uIG9wZXJhdGlvbnMuCisgICAgICAg
IDQpIFJlc3RyaWN0IG9uZSByZXF1ZXN0IHBlciB0aW1lLCBpLmUuIG1ha2VDcmVkZW50aWFsL2dl
dEFzc2VydGlvbiBmb3IgYSBzaW5nbGUgcGFnZS4KKyAgICAgICAgNSkgVW5pZnlpbmcgbWFrZUNy
ZWRlbnRpYWxSZXBseS9nZXRBc3NlcnRpb25SZXBseS9leGNlcHRpb25SZXBseSBpbnRvIHJlcXVl
c3RSZXBseSBmb3IgSVBDLiBDb3JyZXNwb25kaW5nbHksCisgICAgICAgIHVuaWZ5IGNhbGxiYWNr
IGFuZCBleGNlcHRpb25DYWxsYmFjayBpbnRvIGNhbGxiYWNrIGFzIHdlbGwgZm9yIExvY2FsQXV0
aGVudGljYXRvci4KKyAgICAgICAgNikgRW5oYW5jZSBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zIGVuY29kaW5nL2RlY29kaW5nIHdpdGggZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEvZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxzQ29udGFpbmVyOjppc0NyZWF0ZSk6CisgICAgICAgICog
TW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oOgorICAg
ICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNzZW5nZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3Jl
ZGVudGlhbHNNZXNzZW5nZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGlj
YXRvckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlOjp1c2VySGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjphdHRlc3RhdGlvbk9iamVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw6OnByb2R1Y2VD
bGllbnREYXRhSnNvbik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JJbnRlcm5hbDo6cHJvZHVjZUNsaWVudERhdGFKc29uSGFzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6aW5pdFRpbWVvdXRUaW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6ZGlkVGlt
ZW91dFRpbWVyRmlyZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5
aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5oLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQ6On5BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OjpyZXF1ZXN0UmVwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ojppc1VzZXJWZXJpZnlpbmdQ
bGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OnNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OmFk
ZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJv
eHkuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVz
cG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXV0aGVu
dGljYXRvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25z
ZTo6Y2xpZW50RGF0YUpTT04gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vUHVi
bGljS2V5Q3JlZGVudGlhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbDo6dHJ5
Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWw6OlB1YmxpY0tl
eUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbDo6aXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oOgorICAgICAgICAoV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0
YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGE6
OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRl
bnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRp
b24pOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YXV0aGVudGljYXRvckNvb3JkaW5h
dG9yIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjptb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6OnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OnNldEFzc2VydGlvblJldHVy
bkJ1bmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVz
c2VuZ2VyLmguCisgICAgICAgICogdGVzdGluZy9Nb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmlkbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxz
TWVzc2VuZ2VyLmlkbC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdl
ci5jcHA6IFJlbW92ZWQuCisKIDIwMTgtMDktMDQgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFBvc3QgcmV2aWV3IFdlaW5pZyBmaXgtdXBzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY5
MGYzOWQyY2ZjNjAwODhiMGU1YzA3MDI3OTFmZTJkNDM2OWFlM2MuLjVmMDEwZTk2NDlhMjBhNGUy
ZDMwNDgxZjg0YTlkYmU5MDVkNWQyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTgt
MDktMDggIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2Vi
QXV0aE5dIFBvbGlzaCBBdXRoZW50aWNhdG9yTWFuYWdlciBhbmQgcmVuYW1lIGl0IHRvIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg5Mjc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDExNTkzNj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNz
ZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHk6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpyZXF1ZXN0UmVw
bHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVu
dGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eS5tZXNzYWdlcy5pbjogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Ny
ZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkubWVzc2FnZXMu
aW4uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFs
c01lc3Nlbmdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
On5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3Jt
QXV0aGVudGljYXRvckF2YWlsYWJsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01l
c3Nlbmdlci5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2Vu
Z2VyLm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bV9jcHVMaW1pdCk6CisgICAgICAgIChXZWJLaXQ6Om1fY3Jl
ZGVudGlhbHNNZXNzZW5nZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisKIDIwMTgtMDktMDQgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFBvc3QgcmV2aWV3IFdlaW5pZyBmaXgtdXBzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCA1Yjc1M2Q4ZmRlYjc3M2JkNWVjMGJmY2Y1Yjc5NjUzZGZhNmY3MGE3
Li44NjZmMGUzNzBkOGU3NGU2ZjUxNjEyMWNkODMzMDQ3NTY2NGE1ODU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTk2MSw5ICs5NjEsOSBAQCBKU19CSU5ESU5HX0lETFMgPSBc
CiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL0ludGVybmFscy5pZGwgXAogICAgICQoV2ViQ29yZSkv
dGVzdGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01l
bW9yeUluZm8uaWRsIFwKKyAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5p
ZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlk
bCBcCi0gICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5pZGwg
XAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXkuaWRsIFwKICAgICAkKFdl
YkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1lbnRBZGRyZXNzLmlkbCBcCiAgICAgJChXZWJDb3JlKS90
ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50
aWFsc0NvbnRhaW5lci5jcHAKaW5kZXggMTQ3MDdhZTExYWVkYWE2NGYwZWJjNzJkOGIyM2IyMTY5
Zjg5MjhlMy4uZjQ5NDFkZWY3Mjk3OTczMmJmMGU1YzhiNmU1MTUzYzgzM2Y0OGEzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50
aWFsc0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFs
bWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAi
SlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMsNyArNjQsNyBAQCB2
b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYg
b3B0aW9ucywgQ3JlZGVudGlhbFBybwogewogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50
cyBodHRwczovL3d3dy53My5vcmcvVFIvY3JlZGVudGlhbC1tYW5hZ2VtZW50LTEvI2FsZ29yaXRo
bS1yZXF1ZXN0IGFzIG9mIDQgQXVndXN0IDIwMTcKICAgICAvLyB3aXRoIGVuaGFuY2VtZW50IGZy
b20gMTQgTm92ZW1iZXIgMjAxNyBFZGl0b3IncyBEcmFmdC4KLSAgICBpZiAoIW1fZG9jdW1lbnQp
IHsKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1fZG9jdW1lbnQtPnBhZ2UoKSkgewogICAgICAg
ICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTgyLDggKzgzLDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRh
aW5lcjo6Z2V0KENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIG9wdGlvbnMsIENyZWRlbnRpYWxQ
cm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJl
IGRpc3BhdGNoZWQvaGFuZGxlZCBpbiAoV2ViKUNyZWRlbnRpYWxNZXNzZW5nZXIsIHdoaWNoIGV4
Y2hhbmdlcyBtZXNzYWdlcyBiZXR3ZWVuIFdlYlByb2Nlc3MgYW5kIFVJUHJvY2Vzcy4KLSAgICBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3Vy
Y2UobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUo
KSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RGTW92ZShvcHRpb25zLnNp
Z25hbCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yKCkuZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UobV9kb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUoKSwgZG9lc0hhdmVT
YW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1v
dmUocHJvbWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpzdG9yZShjb25z
dCBCYXNpY0NyZWRlbnRpYWwmLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpCkBAIC0xMTIs
OCArMTEyLDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6aXNDcmVhdGUoQ3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyYmIG9wdGlvbnMsIENyZWRlbnQKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQvaGFuZGxlZCBpbiAo
V2ViKUNyZWRlbnRpYWxNZXNzZW5nZXIsIHdoaWNoIGV4Y2hhbmdlcyBtZXNzYWdlcyBiZXR3ZWVu
IFdlYlByb2Nlc3MgYW5kIFVJUHJvY2Vzcy4KLSAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2lu
Z2xldG9uKCkuY3JlYXRlKG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIG9wdGlvbnMucHVi
bGljS2V5LnZhbHVlKCksIGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCksIFdURk1v
dmUob3B0aW9ucy5zaWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2RvY3VtZW50LT5w
YWdlKCktPmF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpLmNyZWF0ZShtX2RvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpLCBkb2VzSGF2ZVNhbWVPcmln
aW5Bc0l0c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9wdGlvbnMuc2lnbmFsKSwgV1RGTW92ZShwcm9t
aXNlKSk7CiB9CiAKIHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6OnByZXZlbnRTaWxlbnRBY2Nl
c3MoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHND
b250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
Q3JlZGVudGlhbHNDb250YWluZXIuaAppbmRleCAyZDViMzhiNTY3MTdmM2RlOGI5MDE0MWM3ODU2
NjFmZWUwNmZlMTc0Li40ZTFiYjRlNWJlNWU1MjU1YTM3Nzg2ZjhlZjY5YjhhNzdkYWY1M2M3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Ny
ZWRlbnRpYWxzQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIu
aCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNz
ZW5nZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9D
cmVkZW50aWFsc01lc3Nlbmdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0
NmJkMDc0YWY0N2U4OWNjOWNjNzViNDFlYWM2MmRhMjY0NjJiZmMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVk
ZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJDcmVkZW50aWFsc01lc3Nlbmdlci5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgQ3JlZGVudGlhbHNNZXNzZW5nZXJJbnRl
cm5hbCB7Ci0KLWNvbnN0IHVpbnQ2NF90IG1heE1lc3NhZ2VJZCA9IDB4RkZGRkZGRkZGRkZGRkY7
IC8vIDU2IGJpdHMKLWNvbnN0IHNpemVfdCBjYWxsQmFja0NsYXNzaWZpZXJPZmZzZXQgPSA1NjsK
LQotfQotCi12b2lkIENyZWRlbnRpYWxzTWVzc2VuZ2VyOjpleGNlcHRpb25SZXBseSh1aW50NjRf
dCBtZXNzYWdlSWQsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikKLXsKLSAgICB1c2lu
ZyBuYW1lc3BhY2UgQ3JlZGVudGlhbHNNZXNzZW5nZXJJbnRlcm5hbDsKLQotICAgIGlmICghKG1l
c3NhZ2VJZCA+PiBjYWxsQmFja0NsYXNzaWZpZXJPZmZzZXQgXiBDYWxsQmFja0NsYXNzaWZpZXI6
OkNyZWF0aW9uKSkgewotICAgICAgICBhdXRvIGhhbmRsZXIgPSB0YWtlQ3JlYXRpb25Db21wbGV0
aW9uSGFuZGxlcihtZXNzYWdlSWQpOwotICAgICAgICBoYW5kbGVyKGV4Y2VwdGlvbi50b0V4Y2Vw
dGlvbigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIShtZXNzYWdlSWQgPj4g
Y2FsbEJhY2tDbGFzc2lmaWVyT2Zmc2V0IF4gQ2FsbEJhY2tDbGFzc2lmaWVyOjpSZXF1ZXN0KSkg
ewotICAgICAgICBhdXRvIGhhbmRsZXIgPSB0YWtlUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKG1l
c3NhZ2VJZCk7Ci0gICAgICAgIGhhbmRsZXIoZXhjZXB0aW9uLnRvRXhjZXB0aW9uKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotfQotCi11aW50NjRfdCBDcmVkZW50aWFsc01lc3Nlbmdlcjo6
YWRkQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcihDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYg
aGFuZGxlcikKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgQ3JlZGVudGlhbHNNZXNzZW5nZXJJbnRl
cm5hbDsKLQotICAgIHVpbnQ2NF90IG1lc3NhZ2VJZCA9IG1fYWNjdW11bGF0ZWRNZXNzYWdlSWQr
KzsKLSAgICBBU1NFUlQobWVzc2FnZUlkIDw9IG1heE1lc3NhZ2VJZCk7Ci0gICAgbWVzc2FnZUlk
ID0gbWVzc2FnZUlkIHwgQ2FsbEJhY2tDbGFzc2lmaWVyOjpDcmVhdGlvbiA8PCBjYWxsQmFja0Ns
YXNzaWZpZXJPZmZzZXQ7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdDcmVhdGlvbkNv
bXBsZXRpb25IYW5kbGVycy5hZGQobWVzc2FnZUlkLCBXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJldHVy
biBtZXNzYWdlSWQ7Ci19Ci0KLUNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgQ3JlZGVudGlhbHNN
ZXNzZW5nZXI6OnRha2VDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IG1lc3NhZ2VJ
ZCkKLXsKLSAgICByZXR1cm4gbV9wZW5kaW5nQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcnMudGFr
ZShtZXNzYWdlSWQpOwotfQotCi11aW50NjRfdCBDcmVkZW50aWFsc01lc3Nlbmdlcjo6YWRkUmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyKFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIp
Ci17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIENyZWRlbnRpYWxzTWVzc2VuZ2VySW50ZXJuYWw7Ci0K
LSAgICB1aW50NjRfdCBtZXNzYWdlSWQgPSBtX2FjY3VtdWxhdGVkTWVzc2FnZUlkKys7Ci0gICAg
QVNTRVJUKG1lc3NhZ2VJZCA8PSBtYXhNZXNzYWdlSWQpOwotICAgIG1lc3NhZ2VJZCA9IG1lc3Nh
Z2VJZCB8IENhbGxCYWNrQ2xhc3NpZmllcjo6UmVxdWVzdCA8PCBjYWxsQmFja0NsYXNzaWZpZXJP
ZmZzZXQ7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXJzLmFkZChtZXNzYWdlSWQsIFdURk1vdmUoaGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmV0dXJuIG1lc3NhZ2VJ
ZDsKLX0KLQotUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyIENyZWRlbnRpYWxzTWVzc2VuZ2VyOjp0
YWtlUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IG1lc3NhZ2VJZCkKLXsKLSAgICBy
ZXR1cm4gbV9wZW5kaW5nUmVxdWVzdENvbXBsZXRpb25IYW5kbGVycy50YWtlKG1lc3NhZ2VJZCk7
Ci19Ci0KLXVpbnQ2NF90IENyZWRlbnRpYWxzTWVzc2VuZ2VyOjphZGRRdWVyeUNvbXBsZXRpb25I
YW5kbGVyKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQotewotICAgIHVzaW5nIG5h
bWVzcGFjZSBDcmVkZW50aWFsc01lc3NlbmdlckludGVybmFsOwotCi0gICAgdWludDY0X3QgbWVz
c2FnZUlkID0gbV9hY2N1bXVsYXRlZE1lc3NhZ2VJZCsrOwotICAgIEFTU0VSVChtZXNzYWdlSWQg
PCBtYXhNZXNzYWdlSWQpOwotICAgIG1lc3NhZ2VJZCA9IG1lc3NhZ2VJZCB8IENhbGxCYWNrQ2xh
c3NpZmllcjo6UXVlcnkgPDwgY2FsbEJhY2tDbGFzc2lmaWVyT2Zmc2V0OwotICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMuYWRkKG1lc3NhZ2VJZCwg
V1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKLSAgICByZXR1cm4gbWVzc2FnZUlkOwotfQotCi1RdWVyeUNvbXBsZXRp
b25IYW5kbGVyIENyZWRlbnRpYWxzTWVzc2VuZ2VyOjp0YWtlUXVlcnlDb21wbGV0aW9uSGFuZGxl
cih1aW50NjRfdCBtZXNzYWdlSWQpCi17Ci0gICAgcmV0dXJuIG1fcGVuZGluZ1F1ZXJ5Q29tcGxl
dGlvbkhhbmRsZXJzLnRha2UobWVzc2FnZUlkKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNN
ZXNzZW5nZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI4YWY5NWMxNmFiZmY5
Y2JlZWExNTgzNjY2YjA1OTU5YWJiZThlYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2Vt
ZW50L0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQot
I2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERlZmVycmVkUHJvbWlz
ZTsKLQotc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7Ci1zdHJ1Y3Qg
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwotCi1zdHJ1Y3QgQ3JlYXRpb25SZXR1
cm5CdW5kbGUgewotICAgIENyZWF0aW9uUmV0dXJuQnVuZGxlKFJlZjxBcnJheUJ1ZmZlcj4mJiBj
cmVkZW50aWFsSWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkKLSAgICAg
ICAgOiBjcmVkZW50aWFsSWQoV1RGTW92ZShjcmVkZW50aWFsSWQpKQotICAgICAgICAsIGF0dGVz
dGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpKQotICAgIHsKLSAgICB9Ci0K
LSAgICBSZWY8QXJyYXlCdWZmZXI+IGNyZWRlbnRpYWxJZDsKLSAgICBSZWY8QXJyYXlCdWZmZXI+
IGF0dGVzdGF0aW9uT2JqZWN0OwotfTsKLXN0cnVjdCBBc3NlcnRpb25SZXR1cm5CdW5kbGUgewot
ICAgIEFzc2VydGlvblJldHVybkJ1bmRsZShSZWY8QXJyYXlCdWZmZXI+JiYgY3JlZGVudGlhbElk
LCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4m
JiBzaWduYXR1cmUsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQotICAgICAgICA6IGNy
ZWRlbnRpYWxJZChXVEZNb3ZlKGNyZWRlbnRpYWxJZCkpCi0gICAgICAgICwgYXV0aGVudGljYXRv
ckRhdGEoV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCi0gICAgICAgICwgc2lnbmF0dXJlKFdU
Rk1vdmUoc2lnbmF0dXJlKSkKLSAgICAgICAgLCB1c2VySGFuZGxlKFdURk1vdmUodXNlckhhbmRs
ZSkpCi0gICAgewotICAgIH0KLQotICAgIFJlZjxBcnJheUJ1ZmZlcj4gY3JlZGVudGlhbElkOwot
ICAgIFJlZjxBcnJheUJ1ZmZlcj4gYXV0aGVudGljYXRvckRhdGE7Ci0gICAgUmVmPEFycmF5QnVm
ZmVyPiBzaWduYXR1cmU7Ci0gICAgUmVmPEFycmF5QnVmZmVyPiB1c2VySGFuZGxlOwotfTsKLQot
dXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8Q3JlYXRpb25SZXR1cm5CdW5kbGU+JiYpPjsKLXVzaW5nIFJlcXVlc3RDb21w
bGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8QXNzZXJ0
aW9uUmV0dXJuQnVuZGxlPiYmKT47Ci11c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47Ci0KLWNsYXNzIENyZWRlbnRpYWxzTWVzc2VuZ2Vy
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENyZWRlbnRpYWxzTWVzc2VuZ2VyPiB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3JlZGVudGlh
bHNNZXNzZW5nZXIpOwotcHVibGljOgotICAgIENyZWRlbnRpYWxzTWVzc2VuZ2VyKCkgPSBkZWZh
dWx0OwotCi0gICAgLy8gU2VuZGVycy4KLSAgICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRlbnRpYWwo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiwgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFu
ZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLQotICAg
IC8vIFJlY2VpdmVycy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4Y2VwdGlvblJlcGx5KHVp
bnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBtYWtlQ3JlZGVudGlhbFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25P
YmplY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXNzZXJ0aW9uUmVwbHkodWludDY0X3Qg
bWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBz
aWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRsZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVS
ZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgfkNyZWRlbnRpYWxzTWVzc2VuZ2VyKCkgPSBkZWZhdWx0OwotCi0gICAgV0VCQ09SRV9F
WFBPUlQgdWludDY0X3QgYWRkQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcihDcmVhdGlvbkNvbXBs
ZXRpb25IYW5kbGVyJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIENyZWF0aW9uQ29tcGxldGlvbkhh
bmRsZXIgdGFrZUNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIodWludDY0X3QpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHVpbnQ2NF90IGFkZFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVxdWVzdENvbXBsZXRpb25I
YW5kbGVyIHRha2VSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIodWludDY0X3QpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHVpbnQ2NF90IGFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoUXVlcnlDb21wbGV0
aW9uSGFuZGxlciYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBRdWVyeUNvbXBsZXRpb25IYW5kbGVy
IHRha2VRdWVyeUNvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90KTsKLQotcHJpdmF0ZToKLSAgICBl
bnVtIENhbGxCYWNrQ2xhc3NpZmllciA6IHVpbnQ2NF90IHsKLSAgICAgICAgQ3JlYXRpb24gPSAw
eDAxLAotICAgICAgICBSZXF1ZXN0ID0gMHgwMiwKLSAgICAgICAgUXVlcnkgPSAweDAzLAotICAg
IH07Ci0gICAgLy8gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBpcyByZXNlcnZlZCBhcyBjYWxs
YmFjayBjbGFzc2lmaWVyLgotICAgIHVpbnQ2NF90IG1fYWNjdW11bGF0ZWRNZXNzYWdlSWQgeyAx
IH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcj4gbV9w
ZW5kaW5nQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcnM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyPiBtX3BlbmRpbmdSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXJzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXI+IG1fcGVu
ZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMyYTJjYjIzN2QyMGJh
NGJlYzk4MGIxNDQ4ZjRkOWZlNmI1YjZkNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZS5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpT
T04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUpCi0g
ICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShjbGllbnREYXRhSlNPTikpCi0gICAg
LCBtX2F1dGhlbnRpY2F0b3JEYXRhKFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpKQotICAgICwg
bV9zaWduYXR1cmUoV1RGTW92ZShzaWduYXR1cmUpKQotICAgICwgbV91c2VySGFuZGxlKFdURk1v
dmUodXNlckhhbmRsZSkpCi17Ci19Ci0KLUFycmF5QnVmZmVyKiBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OmF1dGhlbnRpY2F0b3JEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9h
dXRoZW50aWNhdG9yRGF0YS5nZXQoKTsKLX0KLQotQXJyYXlCdWZmZXIqIEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZTo6c2lnbmF0dXJlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaWdu
YXR1cmUuZ2V0KCk7Ci19Ci0KLUFycmF5QnVmZmVyKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U6OnVzZXJIYW5kbGUoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXJIYW5kbGUuZ2V0
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaAppbmRleCA0NDUxZjI1MzFhNDM5
M2UxODk4ZWQ2Y2YzMGEyZGU4ZDk5NGE1ZTUwLi5jZjI4YzFhY2FlMTljY2VlMzcyMmY0ZjAyOTIy
MjkxMTk4MTRkMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKQEAgLTMzLDI1
ICszMywzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YXV0aGVudGljYXRvckRhdGEsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQorICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFK
U09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZl
cj4mJiBzaWduYXR1cmUsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
KFdURk1vdmUoY2xpZW50RGF0YUpTT04pLCBXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSwgV1RG
TW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKHVzZXJIYW5kbGUpKSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB+QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCi0gICAg
QXJyYXlCdWZmZXIqIGF1dGhlbnRpY2F0b3JEYXRhKCkgY29uc3Q7Ci0gICAgQXJyYXlCdWZmZXIq
IHNpZ25hdHVyZSgpIGNvbnN0OwotICAgIEFycmF5QnVmZmVyKiB1c2VySGFuZGxlKCkgY29uc3Q7
CisgICAgQXJyYXlCdWZmZXIqIGF1dGhlbnRpY2F0b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9h
dXRoZW50aWNhdG9yRGF0YS5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVyKiBzaWduYXR1cmUoKSBj
b25zdCB7IHJldHVybiBtX3NpZ25hdHVyZS5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVyKiB1c2Vy
SGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV91c2VySGFuZGxlLnB0cigpOyB9CiAKIHByaXZhdGU6
Ci0gICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBjbGllbnREYXRhSlNPTiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRh
LCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
dXNlckhhbmRsZSk7CisgICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiBjbGllbnREYXRhSlNPTiwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0
b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWY8QXJyYXlCdWZmZXI+JiYg
dXNlckhhbmRsZSkKKyAgICAgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShjbGll
bnREYXRhSlNPTikpCisgICAgICAgICwgbV9hdXRoZW50aWNhdG9yRGF0YShXVEZNb3ZlKGF1dGhl
bnRpY2F0b3JEYXRhKSkKKyAgICAgICAgLCBtX3NpZ25hdHVyZShXVEZNb3ZlKHNpZ25hdHVyZSkp
CisgICAgICAgICwgbV91c2VySGFuZGxlKFdURk1vdmUodXNlckhhbmRsZSkpCisgICAgeworICAg
IH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkFzc2VydGlv
bjsgfQogCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2F1dGhlbnRpY2F0b3JEYXRhOwotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBtX3VzZXJIYW5kbGU7CisgICAgUmVmPEFycmF5QnVmZmVyPiBtX2F1dGhlbnRpY2F0b3JEYXRh
OworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7CisgICAgUmVmPEFycmF5QnVmZmVy
PiBtX3VzZXJIYW5kbGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4ZjA2YzQzODZmMjNmMTA5MzY2MDIyOTI5ODU5MTE3YzcxY2E1YjQyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIgotCi0jaWYgRU5BQkxF
KFdFQl9BVVRITikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0
YXRpb25PYmplY3QpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShjbGllbnRE
YXRhSlNPTikpCi0gICAgLCBtX2F0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0YXRpb25P
YmplY3QpKQotewotfQotCi1BcnJheUJ1ZmZlciogQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U6OmF0dGVzdGF0aW9uT2JqZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9hdHRlc3Rh
dGlvbk9iamVjdC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaApp
bmRleCA0ODA3MDdiNmY3MWYyNTgzMjhkOTY4NzIwYjM4ZDBkZmUzODE3YWRjLi4wNTM3ZDk3YzNi
ZDIwNmY5ZmJkMjcxNmVkMzU0MDliNjdlM2VlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZS5oCkBAIC0zMywyMSArMzMsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50aWNh
dG9yUmVzcG9uc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpT
T04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkKKyAgICBzdGF0aWMg
UmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVm
ZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmpl
Y3QpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZShXVEZNb3ZlKGNsaWVudERhdGFKU09OKSwgV1RGTW92ZShhdHRlc3Rh
dGlvbk9iamVjdCkpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAotICAgIEFycmF5QnVmZmVyKiBhdHRlc3RhdGlv
bk9iamVjdCgpIGNvbnN0OworICAgIEFycmF5QnVmZmVyKiBhdHRlc3RhdGlvbk9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0ZXN0YXRpb25PYmplY3QucHRyKCk7IH0KIAogcHJpdmF0ZToKLSAg
ICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
Y2xpZW50RGF0YUpTT04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCk7
CisgICAgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYm
IGNsaWVudERhdGFKU09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QpCisg
ICAgICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUoY2xpZW50RGF0YUpTT04pKQor
ICAgICAgICAsIG1fYXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdCkp
CisgICAgeworICAgIH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5
cGU6OkF0dGVzdGF0aW9uOyB9CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXR0ZXN0YXRp
b25PYmplY3Q7CisgICAgUmVmPEFycmF5QnVmZmVyPiBtX2F0dGVzdGF0aW9uT2JqZWN0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNkNGE1MWZkMmFlOWRmZmU3ZDIwMTM3ODU4MDJkMGZlNmVmZmU1ZjMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHAKQEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisKKyNpZiBFTkFC
TEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiQWJvcnRTaWduYWwuaCIKKyNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNs
aWVudC5oIgorI2luY2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiUHVibGlj
S2V5Q3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgorI2luY2x1ZGUg
IlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIgorI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckludGVybmFs
IHsKKworZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSB7CisgICAgQ3JlYXRlLAorICAgIEdldAor
fTsKKworLy8gRklYTUUoMTgxOTQ4KTogQWRkIHRva2VuIGJpbmRpbmcgSUQgYW5kIGV4dGVuc2lv
bnMuCitzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBwcm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50
RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBjaGFsbGVuZ2UsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4pCit7CisgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNy
ZWF0ZSgpOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQ2xpZW50RGF0YVR5cGU6OkNy
ZWF0ZToKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInR5cGUiX3MsICJ3ZWJhdXRobi5jcmVh
dGUiX3MpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENsaWVudERhdGFUeXBlOjpHZXQ6Cisg
ICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJ0eXBlIl9zLCAid2ViYXV0aG4uZ2V0Il9zKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIG9iamVjdC0+c2V0U3RyaW5nKCJjaGFsbGVuZ2UiX3Ms
IFdURjo6YmFzZTY0VVJMRW5jb2RlKGNoYWxsZW5nZS5kYXRhKCksIGNoYWxsZW5nZS5sZW5ndGgo
KSkpOworICAgIG9iamVjdC0+c2V0U3RyaW5nKCJvcmlnaW4iX3MsIG9yaWdpbi50b1Jhd1N0cmlu
ZygpKTsKKyAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCisg
ICAgb2JqZWN0LT5zZXRTdHJpbmcoImhhc2hBbGdvcml0aG0iX3MsICJTSEEtMjU2Il9zKTsKKwor
ICAgIGF1dG8gdXRmOEpTT05TdHJpbmcgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsK
KyAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1dGY4SlNPTlN0cmluZy5kYXRhKCksIHV0
ZjhKU09OU3RyaW5nLmxlbmd0aCgpKTsKK30KKworc3RhdGljIFZlY3Rvcjx1aW50OF90PiBwcm9k
dWNlQ2xpZW50RGF0YUpzb25IYXNoKGNvbnN0IEFycmF5QnVmZmVyJiBjbGllbnREYXRhSnNvbikK
K3sKKyAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCisgICAg
YXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIGNyeXB0by0+YWRkQnl0ZXMoY2xpZW50RGF0YUpz
b24uZGF0YSgpLCBjbGllbnREYXRhSnNvbi5ieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiBjcnlw
dG8tPmNvbXB1dGVIYXNoKCk7Cit9CisKKy8vIEZJWE1FKDE4MTk0Nyk6IFdlIHNob3VsZCBwcm9i
YWJseSB0cmltIHRpbWVPdXRJbk1zIHRvIHNvbWUgbWF4IGFsbG93YWJsZSBudW1iZXIuCitzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBpbml0VGltZW91dFRpbWVyKHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQgbG9uZz4gdGltZU91dEluTXMsIGNvbnN0IENyZWRlbnRpYWxQcm9taXNlJiBwcm9t
aXNlKQoreworICAgIGlmICghdGltZU91dEluTXMpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtwcm9taXNlID0gcHJv
bWlzZV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5v
dEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl9zIH0pOworICAgIH0pOworICAg
IHRpbWVyLT5zdGFydE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqdGltZU91dElu
TXMpKTsKKyAgICByZXR1cm4gdGltZXI7Cit9CisKK3N0YXRpYyBib29sIGRpZFRpbWVvdXRUaW1l
ckZpcmUoVGltZXIqIHRpbWVyKQoreworICAgIGlmICghdGltZXIpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIXRpbWVyLT5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB0aW1lci0+c3RvcCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWwKKworQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudD4mJiBjbGllbnQpCisgICAgOiBtX2NsaWVudChXVEZNb3Zl
KGNsaWVudCkpCit7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpzZXRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJiBjbGll
bnQpCit7CisgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7Cit9CisKK3ZvaWQgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNhbGxlck9y
aWdpbiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywg
Ym9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmIGFib3J0
U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0Cit7CisgICAgdXNpbmcg
bmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckludGVybmFsOworCisgICAgLy8gVGhl
IGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3Jl
YXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCisgICAgLy8gRklYTUU6IEV4dGVu
c2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBTa2lwIFN0ZXAgMTEtMTIuCisgICAgLy8gU3Rl
cCAxLCAzLCAxNiBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgorICAgIC8vIFN0ZXAgMi4KKyAg
ICBpZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50
IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiJfcyB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIFN0ZXAgNCAmIDE3LgorICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1l
cj4gdGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRUaW1lcihvcHRpb25zLnRpbWVvdXQsIHByb21p
c2UpOworCisgICAgLy8gU3RlcCA1LTcuCisgICAgLy8gRklYTUUoMTgxOTUwKTogV2UgbGFjayBm
dW5kYW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gZGV0ZXJtaW5lIGlmIGEg
aG9zdCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3QuCisgICAgLy8gU3RlcCA2IGlzIHRoZXJlZm9y
ZSBza2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBzdXBwb3J0IHRvIGRldGVybWluZSB3aGV0aGVy
IGEgZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKKyAgICAvLyBkb21haW4gc3VmZml4IG9mIGFub3Ro
ZXIgZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUgY29tcGFyaXNvbiB0byBlcXVhbCBpbiBTdGVw
IDcuCisgICAgaWYgKCFvcHRpb25zLnJwLmlkLmlzRW1wdHkoKSAmJiBjYWxsZXJPcmlnaW4uaG9z
dCgpICE9IG9wdGlvbnMucnAuaWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9u
IHsgU2VjdXJpdHlFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCBhIHJl
Z2lzdHJhYmxlIGRvbWFpbiBzdWZmaXggb2YgdGhlIHByb3ZpZGVkIFJQIElELiJfcyB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAob3B0aW9ucy5ycC5pZC5pc0VtcHR5KCkpCisg
ICAgICAgIG9wdGlvbnMucnAuaWQgPSBjYWxsZXJPcmlnaW4uaG9zdCgpOworCisgICAgLy8gU3Rl
cCA4LTEwLgorICAgIC8vIE1vc3Qgb2YgdGhlIGpvYnMgYXJlIGRvbmUgYnkgYmluZGluZ3MuIEhv
d2V2ZXIsIHdlIGNhbid0IGtub3cgaWYgdGhlIEpTVmFsdWUgb2Ygb3B0aW9ucy5wdWJLZXlDcmVk
UGFyYW1zCisgICAgLy8gaXMgZW1wdHkgb3Igbm90LiBSZXR1cm4gTm90U3VwcG9ydGVkRXJyb3Ig
YXMgbG9uZyBhcyBpdCBpcyBlbXB0eS4KKyAgICBpZiAob3B0aW9ucy5wdWJLZXlDcmVkUGFyYW1z
LmlzRW1wdHkoKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciwgIk5vIGRlc2lyZWQgcHJvcGVydGllcyBvZiB0aGUgdG8gYmUgY3JlYXRlZCBj
cmVkZW50aWFsIGFyZSBwcm92aWRlZC4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBTdGVwIDEzLTE1LgorICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBwcm9kdWNlQ2xp
ZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZSwgb3B0aW9ucy5jaGFsbGVuZ2UsIGNh
bGxlck9yaWdpbik7CisgICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBwcm9kdWNlQ2xpZW50
RGF0YUpzb25IYXNoKGNsaWVudERhdGFKc29uKTsKKworICAgIC8vIFN0ZXAgMTgtMjEuCisgICAg
Ly8gT25seSBwbGF0Zm9ybSBhdHRhY2htZW50cyB3aWxsIGJlIHN1cHBvcnRlZCBhdCB0aGlzIHN0
YWdlLiBBc3N1bWluZyBvbmUgYXV0aGVudGljYXRvciBwZXIgZGV2aWNlLgorICAgIC8vIEFsc28s
IHJlc2lkZW50IGtleXMsIHVzZXIgdmVyaWZpY2F0aW9ucyBhbmQgZGlyZWN0IGF0dGVzdGF0aW9u
IGFyZSBlbmZvcmNlZCBhdCB0aGlzIHRhZ2UuCisgICAgLy8gRm9yIGJldHRlciBwZXJmb3JtYW5j
ZSwgdHJhbnNwb3J0cyBvZiBvcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFscyBhcmUgY2hlY2tlZCBp
biBMb2NhbEF1dGhlbnRpY2F0b3IuCisgICAgaWYgKCFtX2NsaWVudCkgIHsKKyAgICAgICAgcHJv
bWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBl
cnJvci4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aW1lb3V0VGltZXIgPSBXVEZNb3ZlKHRpbWVvdXRU
aW1lciksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChjb25zdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGRpZFRpbWVvdXRUaW1lckZp
cmUodGltZW91dFRpbWVyLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KGFib3J0U2lnbmFsICYmIGFib3J0U2lnbmFsLT5hYm9ydGVkKCkpIHsKKyAgICAgICAgICAgIHBy
b21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydGVkIGJ5IEFib3J0U2ln
bmFsLiJfcyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRh
dGEuY2xpZW50RGF0YUpTT04gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKTsKKyAgICAgICAgaWYg
KGF1dG8gcHVibGljS2V5Q3JlZGVudGlhbCA9IFB1YmxpY0tleUNyZWRlbnRpYWw6OnRyeUNyZWF0
ZShkYXRhKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHB1YmxpY0tleUNyZWRlbnRp
YWwuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VS
VCghZXhjZXB0aW9uLm1lc3NhZ2UuaXNOdWxsKCkpOworICAgICAgICBwcm9taXNlLnJlamVjdChl
eGNlcHRpb24udG9FeGNlcHRpb24oKSk7CisgICAgfTsKKyAgICAvLyBBc3luYyBvcGVyYXRpb25z
IGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCisgICAgbV9jbGll
bnQtPm1ha2VDcmVkZW50aWFsKGNsaWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6
ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNhbGxlck9y
aWdpbiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBi
b29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRT
aWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKK3sKKyAgICB1c2luZyBu
YW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CisKKyAgICAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNjcmVh
dGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KKyAgICAvLyBGSVhNRTogRXh0ZW5z
aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIFNraXAgU3RlcCA4LTkuCisgICAgLy8gU3RlcCAx
LCAzLCAxMyBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgorICAgIC8vIFN0ZXAgMi4KKyAgICBp
ZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4
Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlz
IG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIFN0ZXAgNCAmIDE2LgorICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4g
dGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRUaW1lcihvcHRpb25zLnRpbWVvdXQsIHByb21pc2Up
OworCisgICAgLy8gU3RlcCA1LTcuCisgICAgLy8gRklYTUUoMTgxOTUwKTogV2UgbGFjayBmdW5k
YW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gZGV0ZXJtaW5lIGlmIGEgaG9z
dCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3QuCisgICAgLy8gU3RlcCA2IGlzIHRoZXJlZm9yZSBz
a2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBzdXBwb3J0IHRvIGRldGVybWluZSB3aGV0aGVyIGEg
ZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKKyAgICAvLyBkb21haW4gc3VmZml4IG9mIGFub3RoZXIg
ZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUgY29tcGFyaXNvbiB0byBlcXVhbCBpbiBTdGVwIDcu
CisgICAgaWYgKCFvcHRpb25zLnJwSWQuaXNFbXB0eSgpICYmIGNhbGxlck9yaWdpbi5ob3N0KCkg
IT0gb3B0aW9ucy5ycElkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFNl
Y3VyaXR5RXJyb3IsICJUaGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBpcyBub3QgYSByZWdpc3Ry
YWJsZSBkb21haW4gc3VmZml4IG9mIHRoZSBwcm92aWRlZCBSUCBJRC4iX3MgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKG9wdGlvbnMucnBJZC5pc0VtcHR5KCkpCisgICAgICAg
IG9wdGlvbnMucnBJZCA9IGNhbGxlck9yaWdpbi5ob3N0KCk7CisKKyAgICAvLyBTdGVwIDEwLTEy
LgorICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBwcm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50
RGF0YVR5cGU6OkdldCwgb3B0aW9ucy5jaGFsbGVuZ2UsIGNhbGxlck9yaWdpbik7CisgICAgYXV0
byBjbGllbnREYXRhSnNvbkhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERh
dGFKc29uKTsKKworICAgIC8vIFN0ZXAgMTQtMTUsIDE3LTE5LgorICAgIC8vIE9ubHkgcGxhdGZv
cm0gYXR0YWNobWVudHMgd2lsbCBiZSBzdXBwb3J0ZWQgYXQgdGhpcyBzdGFnZS4gQXNzdW1pbmcg
b25lIGF1dGhlbnRpY2F0b3IgcGVyIGRldmljZS4KKyAgICAvLyBBbHNvLCByZXNpZGVudCBrZXlz
LCB1c2VyIHZlcmlmaWNhdGlvbnMgYW5kIGRpcmVjdCBhdHRlc3RhdGlvbiBhcmUgZW5mb3JjZWQg
YXQgdGhpcyB0YWdlLgorICAgIC8vIEZvciBiZXR0ZXIgcGVyZm9ybWFuY2UsIGZpbHRlcmluZyBv
ZiBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgaXMgZG9uZSBpbiBMb2NhbEF1dGhlbnRpY2F0b3Iu
CisgICAgaWYgKCFtX2NsaWVudCkgIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9u
IHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2NsaWVudERh
dGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCB0aW1lb3V0VGltZXIgPSBXVEZNb3ZlKHRpbWVvdXRUaW1lciksIGFib3J0U2lnbmFsID0g
V1RGTW92ZShhYm9ydFNpZ25hbCldIChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKGRpZFRpbWVvdXRUaW1lckZpcmUodGltZW91dFRpbWVyLmdldCgp
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGFib3J0U2lnbmFsICYmIGFib3J0
U2lnbmFsLT5hYm9ydGVkKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IEFib3J0RXJyb3IsICJBYm9ydGVkIGJ5IEFib3J0U2lnbmFsLiJfcyB9KTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGEuY2xpZW50RGF0YUpTT04gPSBX
VEZNb3ZlKGNsaWVudERhdGFKc29uKTsKKyAgICAgICAgaWYgKGF1dG8gcHVibGljS2V5Q3JlZGVu
dGlhbCA9IFB1YmxpY0tleUNyZWRlbnRpYWw6OnRyeUNyZWF0ZShkYXRhKSkgeworICAgICAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKHB1YmxpY0tleUNyZWRlbnRpYWwuZ2V0KCkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCghZXhjZXB0aW9uLm1lc3NhZ2Uu
aXNOdWxsKCkpOworICAgICAgICBwcm9taXNlLnJlamVjdChleGNlcHRpb24udG9FeGNlcHRpb24o
KSk7CisgICAgfTsKKyAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBo
YW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCisgICAgbV9jbGllbnQtPmdldEFzc2VydGlvbihjbGll
bnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3Jt
QXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBw
cm9taXNlKSBjb25zdAoreworICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczov
L3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2lzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZQorICAgIC8vIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KKyAgICBpZiAoIW1f
Y2xpZW50KSAgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBVbmtub3duRXJy
b3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIEZJWE1FKDE4Mjc2Nyk6IFdlIHNob3VsZCBjb25zaWRlciBtb3JlIG9uIHRo
ZSBhc3Nlc3NtZW50IG9mIHRoZSByZXR1cm4gdmFsdWUuIFJpZ2h0IG5vdywgd2UgcmV0dXJuIHRy
dWUvZmFsc2UKKyAgICAvLyBpbW1lZGlhdGVseSBhY2NvcmRpbmcgdG8gcGxhdGZvcm0gc3BlY2lm
aWMgcHJvY2VkdXJlcy4KKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBwcm9taXNl
LnJlc29sdmUocmVzdWx0KTsKKyAgICB9OworICAgIC8vIEFzeW5jIG9wZXJhdGlvbiBhcmUgZGlz
cGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgorICAgIG1fY2xpZW50LT5pc1Vz
ZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFjNDlkYjUy
M2I5MzZiMGE0ZWMyMjEwNDFiNzdkYTdjYzE0NzhmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAg
LTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKworI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBBYm9ydFNpZ25hbDsKK2NsYXNzIEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudDsKK2NsYXNzIEJhc2ljQ3JlZGVudGlhbDsKK2NsYXNzIFNlY3VyaXR5T3Jp
Z2luOworCitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKK3N0cnVj
dCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CisKK3VzaW5nIENyZWRlbnRpYWxQ
cm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFjZTxCYXNp
Y0NyZWRlbnRpYWw+Pj47CisKK2NsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKTsKK3B1YmxpYzoK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3Rk
Ojp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudD4mJik7CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1w
bGVtZW50IHN0YXRpYyBtZXRob2RzIG9mIFB1YmxpY0tleUNyZWRlbnRpYWwuCisgICAgdm9pZCBj
cmVhdGUoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiwgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0
U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2b2lkIGRpc2NvdmVy
RnJvbUV4dGVybmFsU291cmNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywg
UmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2
b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9t
aXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzgwY2E3N2NmNzIxZTA4M2I2NDYw
ZDBiOTZlMWZkYjgxZjQ2ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAKQEAgLTAsMCAr
MSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisK
KyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDo6fkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudCgpCit7CisgICAgLy8gSnVzdCB0byBjYWxsIGhhbmRsZXJzIHRvIGF2b2lk
IGFueSBhc3NlcnRpb24gZmFpbHVyZXMuCisgICAgaWYgKG1fcGVuZGluZ0NvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgTm90QWxsb3dl
ZEVycm9yLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iX3MgfSk7CisgICAgZm9yIChhdXRvIGl0ciA9
IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzLmJlZ2luKCk7IGl0ciAhPSAgbV9wZW5k
aW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMuZW5kKCk7ICsraXRyKQorICAgICAgICBpdHItPnZh
bHVlKGZhbHNlKTsKK30KKwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OnJl
cXVlc3RSZXBseShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSwg
Y29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKQoreworICAgIG1fcGVuZGlu
Z0NvbXBsZXRpb25IYW5kbGVyKGRhdGEsIGV4Y2VwdGlvbik7Cit9CisKK3ZvaWQgQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yQ2xpZW50Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0
b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wgcmVzdWx0KQoreworICAg
IGF1dG8gaGFuZGxlciA9IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzLnRha2UobWVz
c2FnZUlkKTsKKyAgICBoYW5kbGVyKHJlc3VsdCk7Cit9CisKK2Jvb2wgQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50OjpzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBpZiAobV9wZW5kaW5nQ29tcGxldGlvbkhh
bmRsZXIpIHsKKyAgICAgICAgaGFuZGxlcih7IH0sIHsgTm90QWxsb3dlZEVycm9yLCAiQSByZXF1
ZXN0IGlzIHBlbmRpbmcuIl9zIH0pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOworICAgIHJl
dHVybiB0cnVlOworfQorCit1aW50NjRfdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6
OmFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRs
ZXIpCit7CisgICAgdWludDY0X3QgbWVzc2FnZUlkID0gbV9hY2N1bXVsYXRlZE1lc3NhZ2VJZCsr
OworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMu
YWRkKG1lc3NhZ2VJZCwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICByZXR1cm4gbWVzc2FnZUlkOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0ZDllOGY2Nzk2NTI3
Nzk0YThiMTdjMzQ2MzhjNzMxNDM4ZjU0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAg
LTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVmZXJyZWRQcm9t
aXNlOworCitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERhdGE7CitzdHJ1Y3QgUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKK3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnM7CisKK3VzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmLCBj
b25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+OwordXNpbmcgUXVlcnlDb21wbGV0aW9uSGFu
ZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OworCitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50KTsKK3B1YmxpYzoKKyAgICBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQo
KSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50
KCk7CisKKyAgICAvLyBTZW5kZXJzLgorICAgIHZpcnR1YWwgdm9pZCBtYWtlQ3JlZGVudGlhbChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisKKyAgICAv
LyBSZWNlaXZlcnMuCisgICAgdm9pZCByZXF1ZXN0UmVwbHkoY29uc3QgV2ViQ29yZTo6UHVibGlj
S2V5Q3JlZGVudGlhbERhdGEmLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik7CisgICAg
dm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1
aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpOworCitwcm90ZWN0ZWQ6CisgICAgLy8gT25seSBvbmUg
cmVxdWVzdCBpcyBhbGxvd2VkIGF0IG9uZSB0aW1lLiBJdCByZXR1cm5zIGZhbHNlIHdoZW5ldmVy
IHRoZXJlIGlzIGFuIGV4aXN0aW5nIHBlbmRpbmcgcmVxdWVzdC4KKyAgICAvLyBBbmQgaW52b2tl
cyB0aGUgcHJvdmlkZWQgaGFuZGxlciB3aXRoIE5vdEFsbG93ZWRFcnJvci4KKyAgICBib29sIHNl
dFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7Cisg
ICAgdWludDY0X3QgYWRkUXVlcnlDb21wbGV0aW9uSGFuZGxlcihRdWVyeUNvbXBsZXRpb25IYW5k
bGVyJiYpOworCitwcml2YXRlOgorICAgIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciBtX3BlbmRp
bmdDb21wbGV0aW9uSGFuZGxlcjsKKyAgICB1aW50NjRfdCBtX2FjY3VtdWxhdGVkTWVzc2FnZUlk
IHsgMSB9OworICAgIEhhc2hNYXA8dWludDY0X3QsIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXI+IG1f
cGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZDYwMTYyMWYxOTExNzk1YjE3ZTRkZTc2NmZkNjM5
Njk2ZjYxNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgotCi0jaWYgRU5BQkxF
KFdFQl9BVVRITikKLQotI2luY2x1ZGUgIkFib3J0U2lnbmFsLmgiCi0jaW5jbHVkZSAiQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJDcmVkZW50aWFsc01lc3Nlbmdlci5oIgotI2lu
Y2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgiCi0jaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlh
bC5oIgotI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCIKLSNp
bmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCIKLSNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8cGFsL2NyeXB0
by9DcnlwdG9EaWdlc3QuaD4KLSNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgotI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBBdXRoZW50aWNhdG9yTWFuYWdlckludGVy
bmFsIHsKLQotZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSB7Ci0gICAgQ3JlYXRlLAotICAgIEdl
dAotfTsKLQotLy8gRklYTUUoMTgxOTQ4KTogQWRkIHRva2VuIGJpbmRpbmcgSUQgYW5kIGV4dGVu
c2lvbnMuCi1zdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBwcm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xp
ZW50RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBjaGFsbGVuZ2UsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4pCi17Ci0gICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQ2xpZW50RGF0YVR5cGU6
OkNyZWF0ZToKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInR5cGUiX3MsICJ3ZWJhdXRobi5j
cmVhdGUiX3MpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENsaWVudERhdGFUeXBlOjpHZXQ6
Ci0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJ0eXBlIl9zLCAid2ViYXV0aG4uZ2V0Il9zKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIG9iamVjdC0+c2V0U3RyaW5nKCJjaGFsbGVuZ2Ui
X3MsIFdURjo6YmFzZTY0VVJMRW5jb2RlKGNoYWxsZW5nZS5kYXRhKCksIGNoYWxsZW5nZS5sZW5n
dGgoKSkpOwotICAgIG9iamVjdC0+c2V0U3RyaW5nKCJvcmlnaW4iX3MsIG9yaWdpbi50b1Jhd1N0
cmluZygpKTsKLSAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQu
Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImhhc2hBbGdvcml0aG0iX3MsICJTSEEtMjU2Il9zKTsK
LQotICAgIGF1dG8gdXRmOEpTT05TdHJpbmcgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0Zjgo
KTsKLSAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1dGY4SlNPTlN0cmluZy5kYXRhKCks
IHV0ZjhKU09OU3RyaW5nLmxlbmd0aCgpKTsKLX0KLQotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBw
cm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNvbnN0IEFycmF5QnVmZmVyJiBjbGllbnREYXRhSnNv
bikKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCi0g
ICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwotICAgIGNyeXB0by0+YWRkQnl0ZXMoY2xpZW50RGF0
YUpzb24uZGF0YSgpLCBjbGllbnREYXRhSnNvbi5ieXRlTGVuZ3RoKCkpOwotICAgIHJldHVybiBj
cnlwdG8tPmNvbXB1dGVIYXNoKCk7Ci19Ci0KLS8vIEZJWE1FKDE4MTk0Nyk6IFdlIHNob3VsZCBw
cm9iYWJseSB0cmltIHRpbWVPdXRJbk1zIHRvIHNvbWUgbWF4IGFsbG93YWJsZSBudW1iZXIuCi1z
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBpbml0VGltZW91dFRpbWVyKHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQgbG9uZz4gdGltZU91dEluTXMsIGNvbnN0IENyZWRlbnRpYWxQcm9taXNlJiBw
cm9taXNlKQotewotICAgIGlmICghdGltZU91dEluTXMpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtwcm9taXNlID0g
cHJvbWlzZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl9zIH0pOwotICAgIH0pOwot
ICAgIHRpbWVyLT5zdGFydE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqdGltZU91
dEluTXMpKTsKLSAgICByZXR1cm4gdGltZXI7Ci19Ci0KLXN0YXRpYyBib29sIGRpZFRpbWVvdXRU
aW1lckZpcmUoVGltZXIqIHRpbWVyKQotewotICAgIGlmICghdGltZXIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoIXRpbWVyLT5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB0aW1lci0+c3RvcCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgQXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbAotCi1BdXRoZW50aWNhdG9yTWFuYWdl
ciYgQXV0aGVudGljYXRvck1hbmFnZXI6OnNpbmdsZXRvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXV0aGVudGljYXRvck1hbmFn
ZXI+IGF1dGhlbnRpY2F0b3I7Ci0gICAgcmV0dXJuIGF1dGhlbnRpY2F0b3I7Ci19Ci0KLXZvaWQg
QXV0aGVudGljYXRvck1hbmFnZXI6OnNldE1lc3NlbmdlcihDcmVkZW50aWFsc01lc3NlbmdlciYg
bWVzc2VuZ2VyKQotewotICAgIG1fbWVzc2VuZ2VyID0gbWFrZVdlYWtQdHIobWVzc2VuZ2VyKTsK
LX0KLQotdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBjYWxsZXJPcmlnaW4sIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNp
Z25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBjb25zdAot
ewotICAgIHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNhdG9yTWFuYWdlckludGVybmFsOwotCi0g
ICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJh
dXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCi0gICAgLy8gRklY
TUU6IEV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBTa2lwIFN0ZXAgMTEtMTIuCi0g
ICAgLy8gU3RlcCAxLCAzLCAxNiBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgotICAgIC8vIFN0
ZXAgMi4KLSAgICBpZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzKSB7Ci0gICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhl
IGRvY3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiJfcyB9KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN0ZXAgNCAmIDE3LgotICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaW1lcj4gdGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRUaW1lcihvcHRpb25zLnRpbWVv
dXQsIHByb21pc2UpOwotCi0gICAgLy8gU3RlcCA1LTcuCi0gICAgLy8gRklYTUUoMTgxOTUwKTog
V2UgbGFjayBmdW5kYW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gZGV0ZXJt
aW5lIGlmIGEgaG9zdCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3QuCi0gICAgLy8gU3RlcCA2IGlz
IHRoZXJlZm9yZSBza2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBzdXBwb3J0IHRvIGRldGVybWlu
ZSB3aGV0aGVyIGEgZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKLSAgICAvLyBkb21haW4gc3VmZml4
IG9mIGFub3RoZXIgZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUgY29tcGFyaXNvbiB0byBlcXVh
bCBpbiBTdGVwIDcuCi0gICAgaWYgKCFvcHRpb25zLnJwLmlkLmlzRW1wdHkoKSAmJiBjYWxsZXJP
cmlnaW4uaG9zdCgpICE9IG9wdGlvbnMucnAuaWQpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlz
IG5vdCBhIHJlZ2lzdHJhYmxlIGRvbWFpbiBzdWZmaXggb2YgdGhlIHByb3ZpZGVkIFJQIElELiJf
cyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob3B0aW9ucy5ycC5pZC5pc0Vt
cHR5KCkpCi0gICAgICAgIG9wdGlvbnMucnAuaWQgPSBjYWxsZXJPcmlnaW4uaG9zdCgpOwotCi0g
ICAgLy8gU3RlcCA4LTEwLgotICAgIC8vIE1vc3Qgb2YgdGhlIGpvYnMgYXJlIGRvbmUgYnkgYmlu
ZGluZ3MuIEhvd2V2ZXIsIHdlIGNhbid0IGtub3cgaWYgdGhlIEpTVmFsdWUgb2Ygb3B0aW9ucy5w
dWJLZXlDcmVkUGFyYW1zCi0gICAgLy8gaXMgZW1wdHkgb3Igbm90LiBSZXR1cm4gTm90U3VwcG9y
dGVkRXJyb3IgYXMgbG9uZyBhcyBpdCBpcyBlbXB0eS4KLSAgICBpZiAob3B0aW9ucy5wdWJLZXlD
cmVkUGFyYW1zLmlzRW1wdHkoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vIGRlc2lyZWQgcHJvcGVydGllcyBvZiB0aGUgdG8gYmUg
Y3JlYXRlZCBjcmVkZW50aWFsIGFyZSBwcm92aWRlZC4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBTdGVwIDEzLTE1LgotICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBw
cm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZSwgb3B0aW9ucy5jaGFs
bGVuZ2UsIGNhbGxlck9yaWdpbik7Ci0gICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBwcm9k
dWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKc29uKTsKLQotICAgIC8vIFN0ZXAgMTgt
MjEuCi0gICAgLy8gT25seSBwbGF0Zm9ybSBhdHRhY2htZW50cyB3aWxsIGJlIHN1cHBvcnRlZCBh
dCB0aGlzIHN0YWdlLiBBc3N1bWluZyBvbmUgYXV0aGVudGljYXRvciBwZXIgZGV2aWNlLgotICAg
IC8vIEFsc28sIHJlc2lkZW50IGtleXMsIHVzZXIgdmVyaWZpY2F0aW9ucyBhbmQgZGlyZWN0IGF0
dGVzdGF0aW9uIGFyZSBlbmZvcmNlZCBhdCB0aGlzIHRhZ2UuCi0gICAgLy8gRm9yIGJldHRlciBw
ZXJmb3JtYW5jZSwgdHJhbnNwb3J0cyBvZiBvcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFscyBhcmUg
Y2hlY2tlZCBpbiBMb2NhbEF1dGhlbnRpY2F0b3IuCi0gICAgaWYgKCFtX21lc3NlbmdlcikgIHsK
LSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiVW5rbm93
biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnRE
YXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aW1lb3V0VGltZXIgPSBXVEZN
b3ZlKHRpbWVvdXRUaW1lciksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChF
eGNlcHRpb25PcjxDcmVhdGlvblJldHVybkJ1bmRsZT4mJiByZXN1bHQpIG11dGFibGUgewotICAg
ICAgICBpZiAoZGlkVGltZW91dFRpbWVyRmlyZSh0aW1lb3V0VGltZXIuZ2V0KCkpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoYWJvcnRTaWduYWwgJiYgYWJvcnRTaWduYWwtPmFi
b3J0ZWQoKSkgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRF
cnJvciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwuIl9zIH0pOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KHJlc3VsdC5leGNlcHRpb24oKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGJ1bmRsZSA9IHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFB1YmxpY0tleUNyZWRlbnRp
YWw6OmNyZWF0ZShXVEZNb3ZlKGJ1bmRsZS5jcmVkZW50aWFsSWQpLCBBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVuZGxlLmF0dGVzdGF0aW9uT2JqZWN0KSkpKS5wdHIoKSk7
Ci0gICAgfTsKLSAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5k
bGVkIGluIHRoZSBtZXNzZW5nZXIuCi0gICAgbV9tZXNzZW5nZXItPm1ha2VDcmVkZW50aWFsKGNs
aWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
fQotCi12b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJj
ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3JpZ2luLCBjb25zdCBQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3Rv
cnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2Um
JiBwcm9taXNlKSBjb25zdAotewotICAgIHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNhdG9yTWFu
YWdlckludGVybmFsOwotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVy
IDIwMTcuCi0gICAgLy8gRklYTUU6IEV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBT
a2lwIFN0ZXAgOC05LgotICAgIC8vIFN0ZXAgMSwgMywgMTMgYXJlIGhhbmRsZWQgYnkgdGhlIGNh
bGxlci4KLSAgICAvLyBTdGVwIDIuCi0gICAgaWYgKCFzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycykg
ewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RBbGxvd2VkRXJyb3IsICJU
aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBpcyBub3QgdGhlIHNhbWUgYXMgaXRzIGFuY2VzdG9y
cy4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBTdGVwIDQgJiAxNi4K
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IHRpbWVvdXRUaW1lciA9IGluaXRUaW1lb3V0VGlt
ZXIob3B0aW9ucy50aW1lb3V0LCBwcm9taXNlKTsKLQotICAgIC8vIFN0ZXAgNS03LgotICAgIC8v
IEZJWE1FKDE4MTk1MCk6IFdlIGxhY2sgZnVuZGFtZW50YWwgc3VwcG9ydCBmcm9tIFNlY3VyaXR5
T3JpZ2luIHRvIGRldGVybWluZSBpZiBhIGhvc3QgaXMgYSB2YWxpZCBkb21haW4gb3Igbm90Lgot
ICAgIC8vIFN0ZXAgNiBpcyB0aGVyZWZvcmUgc2tpcHBlZC4gQWxzbywgd2UgbGFjayB0aGUgc3Vw
cG9ydCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGRvbWFpbiBpcyBhIHJlZ2lzdHJhYmxlCi0gICAg
Ly8gZG9tYWluIHN1ZmZpeCBvZiBhbm90aGVyIGRvbWFpbi4gSGVuY2UgcmVzdHJpY3QgdGhlIGNv
bXBhcmlzb24gdG8gZXF1YWwgaW4gU3RlcCA3LgotICAgIGlmICghb3B0aW9ucy5ycElkLmlzRW1w
dHkoKSAmJiBjYWxsZXJPcmlnaW4uaG9zdCgpICE9IG9wdGlvbnMucnBJZCkgewotICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiVGhlIG9yaWdpbiBvZiB0
aGUgZG9jdW1lbnQgaXMgbm90IGEgcmVnaXN0cmFibGUgZG9tYWluIHN1ZmZpeCBvZiB0aGUgcHJv
dmlkZWQgUlAgSUQuIl9zIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChvcHRp
b25zLnJwSWQuaXNFbXB0eSgpKQotICAgICAgICBvcHRpb25zLnJwSWQgPSBjYWxsZXJPcmlnaW4u
aG9zdCgpOwotCi0gICAgLy8gU3RlcCAxMC0xMi4KLSAgICBhdXRvIGNsaWVudERhdGFKc29uID0g
cHJvZHVjZUNsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlOjpHZXQsIG9wdGlvbnMuY2hhbGxl
bmdlLCBjYWxsZXJPcmlnaW4pOwotICAgIGF1dG8gY2xpZW50RGF0YUpzb25IYXNoID0gcHJvZHVj
ZUNsaWVudERhdGFKc29uSGFzaChjbGllbnREYXRhSnNvbik7Ci0KLSAgICAvLyBTdGVwIDE0LTE1
LCAxNy0xOS4KLSAgICAvLyBPbmx5IHBsYXRmb3JtIGF0dGFjaG1lbnRzIHdpbGwgYmUgc3VwcG9y
dGVkIGF0IHRoaXMgc3RhZ2UuIEFzc3VtaW5nIG9uZSBhdXRoZW50aWNhdG9yIHBlciBkZXZpY2Uu
Ci0gICAgLy8gQWxzbywgcmVzaWRlbnQga2V5cywgdXNlciB2ZXJpZmljYXRpb25zIGFuZCBkaXJl
Y3QgYXR0ZXN0YXRpb24gYXJlIGVuZm9yY2VkIGF0IHRoaXMgdGFnZS4KLSAgICAvLyBGb3IgYmV0
dGVyIHBlcmZvcm1hbmNlLCBmaWx0ZXJpbmcgb2Ygb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzIGlz
IGRvbmUgaW4gTG9jYWxBdXRoZW50aWNhdG9yLgotICAgIGlmICghbV9tZXNzZW5nZXIpICB7Ci0g
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlVua25vd24g
aW50ZXJuYWwgZXJyb3IuIl9zIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUoY2xpZW50RGF0
YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgdGltZW91dFRpbWVyID0gV1RGTW92
ZSh0aW1lb3V0VGltZXIpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoRXhj
ZXB0aW9uT3I8QXNzZXJ0aW9uUmV0dXJuQnVuZGxlPiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGlmIChkaWRUaW1lb3V0VGltZXJGaXJlKHRpbWVvdXRUaW1lci5nZXQoKSkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJv
cnRlZCgpKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVy
cm9yLCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAg
ICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LmV4Y2VwdGlvbigpKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gYnVuZGxlID0gcmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpOwotICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5Q3JlZGVudGlh
bDo6Y3JlYXRlKFdURk1vdmUoYnVuZGxlLmNyZWRlbnRpYWxJZCksIEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZTo6Y3JlYXRlKFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBXVEZNb3ZlKGJ1
bmRsZS5hdXRoZW50aWNhdG9yRGF0YSksIFdURk1vdmUoYnVuZGxlLnNpZ25hdHVyZSksIFdURk1v
dmUoYnVuZGxlLnVzZXJIYW5kbGUpKSkucHRyKCkpOwotICAgIH07Ci0gICAgLy8gQXN5bmMgb3Bl
cmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgotICAg
IG1fbWVzc2VuZ2VyLT5nZXRBc3NlcnRpb24oY2xpZW50RGF0YUpzb25IYXNoLCBvcHRpb25zLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRvck1hbmFn
ZXI6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9t
aXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKSBjb25zdAotewotICAgIC8vIFRoZSBm
b2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2lzVXNl
clZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZQotICAgIC8vIGFzIG9mIDUg
RGVjZW1iZXIgMjAxNy4KLSAgICBpZiAoIW1fbWVzc2VuZ2VyKSAgewotICAgICAgICBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9y
LiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FKDE4Mjc2Nyk6
IFdlIHNob3VsZCBjb25zaWRlciBtb3JlIG9uIHRoZSBhc3Nlc3NtZW50IG9mIHRoZSByZXR1cm4g
dmFsdWUuIFJpZ2h0IG5vdywgd2UgcmV0dXJuIHRydWUvZmFsc2UKLSAgICAvLyBpbW1lZGlhdGVs
eSBhY2NvcmRpbmcgdG8gcGxhdGZvcm0gc3BlY2lmaWMgcHJvY2VkdXJlcy4KLSAgICBhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCByZXN1
bHQpIG11dGFibGUgewotICAgICAgICBwcm9taXNlLnJlc29sdmUocmVzdWx0KTsKLSAgICB9Owot
ICAgIC8vIEFzeW5jIG9wZXJhdGlvbiBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUg
bWVzc2VuZ2VyLgotICAgIG1fbWVzc2VuZ2VyLT5pc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzcyNzZkZGU2NzhjMjNiMGM5MjE5
OGQxZmY3OWRhYjM1ZjZjYTVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1h
bmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBBYm9ydFNpZ25hbDsKLWNsYXNzIEJhc2ljQ3JlZGVudGlhbDsKLWNsYXNz
IENyZWRlbnRpYWxzTWVzc2VuZ2VyOwotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0KLXN0cnVjdCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOwotc3RydWN0IFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9uczsKLQotdXNpbmcgQ3JlZGVudGlhbFByb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEJhc2ljQ3JlZGVudGlhbD4+PjsK
LQotY2xhc3MgQXV0aGVudGljYXRvck1hbmFnZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEF1dGhlbnRpY2F0b3JNYW5hZ2VyKTsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8
QXV0aGVudGljYXRvck1hbmFnZXI+OwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBBdXRoZW50aWNhdG9yTWFuYWdlciYgc2luZ2xldG9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNZXNzZW5nZXIoQ3JlZGVudGlhbHNNZXNzZW5nZXImKTsKLQotICAgIC8vIFRoZSBm
b2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgc3RhdGljIG1ldGhvZHMgb2YgUHVibGljS2V5Q3Jl
ZGVudGlhbC4KLSAgICB2b2lkIGNyZWF0ZShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBib29sIHNhbWVPcmlnaW5XaXRoQW5j
ZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0
OwotICAgIHZvaWQgZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgU2VjdXJpdHlPcmln
aW4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBib29sIHNhbWVP
cmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9t
aXNlJiYpIGNvbnN0OwotICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKSBjb25zdDsKLQot
cHJpdmF0ZToKLSAgICBBdXRoZW50aWNhdG9yTWFuYWdlcigpID0gZGVmYXVsdDsKLQotICAgIFdl
YWtQdHI8Q3JlZGVudGlhbHNNZXNzZW5nZXI+IG1fbWVzc2VuZ2VyOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI4ZjA5NDZkYzNlMDBkNGUzODQ5
OTI1NmNjMWQ5MjMyNzJkMDc1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JS
ZXNwb25zZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JSZXNwb25zZS5oIgot
Ci0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdXRoZW50
aWNhdG9yUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgY2xpZW50RGF0YUpTT04pCi0gICAgOiBtX2NsaWVudERhdGFKU09OKFdURk1vdmUoY2xpZW50
RGF0YUpTT04pKQotewotfQotCi1BcnJheUJ1ZmZlciogQXV0aGVudGljYXRvclJlc3BvbnNlOjpj
bGllbnREYXRhSlNPTigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50RGF0YUpTT04uZ2V0
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yUmVzcG9uc2UuaAppbmRleCA1NTI4YzAzMDM0ZjUyMWM1NGMzMTQxMmQ1ZTYzYjc2
ZWE3ZThmYWFjLi5jYjdlMDdlNTJlYzk0ZDRlMTQyMDRlMTY2MzM1OTZiOTViMTAwZTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNw
b25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
clJlc3BvbnNlLmgKQEAgLTQwLDE1ICs0MCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIEF0dGVzdGF0
aW9uCiAgICAgfTsKIAotICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYpOworICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04pCisgICAgICAgIDogbV9jbGllbnREYXRhSlNP
TihXVEZNb3ZlKGNsaWVudERhdGFKU09OKSkKKyAgICB7CisgICAgfQogICAgIHZpcnR1YWwgfkF1
dGhlbnRpY2F0b3JSZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBl
KCkgY29uc3QgPSAwOwogCi0gICAgQXJyYXlCdWZmZXIqIGNsaWVudERhdGFKU09OKCkgY29uc3Q7
CisgICAgQXJyYXlCdWZmZXIqIGNsaWVudERhdGFKU09OKCkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnREYXRhSlNPTi5wdHIoKTsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
bV9jbGllbnREYXRhSlNPTjsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IG1fY2xpZW50RGF0YUpTT047
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNwcAppbmRleCAxMTJmNDBh
NjM0MmY2MmM3NmM1NDY1YmZlYWU4YzdiYzU2NWU3YTEwLi4yMWY3MDBjZjBmMzZjZWE3Nzk2Mzhm
NDQwYmUwY2RhNTg3MjE0ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5jcHAKQEAgLTI4LDEzICsyOCwzOSBAQAog
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIlBh
Z2UuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVB1YmxpY0tleUNyZWRl
bnRpYWw6OlB1YmxpY0tleUNyZWRlbnRpYWwoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGlkLCBSZWZQ
dHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiYmIHJlc3BvbnNlKQorUmVmPFB1YmxpY0tleUNyZWRl
bnRpYWw+IFB1YmxpY0tleUNyZWRlbnRpYWw6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgaWQs
IFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYgcmVzcG9uc2UpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUHVibGljS2V5Q3JlZGVudGlhbChXVEZNb3ZlKGlkKSwgV1RGTW92ZShyZXNw
b25zZSkpKTsKK30KKworUmVmUHRyPFB1YmxpY0tleUNyZWRlbnRpYWw+IFB1YmxpY0tleUNyZWRl
bnRpYWw6OnRyeUNyZWF0ZShjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSkKK3sK
KyAgICBpZiAoIWRhdGEucmF3SWQgfHwgIWRhdGEuY2xpZW50RGF0YUpTT04pCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgaWYgKGRhdGEuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZSkgeworICAgICAgICBpZiAoIWRhdGEuYXR0ZXN0YXRpb25PYmplY3QpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdWJs
aWNLZXlDcmVkZW50aWFsKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLmNsaWVudERhdGFKU09OLnJlbGVhc2VO
b25OdWxsKCksIGRhdGEuYXR0ZXN0YXRpb25PYmplY3QucmVsZWFzZU5vbk51bGwoKSkpKTsKKyAg
ICB9CisKKyAgICBpZiAoIWRhdGEuYXV0aGVudGljYXRvckRhdGEgfHwgIWRhdGEuc2lnbmF0dXJl
IHx8ICFkYXRhLnVzZXJIYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUHVibGljS2V5Q3JlZGVudGlhbChkYXRhLnJhd0lkLnJlbGVhc2VO
b25OdWxsKCksIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEuY2xp
ZW50RGF0YUpTT04ucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdXRoZW50aWNhdG9yRGF0YS5yZWxl
YXNlTm9uTnVsbCgpLCBkYXRhLnNpZ25hdHVyZS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLnVzZXJI
YW5kbGUucmVsZWFzZU5vbk51bGwoKSkpKTsKK30KKworUHVibGljS2V5Q3JlZGVudGlhbDo6UHVi
bGljS2V5Q3JlZGVudGlhbChSZWY8QXJyYXlCdWZmZXI+JiYgaWQsIFJlZjxBdXRoZW50aWNhdG9y
UmVzcG9uc2U+JiYgcmVzcG9uc2UpCiAgICAgOiBCYXNpY0NyZWRlbnRpYWwoV1RGOjpiYXNlNjRV
UkxFbmNvZGUoaWQtPmRhdGEoKSwgaWQtPmJ5dGVMZW5ndGgoKSksIFR5cGU6OlB1YmxpY0tleSwg
RGlzY292ZXJ5OjpSZW1vdGUpCiAgICAgLCBtX3Jhd0lkKFdURk1vdmUoaWQpKQogICAgICwgbV9y
ZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKQEAgLTQ2LDkgKzcyLDkgQEAgRXhjZXB0aW9uT3I8
Ym9vbD4gUHVibGljS2V5Q3JlZGVudGlhbDo6Z2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpIGNv
bnN0CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiB9CiAKLXZv
aWQgUHVibGljS2V5Q3JlZGVudGlhbDo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCit2
b2lkIFB1YmxpY0tleUNyZWRlbnRpYWw6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZShEb2N1bWVudCYgZG9jdW1lbnQsIERPTVByb21pc2VEZWZlcnJlZDxJRExC
b29sZWFuPiYmIHByb21pc2UpCiB7Ci0gICAgQXV0aGVudGljYXRvck1hbmFnZXI6OnNpbmdsZXRv
bigpLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXVEZNb3Zl
KHByb21pc2UpKTsKKyAgICBkb2N1bWVudC5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cigpLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaAppbmRleCBm
ZGVkYzU4OWIzMDM0MTE1N2RhZTNiYjdiYWE0Mjc0ZmI2ZmE5YmE0Li4zMGZjZTQyMDJiZWJhZjBh
OTgyZWNhOGZmM2U5ZWMzYjg5YmQ3MjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaApAQCAtMzYsMjggKzM2LDI5IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JSZXNwb25zZTsKK2Ns
YXNzIERvY3VtZW50OworCitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERhdGE7CiAKIGNsYXNz
IFB1YmxpY0tleUNyZWRlbnRpYWwgZmluYWwgOiBwdWJsaWMgQmFzaWNDcmVkZW50aWFsIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFB1YmxpY0tleUNyZWRlbnRpYWw+IGNyZWF0ZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgaWQsIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYgcmVzcG9u
c2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdWJsaWNLZXlDcmVkZW50
aWFsKFdURk1vdmUoaWQpLCBXVEZNb3ZlKHJlc3BvbnNlKSkpOwotICAgIH0KKyAgICBzdGF0aWMg
UmVmPFB1YmxpY0tleUNyZWRlbnRpYWw+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgaWQsIFJl
ZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8UHVibGljS2V5
Q3JlZGVudGlhbD4gdHJ5Q3JlYXRlKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJik7CiAK
LSAgICBBcnJheUJ1ZmZlciogcmF3SWQoKSBjb25zdCB7IHJldHVybiBtX3Jhd0lkLmdldCgpOyB9
Ci0gICAgQXV0aGVudGljYXRvclJlc3BvbnNlKiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzcG9uc2UuZ2V0KCk7IH0KKyAgICBBcnJheUJ1ZmZlciogcmF3SWQoKSBjb25zdCB7IHJldHVy
biBtX3Jhd0lkLnB0cigpOyB9CisgICAgQXV0aGVudGljYXRvclJlc3BvbnNlKiByZXNwb25zZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UucHRyKCk7IH0KICAgICAvLyBOb3Qgc3VwcG9ydCB5
ZXQuIEFsd2F5cyB0aHJvd3MuCiAgICAgRXhjZXB0aW9uT3I8Ym9vbD4gZ2V0Q2xpZW50RXh0ZW5z
aW9uUmVzdWx0cygpIGNvbnN0OwogCi0gICAgc3RhdGljIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxh
dGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFu
PiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0
b3JBdmFpbGFibGUoRG9jdW1lbnQmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7
CiAKIHByaXZhdGU6Ci0gICAgUHVibGljS2V5Q3JlZGVudGlhbChSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgaWQsIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYpOworICAgIFB1YmxpY0tleUNy
ZWRlbnRpYWwoUmVmPEFycmF5QnVmZmVyPiYmIGlkLCBSZWY8QXV0aGVudGljYXRvclJlc3BvbnNl
PiYmKTsKIAogICAgIFR5cGUgY3JlZGVudGlhbFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBU
eXBlOjpQdWJsaWNLZXk7IH0KIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9yYXdJZDsKLSAg
ICBSZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiBtX3Jlc3BvbnNlOworICAgIFJlZjxBcnJh
eUJ1ZmZlcj4gbV9yYXdJZDsKKyAgICBSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiBtX3Jlc3Bv
bnNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5pZGwKaW5kZXggNzdi
MWI3MjQwYjU5MWIyNDNkZWE5ODc5MjBkNDc0MjBlZmJjNTZhZC4uZDUxZjA2ZDQwZGQ5ZTRlYzNj
NmEyODk3NjcyNjIwZmUyYjg1Zjk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsCkBAIC0zNSw1ICszNSw1IEBA
IHR5cGVkZWYgYm9vbGVhbiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnM7CiAgICAgW1NhbWVPYmpl
Y3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdXRoZW50aWNhdG9yUmVzcG9uc2UgcmVzcG9uc2U7CiAg
ICAgW01heVRocm93RXhjZXB0aW9uXSBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnMgZ2V0Q2xpZW50
RXh0ZW5zaW9uUmVzdWx0cygpOwogCi0gICAgc3RhdGljIFByb21pc2U8Ym9vbGVhbj4gaXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCk7CisgICAgW0NhbGxXaXRo
PURvY3VtZW50XSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucy5oCmluZGV4IDc2MGU4ZmRhNWYxZTc1MTc3Y2VmZWY3NTE1ODZlYWI0OTQwNDMz
YzguLmRhOWUzMTNlNjg0MmJkMGFlODU2Yzk4M2RiMDJkMjZjZTA0YjU1ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCkBAIC05NCw5ICs5NCw5IEBAIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgcnAuaWQg
PDwgcnAubmFtZSA8PCBycC5pY29uOwotICAgIFZlY3Rvcjx1aW50OF90PiBpZFZlY3RvcjsKLSAg
ICBpZFZlY3Rvci5hcHBlbmQodXNlci5pZC5kYXRhKCksIHVzZXIuaWQubGVuZ3RoKCkpOwotICAg
IGVuY29kZXIgPDwgaWRWZWN0b3IgPDwgdXNlci5kaXNwbGF5TmFtZSA8PCB1c2VyLm5hbWUgPDwg
dXNlci5pY29uIDw8IHB1YktleUNyZWRQYXJhbXMgPDwgZXhjbHVkZUNyZWRlbnRpYWxzOworICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVzZXIuaWQubGVuZ3RoKCkpOworICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHVzZXIuaWQuZGF0YSgpKSwgdXNlci5pZC5sZW5ndGgoKSwgMSk7CisgICAgZW5jb2Rl
ciA8PCB1c2VyLmRpc3BsYXlOYW1lIDw8IHVzZXIubmFtZSA8PCB1c2VyLmljb24gPDwgcHViS2V5
Q3JlZFBhcmFtcyA8PCBleGNsdWRlQ3JlZGVudGlhbHM7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CkBAIC0xMDksOCArMTA5LDE1IEBAIHN0ZDo6b3B0aW9uYWw8UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0CiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
cnAuaWNvbikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQudXNlci5pZFZlY3RvcikpCisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiB1c2VySWRMZW5ndGg7CisgICAgZGVjb2RlciA+PiB1c2VySWRMZW5ndGg7CisgICAgaWYg
KCF1c2VySWRMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0
LnVzZXIuaWRWZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KHVzZXJJZExlbmd0aC52YWx1ZSgpKTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlc3VsdC51c2VyLmlkVmVjdG9y
LmRhdGEoKSwgdXNlcklkTGVuZ3RoLnZhbHVlKCksIDEpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXNlci5kaXNwbGF5TmFt
ZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQudXNlci5uYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjlmYjg3
Zjc4MGE1YmY1MmMwMmIwMmM1NjljMDdkYWM1MDM1ODc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oCkBA
IC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCX0FVVEhOKQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1
dGhlbnRpY2F0b3JSZXNwb25zZTsKKworc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsK
KyAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmF3SWQ7CisKKyAgICAvLyBBdXRoZW50
aWNhdG9yUmVzcG9uc2UKKyAgICBib29sIGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U7CisgICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlCdWZmZXI+IGNsaWVudERhdGFKU09OOworCisg
ICAgLy8gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKKyAgICBtdXRhYmxlIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYXR0ZXN0YXRpb25PYmplY3Q7CisKKyAgICAvLyBBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UKKyAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXV0aGVu
dGljYXRvckRhdGE7CisgICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNpZ25hdHVyZTsK
KyAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlckhhbmRsZTsKKworICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YT4gZGVjb2RlKERlY29kZXImKTsKK307CisKKy8vIE5vdGVkOiBjbGllbnREYXRhSlNP
TiBpcyBuZXZlciBlbmNvZGVkIG9yIGRlY29kZWQgYXMgaXQgaXMgbmV2ZXIgc2VudCBhY3Jvc3Mg
ZGlmZmVyZW50IHByb2Nlc3Nlcy4KK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFB1Ymxp
Y0tleUNyZWRlbnRpYWxEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYXdJZC0+Ynl0ZUxlbmd0aCgpKTsK
KyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihyYXdJZC0+ZGF0YSgpKSwgcmF3SWQtPmJ5dGVMZW5ndGgoKSwgMSk7CisKKyAg
ICBlbmNvZGVyIDw8IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CisKKyAgICBp
ZiAoaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkgeworICAgICAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhdHRlc3RhdGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oYXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSksIGF0dGVzdGF0aW9u
T2JqZWN0LT5ieXRlTGVuZ3RoKCksIDEpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXV0aGVudGljYXRvckRhdGEtPmJ5dGVM
ZW5ndGgoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSksIGF1dGhlbnRp
Y2F0b3JEYXRhLT5ieXRlTGVuZ3RoKCksIDEpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaWduYXR1cmUt
PmRhdGEoKSksIHNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCkpOworICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHVzZXJIYW5kbGUtPmRhdGEoKSksIHVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSwgMSk7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRp
YWxEYXRhPiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgUHVibGljS2V5Q3JlZGVudGlhbERhdGEgcmVzdWx0OworCisgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gcmF3SWRMZW5ndGg7CisgICAgZGVjb2RlciA+PiByYXdJZExlbmd0aDsK
KyAgICBpZiAoIXJhd0lkTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmVzdWx0LnJhd0lkID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZExlbmd0aC52YWx1ZSgp
LCBzaXplb2YodWludDhfdCkpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0LnJhd0lkLT5kYXRhKCkpLCByYXdJ
ZExlbmd0aC52YWx1ZSgpLCAxKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTsK
KyAgICBkZWNvZGVyID4+IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CisgICAg
aWYgKCFpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHJlc3VsdC5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlID0gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS52YWx1ZSgpOworCisgICAg
aWYgKHJlc3VsdC5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKSB7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGF0dGVzdGF0aW9uT2JqZWN0TGVuZ3RoOworICAgICAg
ICBkZWNvZGVyID4+IGF0dGVzdGF0aW9uT2JqZWN0TGVuZ3RoOworICAgICAgICBpZiAoIWF0dGVz
dGF0aW9uT2JqZWN0TGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgICAgICByZXN1bHQuYXR0ZXN0YXRpb25PYmplY3QgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0
dGVzdGF0aW9uT2JqZWN0TGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90KSk7CisgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4ocmVzdWx0LmF0dGVzdGF0aW9uT2JqZWN0LT5kYXRhKCkpLCBhdHRlc3RhdGlvbk9iamVj
dExlbmd0aC52YWx1ZSgpLCAxKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBhdXRoZW50aWNhdG9yRGF0YUxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGF1dGhlbnRpY2F0
b3JEYXRhTGVuZ3RoOworICAgIGlmICghYXV0aGVudGljYXRvckRhdGFMZW5ndGgpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXN1bHQuYXV0aGVudGljYXRvckRhdGEgPSBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoLnZhbHVlKCksIHNpemVv
Zih1aW50OF90KSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQuYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSks
IGF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoLnZhbHVlKCksIDEpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2lnbmF0dXJlTGVuZ3Ro
OworICAgIGRlY29kZXIgPj4gc2lnbmF0dXJlTGVuZ3RoOworICAgIGlmICghc2lnbmF0dXJlTGVu
Z3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmVzdWx0LnNpZ25hdHVy
ZSA9IEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlTGVuZ3RoLnZhbHVlKCksIHNpemVvZih1
aW50OF90KSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQuc2lnbmF0dXJlLT5kYXRhKCkpLCBzaWduYXR1cmVM
ZW5ndGgudmFsdWUoKSwgMSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB1c2VySGFuZGxlTGVuZ3RoOworICAgIGRlY29kZXIgPj4g
dXNlckhhbmRsZUxlbmd0aDsKKyAgICBpZiAoIXVzZXJIYW5kbGVMZW5ndGgpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXN1bHQudXNlckhhbmRsZSA9IEFycmF5QnVmZmVy
OjpjcmVhdGUodXNlckhhbmRsZUxlbmd0aC52YWx1ZSgpLCBzaXplb2YodWludDhfdCkpOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4ocmVzdWx0LnVzZXJIYW5kbGUtPmRhdGEoKSksIHVzZXJIYW5kbGVMZW5ndGgudmFsdWUo
KSwgMSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY29j
b2EvTG9jYWxBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCmluZGV4IDJhZTQwMzVlOTgyZTJiNmZkODMwNTg5
OTEyMDE3NjFhYzJlMTIyNWQuLjI1YzQ2YmNlYTE2MDkyNTA5ZGU5OWQzMTFhM2Q4YTcwYTVjMDhj
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9j
b2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzUsMTEgKzM1LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczsKK3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTsKIHN0
cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiAKLXVzaW5nIENyZWF0aW9u
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYpPjsKLXVzaW5nIFJlcXVlc3RDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik+OwotdXNpbmcgRXhjZXB0aW9u
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT47
Cit1c2luZyBDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoVmFyaWFudDxQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YSwgRXhjZXB0aW9uRGF0YT4mJik+OwogCiB0eXBlZGVmIHZvaWQgKF5Db21wbGV0aW9u
QmxvY2spKFNlY0tleVJlZiBfTnVsbGFibGUgcmVmZXJlbmNlS2V5LCBOU0FycmF5ICogX051bGxh
YmxlIGNlcnRpZmljYXRlcywgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcik7CiAKQEAgLTUwLDgg
KzQ5LDggQEAgcHVibGljOgogICAgIExvY2FsQXV0aGVudGljYXRvcigpOwogICAgIHZpcnR1YWwg
fkxvY2FsQXV0aGVudGljYXRvcigpID0gZGVmYXVsdDsKIAotICAgIHZvaWQgbWFrZUNyZWRlbnRp
YWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiwgQ3JlYXRpb25DYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYm
KTsKLSAgICB2b2lkIGdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDYWxsYmFjayYm
LCBFeGNlcHRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYsIENhbGxiYWNrJiYpOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwg
Q2FsbGJhY2smJik7CiAgICAgYm9vbCBpc0F2YWlsYWJsZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2NvY29hL0xvY2Fs
QXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDQwYzg2MzFlZjAwMmI2MDBkN2QzZGE3OWI5YTkz
YjQxNGI1MzkyM2MuLjk2NWQxZjI4YTczMjk2OGZhYzUxNmJmNzA0YjM1NGEyMzNmYTM1YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY29jb2EvTG9jYWxBdXRo
ZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJDT1NFQ29u
c3RhbnRzLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25EYXRhLmgiCiAjaW1wb3J0ICJQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgiCisjaW1wb3J0ICJQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YS5oIgogI2ltcG9ydCAiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmgiCiAj
aW1wb3J0IDxTZWN1cml0eS9TZWNJdGVtLmg+CiAjaW1wb3J0IDxwYWwvY3J5cHRvL0NyeXB0b0Rp
Z2VzdC5oPgpAQCAtMTE1LDcgKzExNiw3IEBAIExvY2FsQXV0aGVudGljYXRvcjo6TG9jYWxBdXRo
ZW50aWNhdG9yKCkKICAgICBSRUxFQVNFX0FTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkFjY2Vzc0NyZWRlbnRpYWxzKSk7CiB9CiAKLXZvaWQgTG9jYWxBdXRo
ZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIENyZWF0aW9u
Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFj
aykKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
IG9wdGlvbnMsIENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIExv
Y2FsQXV0aGVudGljYXRvckludGVybmFsOwogCkBAIC0xMjQsNyArMTI1LDcgQEAgdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFz
aCwgY29uc3QgUHVibGkKICAgICBBU1NFUlRfVU5VU0VEKGhhc2gsIGhhc2ggPT0gaGFzaCk7CiAg
ICAgQVNTRVJUX1VOVVNFRChvcHRpb25zLCAhb3B0aW9ucy5ycC5pZC5pc0VtcHR5KCkpOwogICAg
IEFTU0VSVF9VTlVTRUQoY2FsbGJhY2ssIGNhbGxiYWNrKTsKLSAgICBleGNlcHRpb25DYWxsYmFj
ayh7IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7
CisgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxp
YWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CiAjZWxzZQogICAgIC8vIFRoZSBmb2xsb3dpbmcg
aW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29wLW1ha2UtY3JlZCBh
cyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU2tpcCBTdGVwIDQtNSBhcyByZXF1aXJlUmVz
aWRlbnRLZXkgYW5kIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uIGFyZSBlbmZvcmNlZC4KQEAgLTEz
OSw3ICsxNDAsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgICAgICB9CiAgICAgfQog
ICAgIGlmICghY2FuRnVsbGZpbGxQdWJLZXlDcmVkUGFyYW1zKSB7Ci0gICAgICAgIGV4Y2VwdGlv
bkNhbGxiYWNrKHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0
aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRp
YWxQYXJhbWV0ZXJzLiJfcyB9KTsKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5v
dFN1cHBvcnRlZEVycm9yLCAiVGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IgZG9l
c24ndCBzdXBwb3J0IGFueSBwcm92aWRlZCBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVycy4i
X3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1OCw3ICsxNTksNyBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBoYXNoLCBjb25zdCBQdWJsaQogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29w
eU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZhdHRyaWJ1dGVzQXJy
YXlSZWYpOwogICAgICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91
bmQpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICVk
Iiwgc3RhdHVzKTsKLSAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9y
LCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgICAgICBjYWxsYmFjayhF
eGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3Mg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byByZXRhaW5B
dHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CkBAIC0xNjYsNyAr
MTY3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICAgICAgZm9yIChOU0RpY3Rpb25h
cnkgKm5zQXR0cmlidXRlcyBpbiAoTlNBcnJheSAqKWF0dHJpYnV0ZXNBcnJheVJlZikgewogICAg
ICAgICAgICAgTlNEYXRhICpuc0NyZWRlbnRpYWxJZCA9IG5zQXR0cmlidXRlc1soaWQpa1NlY0F0
dHJBcHBsaWNhdGlvbkxhYmVsXTsKICAgICAgICAgICAgIGlmIChleGNsdWRlQ3JlZGVudGlhbElk
cy5jb250YWlucyhTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obnNDcmVkZW50
aWFsSWQuYnl0ZXMpLCBuc0NyZWRlbnRpYWxJZC5sZW5ndGgpKSkgewotICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkNhbGxiYWNrKHsgTm90QWxsb3dlZEVycm9yLCAiQXQgbGVhc3Qgb25lIGNyZWRl
bnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4g
dGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0pOworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJBdCBsZWFzdCBv
bmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMg
bGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xODAsMTcg
KzE4MSwxNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgIGlmICghW2NvbnRleHQgY2Fu
RXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uV2l0aEJpb21l
dHJpY3MgZXJyb3I6JmVycm9yXSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGV2YWx1
YXRlIGF1dGhlbnRpY2F0aW9uIHdpdGggYmlvbWV0cmljcyBwb2xpY3k6ICVAIiwgZXJyb3IpOwog
ICAgICAgICAvLyBGSVhNRSgxODI3NjcpCi0gICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgTm90
QWxsb3dlZEVycm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsKKyAgICAg
ICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxpYWJs
ZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBO
U1N0cmluZyAqcmVhc29uID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBbGxvdyAlQCB0
byBjcmVhdGUgYSBwdWJsaWMga2V5IGNyZWRlbnRpYWwgZm9yICVAIiwgKGlkKW9wdGlvbnMucnAu
aWQsIChpZClvcHRpb25zLnVzZXIubmFtZV07CiAgICAgLy8gRklYTUUoMTgzNTM0KTogT3B0aW1p
emUgdGhlIGZvbGxvd2luZyBuZXN0ZWQgY2FsbGJhY2tzIGFuZCB0aHJlYWRpbmcuCi0gICAgW2Nv
bnRleHQgZXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uV2l0
aEJpb21ldHJpY3MgbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpCbG9ja1B0cjx2b2lkKEJP
T0wsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBvcHRpb25zID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlv
bnMpLCBoYXNoXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAg
W2NvbnRleHQgZXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9u
V2l0aEJpb21ldHJpY3MgbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpCbG9ja1B0cjx2b2lk
KEJPT0wsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBvcHRpb25zID0gY3Jvc3NUaHJl
YWRDb3B5KG9wdGlvbnMpLCBoYXNoXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJvcikgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIXN1
Y2Nlc3MgfHwgZXJyb3IpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXV0aGVu
dGljYXRlIHdpdGggYmlvbWV0cmljczogJUAiLCBlcnJvcik7Ci0gICAgICAgICAgICBleGNlcHRp
b25DYWxsYmFjayh7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQu
Il9zIH0pOworICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRF
cnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTIwNSw3ICsyMDYsNyBAQCB2b2lkIExvY2FsQXV0aGVudGlj
YXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQ
dWJsaQogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtRGVsZXRlKChfX2JyaWRnZSBD
RkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkpOwogICAgICAgICBpZiAoc3RhdHVzICYmIHN0YXR1
cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgZGV0ZWxlIG9sZGVyIGNyZWRlbnRpYWw6ICVkIiwgc3RhdHVzKTsKLSAgICAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4i
X3MgfSk7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9y
LCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMjEzLDExICsyMTQsMTEgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkK
ICAgICAgICAgLy8gRklYTUUoMTgzNTM0KQogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhpcy0+aXNzdWVDbGllbnRDZXJ0aWZpY2F0ZShv
cHRpb25zLnJwLmlkLCBvcHRpb25zLnVzZXIubmFtZSwgaGFzaCwgQmxvY2tQdHI8dm9pZChTZWNL
ZXlSZWYsIE5TQXJyYXkgKiwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSwgb3B0aW9ucyA9IGNyb3NzVGhyZWFkQ29weShvcHRpb25zKV0gKF9OdWxsYWJsZSBT
ZWNLZXlSZWYgcHJpdmF0ZUtleSwgTlNBcnJheSAqIF9OdWxsYWJsZSBjZXJ0aWZpY2F0ZXMsIE5T
RXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgd2Vha1RoaXMtPmlzc3VlQ2xpZW50
Q2VydGlmaWNhdGUob3B0aW9ucy5ycC5pZCwgb3B0aW9ucy51c2VyLm5hbWUsIGhhc2gsIEJsb2Nr
UHRyPHZvaWQoU2VjS2V5UmVmLCBOU0FycmF5ICosIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUo
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIG9wdGlvbnMgPSBjcm9zc1RocmVhZENvcHko
b3B0aW9ucyldIChfTnVsbGFibGUgU2VjS2V5UmVmIHByaXZhdGVLZXksIE5TQXJyYXkgKiBfTnVs
bGFibGUgY2VydGlmaWNhdGVzLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICAgICAgICAgIGlmIChlcnJvcikgewog
ICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXR0ZXN0OiAlQCIsIGVycm9yKTsK
LSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25v
d24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2Vw
dGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBB
dHRlc3RhdGlvbiBDZXJ0aWZpY2F0ZSBhbmQgQXR0ZXN0YXRpb24gSXNzdWluZyBDQQpAQCAtMjUw
LDcgKzI1MSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAgICAgICAgICAgICAgT1NT
dGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKWNyZWRlbnRpYWxJZFF1ZXJ5LCAmYXR0cmlidXRlc1JlZik7CiAgICAgICAgICAgICAgICAg
aWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdl
dCBDcmVkZW50aWFsIElEOiAlZCIsIHN0YXR1cyk7Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3Mg
fSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3du
RXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhdXRvIHJldGFp
bkF0dHJpYnV0ZXMgPSBhZG9wdENGKGF0dHJpYnV0ZXNSZWYpOwpAQCAtMjcxLDcgKzI3Miw3IEBA
IHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAgICAgICAgICAgICAgc3RhdHVzID0gU2VjSXRl
bVVwZGF0ZSgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXVwZGF0ZVF1ZXJ5LCAoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKXVwZGF0ZVBhcmFtcyk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1
cykgewogICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHVwZGF0ZSB0aGUg
S2V5Y2hhaW4gaXRlbTogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0p
OworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVy
cm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zMDQsNyArMzA1
LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICAgICAgICAgICAgICAgICAgYXV0byBy
ZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
ZXJyb3JSZWYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3Qg
ZXhwb3J0IHRoZSBwdWJsaWMga2V5OiAlQCIsIChOU0Vycm9yKillcnJvclJlZik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25v
d24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3Iu
Il9zIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgoKE5TRGF0YSAqKXB1YmxpY0tleURh
dGFSZWYuZ2V0KCkpLmxlbmd0aCA9PSAoMSArIDIgKiBFUzI1NktleVNpemVJbkJ5dGVzKSk7IC8v
IDA0IHwgWCB8IFkKQEAgLTMyNSw3ICszMjYsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6
bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQog
ICAgICAgICAgICAgICAgIGF1dG8gY29zZVB1YmxpY0tleSA9IGNib3I6OkNCT1JXcml0ZXI6Ondy
aXRlKGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKHB1YmxpY0tleU1hcCkpKTsKICAgICAgICAgICAg
ICAgICBpZiAoIWNvc2VQdWJsaWNLZXkpIHsKICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZG4ndCBlbmNvZGUgdGhlIHB1YmxpYyBrZXkgaW50byBDT1NFIGJpbmFyaWVzLiIpOwot
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVu
a25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4i
X3MgfSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmRWZWN0b3IoY29zZVB1
YmxpY0tleS52YWx1ZSgpKTsKQEAgLTM0Nyw3ICszNDgsNyBAQCB2b2lkIExvY2FsQXV0aGVudGlj
YXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQ
dWJsaQogICAgICAgICAgICAgICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJv
clJlZik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvclJlZikgewogICAgICAgICAgICAg
ICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUgc2lnbmF0dXJlOiAl
QCIsIChOU0Vycm9yKillcnJvclJlZik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0p
OworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25v
d25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gbnNTaWduYXR1cmUgPSAoTlNEYXRhICopc2lnbmF0dXJlUmVmLmdldCgpOwpAQCAt
Mzc0LDE3ICszNzUsMTcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFs
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICAgICAgICAgIGF1
dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBjYm9yOjpDQk9SV3JpdGVyOjp3cml0ZShjYm9yOjpDQk9S
VmFsdWUoV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdE1hcCkpKTsKICAgICAgICAgICAgIGlmICgh
YXR0ZXN0YXRpb25PYmplY3QpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0
IGVuY29kZSB0aGUgYXR0ZXN0YXRpb24gb2JqZWN0LiIpOwotICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3Mg
fSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJv
ciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY2FsbGJhY2soY3JlZGVudGlhbElkLCBh
dHRlc3RhdGlvbk9iamVjdC52YWx1ZSgpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKFB1YmxpY0tl
eUNyZWRlbnRpYWxEYXRhIHsgQXJyYXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgp
LCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwgdHJ1ZSwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6OmNyZWF0
ZShhdHRlc3RhdGlvbk9iamVjdC52YWx1ZSgpLmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3QudmFs
dWUoKS5zaXplKCkpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH0pOwogICAgICAgICB9KS5n
ZXQoKSk7CiAgICAgfSkuZ2V0KCldOwogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiB9CiAKLXZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMs
IFJlcXVlc3RDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrKQordm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbihjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyYgb3B0aW9ucywgQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICB1c2luZyBuYW1lc3Bh
Y2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7CiAKQEAgLTM5Myw3ICszOTQsNyBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aGFzaCwgY29uc3QgUHVibGljSwogICAgIEFTU0VSVF9VTlVTRUQoaGFzaCwgaGFzaCA9PSBoYXNo
KTsKICAgICBBU1NFUlRfVU5VU0VEKG9wdGlvbnMsICFvcHRpb25zLnJwSWQuaXNFbXB0eSgpKTsK
ICAgICBBU1NFUlRfVU5VU0VEKGNhbGxiYWNrLCBjYWxsYmFjayk7Ci0gICAgZXhjZXB0aW9uQ2Fs
bGJhY2soeyBOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9z
IH0pOworICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJObyBh
dmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9zIH0pOwogI2Vsc2UKICAgICAvLyBUaGUgZm9sbG93
aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNvcC1nZXQtYXNz
ZXJ0aW9uIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTa2lwIFN0ZXAgMiBhcyByZXF1
aXJlVXNlclZlcmlmaWNhdGlvbiBpcyBlbmZvcmNlZC4KQEAgLTQwMiw3ICs0MDMsNyBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aGFzaCwgY29uc3QgUHVibGljSwogICAgIC8vIFN0ZXAgMy01LiBVbmxpa2UgdGhlIHNwZWMsIGlm
IGFuIGFsbG93IGxpc3QgaXMgcHJvdmlkZWQgYW5kIHRoZXJlIGlzIG5vIGludGVyc2VjdGlvbiBi
ZXR3ZWVuIGV4aXN0aW5nIG9uZXMgYW5kIHRoZSBhbGxvdyBsaXN0LCB3ZSBhbHdheXMgcmV0dXJu
IE5vdEFsbG93ZWRFcnJvci4KICAgICBIYXNoU2V0PFN0cmluZz4gYWxsb3dDcmVkZW50aWFsSWRz
ID0gcHJvZHVjZUhhc2hTZXQob3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKTsKICAgICBpZiAoIW9w
dGlvbnMuYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCkgJiYgYWxsb3dDcmVkZW50aWFsSWRzLmlz
RW1wdHkoKSkgewotICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IE5vdEFsbG93ZWRFcnJvciwg
Ik5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hl
ZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7
IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRo
ZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNDE4LDcgKzQxOSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpn
ZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAg
ICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKICAgICBpZiAoc3RhdHVzICYm
IHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0dXMpOwotICAgICAgICBleGNlcHRpb25DYWxs
YmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAg
ICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRl
cm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byByZXRh
aW5BdHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CkBAIC00MzYs
NyArNDM3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbihjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0sKICAgICAgICAgaW50ZXJzZWN0ZWRD
cmVkZW50aWFsc0F0dHJpYnV0ZXMgPSByZXN1bHQ7CiAgICAgfQogICAgIGlmICghaW50ZXJzZWN0
ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMuY291bnQpIHsKLSAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soeyBOb3RBbGxvd2VkRXJyb3IsICJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBp
biB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSk7CisgICAgICAgIGNh
bGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJObyBtYXRjaGVkIGNyZWRl
bnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4i
X3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1Miw3ICs0NTMsNyBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aGFzaCwgY29uc3QgUHVibGljSwogICAgICAgICBhdXRvIHJldGFpbkNvbnRleHQgPSBhZG9wdE5T
KGNvbnRleHQpOwogICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGV2YWx1YXRlIGF1dGhlbnRp
Y2F0aW9uIHdpdGggYmlvbWV0cmljcyBwb2xpY3k6ICVAIiwgZXJyb3IpOwogICAgICAgICAvLyBG
SVhNRSgxODI3NjcpCi0gICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgTm90QWxsb3dlZEVycm9y
LCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsKKyAgICAgICAgY2FsbGJhY2so
RXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNh
dG9ycy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2MiwxMSArNDYzLDEx
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHVzZXJoYW5k
bGU7CiAgICAgTlNEYXRhICpuc1VzZXJoYW5kbGUgPSBzZWxlY3RlZENyZWRlbnRpYWxBdHRyaWJ1
dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXTsKICAgICB1c2VyaGFuZGxlLmFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc1VzZXJoYW5kbGUuYnl0ZXMpLCBuc1Vz
ZXJoYW5kbGUubGVuZ3RoKTsKLSAgICBhdXRvIHJlcGx5ID0gQmxvY2tQdHI8dm9pZChCT09MLCBO
U0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBl
eGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBycElkID0gb3B0
aW9ucy5ycElkLmlzb2xhdGVkQ29weSgpLCBoYXNoLCBjcmVkZW50aWFsSWQgPSBXVEZNb3ZlKGNy
ZWRlbnRpYWxJZCksIHVzZXJoYW5kbGUgPSBXVEZNb3ZlKHVzZXJoYW5kbGUpLCBjb250ZXh0ID0g
YWRvcHROUyhjb250ZXh0KV0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUg
eworICAgIGF1dG8gcmVwbHkgPSBCbG9ja1B0cjx2b2lkKEJPT0wsIE5TRXJyb3IgKik+Ojpmcm9t
Q2FsbGFibGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJwSWQgPSBvcHRpb25zLnJw
SWQuaXNvbGF0ZWRDb3B5KCksIGhhc2gsIGNyZWRlbnRpYWxJZCA9IFdURk1vdmUoY3JlZGVudGlh
bElkKSwgdXNlcmhhbmRsZSA9IFdURk1vdmUodXNlcmhhbmRsZSksIGNvbnRleHQgPSBhZG9wdE5T
KGNvbnRleHQpXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAg
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIXN1Y2Nlc3MgfHwgZXJy
b3IpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXV0aGVudGljYXRlIHdpdGgg
YmlvbWV0cmljczogJUAiLCBlcnJvcik7Ci0gICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7
IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOworICAg
ICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxk
bid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTQ5MCw3ICs0OTEsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNz
ZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljSwogICAgICAg
ICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmcHJpdmF0ZUtleVJlZik7CiAgICAgICAgICAgICBpZiAoc3Rh
dHVzKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZXQgdGhlIHByaXZh
dGUga2V5IHJlZmVyZW5jZTogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7
CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwg
IlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gcHJpdmF0ZUtleSA9IGFkb3B0Q0YocHJp
dmF0ZUtleVJlZik7CkBAIC01MDQsNyArNTA1LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0sK
ICAgICAgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKICAgICAg
ICAgICAgIGlmIChlcnJvclJlZikgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZTogJUAiLCAoTlNFcnJvciopZXJyb3JSZWYpOwotICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBp
bnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9u
RGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gbnNT
aWduYXR1cmUgPSAoTlNEYXRhICopc2lnbmF0dXJlUmVmLmdldCgpOwpAQCAtNTEyLDcgKzUxMyw3
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAgICAgICAgIH0KIAogICAgICAgICAvLyBTdGVw
IDEzLgotICAgICAgICBjYWxsYmFjayhjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUs
IHVzZXJoYW5kbGUpOworICAgICAgICBjYWxsYmFjayhQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7
IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNp
emUoKSksIGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhE
YXRhLmRhdGEoKSwgYXV0aERhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWduYXR1
cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZSh1c2VyaGFu
ZGxlLmRhdGEoKSwgdXNlcmhhbmRsZS5zaXplKCkpIH0pOwogICAgIH0pOwogCiAgICAgLy8gRklY
TUUoMTgzNTMzKTogVXNlIHVzZXJoYW5kbGUgaW5zdGVhZCBvZiB1c2VybmFtZSBkdWUgdG8gdGhl
IHN0YXRlZCBLZXljaGFpbiBsaW1pdGF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZDRjZjUwZGE5
NzdkMTY0ZjNlMjlhNTkyZGIwNjEyODBhNThlNjA0OS4uMjg2MGJhMTcwZTgyZDIzNmIxYTgxMmU0
ZGU5YzFmMWEzYjhhMmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ1LDcgKzQ1LDYgQEAgTW9kdWxl
cy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKIAogTW9kdWxlcy9jcmVkZW50aWFs
bWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwCiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2Vt
ZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcAotTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVu
dC9DcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
TmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCiAKIE1vZHVsZXMvZW50cmllc2FwaS9FcnJvckNhbGxi
YWNrLmNwcApAQCAtMjQ3LDEwICsyNDYsOCBAQCBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJE
U1BLZXJuZWwuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAogTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAogCi1Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKLU1vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCi1Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmNwcAotTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2Uu
Y3BwCitNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKK01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcAogTW9kdWxlcy93
ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNwcAogTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NC
T1JSZWFkZXIuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY4
Y2U5MDg3YzQ3NTk1MTE3NGZhNTdkNTJkMzA1NWRiNzU4MjEwZGMuLjU4YTE0NzMzMWFmMTEyMGM4
MjNlZWM3NWZkMDU1NWVkM2E5MmMzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NTMsNyArMTc1Myw3IEBACiAJCTU3MzAz
QzIyMjAwOUFGMDMwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0My
MTIwMDlBRUY2MDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5o
ICovOyB9OwogCQk1NzMwM0MyQzIwMDlCNEE4MDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzMwM0MyNzIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmggKi87IH07CiAJCTU3MzAzQzJGMjAwOUI3RTEwMDM1NTk2NSAvKiBKU0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTczMDNDMkQyMDA5QjdEOTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmggKi87IH07Ci0JCTU3MzAzQzQ2MjAxMDVEMkYwMDM1NTk2NSAv
KiBBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTczMDNDNDMyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTczMDNDNDYyMDEwNUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDNDMy
MDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MzQ4OTM5MURBQzZCNkUw
MERDMDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM0ODkzODFEQUM2QjZEMDBEQzA2NjcgLyog
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OwogCQk1NzM5RTEyRjFEQUM3Rjc4MDBF
MTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM5RTEyRTFEQUM3Rjc4MDBFMTQzODMgLyog
SlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggKi87IH07CiAJCTU3NEY1NUUwMjA0RjNBQ0Uw
MDI5NDhDNiAvKiBMb2NhbEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NEY1NURFMjA0RjM3NDQwMDI5NDhDNiAvKiBMb2NhbEF1
dGhlbnRpY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTc2MywxMSArMTc2Myw5IEBACiAJCTU3NTBBOTgyMUU2QTE1MDgwMDcwNUM0QSAv
KiBKU0VjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzUwQTk4MDFFNkExNTA4MDA3MDVDNEEgLyogSlNFY0tleVBhcmFtcy5oICovOyB9
OwogCQk1NzUwQTk4NzFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3JpdGhtRUNESC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5ODUxRTZB
MjE2ODAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVDREguaCAqLzsgfTsKIAkJNTc1NDcxOUYx
RUNFNjI4MzAwREQ2M0IyIC8qIEpTUnNhUHNzUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU0NzE5OTFFQ0U1RDJBMDBERDYzQjIgLyogSlNS
c2FQc3NQYXJhbXMuaCAqLzsgfTsKLQkJNTc2MDgyNzIyMDIxNUE1NTAwMTE2Njc4IC8qIENyZWRl
bnRpYWxzTWVzc2VuZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQ3JlZGVudGlhbHNNZXNzZW5nZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1NzYw
ODI3QTIwMjRFQTVDMDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI3ODIwMjQ0REFC
MDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmggKi87IH07Ci0JCTU3NjA4MjdC
MjAyNEVEMjkwMDExNjY3OCAvKiBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2MDgyNzkyMDI0NERBQzAw
MTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgKi87IH07Ci0JCTU3NjA4Mjg2
MjAyNTZBRkEwMDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2MDgyODIyMDI1Njc5NzAw
MTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmggKi87IH07Ci0JCTU3NjA4Mjg4
MjAyNTZBRkQwMDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI4MTIwMjU2Nzk2
MDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwICovOyB9OworCQk1NzYw
ODI3MjIwMjE1QTU1MDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI3MDIw
MjE1MTNGMDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTc2MDgyN0EyMDI0
RUE1QzAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4Mjc4MjAyNDREQUIwMDEx
NjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi87IH07CisJCTU3NjA4MjdC
MjAyNEVEMjkwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4Mjc5MjAyNDRE
QUMwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLzsgfTsKIAkJ
NTc2ODE0MkExRTZGOTlDMTAwRTc3NzU0IC8qIENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQ
YXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
NjgxNDI5MUU2Rjk5QzEwMEU3Nzc1NCAvKiBDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFy
YW1zLmggKi87IH07CiAJCTU3NjgxNDQxMUU3MDlGQTQwMEU3Nzc1NCAvKiBKU0VjZGhLZXlEZXJp
dmVQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3NjgxNDNFMUU3MDlDMzYwMEU3Nzc1NCAvKiBKU0VjZGhLZXlEZXJpdmVQYXJhbXMuaCAqLzsg
fTsKIAkJNTc2ODE0NDUxRTcwQ0IxRjAwRTc3NzU0IC8qIEpTQWVzS2V5UGFyYW1zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzY4MTQ0MzFFNzBDQjEw
MDBFNzc3NTQgLyogSlNBZXNLZXlQYXJhbXMuaCAqLzsgfTsKQEAgLTE3ODMsMTIgKzE3ODEsMTUg
QEAKIAkJNTdCNUY3RjkxRTVCRTg0MDAwRjM0RjkwIC8qIENyeXB0b0FsZ29yaXRobUFFU19HQ00u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjVGN0Y3
MUU1QkU4NDAwMEYzNEY5MCAvKiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNLmggKi87IH07CiAJCTU3
QjVGODA5MUU1RDFBOTgwMEYzNEY5MCAvKiBDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjVGODA4MUU1
RDFBOTgwMEYzNEY5MCAvKiBDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMuaCAqLzsgfTsKIAkJ
NTdCNUY4MTAxRTVFMkE0RTAwRjM0RjkwIC8qIEpTQWVzR2NtUGFyYW1zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I1RjgwQjFFNUQyMkRBMDBGMzRG
OTAgLyogSlNBZXNHY21QYXJhbXMuaCAqLzsgfTsKLQkJNTdDN0E2OEMxRTU2OTY3NTAwQzY3RDcx
IC8qIEJhc2ljQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdDN0E2OEIxRTU2OTY3NTAwQzY3RDcxIC8qIEJhc2ljQ3JlZGVudGlhbC5o
ICovOyB9OworCQk1N0M3QTY4QzFFNTY5Njc1MDBDNjdENzEgLyogQmFzaWNDcmVkZW50aWFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0M3QTY4QjFF
NTY5Njc1MDBDNjdENzEgLyogQmFzaWNDcmVkZW50aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdDN0E2OUYxRTU3OTE3ODAwQzY3RDcxIC8q
IEpTQmFzaWNDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0M3QTY5RDFFNTc5MTBEMDBDNjdENzEgLyogSlNCYXNpY0NyZWRlbnRpYWwu
aCAqLzsgfTsKIAkJNTdEMDAxOEQxREQ1NDEzMjAwRUQxOUQ5IC8qIEpTQ3J5cHRvS2V5VXNhZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RDAwMThD
MURENTQxMzIwMEVEMTlEOSAvKiBKU0NyeXB0b0tleVVzYWdlLmggKi87IH07CiAJCTU3RDg0NjI4
MUZFODk2MDUwMENBMzY4MiAvKiBOYXZpZ2F0b3JDcmVkZW50aWFscy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEODQ2MjYxRkU4OTVGODAwQ0EzNjgy
IC8qIE5hdmlnYXRvckNyZWRlbnRpYWxzLmggKi87IH07Ci0JCTU3RDg0NjJFMUZFQUY2OTkwMENB
MzY4MiAvKiBQdWJsaWNLZXlDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Q4NDYyQjFGRUFGNjhGMDBDQTM2ODIgLyogUHVibGljS2V5
Q3JlZGVudGlhbC5oICovOyB9OworCQk1N0Q4NDYyRTFGRUFGNjk5MDBDQTM2ODIgLyogUHVibGlj
S2V5Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTdEODQ2MkIxRkVBRjY4RjAwQ0EzNjgyIC8qIFB1YmxpY0tleUNyZWRlbnRpYWwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1N0Q4NDYz
NTFGRUFGQ0QzMDBDQTM2ODIgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Q4NDYzMDFGRUFGQzJGMDBDQTM2
ODIgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFsLmggKi87IH07CisJCTU3RENFRDY3MjE0MDc3NUIw
MDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDYyMjE0MDc2M0MwMDE2Qjg0
NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLzsgfTsKKwkJNTdEQ0VENjky
MTQwNzc2NDAwMTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2MzIxNDA3
NjNDMDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLzsgfTsK
KwkJNTdEQ0VENzQyMTQzMDVGMDAwMTZCODQ3IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ3MjIx
NDMwNUYwMDAxNkI4NDcgLyogUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1N0UxRTVBMzFFOEM5MUI1MDBF
RTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMUU1QTExRThDOTFCNTAwRUUzN0M5IC8qIENyeXB0
b0FsZ29yaXRobUFFU19DVFIuaCAqLzsgfTsKIAkJNTdFMUU1QTcxRThEQkQzRTAwRUUzN0M5IC8q
IENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMUU1QTYxRThEQkQzRTAwRUUzN0M5IC8qIENyeXB0b0Fs
Z29yaXRobUFlc0N0clBhcmFtcy5oICovOyB9OwogCQk1N0UxRTVBRDFFOEREMDlCMDBFRTM3Qzkg
LyogSlNBZXNDdHJQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3RTFFNUFCMUU4REQwOUIwMEVFMzdDOSAvKiBKU0Flc0N0clBhcmFtcy5oICov
OyB9OwpAQCAtODQ1MCw3ICs4NDUxLDYgQEAKIAkJNTczMDNCQkUyMDA2RTAwNDAwMzU1OTY1IC8q
IENCT1JSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0JP
UlJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAzQkJGMjAwNkUw
MEMwMDM1NTk2NSAvKiBDQk9SUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENCT1JSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNCQ0Yy
MDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTczMDNCRDAyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NzMwM0JEMTIwMDg3QTgzMDAzNTU5NjUgLyogQXV0aGVudGljYXRv
clJlc3BvbnNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0JERDIwMDk1QjI2MDAzNTU5NjUgLyogSlNBdXRoZW50
aWNhdG9yUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdXRo
ZW50aWNhdG9yUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNC
REUyMDA5NUIyNzAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXV0aGVudGljYXRvclJlc3BvbnNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0NzEsMTcgKzg0NzEsMTUgQEAKIAkJ
NTczMDNDMTMyMDA5QTI1NzAwMzU1OTY1IC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1B1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTczMDNDMTQyMDA5QTI1NzAwMzU1OTY1IC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1B1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NzMwM0MxQjIwMDlBOTg2MDAzNTU5NjUgLyogQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTczMDNDMUMyMDA5QTk4NjAw
MzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNDMUQyMDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAzQzIwMjAw
OUFFRjUwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0My
MTIwMDlBRUY2MDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAzQzI3MjAw
OUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTU3MzAzQzI4MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDND
MjkyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTczMDNDMkQyMDA5QjdEOTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3MzAzQzJFMjAwOUI3REEwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTU3MzAzQzQzMjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9yTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1NzMwM0M0NDIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvck1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzMwM0M0MzIwMTA1QjNEMDAzNTU5NjUgLyog
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzMwM0M0NDIwMTA1
QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3MzQ4OTM4MURBQzZCNkQwMERDMDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczOUUxMkUxREFD
N0Y3ODAwRTE0MzgzIC8qIEpTQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczOUUxMzAxREFDN0ZEMTAwRTE0MzgzIC8qIEpT
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0NyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODUwNCwxMyArODUwMiwxMSBAQAogCQk1NzU0NzE5QTFFQ0U1RDJB
MDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNSc2FQc3NQYXJhbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzYwODI0RjIwMTE4RDhEMDAxMTY2NzggLyogSlNCYXNpY0NyZWRlbnRpYWxDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNpY0NyZWRlbnRpYWxDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYwODI1NjIwMTFCRTAyMDAxMTY2NzggLyogSlNB
dXRoZW50aWNhdG9yUmVzcG9uc2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdXRo
ZW50aWNhdG9yUmVzcG9uc2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3JlZGVudGlhbHNNZXNzZW5nZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTc2MDgyNzgyMDI0NERBQjAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nl
bmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyNzkyMDI0NERBQzAwMTE2Njc4IC8qIE1vY2tD
cmVkZW50aWFsc01lc3Nlbmdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQ3JlZGVudGlh
bHNNZXNzZW5nZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI4MDIw
MjU1NkY0MDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb2Nr
Q3JlZGVudGlhbHNNZXNzZW5nZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
NzYwODI4MTIwMjU2Nzk2MDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2NrQ3JlZGVudGlhbHNN
ZXNzZW5nZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI4MjIwMjU2
Nzk3MDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOTMyMDJCQTk1MzAwMTE2Njc4IC8qIENyZWRl
bnRpYWxzTWVzc2VuZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyZWRlbnRpYWxzTWVzc2Vu
Z2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyNzAyMDIxNTEzRjAw
MTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTc2MDgyNzgyMDI0NERBQjAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzYwODI3OTIwMjQ0REFDMDAxMTY2Nzgg
LyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTc2MDgyODAyMDI1NTZGNDAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1NzYwODI5MzIwMkJBOTUzMDAxMTY2NzggLyogQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3NjgxNDI4MUU2Rjk4QUQwMEU3Nzc1NCAvKiBFY2RoS2V5RGVyaXZlUGFyYW1zLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBFY2RoS2V5RGVyaXZlUGFyYW1zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTc2ODE0MjkxRTZGOTlDMTAwRTc3NzU0IC8qIENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQ
YXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGht
RWNkaEtleURlcml2ZVBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzY4
MTQzNDFFNkZFM0U4MDBFNzc3NTQgLyogQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1NjQsNiArODU2MCw5IEBACiAJCTU3
RDg0NjJEMUZFQUY2OEYwMENBMzY4MiAvKiBQdWJsaWNLZXlDcmVkZW50aWFsLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQ
dWJsaWNLZXlDcmVkZW50aWFsLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdE
ODQ2MzAxRkVBRkMyRjAwQ0EzNjgyIC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1B1YmxpY0tleUNyZWRlbnRpYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEODQ2MzExRkVBRkMyRjAwQ0EzNjgyIC8qIEpTUHVi
bGljS2V5Q3JlZGVudGlhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1N0RDRUQ2MjIxNDA3NjNDMDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9ja0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0RDRUQ2MzIx
NDA3NjNDMDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9ja0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RENFRDcyMjE0MzA1
RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
dWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
N0UxRTVBMDFFOEM5MUI1MDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1BRVNfQ1RS
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdFMUU1QTExRThDOTFCNTAwRUUz
N0M5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DVFIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1N0UxRTVBNjFFOERCRDNFMDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQWVzQ3Ry
UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRo
bUFlc0N0clBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY4OTgsNiAr
MTY4OTcsOSBAQAogCQkJCUE3QkU3RURFMTRDOTE3NUEwMDE0NDg5RCAvKiBNYWxsb2NTdGF0aXN0
aWNzLmlkbCAqLywKIAkJCQlDRDUzOTNDQjE3NURDQ0U2MDBDMDcxMjMgLyogTWVtb3J5SW5mby5o
ICovLAogCQkJCUNENTM5M0NDMTc1RENDRTYwMEMwNzEyMyAvKiBNZW1vcnlJbmZvLmlkbCAqLywK
KwkJCQk1NzYwODI3OTIwMjQ0REFDMDAxMTY2NzggLyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5jcHAgKi8sCisJCQkJNTc2MDgyNzgyMDI0NERBQjAwMTE2Njc4IC8qIE1vY2tBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuaCAqLywKKwkJCQk1NzYwODI4MDIwMjU1NkY0MDAxMTY2NzggLyog
TW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5pZGwgKi8sCiAJCQkJQ0RGNEI3MjExRTAzQkY4
MTAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmNwcCAqLywKIAkJCQlDREY0QjcyMjFFMDNCRjgx
MDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuaCAqLywKIAkJCQlDREY0QjcxRjFFMDNCRjZGMDBF
MjM1QTIgLyogTW9ja0NETUZhY3RvcnkuaWRsICovLApAQCAtMTY5MDYsOSArMTY5MDgsNiBAQAog
CQkJCUExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmNwcCAqLywKIAkJCQlBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oICovLAogCQkJCUExOUFFQTFDMUFBQTdDNDkwMEI1MkIyNSAvKiBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmlkbCAqLywKLQkJCQk1NzYwODI3OTIwMjQ0REFDMDAxMTY2Nzgg
LyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCAqLywKLQkJCQk1NzYwODI3ODIwMjQ0REFC
MDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmggKi8sCi0JCQkJNTc2MDgyODAy
MDI1NTZGNDAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5pZGwgKi8sCiAJCQkJ
NTEwNThBRDcxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCAqLywKIAkJCQk1MTA1
OEFEODFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCAqLywKIAkJCQk1MTA1OEFEOTFE
Njc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgKi8sCkBAIC0xNjk1NSwx
MiArMTY5NTQsMTIgQEAKIAkJCQlBN0I0RUE2OTE0QzkzNDg0MDBDOEY1QkYgLyogSlNNYWxsb2NT
dGF0aXN0aWNzLmggKi8sCiAJCQkJQ0Q1MzkzRDExNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5
SW5mby5jcHAgKi8sCiAJCQkJQ0Q1MzkzRDIxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5m
by5oICovLAorCQkJCTU3RENFRDYzMjE0MDc2M0MwMDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwICovLAorCQkJCTU3RENFRDYyMjE0MDc2M0MwMDE2Qjg0NyAvKiBK
U01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLywKIAkJCQlDREY0QjcyRDFFMDNDQTRB
MDBFMjM1QTIgLyogSlNNb2NrQ0RNRmFjdG9yeS5jcHAgKi8sCiAJCQkJQ0RGNEI3MkUxRTAzQ0E0
QTAwRTIzNUEyIC8qIEpTTW9ja0NETUZhY3RvcnkuaCAqLywKIAkJCQlBMTlBRUExRDFBQUE4MDZF
MDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLywKIAkJCQlBMTlB
RUExRTFBQUE4MDZFMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi8s
Ci0JCQkJNTc2MDgyODEyMDI1Njc5NjAwMTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRpYWxzTWVzc2Vu
Z2VyLmNwcCAqLywKLQkJCQk1NzYwODI4MjIwMjU2Nzk3MDAxMTY2NzggLyogSlNNb2NrQ3JlZGVu
dGlhbHNNZXNzZW5nZXIuaCAqLywKIAkJCQkyRDZGM0U5MjFDMUY4NTU1MDA2MURCRDQgLyogSlNN
b2NrUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENkYzRTkzMUMxRjg1NTUwMDYxREJENCAvKiBK
U01vY2tQYWdlT3ZlcmxheS5oICovLAogCQkJCUExNDZEMzIwMUY5OUNBM0UwMEQyOTE5NiAvKiBK
U01vY2tQYXltZW50QWRkcmVzcy5jcHAgKi8sCkBAIC0xODY4OSw4ICsxODY4OCw2IEBACiAJCQkJ
NzdENTEwMTgxRUQ3MTU5OTAwREE0Qzg3IC8qIENyZWRlbnRpYWxzQ29udGFpbmVyLmNwcCAqLywK
IAkJCQk3N0Q1MTAxNjFFRDYwMjFCMDBEQTRDODcgLyogQ3JlZGVudGlhbHNDb250YWluZXIuaCAq
LywKIAkJCQk1N0Q4NDYyOTFGRTk5RjYzMDBDQTM2ODIgLyogQ3JlZGVudGlhbHNDb250YWluZXIu
aWRsICovLAotCQkJCTU3NjA4MjkzMjAyQkE5NTMwMDExNjY3OCAvKiBDcmVkZW50aWFsc01lc3Nl
bmdlci5jcHAgKi8sCi0JCQkJNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIENyZWRlbnRpYWxz
TWVzc2VuZ2VyLmggKi8sCiAJCQkJNTdEODQ2MjQxRkU4OTVGNTAwQ0EzNjgyIC8qIE5hdmlnYXRv
ckNyZWRlbnRpYWxzLmNwcCAqLywKIAkJCQk1N0Q4NDYyNjFGRTg5NUY4MDBDQTM2ODIgLyogTmF2
aWdhdG9yQ3JlZGVudGlhbHMuaCAqLywKIAkJCQk1N0Q4NDYyNTFGRTg5NUY2MDBDQTM2ODIgLyog
TmF2aWdhdG9yQ3JlZGVudGlhbHMuaWRsICovLApAQCAtMTg3MjAsMTUgKzE4NzE3LDE0IEBACiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk1NzMwM0JCMzIwMDZDNkVEMDAzNTU5NjUgLyogY2JvciAqLywK
IAkJCQk1NzRGNTVERDIwNEYzNzQ0MDAyOTQ4QzYgLyogY29jb2EgKi8sCi0JCQkJNTczMDNDMjgy
MDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgKi8s
CiAJCQkJNTczMDNDMjcyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZS5oICovLAogCQkJCTU3MzAzQzI5MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UuaWRsICovLAotCQkJCTU3MzAzQzFDMjAwOUE5ODYwMDM1NTk2
NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAgKi8sCiAJCQkJNTczMDND
MUIyMDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgg
Ki8sCiAJCQkJNTczMDNDMUQyMDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlLmlkbCAqLywKLQkJCQk1NzMwM0M0NDIwMTA1QjNEMDAzNTU5NjUgLyogQXV0
aGVudGljYXRvck1hbmFnZXIuY3BwICovLAotCQkJCTU3MzAzQzQzMjAxMDVCM0QwMDM1NTk2NSAv
KiBBdXRoZW50aWNhdG9yTWFuYWdlci5oICovLAotCQkJCTU3MzAzQkQwMjAwODdBODMwMDM1NTk2
NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwICovLAorCQkJCTU3MzAzQzQ0MjAxMDVCM0Qw
MDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwICovLAorCQkJCTU3MzAzQzQz
MjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLywKKwkJCQk1
NzYwODI5MzIwMkJBOTUzMDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50
LmNwcCAqLywKKwkJCQk1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50LmggKi8sCiAJCQkJNTczMDNCQ0YyMDA4N0E4MzAwMzU1OTY1IC8qIEF1
dGhlbnRpY2F0b3JSZXNwb25zZS5oICovLAogCQkJCTU3MzAzQkQxMjAwODdBODMwMDM1NTk2NSAv
KiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaWRsICovLAogCQkJCTU3NEY1NURDMjA0RjM3MzIwMDI5
NDhDNiAvKiBDT1NFQ29uc3RhbnRzLmggKi8sCkBAIC0xODczNyw2ICsxODczMyw3IEBACiAJCQkJ
NTdEODQ2MkQxRkVBRjY4RjAwQ0EzNjgyIC8qIFB1YmxpY0tleUNyZWRlbnRpYWwuaWRsICovLAog
CQkJCTU3MzAzQkU2MjAwOTc0N0EwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zLmggKi8sCiAJCQkJNTczMDNCRTgyMDA5NzQ3QTAwMzU1OTY1IC8qIFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaWRsICovLAorCQkJCTU3RENFRDcyMjE0MzA1RjAw
MDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oICovLAogCQkJCTU3MzAzQkVDMjAw
OTgwQkYwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oICovLAogCQkJ
CTU3MzAzQkVFMjAwOTgwQkYwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRv
ci5pZGwgKi8sCiAJCQkJNTczMDNDMDYyMDA5OThGODAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovLApAQCAtMjY5NjUsMTggKzI2OTYyLDE4IEBACiAJCQkJ
NTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0MEI1OTUxNEM5MzVBQjAwQTc3RkE0IC8qIEpTTWFsbG9j
U3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q1MzkzRDQxNzVFMDE4NjAwQzA3MTIz
IC8qIEpTTWVtb3J5SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdEQ0VENjcyMTQwNzc1QjAw
MTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTM4RUM5MzMxRjk5QjlGNzAwNEQyMkE4IC8qIEpTTW9ja0NETUZhY3RvcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExOUFFQTIxMUFBQTgwODYwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3NjA4Mjg2MjAyNTZBRkEwMDEx
NjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTM4RUM5MzQxRjk5QjlGNzAwNEQyMkE4IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMTQ2RDMyMzFGOTlEMEVGMDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudEFkZHJl
c3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNDZEMzFCMUY5OUJDRkIwMEQyOTE5NiAvKiBKU01v
Y2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQyN0RBNzFFMTM3MzVE
RkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUVCRjUxMjFEMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIExlZ2FjeU1vY2tDRE0u
aCBpbiBIZWFkZXJzICovLAorCQkJCTU3NjA4MjdBMjAyNEVBNUMwMDExNjY3OCAvKiBNb2NrQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUJGNkI4MzFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
QjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1NzYwODI3QTIwMjRFQTVDMDAxMTY2NzggLyogTW9ja0NyZWRlbnRp
YWxzTWVzc2VuZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFEQzFENjc5MkMxMDA5QTUz
OEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QURFMUQ2NzkyQzEw
MDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTI3MTY2LDcgKzI3MTYzLDggQEAKIAkJCQk1MTRDNzY0QzBDRTkyMzRF
MDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAz
QzJDMjAwOUI0QTgwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3MzAzQzFGMjAwOUFCNDIwMDM1NTk2NSAvKiBBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTczMDNDNDYyMDEw
NUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NzMwM0M0NjIwMTA1RDJGMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1NzYwODI3MjIwMjE1QTU1MDAxMTY2NzggLyogQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JEMjIwMDg3
QTgzMDAzNTU5NjUgLyogQXV0aGVudGljYXRvclJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTAxOTIwRTEzMkVCRjJFMDA4QkZFNTUgLyogQXV0b2NhcGl0YWxpemUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1QTdBQTQzMTMyRjBFQ0MwMEQzQTNDMiAvKiBBdXRvY2FwaXRhbGl6ZVR5cGVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDMxLDcgKzI3NDI5LDYgQEAKIAkJCQk3N0Q1MTAwRDFF
RDVFMjk1MDBEQTRDODcgLyogQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzdENTEwMEIxRUQ1RTI4ODAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzdENTEwMTcxRUQ2MDIyMjAwREE0Qzg3IC8qIENy
ZWRlbnRpYWxzQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1NzYwODI3MjIwMjE1QTU1
MDAxMTY2NzggLyogQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
QTA1MjMzMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQ0ODFGMDIxNDZCNUM1NTAwQUE3ODM0IC8qIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUM0MTYxMjBGNjU2MkZEMDA5MkQyRkIgLyogQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzYwLDYgKzI5NzU3
LDcgQEAKIAkJCQlGRjk0NUVDQzE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTdEODQ2MkUxRkVBRjY5OTAwQ0EzNjgyIC8qIFB1YmxpY0tleUNy
ZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkU5MjAwOTc0OEQwMDM1NTk2NSAv
KiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1N0RDRUQ3NDIxNDMwNUYwMDAxNkI4NDcgLyogUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3MzAzQkVGMjAwOTgwQzYwMDM1NTk2NSAvKiBQdWJsaWNLZXlD
cmVkZW50aWFsRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNDMEEyMDA5OUJB
RDAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTczMDNCRUIyMDA5N0Y0MDAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRp
YWxUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMzcxLDE5ICszMTM2OSwxOSBAQAogCQkJCTUz
RUQzRkRFMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM5MzIxRjk5QjlGNzAwNEQyMkE4IC8qIEpTTWFsbG9j
U3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDUzOTNEMzE3NUUwMTg2MDBDMDcx
MjMgLyogSlNNZW1vcnlJbmZvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU3RENFRDY5MjE0MDc3
NjQwMDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RGNEI3MzIxRTAzRDA2MDAwRTIzNUEyIC8qIEpTTW9ja0NETUZhY3Rvcnku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE5QUVBMjIxQUFBODA4QTAwQjUyQjI1IC8qIEpTTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzYwODI4ODIw
MjU2QUZEMDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQ0MTUwREUxQzFGODY4QzAwMEEzQkEyIC8qIEpTTW9ja1BhZ2VPdmVybGF5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDZEMzIyMUY5OUQwRUMwMEQyOTE5NiAvKiBKU01v
Y2tQYXltZW50QWRkcmVzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQ2RDMxQTFGOTlCQ0Y4
MDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQyN0RBNzFEMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRUJGNTEyMUMxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlw
ZUNvbnZlcnNpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzI2QjQwMTYwQThDQzYwMDI2
NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU3NjA4MjdCMjAy
NEVEMjkwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2
MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NTc2MDgyN0IyMDI0RUQyOTAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVw
YWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBREQxRDY3OTJDMTAwOUE1MzhDIC8qIE1v
Y2tHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0VCRkExRTNBQjY3
OTAwQUM5RkU5IC8qIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDM0NDYwN2I3MjZhYzNhMGZiMTNhZDJlZDZmOGQ1NmFk
MmNhMzIyOGYuLjlmMDM0NzJiNGE2MGNlYTMzOGFhZGQ0NzgxZGM5N2RhMDMwZDFmODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkFsdGVybmF0aXZlVGV4
dENsaWVudC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVk
ZSAiQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyLmgiCisjaW5jbHVkZSAiQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNs
dWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDU1NBbmltYXRpb25Db250
cm9sbGVyLmgiCkBAIC0yNTUsNiArMjU2LDkgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlv
biYmIHBhZ2VDb25maWd1cmF0aW9uKQogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAgICAgLCBtX3Bh
eW1lbnRDb29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBh
Z2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVudCkpCiAjZW5kaWYKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKQorICAgICwgbV9hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KSkpCisjZW5kaWYKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgLCBtX2FwcGxpY2F0aW9uTWFuaWZlc3QocGFn
ZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25NYW5pZmVzdCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApp
bmRleCBkYmE0ZjBmMDgyNzFlYjc1YjlmMzZiNWM0ZDAzMWY4ZThkNmYzOTQ2Li42YjFjOGJiODRi
ZDYxMDQzZjcxMmRhZDI3MjNmMzg1NzZhNmRjNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNzYsNiAr
NzYsNyBAQCBjbGFzcyBJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CiAKIGNsYXNzIEFsdGVybmF0aXZl
VGV4dENsaWVudDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyOwogY2xhc3Mg
QmFja0ZvcndhcmRDbGllbnQ7CiBjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKQEAgLTQxMCw2
ICs0MTEsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF5bWVudENv
b3JkaW5hdG9yKHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50Q29vcmRpbmF0b3I+JiYpOwogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvciYg
YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gKm1fYXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBhcHBsaWNh
dGlvbk1hbmlmZXN0KCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0OyB9CiAj
ZW5kaWYKQEAgLTkwMSw2ICs5MDYsMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGF5bWVudENvb3JkaW5hdG9yPiBtX3BheW1lbnRDb29yZGluYXRvcjsKICNlbmRpZgogCisjaWYg
RU5BQkxFKFdFQl9BVVRITikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yPiBtX2F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjsKKyNlbmRpZgorCiAjaWYgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5p
ZmVzdD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGNkNDAwNWI1NjM3M2M4ODQzY2U5NzEyNmJiM2Zl
MzAxMjcxODk0ZmYuLjE0Yzk5MTU5ZGRkNzMwOTc3OTc3ZTE2YWM0MWQ0YjYxNmIzM2MwYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC00Miw2ICs0Miwx
MCBAQAogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKICNpbmNsdWRlICJXZWJHTFN0YXRl
VHJhY2tlci5oIgogCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyNpbmNsdWRlICJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JDbGllbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbihVbmlxdWVSZWY8RWRpdG9yQ2xp
ZW50PiYmIGVkaXRvckNsaWVudCwgUmVmPFNvY2tldFByb3ZpZGVyPiYmIHNvY2tldFByb3ZpZGVy
LCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYgbGliV2ViUlRDUHJvdmlkZXIsIFJlZjxD
YWNoZVN0b3JhZ2VQcm92aWRlcj4mJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCAzYTczNDU3NmQ0MGEyY2Q0YmRhMTRjNGVi
ZTAzMzJhYTM1NmUyMWU0Li42MGJkZWM3ZDNmYzE4MTc2NWJlYTIxYmExNDY1NmU1ZGYwOTBmNDM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCkBAIC0zOCw2ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Owog
Y2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQ7CiBjbGFzcyBCYWNrRm9yd2FyZENsaWVudDsKIGNsYXNzIENhY2hlU3RvcmFn
ZVByb3ZpZGVyOwogY2xhc3MgQ2hyb21lQ2xpZW50OwpAQCAtODAsNiArODEsMTAgQEAgcHVibGlj
OgogICAgIFBheW1lbnRDb29yZGluYXRvckNsaWVudCogcGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
IHsgbnVsbHB0ciB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHN0ZDo6
dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ+IGF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQogICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gYXBwbGljYXRpb25N
YW5pZmVzdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGVm
MWVhNGViNzMxODE1ZWRlNTlkOGE3MGMzZDRhZTkyZjg4NDAwMTkuLjlmNzEzNGEzY2Q2YTE3N2E3
NjA5OGZhYjRlOTZiYmZjNmYyNWY3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTI2Nyw4ICsyNjcsOCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQot
I2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiTW9ja0NyZWRlbnRp
YWxzTWVzc2VuZ2VyLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisj
aW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIgogI2VuZGlmCiAKIHVzaW5n
IEpTQzo6Q2FsbERhdGE7CkBAIC01NDksOCArNTQ5LDExIEBAIEludGVybmFsczo6SW50ZXJuYWxz
KERvY3VtZW50JiBkb2N1bWVudCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAg
ICBtX21vY2tDcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NyZWRl
bnRpYWxzTWVzc2VuZ2VyPigqdGhpcyk7Ci0gICAgQXV0aGVudGljYXRvck1hbmFnZXI6OnNpbmds
ZXRvbigpLnNldE1lc3NlbmdlcigqbV9tb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIpOworICAgIGlm
IChkb2N1bWVudC5wYWdlKCkpIHsKKyAgICAgICAgYXV0byBtb2NrQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigp
OworICAgICAgICBtX21vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgPSBtYWtlV2Vha1B0ciht
b2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmdldCgpKTsKKyAgICAgICAgZG9jdW1lbnQucGFn
ZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5zZXRDbGllbnQoV1RGTW92ZShtb2NrQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yKSk7CisgICAgfQogI2VuZGlmCiB9CiAKQEAgLTQ2MTcsOSAr
NDYyMCw5IEBAIE1vY2tQYXltZW50Q29vcmRpbmF0b3ImIEludGVybmFsczo6bW9ja1BheW1lbnRD
b29yZGluYXRvcigpIGNvbnN0CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi1Nb2Nr
Q3JlZGVudGlhbHNNZXNzZW5nZXImIEludGVybmFsczo6bW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
KCkgY29uc3QKK01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3ImIEludGVybmFsczo6bW9ja0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICptX21vY2tDcmVk
ZW50aWFsc01lc3NlbmdlcjsKKyAgICByZXR1cm4gKm1fbW9ja0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcjsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBiNGE1
MGJhN2QxMTBiN2EyNTdiMDlhMWIxMjI0MjIyZGQwMGIzMjcwLi4yNDE3ZWU4NTIxOTc1MjY4ZWZl
YzJhOGY4OTI1MzM4YjBjNjExNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAg
LTc3LDcgKzc3LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIGNsYXNzIE1lbW9yeUluZm87
CiBjbGFzcyBNb2NrQ0RNRmFjdG9yeTsKIGNsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7
Ci1jbGFzcyBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI7CitjbGFzcyBNb2NrQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOwogY2xhc3MgTW9ja1BhZ2VPdmVybGF5OwogY2xhc3MgTW9ja1BheW1lbnRD
b29yZGluYXRvcjsKIGNsYXNzIE5vZGVMaXN0OwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHRlc3RJbmNvbWluZ1N5bmNJUENNZXNzYWdlV2hpbGVXYWl0aW5nRm9yU3luY1Jl
cGx5KCk7CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIE1vY2tDcmVkZW50aWFsc01lc3Nl
bmdlciYgbW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyKCkgY29uc3Q7CisgICAgTW9ja0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvciYgbW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpIGNvbnN0Owog
I2VuZGlmCiAKICAgICBib29sIGlzU3lzdGVtUHJldmlld0xpbmsoRWxlbWVudCYpIGNvbnN0OwpA
QCAtNzYzLDcgKzc2Myw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcj4gbV9tb2Nr
Q3JlZGVudGlhbHNNZXNzZW5nZXI7CisgICAgV2Vha1B0cjxNb2NrQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yPiBtX21vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I7CiAjZW5kaWYKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAwNzg4NDZlZThiMmVhN2ZkYjUwNzJi
MjQ0YzZhNjc2YWNmZDVjZjU0Li4yMTg0ZmQyMWRkMWFjMTg4ZGJmMDQxODg1ODA1Yzg3M2UxYjYx
ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC02NDYsNyArNjQ2LDcg
QEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9V2ViQW5p
bWF0aW9uc10gdm9pZCBwYXVzZVRpbWVsaW5lKEFuaW1hdGlvblRpbWVsaW5lIHRpbWVsaW5lKTsK
ICAgICBbRW5hYmxlZEF0UnVudGltZT1XZWJBbmltYXRpb25zXSB2b2lkIHNldFRpbWVsaW5lQ3Vy
cmVudFRpbWUoQW5pbWF0aW9uVGltZWxpbmUgdGltZWxpbmUsIGRvdWJsZSBjdXJyZW50VGltZSk7
CiAgICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV0gcmVhZG9ubHkgYXR0cmlidXRlIE1vY2tQYXlt
ZW50Q29vcmRpbmF0b3IgbW9ja1BheW1lbnRDb29yZGluYXRvcjsKLSAgICBbQ29uZGl0aW9uYWw9
V0VCX0FVVEhOXSByZWFkb25seSBhdHRyaWJ1dGUgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyIG1v
Y2tDcmVkZW50aWFsc01lc3NlbmdlcjsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX0FVVEhOXSByZWFk
b25seSBhdHRyaWJ1dGUgTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvciBtb2NrQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOwogCiAgICAgYm9vbGVhbiBpc1N5c3RlbVByZXZpZXdMaW5rKEVsZW1l
bnQgZWxlbWVudCk7CiAgICAgYm9vbGVhbiBpc1N5c3RlbVByZXZpZXdJbWFnZShFbGVtZW50IGVs
ZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q3ZDY5YTYyZDYwYWQ5ODY0NzdhZDZh
MzJkNDg2YjA0YjU0Y2Y5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIklu
dGVybmFscy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBN
b2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpzZXRDcmVhdGlvblJldHVybkJ1bmRsZShjb25z
dCBCdWZmZXJTb3VyY2UmIGNyZWRlbnRpYWxJZCwgY29uc3QgQnVmZmVyU291cmNlJiBhdHRlc3Rh
dGlvbk9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW1fY3JlZGVudGlhbElkICYmICFtX2F0dGVzdGF0
aW9uT2JqZWN0KTsKKyAgICBtX2NyZWRlbnRpYWxJZCA9IEFycmF5QnVmZmVyOjpjcmVhdGUoY3Jl
ZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLmxlbmd0aCgpKTsKKyAgICBtX2F0dGVzdGF0
aW9uT2JqZWN0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5kYXRhKCks
IGF0dGVzdGF0aW9uT2JqZWN0Lmxlbmd0aCgpKTsKK30KKwordm9pZCBNb2NrQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOjpzZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNl
JiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYXV0aGVudGljYXRvckRhdGEsIGNv
bnN0IEJ1ZmZlclNvdXJjZSYgc2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2UmIHVzZXJIYW5k
bGUpCit7CisgICAgQVNTRVJUKCFtX2NyZWRlbnRpYWxJZCAmJiAhbV9hdXRoZW50aWNhdG9yRGF0
YSAmJiAhbV9zaWduYXR1cmUgJiYgIW1fdXNlckhhbmRsZSk7CisgICAgbV9jcmVkZW50aWFsSWQg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5s
ZW5ndGgoKSk7CisgICAgbV9hdXRoZW50aWNhdG9yRGF0YSA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
YXV0aGVudGljYXRvckRhdGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5sZW5ndGgoKSk7Cisg
ICAgbV9zaWduYXR1cmUgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5kYXRhKCksIHNp
Z25hdHVyZS5sZW5ndGgoKSk7CisgICAgbV91c2VySGFuZGxlID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZSh1c2VySGFuZGxlLmRhdGEoKSwgdXNlckhhbmRsZS5sZW5ndGgoKSk7Cit9CisKK3ZvaWQgTW9j
a0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIFJlcXVl
c3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit7CisgICAgaWYgKCFzZXRSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX2RpZFRpbWVPdXQpIHsKKyAgICAgICAgbV9kaWRUaW1lT3V0ID0gZmFsc2U7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fZGlkVXNlckNhbmNlbCkgeworICAgICAgICBt
X2RpZFVzZXJDYW5jZWwgPSBmYWxzZTsKKyAgICAgICAgcmVxdWVzdFJlcGx5KHsgfSwgeyBOb3RB
bGxvd2VkRXJyb3IsICJVc2VyIGNhbmNlbGxlZC4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKG1fY3JlZGVudGlhbElkKSB7CisgICAgICAgIEFTU0VSVChtX2F0dGVzdGF0
aW9uT2JqZWN0KTsKKyAgICAgICAgcmVxdWVzdFJlcGx5KFB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
IHsgV1RGTW92ZShtX2NyZWRlbnRpYWxJZCksIHRydWUsIG51bGxwdHIsIFdURk1vdmUobV9hdHRl
c3RhdGlvbk9iamVjdCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfSwgeyB9KTsKKyAgICAg
ICAgbV9jcmVkZW50aWFsSWQgPSBudWxscHRyOworICAgICAgICBtX2F0dGVzdGF0aW9uT2JqZWN0
ID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRp
b24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBp
ZiAoIXNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fZGlkVGltZU91dCkgeworICAgICAgICBtX2RpZFRpbWVP
dXQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9kaWRVc2VyQ2Fu
Y2VsKSB7CisgICAgICAgIG1fZGlkVXNlckNhbmNlbCA9IGZhbHNlOworICAgICAgICByZXF1ZXN0
UmVwbHkoeyB9LCB7IE5vdEFsbG93ZWRFcnJvciwgIlVzZXIgY2FuY2VsbGVkLiJfcyB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9jcmVkZW50aWFsSWQpIHsKKyAgICAgICAg
QVNTRVJUKG1fYXV0aGVudGljYXRvckRhdGEgJiYgbV9zaWduYXR1cmUgJiYgbV91c2VySGFuZGxl
KTsKKyAgICAgICAgcmVxdWVzdFJlcGx5KFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgV1RGTW92
ZShtX2NyZWRlbnRpYWxJZCksIGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKG1fYXV0
aGVudGljYXRvckRhdGEpLCBXVEZNb3ZlKG1fc2lnbmF0dXJlKSwgV1RGTW92ZShtX3VzZXJIYW5k
bGUpIH0sIHsgfSk7CisgICAgICAgIG1fY3JlZGVudGlhbElkID0gbnVsbHB0cjsKKyAgICAgICAg
bV9hdXRoZW50aWNhdG9yRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fc2lnbmF0dXJlID0gbnVs
bHB0cjsKKyAgICAgICAgbV91c2VySGFuZGxlID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBNb2NrQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFp
bGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit7CisgICAgYXV0byBtZXNz
YWdlSWQgPSBhZGRRdWVyeUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpOworICAg
IGlmIChtX2RpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50KSB7Cisg
ICAgICAgIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5
KG1lc3NhZ2VJZCwgdHJ1ZSk7CisgICAgICAgIG1fZGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvclByZXNlbnQgPSBmYWxzZTsKKyAgICB9IGVsc2UKKyAgICAgICAgaXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2FnZUlkLCBmYWxz
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMGYzMDY3YTFjM2QwYzVlMGEyZTRhYzlkODYx
ZWIyZDMzYzVkYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgi
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBJbnRlcm5hbHM7CisKK2NsYXNzIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgZmluYWwg
OiBwdWJsaWMgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2
b2lkIHNldERpZFRpbWVPdXQoKSB7IG1fZGlkVGltZU91dCA9IHRydWU7IH0KKyAgICB2b2lkIHNl
dERpZFVzZXJDYW5jZWwoKSB7IG1fZGlkVXNlckNhbmNlbCA9IHRydWU7IH0KKyAgICB2b2lkIHNl
dERpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50KCkgeyBtX2RpZFVz
ZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50ID0gdHJ1ZTsgfQorICAgIHZv
aWQgc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNlJiBjcmVkZW50aWFs
SWQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYXR0ZXN0YXRpb25PYmplY3QpOworICAgIHZvaWQgc2V0
QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgY3JlZGVudGlhbElkLCBj
b25zdCBCdWZmZXJTb3VyY2UmIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBCdWZmZXJTb3VyY2Um
IHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiB1c2VySGFuZGxlKTsKKworICAgIC8vIFJl
ZkNvdW50ZWQgaXMgcmVxdWlyZWQgZm9yIEpTIHdyYXBwZXIuIFRoZXJlZm9yZSwgZmFrZSB0aGVt
IHRvIGNvbXBpbGUuCisgICAgdm9pZCByZWYoKSBjb25zdCB7IH0KKyAgICB2b2lkIGRlcmVmKCkg
Y29uc3QgeyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBnZXRBc3Nl
cnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Cisg
ICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVl
cnlDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKworICAgIC8vIEFsbCBmb2xsb3dpbmcgZmll
bGRzIGFyZSBkaXNwb3NhYmxlLgorICAgIGJvb2wgbV9kaWRUaW1lT3V0IHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fZGlkVXNlckNhbmNlbCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RpZFVzZXJWZXJp
ZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50IHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IG1fY3JlZGVudGlhbElkOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9h
dHRlc3RhdGlvbk9iamVjdDsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXV0aGVudGljYXRv
ckRhdGE7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX3NpZ25hdHVyZTsKKyAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IG1fdXNlckhhbmRsZTsKKworICAgIC8vIFRvIGNsZWFuIHVwIGNvbXBsZXRp
b24gaGFuZGxlcnMuCisgICAgVmVjdG9yPHVpbnQ2NF90PiBtX3RpbWVPdXRNZXNzYWdlSWRzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhYzVjYjJlZjgyMGI1MDI2YTI1OThjZmQyZmNj
YjY1NzUzM2VkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaWRsCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhOLAorICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorXSBpbnRlcmZhY2UgTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvciB7CisgICAgdm9pZCBz
ZXREaWRUaW1lT3V0KCk7CisgICAgdm9pZCBzZXREaWRVc2VyQ2FuY2VsKCk7CisgICAgdm9pZCBz
ZXREaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCgpOworICAgIHZv
aWQgc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoQnVmZmVyU291cmNlIGNyZWRlbnRpYWxJZCwgQnVm
ZmVyU291cmNlIGF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICB2b2lkIHNldEFzc2VydGlvblJldHVy
bkJ1bmRsZShCdWZmZXJTb3VyY2UgY3JlZGVudGlhbElkLCBCdWZmZXJTb3VyY2UgYXV0aGVudGlj
YXRvckRhdGEsIEJ1ZmZlclNvdXJjZSBzaWduYXR1cmUsIEJ1ZmZlclNvdXJjZSB1c2VySGFuZGxl
KTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDcmVkZW50aWFs
c01lc3Nlbmdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDcmVkZW50aWFsc01l
c3Nlbmdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMmUzM2I1YzViODhh
ODFmMWUyYTY0YjdjZTBmZTNmNTUwMTRhM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNN
ZXNzZW5nZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
LmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi0jaW5jbHVkZSAiSW50ZXJuYWxzLmgiCi0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU1vY2tDcmVk
ZW50aWFsc01lc3Nlbmdlcjo6TW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyKEludGVybmFscyYgaW50
ZXJuYWxzKQotICAgIDogbV9pbnRlcm5hbHMoaW50ZXJuYWxzKQotewotfQotCi1Nb2NrQ3JlZGVu
dGlhbHNNZXNzZW5nZXI6On5Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIoKQotewotICAgIC8vIEhh
dmUgbm8gZWZmZWN0cyB0byBvcmlnaW5hbCBwcm9taXNlcy4gSnVzdCB0byBjYWxsIGhhbmRsZXJz
IHRvIGF2b2lkIGFueSBhc3NlcnRpb24gZmFpbHVyZXMuCi0gICAgZm9yIChhdXRvIG1lc3NhZ2VJ
ZCA6IG1fdGltZU91dE1lc3NhZ2VJZHMpCi0gICAgICAgIGV4Y2VwdGlvblJlcGx5KG1lc3NhZ2VJ
ZCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Il9zIH0pOwotfQotCi12b2lkIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6c2V0Q3JlYXRpb25S
ZXR1cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNlJiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZl
clNvdXJjZSYgYXR0ZXN0YXRpb25PYmplY3QpCi17Ci0gICAgQVNTRVJUKG1fY3JlZGVudGlhbElk
LmlzRW1wdHkoKSAmJiBtX2F0dGVzdGF0aW9uT2JqZWN0LmlzRW1wdHkoKSk7Ci0gICAgbV9jcmVk
ZW50aWFsSWQuYXBwZW5kKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5sZW5ndGgo
KSk7Ci0gICAgbV9hdHRlc3RhdGlvbk9iamVjdC5hcHBlbmQoYXR0ZXN0YXRpb25PYmplY3QuZGF0
YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5sZW5ndGgoKSk7Ci19Ci0KLXZvaWQgTW9ja0NyZWRlbnRp
YWxzTWVzc2VuZ2VyOjpzZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNl
JiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYXV0aGVudGljYXRvckRhdGEsIGNv
bnN0IEJ1ZmZlclNvdXJjZSYgc2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2UmIHVzZXJIYW5k
bGUpCi17Ci0gICAgQVNTRVJUKG1fY3JlZGVudGlhbElkLmlzRW1wdHkoKSAmJiBtX2F1dGhlbnRp
Y2F0b3JEYXRhLmlzRW1wdHkoKSAmJiBtX3NpZ25hdHVyZS5pc0VtcHR5KCkgJiYgbV91c2VySGFu
ZGxlLmlzRW1wdHkoKSk7Ci0gICAgbV9jcmVkZW50aWFsSWQuYXBwZW5kKGNyZWRlbnRpYWxJZC5k
YXRhKCksIGNyZWRlbnRpYWxJZC5sZW5ndGgoKSk7Ci0gICAgbV9hdXRoZW50aWNhdG9yRGF0YS5h
cHBlbmQoYXV0aGVudGljYXRvckRhdGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5sZW5ndGgo
KSk7Ci0gICAgbV9zaWduYXR1cmUuYXBwZW5kKHNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5s
ZW5ndGgoKSk7Ci0gICAgbV91c2VySGFuZGxlLmFwcGVuZCh1c2VySGFuZGxlLmRhdGEoKSwgdXNl
ckhhbmRsZS5sZW5ndGgoKSk7Ci19Ci0KLXZvaWQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjpy
ZWYoKQotewotICAgIG1faW50ZXJuYWxzLnJlZigpOwotfQotCi12b2lkIE1vY2tDcmVkZW50aWFs
c01lc3Nlbmdlcjo6ZGVyZWYoKQotewotICAgIG1faW50ZXJuYWxzLmRlcmVmKCk7Ci19Ci0KLXZv
aWQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8
dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQ3Jl
YXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgYXV0byBtZXNzYWdlSWQg
PSBhZGRDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpOwotICAgIGlm
IChtX2RpZFRpbWVPdXQpIHsKLSAgICAgICAgbV9kaWRUaW1lT3V0ID0gZmFsc2U7Ci0gICAgICAg
IG1fdGltZU91dE1lc3NhZ2VJZHMuYXBwZW5kKG1lc3NhZ2VJZCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKG1fZGlkVXNlckNhbmNlbCkgewotICAgICAgICBtX2RpZFVzZXJDYW5j
ZWwgPSBmYWxzZTsKLSAgICAgICAgZXhjZXB0aW9uUmVwbHkobWVzc2FnZUlkLCBFeGNlcHRpb25E
YXRhIHsgTm90QWxsb3dlZEVycm9yLCAiVXNlciBjYW5jZWxsZWQuIl9zIH0pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9jcmVkZW50aWFsSWQuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIEFTU0VSVCghbV9hdHRlc3RhdGlvbk9iamVjdC5pc0VtcHR5KCkpOwotICAgICAgICBtYWtl
Q3JlZGVudGlhbFJlcGx5KG1lc3NhZ2VJZCwgbV9jcmVkZW50aWFsSWQsIG1fYXR0ZXN0YXRpb25P
YmplY3QpOwotICAgICAgICBtX2NyZWRlbnRpYWxJZC5jbGVhcigpOwotICAgICAgICBtX2F0dGVz
dGF0aW9uT2JqZWN0LmNsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjpnZXRB
c3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKLXsK
LSAgICBhdXRvIG1lc3NhZ2VJZCA9IGFkZFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGhhbmRsZXIpKTsKLSAgICBpZiAobV9kaWRUaW1lT3V0KSB7Ci0gICAgICAgIG1fZGlkVGltZU91
dCA9IGZhbHNlOwotICAgICAgICBtX3RpbWVPdXRNZXNzYWdlSWRzLmFwcGVuZChtZXNzYWdlSWQp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2RpZFVzZXJDYW5jZWwpIHsKLSAg
ICAgICAgbV9kaWRVc2VyQ2FuY2VsID0gZmFsc2U7Ci0gICAgICAgIGV4Y2VwdGlvblJlcGx5KG1l
c3NhZ2VJZCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlVzZXIgY2FuY2VsbGVk
LiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIW1fY3JlZGVudGlhbElk
LmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoIW1fYXV0aGVudGljYXRvckRhdGEuaXNFbXB0
eSgpICYmICFtX3NpZ25hdHVyZS5pc0VtcHR5KCkgJiYgIW1fdXNlckhhbmRsZS5pc0VtcHR5KCkp
OwotICAgICAgICBnZXRBc3NlcnRpb25SZXBseShtZXNzYWdlSWQsIG1fY3JlZGVudGlhbElkLCBt
X2F1dGhlbnRpY2F0b3JEYXRhLCBtX3NpZ25hdHVyZSwgbV91c2VySGFuZGxlKTsKLSAgICAgICAg
bV9jcmVkZW50aWFsSWQuY2xlYXIoKTsKLSAgICAgICAgbV9hdXRoZW50aWNhdG9yRGF0YS5jbGVh
cigpOwotICAgICAgICBtX3NpZ25hdHVyZS5jbGVhcigpOwotICAgICAgICBtX3VzZXJIYW5kbGUu
Y2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotdm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6OmlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFu
ZGxlcikKLXsKLSAgICBhdXRvIG1lc3NhZ2VJZCA9IGFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgaWYgKG1fZGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvclByZXNlbnQpIHsKLSAgICAgICAgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRo
ZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2FnZUlkLCB0cnVlKTsKLSAgICAgICAgbV9kaWRV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCA9IGZhbHNlOwotICAgIH0g
ZWxzZQotICAgICAgICBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGVSZXBseShtZXNzYWdlSWQsIGZhbHNlKTsKLX0KLQotdm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNz
ZW5nZXI6Om1ha2VDcmVkZW50aWFsUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3Rh
dGlvbk9iamVjdCkKLXsKLSAgICBhdXRvIGhhbmRsZXIgPSB0YWtlQ3JlYXRpb25Db21wbGV0aW9u
SGFuZGxlcihtZXNzYWdlSWQpOwotICAgIGhhbmRsZXIoQ3JlYXRpb25SZXR1cm5CdW5kbGUoQXJy
YXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgp
KSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0
aW9uT2JqZWN0LnNpemUoKSkpKTsKLX0KLQotdm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6
OmdldEFzc2VydGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRh
dGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHVzZXJIYW5kbGUpCi17Ci0gICAgYXV0byBoYW5kbGVyID0gdGFrZVJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlcihtZXNzYWdlSWQpOwotICAgIGhhbmRsZXIoQXNzZXJ0aW9uUmV0dXJuQnVuZGxl
KEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNp
emUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRhdGEuZGF0YSgpLCBhdXRo
ZW50aWNhdG9yRGF0YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5kYXRh
KCksIHNpZ25hdHVyZS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUuZGF0
YSgpLCB1c2VySGFuZGxlLnNpemUoKSkpKTsKLX0KLQotdm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNz
ZW5nZXI6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5
KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCByZXN1bHQpCi17Ci0gICAgYXV0byBoYW5kbGVyID0g
dGFrZVF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIobWVzc2FnZUlkKTsKLSAgICBoYW5kbGVyKHJlc3Vs
dCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDcmVkZW50aWFs
c01lc3Nlbmdlci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNz
ZW5nZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRiMDhkZjRlYWEwODQ4ZTEx
MTkxZTlhODZlNDA0YTJiYzUxMTgyZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nl
bmdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotI2luY2x1ZGUgIkJ1ZmZlclNvdXJj
ZS5oIgotI2luY2x1ZGUgIkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnRlcm5hbHM7Ci0KLWNs
YXNzIE1vY2tDcmVkZW50aWFsc01lc3NlbmdlciBmaW5hbCA6IHB1YmxpYyBDcmVkZW50aWFsc01l
c3NlbmdlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
KEludGVybmFscyYpOwotICAgIH5Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIoKTsKLQotICAgIHZv
aWQgc2V0RGlkVGltZU91dCgpIHsgbV9kaWRUaW1lT3V0ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0
RGlkVXNlckNhbmNlbCgpIHsgbV9kaWRVc2VyQ2FuY2VsID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0
RGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvclByZXNlbnQoKSB7IG1fZGlkVXNl
clZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvclByZXNlbnQgPSB0cnVlOyB9Ci0gICAgdm9p
ZCBzZXRDcmVhdGlvblJldHVybkJ1bmRsZShjb25zdCBCdWZmZXJTb3VyY2UmIGNyZWRlbnRpYWxJ
ZCwgY29uc3QgQnVmZmVyU291cmNlJiBhdHRlc3RhdGlvbk9iamVjdCk7Ci0gICAgdm9pZCBzZXRB
c3NlcnRpb25SZXR1cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNlJiBjcmVkZW50aWFsSWQsIGNv
bnN0IEJ1ZmZlclNvdXJjZSYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYg
c2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2UmIHVzZXJIYW5kbGUpOwotCi0gICAgdm9pZCBy
ZWYoKTsKLSAgICB2b2lkIGRlcmVmKCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBtYWtlQ3JlZGVu
dGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiwgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2
b2lkIGdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKLSAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2
YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgbWFrZUNy
ZWRlbnRpYWxSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KSBm
aW5hbDsKLSAgICB2b2lkIGdldEFzc2VydGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpIGZpbmFsOwotICAgIHZvaWQgaXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2Fn
ZUlkLCBib29sKSBmaW5hbDsKLQotICAgIEludGVybmFscyYgbV9pbnRlcm5hbHM7Ci0gICAgLy8g
QWxsIGZvbGxvd2luZyBmaWVsZHMgYXJlIGRpc3Bvc2FibGUuCi0gICAgYm9vbCBtX2RpZFRpbWVP
dXQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9kaWRVc2VyQ2FuY2VsIHsgZmFsc2UgfTsKLSAgICBi
b29sIG1fZGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvclByZXNlbnQgeyBmYWxz
ZSB9OwotICAgIFZlY3Rvcjx1aW50OF90PiBtX2F0dGVzdGF0aW9uT2JqZWN0OwotICAgIFZlY3Rv
cjx1aW50OF90PiBtX2NyZWRlbnRpYWxJZDsgLy8gT3ZlcmxhcHBlZCBiZXR3ZWVuIENyZWF0aW9u
UmV0dXJuQnVuZGxlIGFuZCBBc3NlcnRpb25SZXR1cm5CdW5kbGUuCi0gICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fYXV0aGVudGljYXRvckRhdGE7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1fc2lnbmF0dXJl
OwotICAgIFZlY3Rvcjx1aW50OF90PiBtX3VzZXJIYW5kbGU7Ci0KLSAgICAvLyBUbyBjbGVhbiB1
cCBjb21wbGV0aW9uIGhhbmRsZXJzLgotICAgIFZlY3Rvcjx1aW50NjRfdD4gbV90aW1lT3V0TWVz
c2FnZUlkczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDcmVk
ZW50aWFsc01lc3Nlbmdlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDcmVkZW50
aWFsc01lc3Nlbmdlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZTEyNmE5
MmJmMTE5YTNjNDVmYWU1ZWIyOGE4YjlhYjk1OGQ5ODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVu
dGlhbHNNZXNzZW5nZXIuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVUSE4sCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCi1dIGludGVyZmFjZSBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIgewotICAgIHZvaWQgc2V0
RGlkVGltZU91dCgpOwotICAgIHZvaWQgc2V0RGlkVXNlckNhbmNlbCgpOwotICAgIHZvaWQgc2V0
RGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvclByZXNlbnQoKTsKLSAgICB2b2lk
IHNldENyZWF0aW9uUmV0dXJuQnVuZGxlKEJ1ZmZlclNvdXJjZSBjcmVkZW50aWFsSWQsIEJ1ZmZl
clNvdXJjZSBhdHRlc3RhdGlvbk9iamVjdCk7Ci0gICAgdm9pZCBzZXRBc3NlcnRpb25SZXR1cm5C
dW5kbGUoQnVmZmVyU291cmNlIGNyZWRlbnRpYWxJZCwgQnVmZmVyU291cmNlIGF1dGhlbnRpY2F0
b3JEYXRhLCBCdWZmZXJTb3VyY2Ugc2lnbmF0dXJlLCBCdWZmZXJTb3VyY2UgdXNlckhhbmRsZSk7
Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDFlNGNjNTFkOGY5MGY0YzMzZTNi
OGM4NDBmNjUzNTMzYmFjY2JlNDUuLmJkZWMyODMxYjY1MTBhNzgwZmVkNmJiNDI2MTFiYzkyZjQ3
ODczYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQzLDcgKzQzLDYgQEAgVlBB
VEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUgXAogICAg
ICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uIFwKICAgICAkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvQ2FjaGUgXAotICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdl
bWVudCBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIgXAog
ICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIFwKICAgICAkKFdlYktpdDIpL1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24gXApAQCAtNTgsNiArNTcsNyBAQCBWUEFUSCA9IFwKICAgICAk
KFdlYktpdDIpL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZSBcCiAgICAgJChXZWJLaXQyKS9XZWJQ
cm9jZXNzL1N0b3JhZ2UgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudCBc
CisgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uIFwKICAgICAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQgXAogICAgICQoV2ViS2l0MikvV2ViUHJv
Y2Vzcy9XZWJQYWdlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUgXApAQCAtNjksNyArNjksNiBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BcHBsZVBheSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvQXV0b21hdGlvbiBc
CiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvQ29jb2EgXAotICAgICQoV2ViS2l0MikvVUlQcm9j
ZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50IFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9EYXRh
YmFzZXMgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL0Rvd25sb2FkcyBcCiAgICAgJChXZWJL
aXQyKS9VSVByb2Nlc3MvTWVkaWFTdHJlYW0gXApAQCAtODAsNiArNzksNyBAQCBWUEFUSCA9IFwK
ICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUgXAogICAgICQoV2ViS2l0
MikvVUlQcm9jZXNzL1N0b3JhZ2UgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL1VzZXJDb250
ZW50IFwKKyAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbiBcCiAgICAg
JChXZWJLaXQyKS9VSVByb2Nlc3MvV2ViU3RvcmFnZSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nl
c3MvbWFjIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9pb3MgXApAQCAtMTQ5LDggKzE0OSw4
IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkNvbm5lY3Rpb24gXAogICAgIFdlYkNv
b2tpZU1hbmFnZXIgXAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSBcCi0gICAgV2ViQ3JlZGVu
dGlhbHNNZXNzZW5nZXIgXAotICAgIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkgXAorICAg
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvciBcCisgICAgV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkgXAogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIFwKICAgICBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5IFwKICAgICBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDEzOGUyMGU2ODc1MTAzMTRjNGEwMzU3ODFiYzFjMWQ5ODRiOTRjZGQu
LmY0OWU0NDliMzM5ZTllNWI4YjQxM2ZlZGM1NDY0NDgzYjAwOTFlZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTM0Miw4ICszNDIsNiBAQCBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KIFVJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5t
bQogVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCiAK
LVVJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclBy
b3h5LmNwcAotCiBVSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29h
Lm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9pb3MvVUlHYW1lcGFkUHJvdmlkZXJJT1MubW0KIFVJUHJv
Y2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbQpAQCAtNDU0LDYgKzQ1Miw4
IEBAIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhLm1tCiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHkuY3BwCiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ1RyZWUuY3BwCiAKK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKwogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogCiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTQ2Miw4ICs0NjIsNiBAQCBVSVByb2Nlc3MvV2ViU3RvcmFnZS9pb3Mv
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VySU9TLm1tCiAKIFdlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAogCi1XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2Vt
ZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcAotCiBXZWJQcm9jZXNzL2NvY29hL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXIubW0KIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIuY3BwCiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAg
LTUwOCw2ICs1MDYsOCBAQCBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFu
bm90YXRpb24ubW0KIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVs
ZC5tbQogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQog
CitXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAKKwogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXIuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlk
ZXMuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1h
bmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclBy
b3h5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNiY2ZiZjJjZDkwNDFhZjQ4
ZDA5YzJkMGU2ZjBlNGRlMjAyMDU2OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVu
dC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEy
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0K
LSNpbmNsdWRlICJXZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAi
V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9FeGNlcHRpb25EYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6
OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkp
Ci0gICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCi17Ci0gICAgbV93ZWJQYWdlUHJv
eHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQ3JlZGVudGlhbHNN
ZXNzZW5nZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdl
SUQoKSwgKnRoaXMpOwotICAgIG1fYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6TG9jYWxBdXRoZW50aWNhdG9yPigpOwotfQotCi1XZWJDcmVkZW50aWFsc01lc3Nlbmdl
clByb3h5Ojp+V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eSgpCi17Ci0gICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQ3JlZGVu
dGlhbHNNZXNzZW5nZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6bWFr
ZUNyZWRlbnRpYWwodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhh
c2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9w
dGlvbnMpCi17Ci0gICAgLy8gRklYTUUoMTgyNzY3KQotICAgIGlmICghbV9hdXRoZW50aWNhdG9y
KSB7Ci0gICAgICAgIGV4Y2VwdGlvblJlcGx5KG1lc3NhZ2VJZCwgeyBXZWJDb3JlOjpOb3RBbGxv
d2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9zIH0pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIC8vIEZJWE1FKDE4MzUzNCk6IFdlYWsgcG9pbnRlcnMgZG9lc24n
dCB3b3JrIGluIGFub3RoZXIgdGhyZWFkIGJlY2F1c2Ugb2YgcmFjZSBjb25kaXRpb24uCi0gICAg
Ly8gRklYTUUoMTgzNTM0KTogVW5pZnkgY2FsbGJhY2tzLgotICAgIGF1dG8gd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFt3ZWFrVGhpcywgbWVzc2Fn
ZUlkXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgd2Vha1RoaXMtPm1ha2VDcmVkZW50aWFsUmVwbHko
bWVzc2FnZUlkLCBjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICB9OwotICAg
IGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbd2Vha1RoaXMsIG1lc3NhZ2VJZF0gKGNvbnN0IFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgewotICAgICAgICBpZiAoIXdlYWtUaGlz
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhpcy0+ZXhjZXB0aW9uUmVwbHko
bWVzc2FnZUlkLCBleGNlcHRpb24pOwotICAgIH07Ci0gICAgbV9hdXRoZW50aWNhdG9yLT5tYWtl
Q3JlZGVudGlhbChoYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjaykpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6
OmdldEFzc2VydGlvbih1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBv
cHRpb25zKQotewotICAgIC8vIEZJWE1FKDE4Mjc2NykKLSAgICBpZiAoIW1fYXV0aGVudGljYXRv
cikKLSAgICAgICAgZXhjZXB0aW9uUmVwbHkobWVzc2FnZUlkLCB7IFdlYkNvcmU6Ok5vdEFsbG93
ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7Ci0gICAgLy8gRklY
TUUoMTgzNTM0KTogV2VhayBwb2ludGVycyBkb2Vzbid0IHdvcmsgaW4gYW5vdGhlciB0aHJlYWQg
YmVjYXVzZSBvZiByYWNlIGNvbmRpdGlvbi4KLSAgICAvLyBGSVhNRSgxODM1MzQpOiBVbmlmeSBj
YWxsYmFja3MuCi0gICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBh
dXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzLCBtZXNzYWdlSWRdIChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0
YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgdXNlckhhbmRsZSkgewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFr
VGhpcy0+Z2V0QXNzZXJ0aW9uUmVwbHkobWVzc2FnZUlkLCBjcmVkZW50aWFsSWQsIGF1dGhlbnRp
Y2F0b3JEYXRhLCBzaWduYXR1cmUsIHVzZXJIYW5kbGUpOwotICAgIH07Ci0gICAgYXV0byBleGNl
cHRpb25DYWxsYmFjayA9IFt3ZWFrVGhpcywgbWVzc2FnZUlkXSAoY29uc3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAg
ICAgIHdlYWtUaGlzLT5leGNlcHRpb25SZXBseShtZXNzYWdlSWQsIGV4Y2VwdGlvbik7Ci0gICAg
fTsKLSAgICBtX2F1dGhlbnRpY2F0b3ItPmdldEFzc2VydGlvbihoYXNoLCBvcHRpb25zLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOwotfQotCi12b2lkIFdl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVu
dGljYXRvckF2YWlsYWJsZSh1aW50NjRfdCBtZXNzYWdlSWQpCi17Ci0gICAgaWYgKCFtX2F1dGhl
bnRpY2F0b3IpIHsKLSAgICAgICAgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
QXZhaWxhYmxlUmVwbHkobWVzc2FnZUlkLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHko
bWVzc2FnZUlkLCBtX2F1dGhlbnRpY2F0b3ItPmlzQXZhaWxhYmxlKCkpOwotfQotCi12b2lkIFdl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6OmV4Y2VwdGlvblJlcGx5KHVpbnQ2NF90IG1lc3Nh
Z2VJZCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKQotewotICAgIG1f
d2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjpFeGNl
cHRpb25SZXBseShtZXNzYWdlSWQsIGV4Y2VwdGlvbikpOwotfQotCi12b2lkIFdlYkNyZWRlbnRp
YWxzTWVzc2VuZ2VyUHJveHk6Om1ha2VDcmVkZW50aWFsUmVwbHkodWludDY0X3QgbWVzc2FnZUlk
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCkKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3Nh
Z2VzOjpXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6TWFrZUNyZWRlbnRpYWxSZXBseShtZXNzYWdl
SWQsIGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QpKTsKLX0KLQotdm9pZCBXZWJDcmVk
ZW50aWFsc01lc3NlbmdlclByb3h5OjpnZXRBc3NlcnRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdl
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVy
ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKQotewotICAgIG1fd2ViUGFnZVBy
b3h5LnNlbmQoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjpHZXRBc3NlcnRpb25S
ZXBseShtZXNzYWdlSWQsIGNyZWRlbnRpYWxJZCwgYXV0aGVudGljYXRvckRhdGEsIHNpZ25hdHVy
ZSwgdXNlckhhbmRsZSkpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6
OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2
NF90IG1lc3NhZ2VJZCwgYm9vbCByZXN1bHQpCi17Ci0gICAgbV93ZWJQYWdlUHJveHkuc2VuZChN
ZXNzYWdlczo6V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6OklzVXNlclZlcmlmeWluZ1BsYXRmb3Jt
QXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJZCwgcmVzdWx0KSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNy
ZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRl
bnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ3NGM5NzI3MGI3ODNlODdlNGY4ZTUyZjI4ZGEwZWEyOTBj
NzBjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01l
c3NlbmdlclByb3h5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi0jaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBMb2NhbEF1dGhlbnRpY2F0b3I7Ci0KLXN0cnVjdCBFeGNlcHRpb25EYXRh
Owotc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7Ci1zdHJ1Y3QgUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViUGFnZVByb3h5OwotCi1jbGFzcyBXZWJDcmVkZW50aWFsc01lc3NlbmdlclBy
b3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5KTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBX
ZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5KFdlYlBhZ2VQcm94eSYpOwotICAgIH5XZWJDcmVk
ZW50aWFsc01lc3NlbmdlclByb3h5KCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIuCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKLQotICAgIC8vIFJlY2VpdmVycy4KLSAgICB2b2lkIG1h
a2VDcmVkZW50aWFsKHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBo
YXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJik7
Ci0gICAgdm9pZCBnZXRBc3NlcnRpb24odWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyYpOwotICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
QXZhaWxhYmxlKHVpbnQ2NF90IG1lc3NhZ2VJZCk7Ci0KLSAgICAvLyBTZW5kZXJzLgotICAgIHZv
aWQgZXhjZXB0aW9uUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhJik7Ci0gICAgdm9pZCBtYWtlQ3JlZGVudGlhbFJlcGx5KHVpbnQ2NF90IG1lc3Nh
Z2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uUmVwbHko
dWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRsZSk7Ci0g
ICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBs
eSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpOwotCi0gICAgV2ViUGFnZVByb3h5JiBtX3dlYlBh
Z2VQcm94eTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9y
PiBtX2F1dGhlbnRpY2F0b3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2Vi
Q3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYTU4YmJhZTZmMDE0YjBiYmI2Y2U5NzhhODQ5YWZmNTM4ZjMzMjYwZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclBy
b3h5Lm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0jIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSMvCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQot
Ci1tZXNzYWdlcyAtPiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5IHsKLQotICAgIE1ha2VD
cmVkZW50aWFsKHVpbnQ2NF90IG1lc3NhZ2VJZCwgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVj
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMpOwot
ICAgIEdldEFzc2VydGlvbih1aW50NjRfdCBtZXNzYWdlSWQsIFZlY3Rvcjx1aW50OF90PiBoYXNo
LCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlv
bnMpOwotICAgIElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSh1
aW50NjRfdCBtZXNzYWdlSWQpOwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjIzOTQ4ZWUx
ODAwMThjZDJkMDU5MWFkNjIwY2JmZDhlN2I5NmM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lmgi
CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Mb2NhbEF1dGhlbnRpY2F0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCisgICAgOiBtX3dlYlBhZ2VQcm94eSh3
ZWJQYWdlUHJveHkpCit7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCksICp0aGlzKTsKKyAgICBt
X2F1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkxvY2FsQXV0aGVudGlj
YXRvcj4oKTsKK30KKworV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6On5XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSgpCit7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vz
cygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlE
KCkpOworfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3Jl
ZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgLy8gRklYTUUo
MTgyNzY3KQorICAgIGlmICghbV9hdXRoZW50aWNhdG9yKSB7CisgICAgICAgIHJlcXVlc3RSZXBs
eSh7IH0sIHsgV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRp
Y2F0b3JzLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRSgxODM1
MzQpOiBXZWFrIHBvaW50ZXJzIGRvZXNuJ3Qgd29yayBpbiBhbm90aGVyIHRocmVhZCBiZWNhdXNl
IG9mIHJhY2UgY29uZGl0aW9uLgorICAgIGF1dG8gY2FsbGJhY2sgPSBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyldIChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0
LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmIGRhdGEpIHsKKyAg
ICAgICAgICAgIHdlYWtUaGlzLT5yZXF1ZXN0UmVwbHkoZGF0YSwgeyB9KTsKKyAgICAgICAgfSwg
WyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5yZXF1ZXN0UmVwbHkoeyB9LCBleGNlcHRpb24pOworICAgICAgICB9KTsK
KyAgICB9OworICAgIG1fYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoaGFzaCwgb3B0aW9u
cywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5OjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25z
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMpCit7
CisgICAgLy8gRklYTUUoMTgyNzY3KQorICAgIGlmICghbV9hdXRoZW50aWNhdG9yKQorICAgICAg
ICByZXF1ZXN0UmVwbHkoeyB9LCB7IFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxp
YWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CisgICAgLy8gRklYTUUoMTgzNTM0KTogV2VhayBw
b2ludGVycyBkb2Vzbid0IHdvcmsgaW4gYW5vdGhlciB0aHJlYWQgYmVjYXVzZSBvZiByYWNlIGNv
bmRpdGlvbi4KKyAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhKSB7CisgICAgICAgICAgICB3
ZWFrVGhpcy0+cmVxdWVzdFJlcGx5KGRhdGEsIHsgfSk7CisgICAgICAgIH0sIFsmXShjb25zdCAg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CisgICAgICAgICAgICB3ZWFrVGhp
cy0+cmVxdWVzdFJlcGx5KHsgfSwgZXhjZXB0aW9uKTsKKyAgICAgICAgfSk7CisgICAgfTsKKyAg
ICBtX2F1dGhlbnRpY2F0b3ItPmdldEFzc2VydGlvbihoYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7Cit9CisKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Omlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSh1aW50NjRfdCBtZXNz
YWdlSWQpCit7CisgICAgaWYgKCFtX2F1dGhlbnRpY2F0b3IpIHsKKyAgICAgICAgaXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2FnZUlkLCBmYWxz
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2FnZUlkLCBtX2F1dGhlbnRpY2F0b3ItPmlz
QXZhaWxhYmxlKCkpOworfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
OjpyZXF1ZXN0UmVwbHkoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmIGRh
dGEsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikKK3sKKyAgICBtX3dl
YlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OlJl
cXVlc3RSZXBseShkYXRhLCBleGNlcHRpb24pKTsKK30KKwordm9pZCBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eTo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBib29sIHJlc3VsdCkKK3sKKyAgICBtX3dl
YlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Oklz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJ
ZCwgcmVzdWx0KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxNzVhYWNlMDMwNmI2YmQ1YmNkMTIzODNlZmIyYWEw
OTQ1ZjVkOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIExvY2FsQXV0aGVudGljYXRvcjsKKwor
c3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9uczsKK3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTsKK3N0cnVjdCBQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PiB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkpOworcHVibGljOgorICAgIGV4
cGxpY2l0IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYpOwor
ICAgIH5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSgpOworCitwcml2YXRlOgorICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICAvLyBSZWNlaXZl
cnMuCisgICAgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gs
IGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmKTsKKyAg
ICB2b2lkIGdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYpOworICAgIHZvaWQgaXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKHVpbnQ2NF90IG1lc3Nh
Z2VJZCk7CisKKyAgICAvLyBTZW5kZXJzLgorICAgIHZvaWQgcmVxdWVzdFJlcGx5KGNvbnN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYpOworICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBib29sKTsKKworICAgIFdlYlBhZ2VQcm94
eSYgbV93ZWJQYWdlUHJveHk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxvY2FsQXV0
aGVudGljYXRvcj4gbV9hdXRoZW50aWNhdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44N2M2Njc3NmU2MWEwNWIxYmFkNTI5MmRkMTE1MjEzYWFmYTNhYmUxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNCBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMvCisKKyNpZiBFTkFCTEUoV0VC
X0FVVEhOKQorCittZXNzYWdlcyAtPiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSB7
CisKKyAgICBNYWtlQ3JlZGVudGlhbChWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucyk7CisgICAgR2V0
QXNzZXJ0aW9uKFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMpOworICAgIElzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSh1aW50NjRfdCBtZXNzYWdlSWQpOworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUyODMx
MGJhNjBhOTI4MzM3YTA4Zjc2OTNkOGVkYzkxNTZlYmE0MzYuLjAxYjFiYmJiZWVkZjdlNDM1YTll
Nzg1ODFiZjA0MzY3YzljYThhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMjExLDcgKzIxMSw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCi0jaW5jbHVkZSAiV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oIgorI2luY2x1ZGUg
IldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgiCiAjZW5kaWYKIAogI2lmIEhBVkUo
Q0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQpAQCAtNDYxLDcgKzQ2MSw3IEBAIFdlYlBh
Z2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcywgdWluCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAg
bV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ3JlZGVudGlhbHNN
ZXNzZW5nZXJQcm94eT4oKnRoaXMpOworICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAj
ZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKQEAgLTc3
OSw3ICs3NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV0VCX0FVVEhOKQotICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk+KCp0aGlzKTsKKyAgICBtX2NyZWRlbnRp
YWxzTWVzc2VuZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICAgICBpbml0aWFsaXplV2ViUGFnZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NTI4MTRiYzI1ZmQyZGQwMDli
MGRjZGIxZWJkMmZmZTU0NTFkMThlLi5mZGE0NTYzYTUyYzRiYjgwYzAyYTU5ZjBlZGE2YzcxZjNi
NzA0YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjM0LDcg
KzIzNCw3IEBAIGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk7CiBjbGFzcyBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJOYXZpZ2F0aW9uU3RhdGU7CiBjbGFzcyBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk7Ci1jbGFzcyBXZWJDcmVkZW50aWFsc01lc3Nlbmdl
clByb3h5OworY2xhc3MgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk7CiBjbGFzcyBX
ZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYk1v
dXNlRXZlbnQ7CkBAIC0xOTE0LDcgKzE5MTQsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0VCX0FVVEhOKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDcmVkZW50aWFsc01lc3Nl
bmdlclByb3h5PiBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsK
ICNlbmRpZgogCiAgICAgQ2FsbGJhY2tNYXAgbV9jYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkM2Y4YjllYTliOTIzN2Iw
NTE2MGU1NzJhNmU4NTBjZTM2NDU5N2QyLi5mM2MzNjgwNmViZWMwNmYzZDZlNjQwMmI5OTQ2NzVm
MTAzZWU3MWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTExNDUsMTEgKzExNDUsMTEgQEAKIAkJNTNCQTQ3RDExREMyRUY1RTAwNERG
NEFEIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzOUVCNTQ3MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0
YVRhc2tCbG9iLmggKi87IH07CiAJCTUzREVBMzY2MURERTQyMzEwMEU4MjY0OCAvKiBqc29uLmhw
cCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzREVBMzY1
MURERTQyMkUwMEU4MjY0OCAvKiBqc29uLmhwcCAqLzsgfTsKIAkJNTcwQUI4RjMyMEFFM0JENzAw
QjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEFCOEYyMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94
eVN0b3JlLmggKi87IH07Ci0JCTU3NjA4MjlDMjAyRDJDM0MwMDExNjY3OCAvKiBXZWJDcmVkZW50
aWFsc01lc3Nlbmdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI5MDIwMjk4RkJEMDAxMTY2NzggLyogV2ViQ3Jl
ZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwotCQk1NzYwODI5RDIw
MkQyQzQwMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2MDgyOEYyMDI5OEZC
RDAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyTWVzc2FnZXMuaCAqLzsgfTsKLQkJ
NTc2MDgyOUUyMDJEMkM0MzAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc2MDgyOUEyMDJCRUU1QTAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2Vu
Z2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwotCQk1NzYwODI5RjIwMkQyQzQ2MDAx
MTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI5QjIwMkJFRTVBMDAx
MTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJ
CTU3QjRCNDYwMjBCNTA0QUMwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0
aW9uWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1N0I0QjQ1RTIwQjUwNEFCMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRo
ZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oICovOyB9OworCQk1N0RDRUQ2RTIxNDJFRTVFMDAxNkI4
NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZCMjE0MkVB
RTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OworCQk1N0RDRUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JNZXNzYWdlcy5oICovOyB9OworCQk1N0RDRUQ3MDIxNDJFRTY4MDAxNkI4NDcg
LyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VENkMyMTQy
RUFGOTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKKwkJNTdEQ0VENzEyMTQyRUU2QzAwMTZCODQ3IC8qIFdlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZEMjE0MkVBRkEwMDE2Qjg0NyAvKiBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJCTVDMEIxNzc4
MUU3Qzg4MEUwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc0
MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKIAkJNUMwQjE3NzkxRTdDODgyMTAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzBCMTc3NjFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNUMxNDI2RUQxQzIzRjgwOTAwRDQxMTgzIC8qIE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZFMzFDMjNGODA1MDBENDExODMgLyogTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKQEAgLTM2MDQsMTggKzM2MDQsMTggQEAK
IAkJNTcwQUI5MDMyMEIyNTQxQzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZWNLZXlQcm94eVN0b3JlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzUwNzVBNzIwQUI3NjM2MDA2OTNFQTkgLyog
V2ViQ3JlZGVudGlhbE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4
OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0g
TG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0xvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9P
VDsgfTsKLQkJNTc2MDgyOEIyMDI5ODU0MjAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2Vu
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjhDMjAyOTg1NDIwMDExNjY3OCAvKiBXZWJDcmVk
ZW50aWFsc01lc3Nlbmdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDcmVkZW50aWFsc01l
c3Nlbmdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjhEMjAyOTg3
RTYwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlci5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJDcmVkZW50aWFsc01lc3Nlbmdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTc2MDgyOEYyMDI5OEZCRDAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2Vu
Z2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI5MDIwMjk4RkJEMDAx
MTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI5NTIwMkJEOEJBMDAxMTY2Nzgg
LyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDcmVk
ZW50aWFsc01lc3NlbmdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3
NjA4Mjk2MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI5OTIwMkJEQUUyMDAxMTY2NzggLyog
V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJDcmVkZW50
aWFsc01lc3NlbmdlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1NzYwODI5QTIwMkJFRTVBMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDcmVkZW50aWFs
c01lc3NlbmdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTc2MDgyOUIyMDJCRUU1QTAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2Vu
Z2VyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDcmVkZW50aWFsc01lc3Nlbmdl
clByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyOEIy
MDI5ODU0MjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc2MDgyOEMyMDI5ODU0MjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzYwODI4RDIwMjk4N0U2
MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTc2MDgyOTUyMDJCRDhCQTAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NjA4Mjk2MjAy
QkQ4QkEwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NjA4Mjk5MjAyQkRBRTIwMDExNjY3OCAvKiBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTdCNEI0NUQyMEI1MDRBQjAwRDRBRDc5IC8qIEF1dGhlbnRpY2F0aW9uTWFu
YWdlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQXV0
aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW07IHBhdGggPSBBdXRoZW50aWNhdGlvbi9jb2NvYS9B
dXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTdCNEI0NUUyMEI1MDRBQjAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGlj
YXRpb25YUENDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ2xp
ZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oOyBwYXRoID0gQXV0aGVu
dGljYXRpb24vY29jb2EvQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0RDRUQ2QTIxNDJFQUUyMDAxNkI4
NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdEQ0VENkIyMTQyRUFFMjAwMTZCODQ3
IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0RD
RUQ2QzIxNDJFQUY5MDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0RDRUQ2RDIxNDJFQUZBMDAxNkI4NDcgLyogV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIz
QyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzBCMTc3NTFFN0M4NzlDMDBF
OTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzBCMTc3NjFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0
U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02OTU4LDI0ICs2OTU4LDI0IEBACiAJCQluYW1lID0gRnJhbWV3b3Jr
czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTU3NjA4MjhBMjAyOTg0Qzkw
MDExNjY3OCAvKiBDcmVkZW50aWFsTWFuYWdlbWVudCAqLyA9IHsKKwkJNTc2MDgyOEEyMDI5ODRD
OTAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1NzYwODI4QzIwMjk4NTQyMDAxMTY2NzggLyogV2ViQ3Jl
ZGVudGlhbHNNZXNzZW5nZXIuY3BwICovLAotCQkJCTU3NjA4MjhCMjAyOTg1NDIwMDExNjY3OCAv
KiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlci5oICovLAotCQkJCTU3NjA4MjhEMjAyOTg3RTYwMDEx
NjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlci5tZXNzYWdlcy5pbiAqLywKKwkJCQk1NzYw
ODI4QzIwMjk4NTQyMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAq
LywKKwkJCQk1NzYwODI4QjIwMjk4NTQyMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmggKi8sCisJCQkJNTc2MDgyOEQyMDI5ODdFNjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbiAqLywKIAkJCSk7Ci0JCQlwYXRoID0gQ3JlZGVu
dGlhbE1hbmFnZW1lbnQ7CisJCQlwYXRoID0gV2ViQXV0aGVudGljYXRpb247CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OwotCQk1NzYwODI5NDIwMkJEODQ5MDAxMTY2NzggLyogQ3Jl
ZGVudGlhbE1hbmFnZW1lbnQgKi8gPSB7CisJCTU3NjA4Mjk0MjAyQkQ4NDkwMDExNjY3OCAvKiBX
ZWJBdXRoZW50aWNhdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0JCQkJNTc2MDgyOTYyMDJCRDhCQTAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2Vu
Z2VyUHJveHkuY3BwICovLAotCQkJCTU3NjA4Mjk1MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJDcmVk
ZW50aWFsc01lc3NlbmdlclByb3h5LmggKi8sCi0JCQkJNTc2MDgyOTkyMDJCREFFMjAwMTE2Njc4
IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJNTc2
MDgyOTYyMDJCRDhCQTAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmNwcCAqLywKKwkJCQk1NzYwODI5NTIwMkJEOEJBMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkuaCAqLywKKwkJCQk1NzYwODI5OTIwMkJEQUUyMDAxMTY2NzggLyog
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkpOwot
CQkJcGF0aCA9IENyZWRlbnRpYWxNYW5hZ2VtZW50OworCQkJcGF0aCA9IFdlYkF1dGhlbnRpY2F0
aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJNTdCNEI0NUMyMEI1MDQ4
QjAwRDRBRDc5IC8qIGNvY29hICovID0gewpAQCAtNzI3MCw3ICs3MjcwLDYgQEAKIAkJCQkxQzBB
MTk0MzFDOEZGMUE4MDBGRTBFQkIgLyogQXV0b21hdGlvbiAqLywKIAkJCQk0MUQxMjlEODFGM0Qx
MDE0MDBEMTVFNDcgLyogQ2FjaGUgKi8sCiAJCQkJN0M2RTcwRjgxOEIyRDQ3RTAwRjI0RTJFIC8q
IGNvY29hICovLAotCQkJCTU3NjA4MjhBMjAyOTg0QzkwMDExNjY3OCAvKiBDcmVkZW50aWFsTWFu
YWdlbWVudCAqLywKIAkJCQk1MTJBOTc1NDE4MERGOTI3MDAzOUExNDkgLyogRGF0YWJhc2VzICov
LAogCQkJCUJDQUNDNDNCMTZCMjRDNUQwMEI2RTA5MiAvKiBFbnRyeVBvaW50ICovLAogCQkJCUUx
NzA4NzZEMTZENkNBNzIwMEY5OTIyNiAvKiBGaWxlQVBJICovLApAQCAtNzI4NSw2ICs3Mjg0LDcg
QEAKIAkJCQkxQTZGQjdBQTExRTY0QjQ5MDBEQjEzNzEgLyogUGx1Z2lucyAqLywKIAkJCQk1MTE4
RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLywKIAkJCQkxQUFGMDhBQTE5MjY5MzBC
MDBCNjM5MEMgLyogVXNlckNvbnRlbnQgKi8sCisJCQkJNTc2MDgyOEEyMDI5ODRDOTAwMTE2Njc4
IC8qIFdlYkF1dGhlbnRpY2F0aW9uICovLAogCQkJCUJDMDMyRDVEMTBGNDM3MjIwMDU4QzE1QSAv
KiBXZWJDb3JlU3VwcG9ydCAqLywKIAkJCQlCQzAzMkQ1RTEwRjQzNzJCMDA1OEMxNUEgLyogV2Vi
UGFnZSAqLywKIAkJCQkxQUFDNERERTE2QjFDQkY2MDA5NDI1RTMgLyogV2ViU3RvcmFnZSAqLywK
QEAgLTc0MzAsNyArNzQzMCw2IEBACiAJCQkJNTEyRjU4OEQxMkE4ODM2RjAwNjI5NTMwIC8qIEF1
dGhlbnRpY2F0aW9uICovLAogCQkJCTk5NTVBNkU4MUM3OTgwOTAwMEVCNkE5MyAvKiBBdXRvbWF0
aW9uICovLAogCQkJCTFBQkMzREYyMTg5OUU0MTUwMDRGMDYyNiAvKiBDb2NvYSAqLywKLQkJCQk1
NzYwODI5NDIwMkJEODQ5MDAxMTY2NzggLyogQ3JlZGVudGlhbE1hbmFnZW1lbnQgKi8sCiAJCQkJ
MUFCN0Q0QzcxMjg4QUE5QTAwQ0ZEMDhDIC8qIERvd25sb2FkcyAqLywKIAkJCQk1MTVCRTE3QjFE
NTRFRjVBMDBERDdDNjggLyogR2FtZXBhZCAqLywKIAkJCQkyREE5NDRBODE4ODRFOUFCMDBFRDg2
REIgLyogaW9zICovLApAQCAtNzQ0Miw2ICs3NDQxLDcgQEAKIAkJCQkyRDE1NTFBOTFGNUE5QjQy
MDAwNkUzRkUgLyogUmVtb3RlTGF5ZXJUcmVlICovLAogCQkJCTUxN0RENUJCMTgwREE3QzQwMDgx
NjYwQiAvKiBTdG9yYWdlICovLAogCQkJCTFBQUYwODlFMTkyNjgxQUMwMEI2MzkwQyAvKiBVc2Vy
Q29udGVudCAqLywKKwkJCQk1NzYwODI5NDIwMkJEODQ5MDAxMTY2NzggLyogV2ViQXV0aGVudGlj
YXRpb24gKi8sCiAJCQkJMUE1M0MyQTMxQTMyNTY5MTAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhICov
LAogCQkJCTFBNDRCOTU4MTZCNzNGOEMwMEI3QkJEOCAvKiBXZWJTdG9yYWdlICovLAogCQkJCTdD
RDEwMkQ5MTg2Njc3MDYwMEVENDI5RCAvKiBBdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggKi8sCkBA
IC04NTgyLDYgKzg1ODIsMTAgQEAKIAkJCQkxQTYwMjI0QjE4QzE2QjlGMDBDM0U4QzkgLyogVmlz
aXRlZExpbmtTdG9yZU1lc3NhZ2VzLmggKi8sCiAJCQkJMUE4RTdEM0ExOEMxNTE0OTAwNUE3MDJB
IC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJ
CQkxQThFN0QzQjE4QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJN
ZXNzYWdlcy5oICovLAorCQkJCTU3RENFRDZCMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTU3RENFRDZBMjE0
MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oICov
LAorCQkJCTU3RENFRDZDMjE0MkVBRjkwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJNTdEQ0VENkQyMTQyRUFGQTAw
MTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCAqLywK
IAkJCQkxQzBBMTk1NTFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDMEExOTU2MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggKi8sCiAJCQkJMUMwQTE5NTExQzhGRkRGQjAwRkUw
RUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApA
QCAtODU5NCwxMCArODU5OCw2IEBACiAJCQkJMzMwOTM0NDQxMzE1QjkyMjAwOTdBN0JDIC8qIFdl
YkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTMzMDkzNDQ1MTMxNUI5MjIwMDk3QTdC
QyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTMz
MDkzNDQ2MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
ICovLAotCQkJCTU3NjA4MjkwMjAyOThGQkQwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nl
bmdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJNTc2MDgyOEYyMDI5OEZCRDAwMTE2Njc4
IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyTWVzc2FnZXMuaCAqLywKLQkJCQk1NzYwODI5QTIw
MkJFRTVBMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCi0JCQkJNTc2MDgyOUIyMDJCRUU1QTAwMTE2Njc4IC8qIFdlYkNyZWRlbnRp
YWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlcy5oICovLAogCQkJCUNENzNCQTQ4MTMxQUNEOEUwMEVF
REVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJ
Q0Q3M0JBNDkxMzFBQ0Q4RTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXMu
aCAqLywKIAkJCQlDRDczQkE0NTEzMUFDQzg4MDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC05NDcwLDYgKzk0NzAsOCBAQAogCQkJ
CTFBRjRDRUYwMThCQzQ4MTgwMEJDMkQzNCAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4RTdEM0QxOEMxNTE0OTAwNUE3MDJBIC8qIFZpc2l0ZWRM
aW5rVGFibGVDb250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFREExMkUz
MTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTU3RENFRDZGMjE0MkVFNjMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdEQ0VENzEyMTQyRUU2QzAw
MTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk5NTVBNkVDMUM3OTgwQzIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDM0FFMkQxREFEQTZBRDAwQUY1QzE2IC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzBBMTk1
ODFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC05NTEwLDggKzk1MTIsNiBAQAogCQkJCTMzMDkzNDRBMTMxNUI5MjIwMDk3
QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRp
YWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3NjA4MjlEMjAyRDJDNDAwMDExNjY3OCAvKiBXZWJD
cmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQk1NzYwODI5
RjIwMkQyQzQ2MDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4M0Y2RDFBNUI2M0ZGMDAwMjZFQzYgLyogV2ViRGF0
YWJhc2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTUyQ0Y1NTIyMEEzNUMzQTAwREFE
QTI3IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTU2OEI5MUYyMEEzQUIyRjAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTIyMyw2ICsxMTIyMyw4IEBACiAJCQkJMjY4NDA1NTIx
OEI4NkVENjAwMjJDMzhCIC8qIFZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjAyMjRDMThDMTZCOUYwMEMzRThDOSAvKiBWaXNpdGVk
TGlua1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEU3RDND
MThDMTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1N0RDRUQ2RTIxNDJFRTVFMDAxNkI4NDcgLyog
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTU3RENFRDcwMjE0MkVFNjgwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzBB
MTk1NzFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMwQTE5NTMxQzhGRkRGQjAwRkUwRUJCIC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBEIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTIzMCw4ICsxMTIzMiw2
IEBACiAJCQkJMzMwOTM0NDcxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMwOTM0NDkxMzE1QjkyMjAwOTdB
N0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDkyQTc4ODIxMkI2QUIxMDBGNDkzRkQgLyogV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU3NjA4MjlDMjAyRDJDM0MwMDExNjY3OCAvKiBX
ZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk1NzYwODI5RTIwMkQyQzQzMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4OTIxMkI2
QUIxMDBGNDkzRkQgLyogV2ViRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q3M0JBNEUx
MzFBQ0RCNzAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNENzNCQTQ3MTMxQUNDOUEwMEVFREVEMiAvKiBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MTE0MTEsNyArMTE0MTEsNiBAQAogCQkJCUJDNDA3NjAzMTI0RkYwMjcwMDY4RjIwQSAvKiBXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQURFNDZCMjE5NTRF
QzYxMDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MURCMDE5NDQyMTFDRjAwNTAwOUZCM0U4IC8qIFdLU2hhcmVTaGVldC5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTUxM0U0NjJFMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0Y1NDlCNjFFMzE3NERBMDAwRTcyMzkg
LyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzYw
NTEyNEZGMDI3MDA2OEYyMEEgLyogV0tTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0
MDc2MTkxMjRGRjAzNzAwNjhGMjBBIC8qIFdLU3RyaW5nQ0YubW0gaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9X
ZWJDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ3Jl
ZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyMjc5ZDdlZmUxZWJhMzE2MGRiZmM4ZDAxZGUzMjBlZTRkMWUx
YTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01l
c3Nlbmdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi0jaW5jbHVkZSAiV2ViQ3JlZGVudGlhbHNNZXNz
ZW5nZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjpXZWJDcmVk
ZW50aWFsc01lc3NlbmdlcihXZWJQYWdlJiB3ZWJQYWdlKQotICAgIDogbV93ZWJQYWdlKHdlYlBh
Z2UpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsKLX0KLQotV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6
On5XZWJDcmVkZW50aWFsc01lc3NlbmdlcigpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFs
c01lc3Nlbmdlcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBj
b25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25z
LCBXZWJDb3JlOjpDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICBh
dXRvIG1lc3NhZ2VJZCA9IGFkZENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5k
bGVyKSk7Ci0gICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxzTWVzc2Vu
Z2VyUHJveHk6Ok1ha2VDcmVkZW50aWFsKG1lc3NhZ2VJZCwgaGFzaCwgb3B0aW9ucykpOwotfQot
Ci12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMmIG9wdGlvbnMsIFdlYkNvcmU6OlJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCi17Ci0gICAgYXV0byBtZXNzYWdlSWQgPSBhZGRSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYkNy
ZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6OkdldEFzc2VydGlvbihtZXNzYWdlSWQsIGhhc2gsIG9w
dGlvbnMpKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6aXNVc2VyVmVyaWZ5
aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFdlYkNvcmU6OlF1ZXJ5Q29tcGxldGlv
bkhhbmRsZXImJiBoYW5kbGVyKQotewotICAgIGF1dG8gbWVzc2FnZUlkID0gYWRkUXVlcnlDb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBtX3dlYlBhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6SXNVc2VyVmVyaWZ5aW5nUGxhdGZv
cm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKG1lc3NhZ2VJZCkpOwotfQotCi12b2lkIFdlYkNyZWRl
bnRpYWxzTWVzc2VuZ2VyOjptYWtlQ3JlZGVudGlhbFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYXR0ZXN0YXRpb25PYmplY3QpCi17Ci0gICAgYXV0byBoYW5kbGVyID0gdGFrZUNyZWF0aW9u
Q29tcGxldGlvbkhhbmRsZXIobWVzc2FnZUlkKTsKLSAgICBoYW5kbGVyKFdlYkNvcmU6OkNyZWF0
aW9uUmV0dXJuQnVuZGxlKEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwg
Y3JlZGVudGlhbElkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmpl
Y3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5zaXplKCkpKSk7Ci19Ci0KLXZvaWQgV2ViQ3Jl
ZGVudGlhbHNNZXNzZW5nZXI6OmdldEFzc2VydGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCi17Ci0gICAgYXV0byBoYW5kbGVyID0g
dGFrZVJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihtZXNzYWdlSWQpOwotICAgIGhhbmRsZXIoV2Vi
Q29yZTo6QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlh
bElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0
aGVudGljYXRvckRhdGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkpLCBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUuZGF0YSgpLCB1c2VySGFuZGxlLnNpemUoKSkpKTsKLX0K
LQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBib29sIHJlc3Vs
dCkKLXsKLSAgICBhdXRvIGhhbmRsZXIgPSB0YWtlUXVlcnlDb21wbGV0aW9uSGFuZGxlcihtZXNz
YWdlSWQpOwotICAgIGhhbmRsZXIocmVzdWx0KTsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJD
cmVkZW50aWFsc01lc3Nlbmdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGNh
N2U1MmU1NDE1YzNlM2NiZjVmM2Y0ZDU4NGI0OTFjODJjMmZmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVk
ZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQl9BVVRITikKLQotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvQ3JlZGVudGlhbHNNZXNzZW5nZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyIGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OkNyZWRlbnRpYWxzTWVzc2VuZ2VyLCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJDcmVkZW50aWFsc01lc3NlbmdlcihX
ZWJQYWdlJik7Ci0gICAgfldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgLy8gV2ViQ29yZTo6Q3JlZGVudGlhbHNNZXNzZW5nZXIKLSAgICAvLyBTZW5kZXJzLgotICAg
IHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIFdlYkNvcmU6OkNyZWF0aW9u
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb24oY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7Ci0gICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLQotICAgIC8vIFJl
Y2VpdmVycy4KLSAgICB2b2lkIG1ha2VDcmVkZW50aWFsUmVwbHkodWludDY0X3QgbWVzc2FnZUlk
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCkgZmluYWw7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb25SZXBs
eSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElk
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKSBm
aW5hbDsKLSAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWls
YWJsZVJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCkgZmluYWw7Ci0KLSAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlci4KLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotCi0gICAgV2ViUGFnZSYgbV93ZWJQYWdl
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
VEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5h
Z2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
Lm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmM4ZWVjYTdjNDcz
NDQwMTg0ZmYxOTkxOTA5ZjMyNWJjNmU3ZDFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFu
YWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxs
CkBAIC0xLDM1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0j
LwotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotbWVzc2FnZXMgLT4gV2ViQ3JlZGVudGlhbHNN
ZXNzZW5nZXIgewotCi0gICAgRXhjZXB0aW9uUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBzdHJ1
Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pOwotICAgIE1ha2VDcmVkZW50aWFs
UmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBWZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkLCBW
ZWN0b3I8dWludDhfdD4gYXR0ZXN0YXRpb25PYmplY3QpOwotICAgIEdldEFzc2VydGlvblJlcGx5
KHVpbnQ2NF90IG1lc3NhZ2VJZCwgVmVjdG9yPHVpbnQ4X3Q+IGNyZWRlbnRpYWxJZCwgVmVjdG9y
PHVpbnQ4X3Q+IGF1dGhlbnRpY2F0b3JEYXRhLCBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlLCBW
ZWN0b3I8dWludDhfdD4gdXNlckhhbmRsZSk7Ci0gICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBib29sIHJlc3Vs
dCk7Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGJhNGM1N2M2NDE0YTg3OGFmMjdiZGI1ODNhMDdlNWE0
MjRhOGYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNs
dWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHVibGlj
S2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcihX
ZWJQYWdlJiB3ZWJQYWdlKQorICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCit7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlLnBhZ2VJ
RCgpLCAqdGhpcyk7Cit9CisKK1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6fldlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcigpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKK30KKwordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29u
c3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywg
V2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBpZiAo
IXNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5OjpNYWtlQ3JlZGVudGlhbChoYXNoLCBvcHRpb25zKSk7Cit9CisKK3Zv
aWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMmIG9wdGlvbnMsIFdlYkNvcmU6OlJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCit7CisgICAgaWYgKCFzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSho
YW5kbGVyKSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6R2V0QXNzZXJ0aW9uKGhhc2gsIG9w
dGlvbnMpKTsKK30KKwordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZl
cmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXZWJDb3JlOjpRdWVyeUNvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBhdXRvIG1lc3NhZ2VJZCA9IGFkZFF1ZXJ5
Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7CisgICAgbV93ZWJQYWdlLnNlbmQo
TWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpJc1VzZXJWZXJpZnlp
bmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUobWVzc2FnZUlkKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDdiZWY2
NGI5OWE5OWJhY2UzZTY0NzM0YzBmMTdlNjQzMjMxY2UyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcihXZWJQYWdlJik7CisgICAgfldlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcigpOworCitwcml2YXRlOgorICAgIC8vIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudAorICAgIC8vIFNlbmRlcnMuCisgICAgdm9pZCBtYWtlQ3Jl
ZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
JiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQg
aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFdlYkNvcmU6OlF1
ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlci4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOworCisgICAgV2ViUGFnZSYgbV93ZWJQYWdlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMu
aW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTNlYzE5MzUxOTlmZmJkOTNlNmM1YjlmMzk2NjI1MjI3NWZhZmVlMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwz
MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMvCisKKyNpZiBFTkFC
TEUoV0VCX0FVVEhOKQorCittZXNzYWdlcyAtPiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ig
eworCisgICAgUmVxdWVzdFJlcGx5KHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pOworICAg
IElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2
NF90IG1lc3NhZ2VJZCwgYm9vbCByZXN1bHQpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNDRkZWZmMTM0MGY1OWFkOTcw
MWU5M2IzMmE5NGQ0ZjZkNzYxYTY0MC4uZWI5NjU4OGVjMGNmMGQzNTA3NGZkNWFmM2ZlMWQyYTIz
N2I5NDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTI3OCw4ICsyNzgsOCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQot
I2luY2x1ZGUgIldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9B
dXRoZW50aWNhdG9yTWFuYWdlci5oPgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmg+CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOTIsOSArMzkyLDYgQEAgV2ViUGFnZTo6
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQogICAgICwgbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHBhcmFtZXRlcnMu
dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5IH0K
ICAgICAsIG1fY3B1TGltaXQocGFyYW1ldGVycy5jcHVMaW1pdCkKLSNpZiBFTkFCTEUoV0VCX0FV
VEhOKQotICAgICwgbV9jcmVkZW50aWFsc01lc3NlbmdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkNy
ZWRlbnRpYWxzTWVzc2VuZ2VyPigqdGhpcykpCi0jZW5kaWYKIHsKICAgICBBU1NFUlQobV9wYWdl
SUQpOwogCkBAIC00NDgsNiArNDQ1LDEwIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFn
ZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGllbnQgPSBuZXcgV2ViUGF5bWVudENvb3Jk
aW5hdG9yKCp0aGlzKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oKnRoaXMpOworI2VuZGlmCisKICNp
ZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBw
bGljYXRpb25NYW5pZmVzdCA9IHBhcmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRp
ZgpAQCAtNjA1LDEwICs2MDYsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjZW5kaWYKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yTWFuYWdl
cjo6c2luZ2xldG9uKCkuc2V0TWVzc2VuZ2VyKCptX2NyZWRlbnRpYWxzTWVzc2VuZ2VyKTsKLSNl
bmRpZgotCiAgICAgZm9yIChhdXRvIGl0ZXJhdG9yIDogcGFyYW1ldGVycy51cmxTY2hlbWVIYW5k
bGVycykKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGl0ZXJhdG9yLnZhbHVlLCBp
dGVyYXRvci5rZXkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggYzdmNmI1NGY2ZTNkYjg2ODE4OGNkZDc0MWJkYjczZTM1YWIxZmJiOC4uNzUzNjE2
NDNhMDJkYzAzNDM0ZjgzMDlhNGY1NTA4OGU0OTJlOGYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjI0LDcgKzIyNCw2IEBAIGNsYXNzIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjsKIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiBjbGFz
cyBXZWJXaGVlbEV2ZW50OwogY2xhc3MgV2ViVG91Y2hFdmVudDsKLWNsYXNzIFdlYkNyZWRlbnRp
YWxzTWVzc2VuZ2VyOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiAKIGVudW0g
Y2xhc3MgRGV2aWNlQWNjZXNzU3RhdGU7CkBAIC0xNzMyLDEwICsxNzMxLDYgQEAgcHJpdmF0ZToK
ICAgICBIYXNoTWFwPHVpbnQ2NF90LCB1aW50NjRfdD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0
Y2hDYWxsYmFja01hcDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI+IG1fY3JlZGVudGlhbHNNZXNzZW5n
ZXI7Ci0jZW5kaWYKLQogICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiB9OwogCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWEzNTlh
NmU3YzI0YTU4YTUxNjgzZDM0MTNkZTRkYTE0YmNkNGQ1OS4uOThhYzlhMTM5NjY2M2VlYjU3Mjk2
Y2Y5MDk0M2U4ODdhN2M0YjU1OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA5LTA4ICBKaWV3ZW4gVGFuICA8
amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBQb2xpc2ggQXV0aGVu
dGljYXRvck1hbmFnZXIgYW5kIHJlbmFtZSBpdCB0byBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTI3Nwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQxMTU5MzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9Mb2Nh
bEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAx
OC0wOS0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQb3B1bGF0ZSAidGV4dC91cmktbGlzdCIgd2l0aCBtdWx0aXBsZSBVUkxzIHdoZW4gdGhlIHBh
c3RlYm9hcmQgY29udGFpbnMgbXVsdGlwbGUgVVJMcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvTG9jYWxBdXRoZW50aWNhdG9yLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDg1NWIxNGZjY2RjNzRl
Mzk1OWY1ZDEyZDE0NDIxNDllMzMxM2YyZDcuLmNkNjNkNzM5ZjY0ZTQyYzZkYTE2YmU3ZTdhMTY4
ZTY4OTJiZDdkM2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0xv
Y2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9M
b2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
RXhjZXB0aW9uRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEF1dGhlbnRpY2F0b3IuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgor
I2ltcG9ydCA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC0yNjYsMTYgKzI2Nywx
NyBAQCBURVNUKExvY2FsQXV0aGVudGljYXRvciwgTWFrZUNyZWRlbnRpYWxOb3RTdXBwb3J0ZWRQ
dWJLZXlDcmVkUGFyYW1zKQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsm
ZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpIHsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9
OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2Vi
Q29yZTo6Tm90U3VwcG9ydGVkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKLSAgICAgICAgRVhQRUNU
X1NUUkVRKCJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBv
cnQgYW55IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiIsIGV4Y2VwdGlv
bi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0
byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6
c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERh
dGEmKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBl
eGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RTdXBwb3J0ZWRF
cnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJUaGUgcGxh
dGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55IHByb3ZpZGVk
IFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKICAgICB9
OwotICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25z
LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOworICAgIGF1
dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpA
QCAtMjk0LDE4ICsyOTYsMTkgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50
aWFsRXhjbHVkZUNyZWRlbnRpYWxzTWF0Y2gpCiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAgICBhdXRvIGNh
bGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JikgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGNsZWFuVXBL
ZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0
aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNl
cHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVy
cm9yLCBleGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiQXQgbGVhc3Qgb25l
IGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxp
c3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1l
c3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKLSAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYg
cmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
dHJ1ZSk7CisgICAgICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKKyAgICAgICAgICAgIGRvbmUg
PSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4
Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJv
ciwgZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJBdCBsZWFzdCBv
bmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMg
bGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iLCBleGNlcHRpb24u
bWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsK
KyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKICAgICB9OwotICAgIGF1dGhl
bnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOworICAgIGF1dGhlbnRpY2F0b3It
Pm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpAQCAtMzE5LDE2ICsz
MjIsMTcgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFsQmlvbWV0cmlj
c05vdEVucm9sbGVkKQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9u
ZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpIHsKLSAg
ICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9Owot
ICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2ViQ29y
ZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVDVF9TVFJF
USgiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lp
KCkuZGF0YSgpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9IFsm
ZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6
OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0
LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAg
ICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAg
ICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5j
b2RlKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0
b3JzLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRv
bmUgPSB0cnVlOworICAgICAgICB9KTsKICAgICB9OwotICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VD
cmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjaykpOworICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFs
KHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpAQCAtMzQzLDE2ICszNDcsMTcgQEAgVEVTVChM
b2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFsQmlvbWV0cmljc05vdEF1dGhlbnRpY2F0
ZWQpCiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExv
Y2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExv
Y2FsQXV0aGVudGljYXRvcj4oKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBFWFBF
Q1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0byBl
eGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEm
IGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxv
d2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJDb3VsZG4n
dCBnZXQgdXNlciBjb25zZW50LiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsK
LSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlh
bnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3Qg
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgICAgICBFWFBFQ1Rf
RkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNv
bnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9TVFJFUSgiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2VudC4iLCBleGNlcHRp
b24ubWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbCh7IH0s
IGNyZWF0aW9uT3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbCh7IH0sIGNyZWF0aW9u
T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKIH0KQEAgLTM2OCwxNiArMzczLDE3IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNh
dG9yLCBNYWtlQ3JlZGVudGlhbE5vdEF0dGVzdGF0ZWQpCiAgICAgYm9vbCBkb25lID0gZmFsc2U7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7CiAgICAgYXV0
aGVudGljYXRvci0+c2V0RmFpbHVyZUZsYWcoKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25l
XSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAg
ICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0g
ICAgYXV0byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJDb3Jl
OjpVbmtub3duRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJV
bmtub3duIGludGVybmFsIGVycm9yLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgp
KTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZh
cmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29u
c3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgICAgICBFWFBF
Q1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZd
KGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAg
IEVYUEVDVF9FUShXZWJDb3JlOjpVbmtub3duRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9TVFJFUSgiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iLCBleGNlcHRpb24u
bWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAg
ICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbCh7IH0sIGNy
ZWF0aW9uT3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbCh7IH0sIGNyZWF0aW9uT3B0
aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKIH0KQEAgLTM5OSwyMiArNDA1LDIzIEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9y
LCBNYWtlQ3JlZGVudGlhbERlbGV0ZU9sZGVyQ3JlZGVuaXRhbCkKICAgICBib29sIGRvbmUgPSBm
YWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVu
dGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKICAg
ICBhdXRoZW50aWNhdG9yLT5zZXRGYWlsdXJlRmxhZygpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBb
JmRvbmVdIChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKSB7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAg
fTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YSYpIG11dGFibGUgewotICAgICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0g
QHsKLSAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCi0gICAgICAg
ICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAot
ICAgICAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHRlc3RScElkLAotICAgICAgICAgICAgKGlk
KWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp0ZXN0VXNlcmhh
bmRsZSBsZW5ndGg6c2l6ZW9mKHRlc3RVc2VyaGFuZGxlKV0sCi0gICAgICAgIH07Ci0gICAgICAg
IE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilxdWVyeSwgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9FUShlcnJTZWNJdGVtTm90Rm91
bmQsIHN0YXR1cyk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOworICAgIGF1dG8gY2FsbGJhY2sgPSBb
JmRvbmVdIChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgeworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3Vs
dCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJikgeworICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
ICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7Cisg
ICAgICAgICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKKyAgICAgICAgICAgICAgICAoaWQp
a1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAorICAgICAgICAgICAgICAgIChpZClrU2VjQXR0
cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCisgICAgICAgICAgICAgICAg
KGlkKWtTZWNBdHRyTGFiZWw6IHRlc3RScElkLAorICAgICAgICAgICAgICAgIChpZClrU2VjQXR0
ckFwcGxpY2F0aW9uVGFnOiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6dGVzdFVzZXJoYW5kbGUgbGVu
Z3RoOnNpemVvZih0ZXN0VXNlcmhhbmRsZSldLAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilxdWVyeSwgTlVMTCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyU2VjSXRlbU5v
dEZvdW5kLCBzdGF0dXMpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwog
ICAgIH07Ci0gICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9w
dGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7Cisg
ICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CiB9CkBAIC00MzIsMTAzICs0MzksMTA5IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9yLCBNYWtl
Q3JlZGVudGlhbFBhc3NlZFdpdGhTZWxmQXR0ZXN0YXRpb24pCiAKICAgICBib29sIGRvbmUgPSBm
YWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVu
dGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50
aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmpldCkgewotICAgICAg
ICAvLyBDaGVjayBLZXljaGFpbgotICAgICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKLSAg
ICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCi0gICAgICAgICAgICAo
aWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAotICAgICAg
ICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHRlc3RScElkLAotICAgICAgICAgICAgKGlkKWtTZWNB
dHRyQXBwbGljYXRpb25MYWJlbDogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNl
NjRFbmNvZGVkU3RyaW5nOnRlc3RDcmVkZW50aWFsSWRCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNl
NjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0KCksCi0gICAgICAgICAgICAo
aWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogW05TRGF0YSBkYXRhV2l0aEJ5dGVzOnRlc3RVc2Vy
aGFuZGxlIGxlbmd0aDpzaXplb2YodGVzdFVzZXJoYW5kbGUpXSwKLSAgICAgICAgfTsKLSAgICAg
ICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKXF1ZXJ5LCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXR1cyk7Ci0K
LSAgICAgICAgLy8gQ2hlY2sgQ3JlZGVudGlhbCBJRAotICAgICAgICBFWFBFQ1RfVFJVRShXVEY6
OmJhc2U2NEVuY29kZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSA9
PSB0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KTsKLQotICAgICAgICAvLyBDaGVjayBBdHRlc3RhdGlv
biBPYmplY3QKLSAgICAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdE1hcCA9IGNib3I6OkNCT1JS
ZWFkZXI6OnJlYWQoYXR0ZXN0YXRpb25PYmpldCk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKCEhYXR0
ZXN0YXRpb25PYmplY3RNYXApOwotCi0gICAgICAgIC8vIENoZWNrIEF1dGhlbnRpY2F0b3IgRGF0
YS4KLSAgICAgICAgYXV0byYgYXV0aERhdGEgPSBhdHRlc3RhdGlvbk9iamVjdE1hcC0+Z2V0TWFw
KCkuZmluZChjYm9yOjpDQk9SVmFsdWUoImF1dGhEYXRhIikpLT5zZWNvbmQuZ2V0Qnl0ZVN0cmlu
ZygpOwotICAgICAgICBzaXplX3QgcG9zID0gMDsKLSAgICAgICAgdWludDhfdCBleHBlY3RlZFJw
SWRIYXNoW10gPSB7Ci0gICAgICAgICAgICAweDQ5LCAweDk2LCAweDBkLCAweGU1LCAweDg4LCAw
eDBlLCAweDhjLCAweDY4LAotICAgICAgICAgICAgMHg3NCwgMHgzNCwgMHgxNywgMHgwZiwgMHg2
NCwgMHg3NiwgMHg2MCwgMHg1YiwKLSAgICAgICAgICAgIDB4OGYsIDB4ZTQsIDB4YWUsIDB4Yjks
IDB4YTIsIDB4ODYsIDB4MzIsIDB4YzcsCi0gICAgICAgICAgICAweDk5LCAweDVjLCAweGYzLCAw
eGJhLCAweDgzLCAweDFkLCAweDk3LCAweDYzCi0gICAgICAgIH07Ci0gICAgICAgIEVYUEVDVF9G
QUxTRShtZW1jbXAoYXV0aERhdGEuZGF0YSgpICsgcG9zLCBleHBlY3RlZFJwSWRIYXNoLCBzaXpl
b2YoZXhwZWN0ZWRScElkSGFzaCkpKTsKLSAgICAgICAgcG9zICs9IHNpemVvZihleHBlY3RlZFJw
SWRIYXNoKTsKLQotICAgICAgICAvLyBGTEFHUwotICAgICAgICBFWFBFQ1RfRVEoNjksIGF1dGhE
YXRhW3Bvc10pOwotICAgICAgICBwb3MrKzsKLQotICAgICAgICB1aW50MzJfdCBjb3VudGVyID0g
LTE7Ci0gICAgICAgIG1lbWNweSgmY291bnRlciwgYXV0aERhdGEuZGF0YSgpICsgcG9zLCBzaXpl
b2YodWludDMyX3QpKTsKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBjb3VudGVyKTsKLSAgICAgICAg
cG9zICs9IHNpemVvZih1aW50MzJfdCk7Ci0KLSAgICAgICAgdWludDhfdCBleHBlY3RlZEFBR1VJ
RFtdID0gewotICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMCwgMHgwMCwKLSAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAKLSAgICAgICAgfTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNtcChh
dXRoRGF0YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkQUFHVUlELCBzaXplb2YoZXhwZWN0ZWRBQUdV
SUQpKSk7Ci0gICAgICAgIHBvcyArPSBzaXplb2YoZXhwZWN0ZWRBQUdVSUQpOwotCi0gICAgICAg
IHVpbnQxNl90IGwgPSAtMTsKLSAgICAgICAgbWVtY3B5KCZsLCBhdXRoRGF0YS5kYXRhKCkgKyBw
b3MsIHNpemVvZih1aW50MTZfdCkpOwotICAgICAgICBFWFBFQ1RfRVEoMjB1LCBsKTsKLSAgICAg
ICAgcG9zICs9IHNpemVvZih1aW50MTZfdCk7Ci0KLSAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNt
cChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGNyZWRlbnRpYWxJZC5kYXRhKCksIGwpKTsKLSAgICAg
ICAgcG9zICs9IGw7Ci0KLSAgICAgICAgLy8gQ3JlZGVudGlhbCBQdWJsaWMgS2V5Ci0gICAgICAg
IC8vIEZJWE1FKDE4MzUzNik6IFRoZSBDQk9SIHJlYWRlciBkb2Vzbid0IHN1cHBvcnQgbmVnYXRp
dmUgaW50ZWdlciBhcyBtYXAga2V5LiBUaHVzIHdlIGNvdWxkbid0IHV0aWx6aWUgaXQuCi0gICAg
ICAgIEVYUEVDVF9TVFJFUSgicFFFQ0F5WWdBU0ZZSURqL3p4U2t6S2dhQnVTM2NkV0RGNTU4b2Y4
QWFJcGdGcHNqRi9RbTE3NDlJbGdnVkJKUGdxVUl3ZmhXSEo5MW5iN1VQSDc2YzArV0ZPelpLc2xQ
eXlGc2U0Zz0iLCBXVEY6OmJhc2U2NEVuY29kZShhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGF1dGhE
YXRhLnNpemUoKSAtIHBvcykuYXNjaWkoKS5kYXRhKCkpOwotCi0gICAgICAgIC8vIENoZWNrIFNl
bGYgQXR0ZXN0YXRpb24KLSAgICAgICAgRVhQRUNUX1NUUkVRKCJBcHBsZSIsIGF0dGVzdGF0aW9u
T2JqZWN0TWFwLT5nZXRNYXAoKS5maW5kKGNib3I6OkNCT1JWYWx1ZSgiZm10IikpLT5zZWNvbmQu
Z2V0U3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotCi0gICAgICAgIGF1dG8mIGF0dFN0bXQgPSBh
dHRlc3RhdGlvbk9iamVjdE1hcC0+Z2V0TWFwKCkuZmluZChjYm9yOjpDQk9SVmFsdWUoImF0dFN0
bXQiKSktPnNlY29uZC5nZXRNYXAoKTsKLSAgICAgICAgRVhQRUNUX0VRKENPU0U6OkVTMjU2LCBh
dHRTdG10LmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJhbGciKSktPnNlY29uZC5nZXROZWdhdGl2ZSgp
KTsKLQotICAgICAgICBhdXRvJiBzaWcgPSBhdHRTdG10LmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJz
aWciKSktPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7Ci0gICAgICAgIGF1dG8gcHJpdmF0ZUtleSA9
IGdldFRlc3RLZXkoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoU2VjS2V5VmVyaWZ5U2lnbmF0dXJl
KFNlY0tleUNvcHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSksIGtTZWNLZXlBbGdvcml0aG1F
Q0RTQVNpZ25hdHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0Rh
dGEgZGF0YVdpdGhCeXRlczphdXRoRGF0YS5kYXRhKCkgbGVuZ3RoOmF1dGhEYXRhLnNpemUoKV0s
IChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOnNpZy5kYXRhKCkgbGVu
Z3RoOnNpZy5zaXplKCldLCBOVUxMKSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgY2VydGlmaWNhdGVz
Ci0gICAgICAgIGF1dG8mIHg1YyA9IGF0dFN0bXQuZmluZChjYm9yOjpDQk9SVmFsdWUoIng1YyIp
KS0+c2Vjb25kLmdldEFycmF5KCk7Ci0gICAgICAgIGF1dG8mIGF0dGVzdGF0aW9uQ2VydGlmaWNh
dGVEYXRhID0geDVjWzBdLmdldEJ5dGVTdHJpbmcoKTsKLSAgICAgICAgYXV0byBhdHRlc3RhdGlv
bkNlcnRpZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKE5VTEws
IChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmF0dGVzdGF0aW9uQ2Vy
dGlmaWNhdGVEYXRhLmRhdGEoKSBsZW5ndGg6YXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZURhdGEuc2l6
ZSgpXSkpOwotICAgICAgICBDRlN0cmluZ1JlZiBjb21tb25OYW1lID0gbnVsbHB0cjsKLSAgICAg
ICAgc3RhdHVzID0gU2VjQ2VydGlmaWNhdGVDb3B5Q29tbW9uTmFtZShhdHRlc3RhdGlvbkNlcnRp
ZmljYXRlLmdldCgpLCAmY29tbW9uTmFtZSk7Ci0gICAgICAgIGF1dG8gcmV0YWluQ29tbW9uTmFt
ZSA9IGFkb3B0Q0YoY29tbW9uTmFtZSk7Ci0gICAgICAgIEFTU0VSVCghc3RhdHVzKTsKLSAgICAg
ICAgRVhQRUNUX1NUUkVRKCIwMDAwODAxMC0wMDBBNDlBMjMwQTAyMTNBIiwgWyhOU1N0cmluZyAq
KWNvbW1vbk5hbWUgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdFbmNvZGluZ10p
OwotCi0gICAgICAgIGF1dG8mIGF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVEYXRhID0g
eDVjWzFdLmdldEJ5dGVTdHJpbmcoKTsKLSAgICAgICAgYXV0byBhdHRlc3RhdGlvbklzc3VpbmdD
QUNlcnRpZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKE5VTEws
IChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmF0dGVzdGF0aW9uSXNz
dWluZ0NBQ2VydGlmaWNhdGVEYXRhLmRhdGEoKSBsZW5ndGg6YXR0ZXN0YXRpb25Jc3N1aW5nQ0FD
ZXJ0aWZpY2F0ZURhdGEuc2l6ZSgpXSkpOwotICAgICAgICBjb21tb25OYW1lID0gbnVsbHB0cjsK
LSAgICAgICAgc3RhdHVzID0gU2VjQ2VydGlmaWNhdGVDb3B5Q29tbW9uTmFtZShhdHRlc3RhdGlv
bklzc3VpbmdDQUNlcnRpZmljYXRlLmdldCgpLCAmY29tbW9uTmFtZSk7Ci0gICAgICAgIHJldGFp
bkNvbW1vbk5hbWUgPSBhZG9wdENGKGNvbW1vbk5hbWUpOwotICAgICAgICBBU1NFUlQoIXN0YXR1
cyk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiQmFzaWMgQXR0ZXN0YXRpb24gVXNlciBTdWIgQ0Ex
IiwgWyhOU1N0cmluZyAqKWNvbW1vbk5hbWUgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVNDSUlT
dHJpbmdFbmNvZGluZ10pOwotCi0gICAgICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBk
b25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVd
IChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgbXV0YWJsZSB7Ci0gICAgICAgIEVYUEVD
VF9GQUxTRSh0cnVlKTsKLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUg
PSB0cnVlOworICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChWYXJpYW50PFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkg
eworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhKSB7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4g
Y3JlZGVudGlhbElkOworICAgICAgICAgICAgY3JlZGVudGlhbElkLmFwcGVuZChyZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihkYXRhLnJhd0lkLT5kYXRhKCkpLCBkYXRhLnJhd0lkLT5ieXRlTGVu
Z3RoKCkpOworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGF0dGVzdGF0aW9uT2JqZWN0Owor
ICAgICAgICAgICAgYXR0ZXN0YXRpb25PYmplY3QuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KGRhdGEuYXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSksIGRhdGEuYXR0ZXN0YXRpb25P
YmplY3QtPmJ5dGVMZW5ndGgoKSk7CisKKyAgICAgICAgICAgIC8vIENoZWNrIEtleWNoYWluCisg
ICAgICAgICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKKyAgICAgICAgICAgICAgICAoaWQp
a1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAorICAgICAgICAgICAgICAgIChpZClrU2VjQXR0
cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCisgICAgICAgICAgICAgICAg
KGlkKWtTZWNBdHRyTGFiZWw6IHRlc3RScElkLAorICAgICAgICAgICAgICAgIChpZClrU2VjQXR0
ckFwcGxpY2F0aW9uTGFiZWw6IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0
RW5jb2RlZFN0cmluZzp0ZXN0Q3JlZGVudGlhbElkQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0
RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAgICAgICAg
IChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6dGVzdFVz
ZXJoYW5kbGUgbGVuZ3RoOnNpemVvZih0ZXN0VXNlcmhhbmRsZSldLAorICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJp
ZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgTlVMTCk7CisgICAgICAgICAgICBFWFBFQ1RfRkFM
U0Uoc3RhdHVzKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgQ3JlZGVudGlhbCBJRAorICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoV1RGOjpiYXNlNjRFbmNvZGUoY3JlZGVudGlhbElkLmRhdGEoKSwg
Y3JlZGVudGlhbElkLnNpemUoKSkgPT0gdGVzdENyZWRlbnRpYWxJZEJhc2U2NCk7CisKKyAgICAg
ICAgICAgIC8vIENoZWNrIEF0dGVzdGF0aW9uIE9iamVjdAorICAgICAgICAgICAgYXV0byBhdHRl
c3RhdGlvbk9iamVjdE1hcCA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQoYXR0ZXN0YXRpb25PYmpl
Y3QpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoISFhdHRlc3RhdGlvbk9iamVjdE1hcCk7CisK
KyAgICAgICAgICAgIC8vIENoZWNrIEF1dGhlbnRpY2F0b3IgRGF0YS4KKyAgICAgICAgICAgIGF1
dG8mIGF1dGhEYXRhID0gYXR0ZXN0YXRpb25PYmplY3RNYXAtPmdldE1hcCgpLmZpbmQoY2Jvcjo6
Q0JPUlZhbHVlKCJhdXRoRGF0YSIpKS0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKKyAgICAgICAg
ICAgIHNpemVfdCBwb3MgPSAwOworICAgICAgICAgICAgdWludDhfdCBleHBlY3RlZFJwSWRIYXNo
W10gPSB7CisgICAgICAgICAgICAgICAgMHg0OSwgMHg5NiwgMHgwZCwgMHhlNSwgMHg4OCwgMHgw
ZSwgMHg4YywgMHg2OCwKKyAgICAgICAgICAgICAgICAweDc0LCAweDM0LCAweDE3LCAweDBmLCAw
eDY0LCAweDc2LCAweDYwLCAweDViLAorICAgICAgICAgICAgICAgIDB4OGYsIDB4ZTQsIDB4YWUs
IDB4YjksIDB4YTIsIDB4ODYsIDB4MzIsIDB4YzcsCisgICAgICAgICAgICAgICAgMHg5OSwgMHg1
YywgMHhmMywgMHhiYSwgMHg4MywgMHgxZCwgMHg5NywgMHg2MworICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShtZW1jbXAoYXV0aERhdGEuZGF0YSgpICsgcG9zLCBleHBl
Y3RlZFJwSWRIYXNoLCBzaXplb2YoZXhwZWN0ZWRScElkSGFzaCkpKTsKKyAgICAgICAgICAgIHBv
cyArPSBzaXplb2YoZXhwZWN0ZWRScElkSGFzaCk7CisKKyAgICAgICAgICAgIC8vIEZMQUdTCisg
ICAgICAgICAgICBFWFBFQ1RfRVEoNjksIGF1dGhEYXRhW3Bvc10pOworICAgICAgICAgICAgcG9z
Kys7CisKKyAgICAgICAgICAgIHVpbnQzMl90IGNvdW50ZXIgPSAtMTsKKyAgICAgICAgICAgIG1l
bWNweSgmY291bnRlciwgYXV0aERhdGEuZGF0YSgpICsgcG9zLCBzaXplb2YodWludDMyX3QpKTsK
KyAgICAgICAgICAgIEVYUEVDVF9FUSgwdSwgY291bnRlcik7CisgICAgICAgICAgICBwb3MgKz0g
c2l6ZW9mKHVpbnQzMl90KTsKKworICAgICAgICAgICAgdWludDhfdCBleHBlY3RlZEFBR1VJRFtd
ID0geworICAgICAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsCisgICAgICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIEVYUEVDVF9G
QUxTRShtZW1jbXAoYXV0aERhdGEuZGF0YSgpICsgcG9zLCBleHBlY3RlZEFBR1VJRCwgc2l6ZW9m
KGV4cGVjdGVkQUFHVUlEKSkpOworICAgICAgICAgICAgcG9zICs9IHNpemVvZihleHBlY3RlZEFB
R1VJRCk7CisKKyAgICAgICAgICAgIHVpbnQxNl90IGwgPSAtMTsKKyAgICAgICAgICAgIG1lbWNw
eSgmbCwgYXV0aERhdGEuZGF0YSgpICsgcG9zLCBzaXplb2YodWludDE2X3QpKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUSgyMHUsIGwpOworICAgICAgICAgICAgcG9zICs9IHNpemVvZih1aW50MTZf
dCk7CisKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShtZW1jbXAoYXV0aERhdGEuZGF0YSgpICsg
cG9zLCBjcmVkZW50aWFsSWQuZGF0YSgpLCBsKSk7CisgICAgICAgICAgICBwb3MgKz0gbDsKKwor
ICAgICAgICAgICAgLy8gQ3JlZGVudGlhbCBQdWJsaWMgS2V5CisgICAgICAgICAgICAvLyBGSVhN
RSgxODM1MzYpOiBUaGUgQ0JPUiByZWFkZXIgZG9lc24ndCBzdXBwb3J0IG5lZ2F0aXZlIGludGVn
ZXIgYXMgbWFwIGtleS4gVGh1cyB3ZSBjb3VsZG4ndCB1dGlsemllIGl0LgorICAgICAgICAgICAg
RVhQRUNUX1NUUkVRKCJwUUVDQXlZZ0FTRllJRGovenhTa3pLZ2FCdVMzY2RXREY1NThvZjhBYUlw
Z0Zwc2pGL1FtMTc0OUlsZ2dWQkpQZ3FVSXdmaFdISjkxbmI3VVBINzZjMCtXRk96WktzbFB5eUZz
ZTRnPSIsIFdURjo6YmFzZTY0RW5jb2RlKGF1dGhEYXRhLmRhdGEoKSArIHBvcywgYXV0aERhdGEu
c2l6ZSgpIC0gcG9zKS5hc2NpaSgpLmRhdGEoKSk7CisKKyAgICAgICAgICAgIC8vIENoZWNrIFNl
bGYgQXR0ZXN0YXRpb24KKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiQXBwbGUiLCBhdHRlc3Rh
dGlvbk9iamVjdE1hcC0+Z2V0TWFwKCkuZmluZChjYm9yOjpDQk9SVmFsdWUoImZtdCIpKS0+c2Vj
b25kLmdldFN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgICAgICAgICAgYXV0byYgYXR0
U3RtdCA9IGF0dGVzdGF0aW9uT2JqZWN0TWFwLT5nZXRNYXAoKS5maW5kKGNib3I6OkNCT1JWYWx1
ZSgiYXR0U3RtdCIpKS0+c2Vjb25kLmdldE1hcCgpOworICAgICAgICAgICAgRVhQRUNUX0VRKENP
U0U6OkVTMjU2LCBhdHRTdG10LmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJhbGciKSktPnNlY29uZC5n
ZXROZWdhdGl2ZSgpKTsKKworICAgICAgICAgICAgYXV0byYgc2lnID0gYXR0U3RtdC5maW5kKGNi
b3I6OkNCT1JWYWx1ZSgic2lnIikpLT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOworICAgICAgICAg
ICAgYXV0byBwcml2YXRlS2V5ID0gZ2V0VGVzdEtleSgpOworICAgICAgICAgICAgRVhQRUNUX1RS
VUUoU2VjS2V5VmVyaWZ5U2lnbmF0dXJlKFNlY0tleUNvcHlQdWJsaWNLZXkocHJpdmF0ZUtleS5n
ZXQoKSksIGtTZWNLZXlBbGdvcml0aG1FQ0RTQVNpZ25hdHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAo
X19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczphdXRoRGF0YS5kYXRhKCkg
bGVuZ3RoOmF1dGhEYXRhLnNpemUoKV0sIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOnNpZy5kYXRhKCkgbGVuZ3RoOnNpZy5zaXplKCldLCBOVUxMKSk7CisKKyAgICAg
ICAgICAgIC8vIENoZWNrIGNlcnRpZmljYXRlcworICAgICAgICAgICAgYXV0byYgeDVjID0gYXR0
U3RtdC5maW5kKGNib3I6OkNCT1JWYWx1ZSgieDVjIikpLT5zZWNvbmQuZ2V0QXJyYXkoKTsKKyAg
ICAgICAgICAgIGF1dG8mIGF0dGVzdGF0aW9uQ2VydGlmaWNhdGVEYXRhID0geDVjWzBdLmdldEJ5
dGVTdHJpbmcoKTsKKyAgICAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZSA9IGFk
b3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShOVUxMLCAoX19icmlkZ2UgQ0ZEYXRh
UmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczphdHRlc3RhdGlvbkNlcnRpZmljYXRlRGF0YS5kYXRh
KCkgbGVuZ3RoOmF0dGVzdGF0aW9uQ2VydGlmaWNhdGVEYXRhLnNpemUoKV0pKTsKKyAgICAgICAg
ICAgIENGU3RyaW5nUmVmIGNvbW1vbk5hbWUgPSBudWxscHRyOworICAgICAgICAgICAgc3RhdHVz
ID0gU2VjQ2VydGlmaWNhdGVDb3B5Q29tbW9uTmFtZShhdHRlc3RhdGlvbkNlcnRpZmljYXRlLmdl
dCgpLCAmY29tbW9uTmFtZSk7CisgICAgICAgICAgICBhdXRvIHJldGFpbkNvbW1vbk5hbWUgPSBh
ZG9wdENGKGNvbW1vbk5hbWUpOworICAgICAgICAgICAgQVNTRVJUKCFzdGF0dXMpOworICAgICAg
ICAgICAgRVhQRUNUX1NUUkVRKCIwMDAwODAxMC0wMDBBNDlBMjMwQTAyMTNBIiwgWyhOU1N0cmlu
ZyAqKWNvbW1vbk5hbWUgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdFbmNvZGlu
Z10pOworCisgICAgICAgICAgICBhdXRvJiBhdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRl
RGF0YSA9IHg1Y1sxXS5nZXRCeXRlU3RyaW5nKCk7CisgICAgICAgICAgICBhdXRvIGF0dGVzdGF0
aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0
aERhdGEoTlVMTCwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YXR0
ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZURhdGEuZGF0YSgpIGxlbmd0aDphdHRlc3RhdGlv
bklzc3VpbmdDQUNlcnRpZmljYXRlRGF0YS5zaXplKCldKSk7CisgICAgICAgICAgICBjb21tb25O
YW1lID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHN0YXR1cyA9IFNlY0NlcnRpZmljYXRlQ29weUNv
bW1vbk5hbWUoYXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZS5nZXQoKSwgJmNvbW1vbk5h
bWUpOworICAgICAgICAgICAgcmV0YWluQ29tbW9uTmFtZSA9IGFkb3B0Q0YoY29tbW9uTmFtZSk7
CisgICAgICAgICAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEo
IkJhc2ljIEF0dGVzdGF0aW9uIFVzZXIgU3ViIENBMSIsIFsoTlNTdHJpbmcgKiljb21tb25OYW1l
IGNTdHJpbmdVc2luZ0VuY29kaW5nOiBOU0FTQ0lJU3RyaW5nRW5jb2RpbmddKTsKKworICAgICAg
ICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAg
ICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFp
bigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGhhc2goMzIpOwotICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50
aWFsKGhhc2gsIGNyZWF0aW9uT3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbChoYXNo
LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC01NDQsMTYgKzU1NywxNyBAQCBURVNUKExvY2Fs
QXV0aGVudGljYXRvciwgR2V0QXNzZXJ0aW9uQWxsb3dDcmVkZW50aWFsc01pc21hdGNoMSkKIAog
ICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxBdXRo
ZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxBdXRo
ZW50aWNhdG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0b3I8
dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsK
LSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNr
ID0gWyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0
aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMg
YXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIsIGV4Y2Vw
dGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
YXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdU
Rjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bERhdGEmKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRh
JiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2Vk
RXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gbWF0
Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhl
bnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0aGVudGljYXRvci0+
Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9u
KHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC01NjYsMTYgKzU4MCwxNyBAQCBURVNUKExv
Y2FsQXV0aGVudGljYXRvciwgR2V0QXNzZXJ0aW9uQWxsb3dDcmVkZW50aWFsc01pc21hdGNoMikK
IAogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxB
dXRoZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxB
dXRoZW50aWNhdG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVl
KTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxi
YWNrID0gWyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBt
dXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhj
ZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIk5vIG1hdGNoZWQgY3JlZGVudGlh
bHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIsIGV4
Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAg
IFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbERhdGEmKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxv
d2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiTm8g
bWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1
dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOworICAgICAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0aGVudGljYXRv
ci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+Z2V0QXNzZXJ0
aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC01OTUsMTggKzYxMCwxOSBAQCBURVNU
KExvY2FsQXV0aGVudGljYXRvciwgR2V0QXNzZXJ0aW9uQWxsb3dDcmVkZW50aWFsc01pc21hdGNo
MykKIAogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9j
YWxBdXRoZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9j
YWxBdXRoZW50aWNhdG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBW
ZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0
cnVlKTsKLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwot
ICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9F
UShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKLSAgICAgICAgRVhQ
RUNUX1NUUkVRKCJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZv
cm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iLCBleGNlcHRpb24ubWVzc2FnZS5hc2NpaSgpLmRh
dGEoKSk7Ci0gICAgICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAg
ICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAg
ICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAg
IH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29k
ZSk7CisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJl
IGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIsIGV4Y2VwdGlv
bi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigp
OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0
aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2Fs
bGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+
Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC02MjIsMTggKzYzOCwx
OSBAQCBURVNUKExvY2FsQXV0aGVudGljYXRvciwgR2V0QXNzZXJ0aW9uQmlvbWV0cmljc05vdEVu
cm9sbGVkKQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRl
c3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRl
c3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpIHsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKHRydWUpOwotICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKLSAgICAgICAgZG9uZSA9IHRy
dWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0gWyZkb25lXSAoY29uc3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQ
RUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOwotICAgICAg
ICBFWFBFQ1RfU1RSRVEoIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iLCBleGNlcHRpb24u
bWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4m
JiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJD
b3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxT
RSh0cnVlKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYg
ZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVy
cm9yLCBleGNlcHRpb24uY29kZSk7CisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoIk5vIGF2YWxp
YWJsZSBhdXRoZW50aWNhdG9ycy4iLCBleGNlcHRpb24ubWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7
CisgICAgICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVl
OworICAgICAgICB9KTsKICAgICB9OwotICAgIGF1dGhlbnRpY2F0b3ItPmdldEFzc2VydGlvbih7
IH0sIHJlcXVlc3RPcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjaykpOworICAgIGF1dGhlbnRpY2F0b3ItPmdldEFzc2VydGlvbih7IH0sIHJlcXVlc3RP
cHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOwogfQpAQCAtNjUwLDE4ICs2NjcsMTkgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0
b3IsIEdldEFzc2VydGlvbkJpb21ldHJpY3NOb3RBdXRoZW50aWNhdGVkKQogCiAgICAgYm9vbCBk
b25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+
IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+
KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBj
bGVhblVwS2V5Y2hhaW4oKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRv
IGV4Y2VwdGlvbkNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFs
bG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIkNvdWxk
bid0IGdldCB1c2VyIGNvbnNlbnQuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkp
OwotICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
YXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdU
Rjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bERhdGEmKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBj
bGVhblVwS2V5Y2hhaW4oKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBb
Jl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAg
ICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOwor
ICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiIsIGV4
Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXlj
aGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0g
ICAgYXV0aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1v
dmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGlj
YXRvci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2sp
KTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC02ODAsNDgg
KzY5OCw1OCBAQCBURVNUKExvY2FsQXV0aGVudGljYXRvciwgR2V0QXNzZXJ0aW9uUGFzc2VkKQog
CiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1
dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1
dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZSwgaGFzaF0gKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1
dGhEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiB1c2VyaGFuZGxlKSB7Ci0gICAgICAgIC8vIENoZWNrIENyZWRlbnRpYWwgSUQKLSAg
ICAgICAgRVhQRUNUX1RSVUUoV1RGOjpiYXNlNjRFbmNvZGUoY3JlZGVudGlhbElkLmRhdGEoKSwg
Y3JlZGVudGlhbElkLnNpemUoKSkgPT0gdGVzdENyZWRlbnRpYWxJZEJhc2U2NCk7Ci0KLSAgICAg
ICAgLy8gQ2hlY2sgQXV0aGVudGljYXRvciBEYXRhLgotICAgICAgICBzaXplX3QgcG9zID0gMDsK
LSAgICAgICAgdWludDhfdCBleHBlY3RlZFJwSWRIYXNoW10gPSB7Ci0gICAgICAgICAgICAweDQ5
LCAweDk2LCAweDBkLCAweGU1LCAweDg4LCAweDBlLCAweDhjLCAweDY4LAotICAgICAgICAgICAg
MHg3NCwgMHgzNCwgMHgxNywgMHgwZiwgMHg2NCwgMHg3NiwgMHg2MCwgMHg1YiwKLSAgICAgICAg
ICAgIDB4OGYsIDB4ZTQsIDB4YWUsIDB4YjksIDB4YTIsIDB4ODYsIDB4MzIsIDB4YzcsCi0gICAg
ICAgICAgICAweDk5LCAweDVjLCAweGYzLCAweGJhLCAweDgzLCAweDFkLCAweDk3LCAweDYzCi0g
ICAgICAgIH07Ci0gICAgICAgIEVYUEVDVF9GQUxTRShtZW1jbXAoYXV0aERhdGEuZGF0YSgpICsg
cG9zLCBleHBlY3RlZFJwSWRIYXNoLCBzaXplb2YoZXhwZWN0ZWRScElkSGFzaCkpKTsKLSAgICAg
ICAgcG9zICs9IHNpemVvZihleHBlY3RlZFJwSWRIYXNoKTsKLQotICAgICAgICAvLyBGTEFHUwot
ICAgICAgICBFWFBFQ1RfRVEoNSwgYXV0aERhdGFbcG9zXSk7Ci0gICAgICAgIHBvcysrOwotCi0g
ICAgICAgIHVpbnQzMl90IGNvdW50ZXIgPSAtMTsKLSAgICAgICAgbWVtY3B5KCZjb3VudGVyLCBh
dXRoRGF0YS5kYXRhKCkgKyBwb3MsIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBFWFBFQ1Rf
RVEoMHUsIGNvdW50ZXIpOwotCi0gICAgICAgIC8vIENoZWNrIHNpZ25hdHVyZQotICAgICAgICBh
dXRvIHByaXZhdGVLZXkgPSBnZXRUZXN0S2V5KCk7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhVG9TaWduKGF1dGhEYXRhKTsKLSAgICAgICAgZGF0YVRvU2lnbi5hcHBlbmRWZWN0b3IoaGFz
aCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFNlY0tleVZlcmlmeVNpZ25hdHVyZShTZWNLZXlDb3B5
UHVibGljS2V5KHByaXZhdGVLZXkuZ2V0KCkpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1
cmVNZXNzYWdlWDk2MlNIQTI1NiwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6ZGF0YVRvU2lnbi5kYXRhKCkgbGVuZ3RoOmRhdGFUb1NpZ24uc2l6ZSgpXSwgKF9fYnJp
ZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6c2lnbmF0dXJlLmRhdGEoKSBsZW5n
dGg6c2lnbmF0dXJlLnNpemUoKV0sIE5VTEwpKTsKLQotICAgICAgICAvLyBDaGVjayBVc2VyIEhh
bmRsZQotICAgICAgICBFWFBFQ1RfRVEodXNlcmhhbmRsZS5zaXplKCksIHNpemVvZih0ZXN0VXNl
cmhhbmRsZSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UobWVtY21wKHVzZXJoYW5kbGUuZGF0YSgp
LCB0ZXN0VXNlcmhhbmRsZSwgc2l6ZW9mKHRlc3RVc2VyaGFuZGxlKSkpOwotCi0gICAgICAgIGNs
ZWFuVXBLZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8g
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRh
JiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAg
ICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNh
bGxiYWNrID0gWyZkb25lLCBoYXNoXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RG
Ojpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSYgZGF0YSkgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNyZWRlbnRpYWxJZDsK
KyAgICAgICAgICAgIGNyZWRlbnRpYWxJZC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oZGF0YS5yYXdJZC0+ZGF0YSgpKSwgZGF0YS5yYXdJZC0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBhdXRoRGF0YTsKKyAgICAgICAgICAgIGF1dGhEYXRhLmFw
cGVuZChyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5k
YXRhKCkpLCBkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKKyAgICAgICAgICAgIHNpZ25hdHVyZS5hcHBl
bmQocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YS5zaWduYXR1cmUtPmRhdGEoKSksIGRh
dGEuc2lnbmF0dXJlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHVzZXJoYW5kbGU7CisgICAgICAgICAgICB1c2VyaGFuZGxlLmFwcGVuZChyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihkYXRhLnVzZXJIYW5kbGUtPmRhdGEoKSksIGRhdGEudXNlckhhbmRsZS0+
Ynl0ZUxlbmd0aCgpKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgQ3JlZGVudGlhbCBJRAorICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjpiYXNlNjRFbmNvZGUoY3JlZGVudGlhbElkLmRhdGEo
KSwgY3JlZGVudGlhbElkLnNpemUoKSkgPT0gdGVzdENyZWRlbnRpYWxJZEJhc2U2NCk7CisKKyAg
ICAgICAgICAgIC8vIENoZWNrIEF1dGhlbnRpY2F0b3IgRGF0YS4KKyAgICAgICAgICAgIHNpemVf
dCBwb3MgPSAwOworICAgICAgICAgICAgdWludDhfdCBleHBlY3RlZFJwSWRIYXNoW10gPSB7Cisg
ICAgICAgICAgICAgICAgMHg0OSwgMHg5NiwgMHgwZCwgMHhlNSwgMHg4OCwgMHgwZSwgMHg4Yywg
MHg2OCwKKyAgICAgICAgICAgICAgICAweDc0LCAweDM0LCAweDE3LCAweDBmLCAweDY0LCAweDc2
LCAweDYwLCAweDViLAorICAgICAgICAgICAgICAgIDB4OGYsIDB4ZTQsIDB4YWUsIDB4YjksIDB4
YTIsIDB4ODYsIDB4MzIsIDB4YzcsCisgICAgICAgICAgICAgICAgMHg5OSwgMHg1YywgMHhmMywg
MHhiYSwgMHg4MywgMHgxZCwgMHg5NywgMHg2MworICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IEVYUEVDVF9GQUxTRShtZW1jbXAoYXV0aERhdGEuZGF0YSgpICsgcG9zLCBleHBlY3RlZFJwSWRI
YXNoLCBzaXplb2YoZXhwZWN0ZWRScElkSGFzaCkpKTsKKyAgICAgICAgICAgIHBvcyArPSBzaXpl
b2YoZXhwZWN0ZWRScElkSGFzaCk7CisKKyAgICAgICAgICAgIC8vIEZMQUdTCisgICAgICAgICAg
ICBFWFBFQ1RfRVEoNSwgYXV0aERhdGFbcG9zXSk7CisgICAgICAgICAgICBwb3MrKzsKKworICAg
ICAgICAgICAgdWludDMyX3QgY291bnRlciA9IC0xOworICAgICAgICAgICAgbWVtY3B5KCZjb3Vu
dGVyLCBhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAg
ICAgRVhQRUNUX0VRKDB1LCBjb3VudGVyKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgc2lnbmF0
dXJlCisgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkgPSBnZXRUZXN0S2V5KCk7CisgICAgICAg
ICAgICBWZWN0b3I8dWludDhfdD4gZGF0YVRvU2lnbihhdXRoRGF0YSk7CisgICAgICAgICAgICBk
YXRhVG9TaWduLmFwcGVuZFZlY3RvcihoYXNoKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFNl
Y0tleVZlcmlmeVNpZ25hdHVyZShTZWNLZXlDb3B5UHVibGljS2V5KHByaXZhdGVLZXkuZ2V0KCkp
LCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNzYWdlWDk2MlNIQTI1NiwgKF9fYnJp
ZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YVRvU2lnbi5kYXRhKCkgbGVu
Z3RoOmRhdGFUb1NpZ24uc2l6ZSgpXSwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6c2lnbmF0dXJlLmRhdGEoKSBsZW5ndGg6c2lnbmF0dXJlLnNpemUoKV0sIE5VTEwp
KTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgVXNlciBIYW5kbGUKKyAgICAgICAgICAgIEVYUEVD
VF9FUSh1c2VyaGFuZGxlLnNpemUoKSwgc2l6ZW9mKHRlc3RVc2VyaGFuZGxlKSk7CisgICAgICAg
ICAgICBFWFBFQ1RfRkFMU0UobWVtY21wKHVzZXJoYW5kbGUuZGF0YSgpLCB0ZXN0VXNlcmhhbmRs
ZSwgc2l6ZW9mKHRlc3RVc2VyaGFuZGxlKSkpOworCisgICAgICAgICAgICBjbGVhblVwS2V5Y2hh
aW4oKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKHRydWUpOworICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAgICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRB
c3NlcnRpb24oaGFzaCwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9uKGhh
c2gsIHJlcXVlc3RPcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYxZDExYzM2MTIwNzkwZTMwNzJlZmNk
MGE1ODg4YjU2N2JkMGUyNzAuLjI0ZmJmOGM1MmRiZjVkMjNiMDhhODE3YWFkN2ZiODUxODg2MmRm
YjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wOS0wOCAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gUG9saXNoIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyIGFuZCByZW5hbWUgaXQgdG8gQXV0aGVudGljYXRvckNvb3JkaW5hdG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyNzcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTE1OTM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2Ny
ZWRlbnRpYWxzY29udGFpbmVyLXN0b3JlLWJhc2ljcy5odHRwcy5odG1sOgorICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sOgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3Vj
Y2Vzcy5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy5odHRwcy5odG1sOgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktaXMtdXNlci12ZXJpZnlpbmctcGxh
dGZvcm0tYXV0aGVudGljYXRvci1hdmFpbGFibGUuaHRtbDoKKwogMjAxOC0wOS0wNCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBzbG90Y2hhbmdlIGV2ZW50IGRv
ZXNuJ3QgZ2V0IGZpcmVkIHdoZW4gaW5zZXJ0aW5nLCByZW1vdmluZywgb3IgcmVuYW1pbmcgc2xv
dCBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3JlZGVudGlhbC1t
YW5hZ2VtZW50L2NyZWRlbnRpYWxzY29udGFpbmVyLXN0b3JlLWJhc2ljcy5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2NyZWRlbnRpYWxzY29u
dGFpbmVyLXN0b3JlLWJhc2ljcy5odHRwcy5odG1sCmluZGV4IDE5ODg4MjU0NzMwZjE2ODMyYTAy
NTk5Y2M5ZDA1YmU0NTg2MDQxMjEuLjIzNjkxMzUwYzA1ZWNlMDA4N2U1MmVjZGM4MTg0ZTBkZGZk
ZTc5ZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2NyZWRlbnRpYWwtbWFuYWdl
bWVudC9jcmVkZW50aWFsc2NvbnRhaW5lci1zdG9yZS1iYXNpY3MuaHR0cHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9jcmVkZW50aWFsLW1hbmFnZW1lbnQvY3JlZGVudGlhbHNjb250
YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWwKQEAgLTQyLDcgKzQyLDcgQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfTsKICAgICAgICAgLy8gQSBtb2NrIGF0dGVzdGF0aW9uIG9iamVjdAot
ICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldENyZWF0aW9uUmV0
dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJheSgnMDAnKSwgaGV4U3RyaW5nVG9VaW50OEFy
cmF5KCcwMScpKTsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3Iuc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMCcpLCBo
ZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJykpOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsID0g
YXdhaXQgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKTsKIAogICAgICAgICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICJOb3RTdXBwb3J0ZWRFcnJvciIsCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9pZGwuaHR0cHMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCmluZGV4IDljMmM3ZjMxMzY0ODFh
Nzk2MzI1MmY1ZDliM2U3NmY4M2I5MjUxNzYuLmNlNzE4ODU5MTJlMTI3ZGYxMzI3OWM2ZjQ1MzRi
ZjJjYzEyYWE3ZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lk
bC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRw
cy5odG1sCkBAIC01Miw3ICs1Miw3IEBAIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CiAgICAg
ICAgIH0KICAgICB9OwogICAgIC8vIEEgbW9jayBhdHRlc3RhdGlvbiBvYmplY3QKLSAgICBpbnRl
cm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGhl
eFN0cmluZ1RvVWludDhBcnJheSgnMDAnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMScpKTsK
KyAgICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXRDcmVhdGlvblJl
dHVybkJ1bmRsZShoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAwJyksIGhleFN0cmluZ1RvVWludDhB
cnJheSgnMDEnKSk7CiAgICAgY3JlYXRlZENyZWRlbnRpYWwgPSBhd2FpdCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKGNyZWF0aW9uT3B0aW9ucyk7CiAKIApAQCAtNjIsNyArNjIsNyBAQCBw
cm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgICAgICB9CiAgICAgfTsKICAgICAvLyBBIG1v
Y2sgYXNzZXJ0aW9uIHJldHVybiBidW5kbGUuCi0gICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFs
c01lc3Nlbmdlci5zZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5
KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJyksIGhleFN0cmluZ1RvVWludDhBcnJh
eSgnMDInKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMycpKTsKKyAgICBpbnRlcm5hbHMubW9j
a0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoaGV4U3Ry
aW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJyksIGhleFN0
cmluZ1RvVWludDhBcnJheSgnMDInKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMycpKTsKICAg
ICByZXF1ZXN0ZWRDcmVkZW50aWFsID0gYXdhaXQgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChy
ZXF1ZXN0T3B0aW9ucyk7CiAKICAgICBpZGxBcnJheS5hZGRfb2JqZWN0cyh7IlB1YmxpY0tleUNy
ZWRlbnRpYWwiOiBbImNyZWF0ZWRDcmVkZW50aWFsIl0sICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZSI6IFsiY3JlYXRlZENyZWRlbnRpYWwucmVzcG9uc2UiXSwgIkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZSI6IFsicmVxdWVzdGVkQ3JlZGVudGlhbC5yZXNwb25zZSJdfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1s
CmluZGV4IGJiNTU0OGM5MGQwYmNkMDU3MWI0NjNjZWVkYzk4N2M1MzU1NDFmYjMuLjQ1MDc3YTNj
ZjlkMzM3MWZlYzZmZjZiOGJkYTViMjdkMmQ4NDE2ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5o
dHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAg
ICAgICAgICAgICAgICAgdGltZW91dDogMCwKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAg
ICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5zZXREaWRUaW1lT3V0KCk7
CisgICAgICAgIGludGVybmFscy5tb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLnNldERpZFRp
bWVPdXQoKTsKIAogICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICJOb3RBbGxvd2Vk
RXJyb3IiLAogICAgICAgICAgICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KSk7CkBAIC04Miw3ICs4Miw3IEBACiAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczog
W3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAogICAgICAgICAgICAgfQogICAgICAg
ICB9OwotICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldERpZFVz
ZXJDYW5jZWwoKTsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3Iuc2V0RGlkVXNlckNhbmNlbCgpOwogCiAgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dCwgIk5vdEFsbG93ZWRFcnJvciIsCiAgICAgICAgICAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLmh0dHBzLmh0bWwKaW5kZXggYWI0ZmNjMDgyZDFhMGJjZGZiYTgyYjBhYmNlYzNmZjZk
YTE3MDY4MC4uNjk5NjhjM2Y0ZWRjMWYxZDYyMTViZjJlOWFlYmQ5NTZkYjM1ODUxNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1zdWNjZXNzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLmh0dHBzLmh0bWwKQEAg
LTIwLDcgKzIwLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKICAgICAgICAgLy8gQSBt
b2NrIGF0dGVzdGF0aW9uIG9iamVjdAotICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxz
TWVzc2VuZ2VyLnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJheSgn
MDAnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMScpKTsKKyAgICAgICAgaW50ZXJuYWxzLm1v
Y2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoaGV4U3Ry
aW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJykpOwogCiAg
ICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4o
ZnVuY3Rpb24oY3JlZGVudGlhbCkgewogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3Jl
ZGVudGlhbC5pZCwgJ0FBJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUuaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVy
ZS5odHRwcy5odG1sCmluZGV4IDUxMmJiMmRhZDE2NGNkMjM4ZGIxNDJlZjMzMzQ4OGQwNzAzNjdl
NTIuLjBkNGMwNDUyNTY3MDM1MmVmMzdjODdmNjBkZjIzMzIxYzNkZTcyYTMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCkBAIC0xMSw3ICsxMSw3
IEBACiAgICAgICAgICAgICAgICAgdGltZW91dDogMCwKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5zZXREaWRUaW1l
T3V0KCk7CisgICAgICAgIGludGVybmFscy5tb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLnNl
dERpZFRpbWVPdXQoKTsKIAogICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLAogICAgICAgICAgICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRp
b25zKSk7CkBAIC0zNSw3ICszNSw3IEBACiAgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFs
czogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIp
IH1dLAogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBpbnRlcm5hbHMubW9ja0Ny
ZWRlbnRpYWxzTWVzc2VuZ2VyLnNldERpZFVzZXJDYW5jZWwoKTsKKyAgICAgICAgaW50ZXJuYWxz
Lm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0RGlkVXNlckNhbmNlbCgpOwogCiAgICAg
ICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsCiAgICAgICAg
ICAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3Vj
Y2Vzcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLmh0dHBzLmh0bWwKaW5kZXggMmU1ZWM4ODIxM2M2ZTY0
ZTczZjZjMjVlMjhiZmEwZGQ3M2ZkMWNmNC4uZjNmZDE1NjRhZWQ0ZWU1NTExMzFjYzY4NTI3MzFm
YzgyODczN2E0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLmh0
dHBzLmh0bWwKQEAgLTEyLDcgKzEyLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKICAg
ICAgICAgLy8gQSBtb2NrIGFzc2VydGlvbiByZXR1cm4gYnVuZGxlLgotICAgICAgICBpbnRlcm5h
bHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldEFzc2VydGlvblJldHVybkJ1bmRsZShoZXhT
dHJpbmdUb1VpbnQ4QXJyYXkoJzAwJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDEnKSwgaGV4
U3RyaW5nVG9VaW50OEFycmF5KCcwMicpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAzJykpOwor
ICAgICAgICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXRBc3NlcnRp
b25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1Vp
bnQ4QXJyYXkoJzAxJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDInKSwgaGV4U3RyaW5nVG9V
aW50OEFycmF5KCcwMycpKTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmdldChvcHRpb25zKS50aGVuKGZ1bmN0aW9uKGNyZWRlbnRpYWwpIHsKICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoY3JlZGVudGlhbC5pZCwgJ0FBJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWlzLXVzZXItdmVyaWZ5aW5nLXBsYXRmb3Jt
LWF1dGhlbnRpY2F0b3ItYXZhaWxhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWlzLXVzZXItdmVyaWZ5aW5nLXBsYXRmb3JtLWF1dGhlbnRpY2F0b3It
YXZhaWxhYmxlLmh0bWwKaW5kZXggZGE4ZTUzNDU5NjBmOWQ0YzYyNjRlZGFjMzk5MWQyMjA1NTRl
ZmU5Ny4uMTgxZDMzYTRmOGY5ODQzYWZkOGEyODM4NWM5ZTg5OGNlODZjMDllYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1pcy11c2VyLXZlcmlm
eWluZy1wbGF0Zm9ybS1hdXRoZW50aWNhdG9yLWF2YWlsYWJsZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktaXMtdXNlci12ZXJpZnlpbmctcGxhdGZv
cm0tYXV0aGVudGljYXRvci1hdmFpbGFibGUuaHRtbApAQCAtNCw3ICs0LDcgQEAKIDxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
CiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tD
cmVkZW50aWFsc01lc3NlbmdlcjsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3I7CiAKICAgICAgICAgcmV0dXJuIFB1YmxpY0tleUNyZWRlbnRpYWwuaXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCkudGhlbihmdW5jdGlvbihy
ZXN1bHQpIHsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSk7CkBAIC0x
Miw3ICsxMiw3IEBACiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwuaXNVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCkgd2l0aG91dCBhbnkgYXZhaWxhYmxlIGF1
dGhlbnRpY2F0b3JzLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAg
ICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5zZXREaWRVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCgpOworICAgICAgICBpbnRlcm5hbHMubW9ja0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXREaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50
aWNhdG9yUHJlc2VudCgpOwogCiAgICAgICAgIHJldHVybiBQdWJsaWNLZXlDcmVkZW50aWFsLmlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSgpLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349274</attachid>
            <date>2018-09-08 20:21:10 -0700</date>
            <delta_ts>2018-09-10 11:11:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189277-20180908202109.patch</filename>
            <type>text/plain</type>
            <size>277552</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1ODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM3NTIxN2Y4Njg2ZTI1
MGJiM2EyMzQyOWYwMjAwZmI1NzNmZmU3ZS4uMDhlODU5YTc4OWNhYTY0Y2YzNThkMzdjYWI2MWQw
YjE1YWFjNGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxOC0wOS0wOCAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gUG9s
aXNoIEF1dGhlbnRpY2F0b3JNYW5hZ2VyIGFuZCByZW5hbWUgaXQgdG8gQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODkyNzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTE1OTM2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWltcyB0byBw
b2xpc2ggQXV0aGVudGljYXRvck1hbmFnZXIgc3VjaCB0aGF0OgorICAgICAgICAxKSBJdCBpcyBu
byBsb25nZXIgYSBzaW5nbGV0b24uIEluc3RlYWQsIGl0IHdpbGwgbGl2ZSB3aXRoIFBhZ2UuIEl0
IHdhcyBhIHNpbmdsZXRvbiBzaW1wbHkgYmVjYXVzZSBzdGF0aWMKKyAgICAgICAgUHVibGljS2V5
Q3JlZGVudGlhbDo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxl
KCkgaGF2ZSB0byBhY2Nlc3MgaXQuIEhvd2V2ZXIsIHRoaXMgcmVxdWVzdAorICAgICAgICBjYW4g
YmUgZnVsZmlsbGVkIGJ5IGFkZGluZyBhbiBhdHRyaWJ1dGUgW0NhbGxXaXRoPURvY3VtZW50XSB0
byB0aGUgSURMIGRlZmluYXRpb24uIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KKyAgICAgICAgc3Vj
aCBuZWVkLiBBbHNvLCB0aGUgc2luZ2xldG9uIGlzIGlsbHkgaW1wbGVtZW50ZWQgYXMgaXQgb3du
cyBhIHNpbmdsZSBJUEMgcHJveHkgdG8gVUkgUHJvY2VzcyB3aGljaCBtZWFucworICAgICAgICBk
aWZmZXJlbnQgd2ViIHBhZ2VzIHdpbGwgdGFsayB0byB0aGUgc2FtZSB3ZWIgcGFnZSBwcm94eS4g
QW55d2F5LCBtYWtpbmcgaXQgbGl2ZSB3aXRoIFBhZ2Ugc2hvdWxkIGZpeCBldmVyeXRoaW5nLgor
ICAgICAgICAyKSBTaW5jZSB3ZSBhcmUgbm93IHBsYW5uaW5nIHRvIHN1cHBvcnQgZXh0ZXJuYWwg
YXV0aGVudGljYXRvcnMsIHRoZSBtYW5hZ2VyIG9mIGFsbCBhdXRoZW50aWNhdG9ycyB3aWxsIHRo
ZW4KKyAgICAgICAgaGF2ZSB0byBsaXZlIGluIFVJIFByb2Nlc3Mgd2hpY2ggbWFrZXMgdGhpcyBB
dXRoZW50aWNhdG9yTWFuYWdlciBvYnNvbGV0ZS4gSW5zdGVhZCwgcmVuYW1lIGl0IHRvIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci4KKyAgICAgICAgMykgUmVuYW1lIENyZWRlbnRpYWxzTWVzc2Vu
Z2VyIHRvIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCB0byB0aWdodCBpdCB0byBXZWJB
dXRoTi4gQWxzbywgc2ltcGxpZnkgdGhlCisgICAgICAgIG1lc3NhZ2UgcmVwbHkgbW9kZWwgYXMg
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy9QdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMgPT4KKyAgICAgICAgRXhjZXB0aW9uRGF0YS9QdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSBmb3IgbWFrZUNyZWRlbnRpYWwvZ2V0QXNzZXJ0aW9uIG9wZXJhdGlvbnMuCisgICAgICAg
IDQpIFJlc3RyaWN0IG9uZSByZXF1ZXN0IHBlciB0aW1lLCBpLmUuIG1ha2VDcmVkZW50aWFsL2dl
dEFzc2VydGlvbiBmb3IgYSBzaW5nbGUgcGFnZS4KKyAgICAgICAgNSkgVW5pZnlpbmcgbWFrZUNy
ZWRlbnRpYWxSZXBseS9nZXRBc3NlcnRpb25SZXBseS9leGNlcHRpb25SZXBseSBpbnRvIHJlcXVl
c3RSZXBseSBmb3IgSVBDLiBDb3JyZXNwb25kaW5nbHksCisgICAgICAgIHVuaWZ5IGNhbGxiYWNr
IGFuZCBleGNlcHRpb25DYWxsYmFjayBpbnRvIGNhbGxiYWNrIGFzIHdlbGwgZm9yIExvY2FsQXV0
aGVudGljYXRvci4KKyAgICAgICAgNikgRW5oYW5jZSBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zIGVuY29kaW5nL2RlY29kaW5nIHdpdGggZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEvZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxzQ29udGFpbmVyOjppc0NyZWF0ZSk6CisgICAgICAgICog
TW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oOgorICAg
ICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNzZW5nZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3Jl
ZGVudGlhbHNNZXNzZW5nZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGlj
YXRvckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlOjp1c2VySGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjphdHRlc3RhdGlvbk9iamVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw6OnByb2R1Y2VD
bGllbnREYXRhSnNvbik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JJbnRlcm5hbDo6cHJvZHVjZUNsaWVudERhdGFKc29uSGFzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6aW5pdFRpbWVvdXRUaW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6ZGlkVGlt
ZW91dFRpbWVyRmlyZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5
aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5oLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQ6On5BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OjpyZXF1ZXN0UmVwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ojppc1VzZXJWZXJpZnlpbmdQ
bGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OnNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OmFk
ZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJv
eHkuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVz
cG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXV0aGVu
dGljYXRvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25z
ZTo6Y2xpZW50RGF0YUpTT04gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vUHVi
bGljS2V5Q3JlZGVudGlhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbDo6dHJ5
Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWw6OlB1YmxpY0tl
eUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbDo6aXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oOgorICAgICAgICAoV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0
YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGE6
OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRl
bnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRp
b24pOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YXV0aGVudGljYXRvckNvb3JkaW5h
dG9yIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjptb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6OnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OnNldEFzc2VydGlvblJldHVy
bkJ1bmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVz
c2VuZ2VyLmguCisgICAgICAgICogdGVzdGluZy9Nb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmlkbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxz
TWVzc2VuZ2VyLmlkbC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdl
ci5jcHA6IFJlbW92ZWQuCisKIDIwMTgtMDktMDggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIERpc3BhdGNoIGEgcGF5bWVudG1ldGhvZGNoYW5n
ZSBldmVudCB3aGVuIHRoZSBwYXltZW50IG1ldGhvZCBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVlOWUx
ODg5ODNhNzYzMmJkMTU2ZTg3Y2FiNDdjMWQ4MWRkY2ZiOGIuLmUzNTg3YTBjNDY0ZTc3Yzc1MTRi
MWJiYWM1NDIwNGY3ZGYxZjY3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTgtMDkt
MDggIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0
aE5dIFBvbGlzaCBBdXRoZW50aWNhdG9yTWFuYWdlciBhbmQgcmVuYW1lIGl0IHRvIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg5Mjc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDExNTkzNj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6
OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpyZXF1ZXN0UmVwbHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlh
bE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbjogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRl
bnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkubWVzc2FnZXMuaW4u
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Om1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01l
c3Nlbmdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6On5X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nl
bmdlci5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6bV9jcHVMaW1pdCk6CisgICAgICAgIChXZWJLaXQ6Om1fY3JlZGVu
dGlhbHNNZXNzZW5nZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisKIDIwMTgtMDktMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5pZnkgbW9zdCBvZiB0aGUgV2ViS2l0IE9iamVjdGl2ZS1DIEFQ
SSBzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMjM2NDhjNTAwYzc5
NGQ3YzM5M2UzOGI3MWVkYTI4YzlkNGQzYjVkLi41ZGIzMDE0NWFhNzI2ZjViM2IwYWQzYWNjZjc0
NzIwYzRhMjEyNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTk2Miw5ICs5
NjIsOSBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL0ludGVy
bmFscy5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbCBc
CiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01lbW9yeUluZm8uaWRsIFwKKyAgICAkKFdlYkNvcmUp
L3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5pZGwgXAogICAgICQoV2ViQ29y
ZSkvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbCBcCi0gICAgJChXZWJDb3JlKS90ZXN0aW5nL01v
Y2tDcmVkZW50aWFsc01lc3Nlbmdlci5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2Nr
UGFnZU92ZXJsYXkuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1lbnRBZGRy
ZXNzLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3Iu
aWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKaW5kZXggMTQ3MDdh
ZTExYWVkYWE2NGYwZWJjNzJkOGIyM2IyMTY5Zjg5MjhlMy4uZjQ5NDFkZWY3Mjk3OTczMmJmMGU1
YzhiNmU1MTUzYzgzM2Y0OGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5l
ci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNjMsNyArNjQsNyBAQCB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQo
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYgb3B0aW9ucywgQ3JlZGVudGlhbFBybwogewogICAg
IC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvY3JlZGVu
dGlhbC1tYW5hZ2VtZW50LTEvI2FsZ29yaXRobS1yZXF1ZXN0IGFzIG9mIDQgQXVndXN0IDIwMTcK
ICAgICAvLyB3aXRoIGVuaGFuY2VtZW50IGZyb20gMTQgTm92ZW1iZXIgMjAxNyBFZGl0b3IncyBE
cmFmdC4KLSAgICBpZiAoIW1fZG9jdW1lbnQpIHsKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1f
ZG9jdW1lbnQtPnBhZ2UoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgyLDggKzgz
LDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KENyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyYmIG9wdGlvbnMsIENyZWRlbnRpYWxQcm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQvaGFuZGxlZCBpbiAoV2ViKUNy
ZWRlbnRpYWxNZXNzZW5nZXIsIHdoaWNoIGV4Y2hhbmdlcyBtZXNzYWdlcyBiZXR3ZWVuIFdlYlBy
b2Nlc3MgYW5kIFVJUHJvY2Vzcy4KLSAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2luZ2xldG9u
KCkuZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KSwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUoKSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNl
c3RvcnMoKSwgV1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOworICAg
IG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuZGlzY292ZXJG
cm9tRXh0ZXJuYWxTb3VyY2UobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgb3B0aW9ucy5w
dWJsaWNLZXkudmFsdWUoKSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RG
TW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIENyZWRl
bnRpYWxzQ29udGFpbmVyOjpzdG9yZShjb25zdCBCYXNpY0NyZWRlbnRpYWwmLCBDcmVkZW50aWFs
UHJvbWlzZSYmIHByb21pc2UpCkBAIC0xMTIsOCArMTEyLDcgQEAgdm9pZCBDcmVkZW50aWFsc0Nv
bnRhaW5lcjo6aXNDcmVhdGUoQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmIG9wdGlvbnMsIENy
ZWRlbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMg
YXJlIGRpc3BhdGNoZWQvaGFuZGxlZCBpbiAoV2ViKUNyZWRlbnRpYWxNZXNzZW5nZXIsIHdoaWNo
IGV4Y2hhbmdlcyBtZXNzYWdlcyBiZXR3ZWVuIFdlYlByb2Nlc3MgYW5kIFVJUHJvY2Vzcy4KLSAg
ICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2luZ2xldG9uKCkuY3JlYXRlKG1fZG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCksIG9wdGlvbnMucHVibGljS2V5LnZhbHVlKCksIGRvZXNIYXZlU2FtZU9y
aWdpbkFzSXRzQW5jZXN0b3JzKCksIFdURk1vdmUob3B0aW9ucy5zaWduYWwpLCBXVEZNb3ZlKHBy
b21pc2UpKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cigpLmNyZWF0ZShtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBvcHRpb25zLnB1YmxpY0tl
eS52YWx1ZSgpLCBkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9w
dGlvbnMuc2lnbmFsKSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgQ3JlZGVudGlhbHND
b250YWluZXI6OnByZXZlbnRTaWxlbnRBY2Nlc3MoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVu
dGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuaAppbmRleCAy
ZDViMzhiNTY3MTdmM2RlOGI5MDE0MWM3ODU2NjFmZWUwNmZlMTc0Li40ZTFiYjRlNWJlNWU1MjU1
YTM3Nzg2ZjhlZjY5YjhhNzdkYWY1M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRh
aW5lci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCi0jaW5j
bHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlh
bG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NmJkMDc0YWY0N2U4OWNjOWNjNzViNDFlYWM2MmRh
MjY0NjJiZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc01l
c3Nlbmdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcmVkZW50aWFsc01lc3Nlbmdlci5oIgot
Ci0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgQ3JlZGVudGlhbHNNZXNzZW5nZXJJbnRlcm5hbCB7Ci0KLWNvbnN0IHVpbnQ2NF90IG1heE1l
c3NhZ2VJZCA9IDB4RkZGRkZGRkZGRkZGRkY7IC8vIDU2IGJpdHMKLWNvbnN0IHNpemVfdCBjYWxs
QmFja0NsYXNzaWZpZXJPZmZzZXQgPSA1NjsKLQotfQotCi12b2lkIENyZWRlbnRpYWxzTWVzc2Vu
Z2VyOjpleGNlcHRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IEV4Y2VwdGlvbkRh
dGEmIGV4Y2VwdGlvbikKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgQ3JlZGVudGlhbHNNZXNzZW5n
ZXJJbnRlcm5hbDsKLQotICAgIGlmICghKG1lc3NhZ2VJZCA+PiBjYWxsQmFja0NsYXNzaWZpZXJP
ZmZzZXQgXiBDYWxsQmFja0NsYXNzaWZpZXI6OkNyZWF0aW9uKSkgewotICAgICAgICBhdXRvIGhh
bmRsZXIgPSB0YWtlQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcihtZXNzYWdlSWQpOwotICAgICAg
ICBoYW5kbGVyKGV4Y2VwdGlvbi50b0V4Y2VwdGlvbigpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBpZiAoIShtZXNzYWdlSWQgPj4gY2FsbEJhY2tDbGFzc2lmaWVyT2Zmc2V0IF4gQ2Fs
bEJhY2tDbGFzc2lmaWVyOjpSZXF1ZXN0KSkgewotICAgICAgICBhdXRvIGhhbmRsZXIgPSB0YWtl
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKG1lc3NhZ2VJZCk7Ci0gICAgICAgIGhhbmRsZXIoZXhj
ZXB0aW9uLnRvRXhjZXB0aW9uKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi11aW50
NjRfdCBDcmVkZW50aWFsc01lc3Nlbmdlcjo6YWRkQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcihD
cmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICB1c2luZyBuYW1lc3Bh
Y2UgQ3JlZGVudGlhbHNNZXNzZW5nZXJJbnRlcm5hbDsKLQotICAgIHVpbnQ2NF90IG1lc3NhZ2VJ
ZCA9IG1fYWNjdW11bGF0ZWRNZXNzYWdlSWQrKzsKLSAgICBBU1NFUlQobWVzc2FnZUlkIDw9IG1h
eE1lc3NhZ2VJZCk7Ci0gICAgbWVzc2FnZUlkID0gbWVzc2FnZUlkIHwgQ2FsbEJhY2tDbGFzc2lm
aWVyOjpDcmVhdGlvbiA8PCBjYWxsQmFja0NsYXNzaWZpZXJPZmZzZXQ7Ci0gICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3BlbmRpbmdDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVycy5hZGQobWVzc2FnZUlk
LCBXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwotICAgIHJldHVybiBtZXNzYWdlSWQ7Ci19Ci0KLUNyZWF0aW9uQ29t
cGxldGlvbkhhbmRsZXIgQ3JlZGVudGlhbHNNZXNzZW5nZXI6OnRha2VDcmVhdGlvbkNvbXBsZXRp
b25IYW5kbGVyKHVpbnQ2NF90IG1lc3NhZ2VJZCkKLXsKLSAgICByZXR1cm4gbV9wZW5kaW5nQ3Jl
YXRpb25Db21wbGV0aW9uSGFuZGxlcnMudGFrZShtZXNzYWdlSWQpOwotfQotCi11aW50NjRfdCBD
cmVkZW50aWFsc01lc3Nlbmdlcjo6YWRkUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKFJlcXVlc3RD
b21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIENyZWRl
bnRpYWxzTWVzc2VuZ2VySW50ZXJuYWw7Ci0KLSAgICB1aW50NjRfdCBtZXNzYWdlSWQgPSBtX2Fj
Y3VtdWxhdGVkTWVzc2FnZUlkKys7Ci0gICAgQVNTRVJUKG1lc3NhZ2VJZCA8PSBtYXhNZXNzYWdl
SWQpOwotICAgIG1lc3NhZ2VJZCA9IG1lc3NhZ2VJZCB8IENhbGxCYWNrQ2xhc3NpZmllcjo6UmVx
dWVzdCA8PCBjYWxsQmFja0NsYXNzaWZpZXJPZmZzZXQ7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBt
X3BlbmRpbmdSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXJzLmFkZChtZXNzYWdlSWQsIFdURk1vdmUo
aGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgcmV0dXJuIG1lc3NhZ2VJZDsKLX0KLQotUmVxdWVzdENvbXBsZXRpb25IYW5k
bGVyIENyZWRlbnRpYWxzTWVzc2VuZ2VyOjp0YWtlUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKHVp
bnQ2NF90IG1lc3NhZ2VJZCkKLXsKLSAgICByZXR1cm4gbV9wZW5kaW5nUmVxdWVzdENvbXBsZXRp
b25IYW5kbGVycy50YWtlKG1lc3NhZ2VJZCk7Ci19Ci0KLXVpbnQ2NF90IENyZWRlbnRpYWxzTWVz
c2VuZ2VyOjphZGRRdWVyeUNvbXBsZXRpb25IYW5kbGVyKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIm
JiBoYW5kbGVyKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBDcmVkZW50aWFsc01lc3Nlbmdlcklu
dGVybmFsOwotCi0gICAgdWludDY0X3QgbWVzc2FnZUlkID0gbV9hY2N1bXVsYXRlZE1lc3NhZ2VJ
ZCsrOwotICAgIEFTU0VSVChtZXNzYWdlSWQgPCBtYXhNZXNzYWdlSWQpOwotICAgIG1lc3NhZ2VJ
ZCA9IG1lc3NhZ2VJZCB8IENhbGxCYWNrQ2xhc3NpZmllcjo6UXVlcnkgPDwgY2FsbEJhY2tDbGFz
c2lmaWVyT2Zmc2V0OwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUXVlcnlDb21wbGV0
aW9uSGFuZGxlcnMuYWRkKG1lc3NhZ2VJZCwgV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXR1cm4gbWVz
c2FnZUlkOwotfQotCi1RdWVyeUNvbXBsZXRpb25IYW5kbGVyIENyZWRlbnRpYWxzTWVzc2VuZ2Vy
Ojp0YWtlUXVlcnlDb21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCBtZXNzYWdlSWQpCi17Ci0gICAg
cmV0dXJuIG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzLnRha2UobWVzc2FnZUlkKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1l
bnQvQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVu
dGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNzZW5nZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjI4YWY5NWMxNmFiZmY5Y2JlZWExNTgzNjY2YjA1OTU5YWJiZThlYS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKLSNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVm
ZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIERlZmVycmVkUHJvbWlzZTsKLQotc3RydWN0IFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnM7Ci1zdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zOwotCi1zdHJ1Y3QgQ3JlYXRpb25SZXR1cm5CdW5kbGUgewotICAgIENyZWF0aW9uUmV0dXJu
QnVuZGxlKFJlZjxBcnJheUJ1ZmZlcj4mJiBjcmVkZW50aWFsSWQsIFJlZjxBcnJheUJ1ZmZlcj4m
JiBhdHRlc3RhdGlvbk9iamVjdCkKLSAgICAgICAgOiBjcmVkZW50aWFsSWQoV1RGTW92ZShjcmVk
ZW50aWFsSWQpKQotICAgICAgICAsIGF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0YXRp
b25PYmplY3QpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8QXJyYXlCdWZmZXI+IGNyZWRlbnRp
YWxJZDsKLSAgICBSZWY8QXJyYXlCdWZmZXI+IGF0dGVzdGF0aW9uT2JqZWN0OwotfTsKLXN0cnVj
dCBBc3NlcnRpb25SZXR1cm5CdW5kbGUgewotICAgIEFzc2VydGlvblJldHVybkJ1bmRsZShSZWY8
QXJyYXlCdWZmZXI+JiYgY3JlZGVudGlhbElkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGlj
YXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZjxBcnJheUJ1ZmZlcj4m
JiB1c2VySGFuZGxlKQotICAgICAgICA6IGNyZWRlbnRpYWxJZChXVEZNb3ZlKGNyZWRlbnRpYWxJ
ZCkpCi0gICAgICAgICwgYXV0aGVudGljYXRvckRhdGEoV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0
YSkpCi0gICAgICAgICwgc2lnbmF0dXJlKFdURk1vdmUoc2lnbmF0dXJlKSkKLSAgICAgICAgLCB1
c2VySGFuZGxlKFdURk1vdmUodXNlckhhbmRsZSkpCi0gICAgewotICAgIH0KLQotICAgIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlZGVudGlhbElkOwotICAgIFJlZjxBcnJheUJ1ZmZlcj4gYXV0aGVudGlj
YXRvckRhdGE7Ci0gICAgUmVmPEFycmF5QnVmZmVyPiBzaWduYXR1cmU7Ci0gICAgUmVmPEFycmF5
QnVmZmVyPiB1c2VySGFuZGxlOwotfTsKLQotdXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxl
ciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8Q3JlYXRpb25SZXR1cm5CdW5k
bGU+JiYpPjsKLXVzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhjZXB0aW9uT3I8QXNzZXJ0aW9uUmV0dXJuQnVuZGxlPiYmKT47Ci11c2luZyBR
dWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47Ci0K
LWNsYXNzIENyZWRlbnRpYWxzTWVzc2VuZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPENyZWRl
bnRpYWxzTWVzc2VuZ2VyPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ3JlZGVudGlhbHNNZXNzZW5nZXIpOwotcHVibGljOgotICAgIENy
ZWRlbnRpYWxzTWVzc2VuZ2VyKCkgPSBkZWZhdWx0OwotCi0gICAgLy8gU2VuZGVycy4KLSAgICB2
aXJ0dWFsIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQ3JlYXRpb25Db21wbGV0
aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFzc2VydGlvbihjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBs
ZXRpb25IYW5kbGVyJiYpID0gMDsKLQotICAgIC8vIFJlY2VpdmVycy4KLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGV4Y2VwdGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgRXhjZXB0
aW9uRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBtYWtlQ3JlZGVudGlhbFJlcGx5KHVpbnQ2NF90
IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QXNzZXJ0aW9uUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0
YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgdXNlckhhbmRsZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0
Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wp
ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfkNyZWRlbnRpYWxzTWVzc2VuZ2VyKCkg
PSBkZWZhdWx0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgYWRkQ3JlYXRpb25Db21w
bGV0aW9uSGFuZGxlcihDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgdGFrZUNyZWF0aW9uQ29tcGxldGlvbkhh
bmRsZXIodWludDY0X3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IGFkZFJlcXVlc3RD
b21wbGV0aW9uSGFuZGxlcihSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyIHRha2VSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXIodWludDY0X3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IGFkZFF1ZXJ5Q29t
cGxldGlvbkhhbmRsZXIoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBRdWVyeUNvbXBsZXRpb25IYW5kbGVyIHRha2VRdWVyeUNvbXBsZXRpb25IYW5kbGVyKHVp
bnQ2NF90KTsKLQotcHJpdmF0ZToKLSAgICBlbnVtIENhbGxCYWNrQ2xhc3NpZmllciA6IHVpbnQ2
NF90IHsKLSAgICAgICAgQ3JlYXRpb24gPSAweDAxLAotICAgICAgICBSZXF1ZXN0ID0gMHgwMiwK
LSAgICAgICAgUXVlcnkgPSAweDAzLAotICAgIH07Ci0gICAgLy8gVGhlIG1vc3Qgc2lnbmlmaWNh
bnQgYnl0ZSBpcyByZXNlcnZlZCBhcyBjYWxsYmFjayBjbGFzc2lmaWVyLgotICAgIHVpbnQ2NF90
IG1fYWNjdW11bGF0ZWRNZXNzYWdlSWQgeyAxIH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ3Jl
YXRpb25Db21wbGV0aW9uSGFuZGxlcj4gbV9wZW5kaW5nQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxl
cnM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyPiBtX3Bl
bmRpbmdSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXJzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFF1
ZXJ5Q29tcGxldGlvbkhhbmRsZXI+IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzMyYTJjYjIzN2QyMGJhNGJlYzk4MGIxNDQ4ZjRkOWZlNmI1YjZkNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIgotCi0jaWYg
RU5BQkxFKFdFQl9BVVRITikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdXRo
ZW50aWNhdG9yRGF0YSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RG
TW92ZShjbGllbnREYXRhSlNPTikpCi0gICAgLCBtX2F1dGhlbnRpY2F0b3JEYXRhKFdURk1vdmUo
YXV0aGVudGljYXRvckRhdGEpKQotICAgICwgbV9zaWduYXR1cmUoV1RGTW92ZShzaWduYXR1cmUp
KQotICAgICwgbV91c2VySGFuZGxlKFdURk1vdmUodXNlckhhbmRsZSkpCi17Ci19Ci0KLUFycmF5
QnVmZmVyKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmF1dGhlbnRpY2F0b3JEYXRh
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5nZXQoKTsKLX0KLQot
QXJyYXlCdWZmZXIqIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6c2lnbmF0dXJlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9zaWduYXR1cmUuZ2V0KCk7Ci19Ci0KLUFycmF5QnVmZmVy
KiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OnVzZXJIYW5kbGUoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3VzZXJIYW5kbGUuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaAppbmRleCA0NDUxZjI1MzFhNDM5M2UxODk4ZWQ2Y2YzMGEyZGU4ZDk5NGE1ZTUwLi5j
ZjI4YzFhY2FlMTljY2VlMzcyMmY0ZjAyOTIyMjkxMTk4MTRkMWJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmgKQEAgLTMzLDI1ICszMywzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50
aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFK
U09OLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQor
ICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVm
PEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVu
dGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZjxBcnJheUJ1ZmZl
cj4mJiB1c2VySGFuZGxlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUoY2xpZW50RGF0YUpTT04pLCBXVEZN
b3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKHVzZXJI
YW5kbGUpKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlKCkgPSBkZWZhdWx0OwogCi0gICAgQXJyYXlCdWZmZXIqIGF1dGhlbnRpY2F0b3JEYXRh
KCkgY29uc3Q7Ci0gICAgQXJyYXlCdWZmZXIqIHNpZ25hdHVyZSgpIGNvbnN0OwotICAgIEFycmF5
QnVmZmVyKiB1c2VySGFuZGxlKCkgY29uc3Q7CisgICAgQXJyYXlCdWZmZXIqIGF1dGhlbnRpY2F0
b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5wdHIoKTsgfQorICAg
IEFycmF5QnVmZmVyKiBzaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBtX3NpZ25hdHVyZS5wdHIo
KTsgfQorICAgIEFycmF5QnVmZmVyKiB1c2VySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV91c2Vy
SGFuZGxlLnB0cigpOyB9CiAKIHByaXZhdGU6Ci0gICAgQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBjbGllbnREYXRhSlNPTiwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgc2lnbmF0
dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSk7CisgICAgQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiBjbGllbnREYXRhSlNPTiwgUmVm
PEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2ln
bmF0dXJlLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSkKKyAgICAgICAgOiBBdXRoZW50
aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShjbGllbnREYXRhSlNPTikpCisgICAgICAgICwgbV9hdXRo
ZW50aWNhdG9yRGF0YShXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSkKKyAgICAgICAgLCBtX3Np
Z25hdHVyZShXVEZNb3ZlKHNpZ25hdHVyZSkpCisgICAgICAgICwgbV91c2VySGFuZGxlKFdURk1v
dmUodXNlckhhbmRsZSkpCisgICAgeworICAgIH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIFR5cGU6OkFzc2VydGlvbjsgfQogCi0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBtX2F1dGhlbnRpY2F0b3JEYXRhOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1
cmU7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX3VzZXJIYW5kbGU7CisgICAgUmVmPEFycmF5
QnVmZmVyPiBtX2F1dGhlbnRpY2F0b3JEYXRhOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9zaWdu
YXR1cmU7CisgICAgUmVmPEFycmF5QnVmZmVyPiBtX3VzZXJIYW5kbGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjA2YzQzODZmMjNmMTA5MzY2MDIyOTI5ODU5
MTE3YzcxY2E1YjQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZS5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QpCi0gICAgOiBBdXRoZW50aWNh
dG9yUmVzcG9uc2UoV1RGTW92ZShjbGllbnREYXRhSlNPTikpCi0gICAgLCBtX2F0dGVzdGF0aW9u
T2JqZWN0KFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpKQotewotfQotCi1BcnJheUJ1ZmZlciog
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmF0dGVzdGF0aW9uT2JqZWN0KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9hdHRlc3RhdGlvbk9iamVjdC5nZXQoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaAppbmRleCA0ODA3MDdiNmY3MWYyNTgzMjhkOTY4NzIw
YjM4ZDBkZmUzODE3YWRjLi4wNTM3ZDk3YzNiZDIwNmY5ZmJkMjcxNmVkMzU0MDliNjdlM2VlNjlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCkBAIC0zMywyMSArMzMsMjUg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdHRl
c3RhdGlvbk9iamVjdCkKKyAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWY8QXJy
YXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShXVEZNb3ZlKGNsaWVu
dERhdGFKU09OKSwgV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdCkpKTsKICAgICB9CiAKICAgICB2
aXJ0dWFsIH5BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAot
ICAgIEFycmF5QnVmZmVyKiBhdHRlc3RhdGlvbk9iamVjdCgpIGNvbnN0OworICAgIEFycmF5QnVm
ZmVyKiBhdHRlc3RhdGlvbk9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0ZXN0YXRpb25PYmpl
Y3QucHRyKCk7IH0KIAogcHJpdmF0ZToKLSAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04sIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCk7CisgICAgQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWY8QXJyYXlCdWZm
ZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QpCisgICAgICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNl
KFdURk1vdmUoY2xpZW50RGF0YUpTT04pKQorICAgICAgICAsIG1fYXR0ZXN0YXRpb25PYmplY3Qo
V1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdCkpCisgICAgeworICAgIH0KIAogICAgIFR5cGUgdHlw
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkF0dGVzdGF0aW9uOyB9CiAKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IG1fYXR0ZXN0YXRpb25PYmplY3Q7CisgICAgUmVmPEFycmF5QnVmZmVy
PiBtX2F0dGVzdGF0aW9uT2JqZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNGE1MWZkMmFlOWRmZmU3ZDIwMTM3ODU4
MDJkMGZlNmVmZmU1ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTAsMCArMSwyNjggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiQWJv
cnRTaWduYWwuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCIK
KyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkpTQmFzaWNDcmVk
ZW50aWFsLmgiCisjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIlB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlD
cmVkZW50aWFsRGF0YS5oIgorI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucy5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9KU09O
VmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvckludGVybmFsIHsKKworZW51bSBjbGFzcyBDbGllbnREYXRhVHlw
ZSB7CisgICAgQ3JlYXRlLAorICAgIEdldAorfTsKKworLy8gRklYTUUoMTgxOTQ4KTogQWRkIHRv
a2VuIGJpbmRpbmcgSUQgYW5kIGV4dGVuc2lvbnMuCitzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBw
cm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291
cmNlJiBjaGFsbGVuZ2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit7CisgICAgYXV0
byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgIHN3aXRjaCAodHlwZSkgewor
ICAgIGNhc2UgQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZToKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJp
bmcoInR5cGUiX3MsICJ3ZWJhdXRobi5jcmVhdGUiX3MpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENsaWVudERhdGFUeXBlOjpHZXQ6CisgICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJ0eXBl
Il9zLCAid2ViYXV0aG4uZ2V0Il9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIG9iamVj
dC0+c2V0U3RyaW5nKCJjaGFsbGVuZ2UiX3MsIFdURjo6YmFzZTY0VVJMRW5jb2RlKGNoYWxsZW5n
ZS5kYXRhKCksIGNoYWxsZW5nZS5sZW5ndGgoKSkpOworICAgIG9iamVjdC0+c2V0U3RyaW5nKCJv
cmlnaW4iX3MsIG9yaWdpbi50b1Jhd1N0cmluZygpKTsKKyAgICAvLyBGSVhNRTogVGhpcyBtaWdo
dCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCisgICAgb2JqZWN0LT5zZXRTdHJpbmcoImhhc2hBbGdv
cml0aG0iX3MsICJTSEEtMjU2Il9zKTsKKworICAgIGF1dG8gdXRmOEpTT05TdHJpbmcgPSBvYmpl
Y3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKKyAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0
ZSh1dGY4SlNPTlN0cmluZy5kYXRhKCksIHV0ZjhKU09OU3RyaW5nLmxlbmd0aCgpKTsKK30KKwor
c3RhdGljIFZlY3Rvcjx1aW50OF90PiBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNvbnN0IEFy
cmF5QnVmZmVyJiBjbGllbnREYXRhSnNvbikKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBi
ZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCisgICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIGNy
eXB0by0+YWRkQnl0ZXMoY2xpZW50RGF0YUpzb24uZGF0YSgpLCBjbGllbnREYXRhSnNvbi5ieXRl
TGVuZ3RoKCkpOworICAgIHJldHVybiBjcnlwdG8tPmNvbXB1dGVIYXNoKCk7Cit9CisKKy8vIEZJ
WE1FKDE4MTk0Nyk6IFdlIHNob3VsZCBwcm9iYWJseSB0cmltIHRpbWVPdXRJbk1zIHRvIHNvbWUg
bWF4IGFsbG93YWJsZSBudW1iZXIuCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBpbml0
VGltZW91dFRpbWVyKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgbG9uZz4gdGltZU91dEluTXMsIGNv
bnN0IENyZWRlbnRpYWxQcm9taXNlJiBwcm9taXNlKQoreworICAgIGlmICghdGltZU91dEluTXMp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGltZXI+KFtwcm9taXNlID0gcHJvbWlzZV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHBy
b21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiB0aW1l
ZCBvdXQuIl9zIH0pOworICAgIH0pOworICAgIHRpbWVyLT5zdGFydE9uZVNob3QoU2Vjb25kczo6
ZnJvbU1pbGxpc2Vjb25kcygqdGltZU91dEluTXMpKTsKKyAgICByZXR1cm4gdGltZXI7Cit9CisK
K3N0YXRpYyBib29sIGRpZFRpbWVvdXRUaW1lckZpcmUoVGltZXIqIHRpbWVyKQoreworICAgIGlm
ICghdGltZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXRpbWVyLT5pc0FjdGl2
ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB0aW1lci0+c3RvcCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50
ZXJuYWwKKworQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3Ioc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJiBjbGll
bnQpCisgICAgOiBtX2NsaWVudChXVEZNb3ZlKGNsaWVudCkpCit7Cit9CisKK3ZvaWQgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudD4mJiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBXVEZNb3Zl
KGNsaWVudCk7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIGNhbGxlck9yaWdpbiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywg
UmVmUHRyPEFib3J0U2lnbmFsPiYmIGFib3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHBy
b21pc2UpIGNvbnN0Cit7CisgICAgdXNpbmcgbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckludGVybmFsOworCisgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVy
IDIwMTcuCisgICAgLy8gRklYTUU6IEV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBT
a2lwIFN0ZXAgMTEtMTIuCisgICAgLy8gU3RlcCAxLCAzLCAxNiBhcmUgaGFuZGxlZCBieSB0aGUg
Y2FsbGVyLgorICAgIC8vIFN0ZXAgMi4KKyAgICBpZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3Jz
KSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwg
IlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0
b3JzLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFN0ZXAgNCAmIDE3
LgorICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gdGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRU
aW1lcihvcHRpb25zLnRpbWVvdXQsIHByb21pc2UpOworCisgICAgLy8gU3RlcCA1LTcuCisgICAg
Ly8gRklYTUUoMTgxOTUwKTogV2UgbGFjayBmdW5kYW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJp
dHlPcmlnaW4gdG8gZGV0ZXJtaW5lIGlmIGEgaG9zdCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3Qu
CisgICAgLy8gU3RlcCA2IGlzIHRoZXJlZm9yZSBza2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBz
dXBwb3J0IHRvIGRldGVybWluZSB3aGV0aGVyIGEgZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKKyAg
ICAvLyBkb21haW4gc3VmZml4IG9mIGFub3RoZXIgZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUg
Y29tcGFyaXNvbiB0byBlcXVhbCBpbiBTdGVwIDcuCisgICAgaWYgKCFvcHRpb25zLnJwLmlkLmlz
RW1wdHkoKSAmJiBjYWxsZXJPcmlnaW4uaG9zdCgpICE9IG9wdGlvbnMucnAuaWQpIHsKKyAgICAg
ICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRoZSBvcmlnaW4g
b2YgdGhlIGRvY3VtZW50IGlzIG5vdCBhIHJlZ2lzdHJhYmxlIGRvbWFpbiBzdWZmaXggb2YgdGhl
IHByb3ZpZGVkIFJQIElELiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
b3B0aW9ucy5ycC5pZC5pc0VtcHR5KCkpCisgICAgICAgIG9wdGlvbnMucnAuaWQgPSBjYWxsZXJP
cmlnaW4uaG9zdCgpOworCisgICAgLy8gU3RlcCA4LTEwLgorICAgIC8vIE1vc3Qgb2YgdGhlIGpv
YnMgYXJlIGRvbmUgYnkgYmluZGluZ3MuIEhvd2V2ZXIsIHdlIGNhbid0IGtub3cgaWYgdGhlIEpT
VmFsdWUgb2Ygb3B0aW9ucy5wdWJLZXlDcmVkUGFyYW1zCisgICAgLy8gaXMgZW1wdHkgb3Igbm90
LiBSZXR1cm4gTm90U3VwcG9ydGVkRXJyb3IgYXMgbG9uZyBhcyBpdCBpcyBlbXB0eS4KKyAgICBp
ZiAob3B0aW9ucy5wdWJLZXlDcmVkUGFyYW1zLmlzRW1wdHkoKSkgeworICAgICAgICBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vIGRlc2lyZWQgcHJvcGVy
dGllcyBvZiB0aGUgdG8gYmUgY3JlYXRlZCBjcmVkZW50aWFsIGFyZSBwcm92aWRlZC4iX3MgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTdGVwIDEzLTE1LgorICAgIGF1dG8g
Y2xpZW50RGF0YUpzb24gPSBwcm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkNy
ZWF0ZSwgb3B0aW9ucy5jaGFsbGVuZ2UsIGNhbGxlck9yaWdpbik7CisgICAgYXV0byBjbGllbnRE
YXRhSnNvbkhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKc29uKTsK
KworICAgIC8vIFN0ZXAgMTgtMjEuCisgICAgLy8gT25seSBwbGF0Zm9ybSBhdHRhY2htZW50cyB3
aWxsIGJlIHN1cHBvcnRlZCBhdCB0aGlzIHN0YWdlLiBBc3N1bWluZyBvbmUgYXV0aGVudGljYXRv
ciBwZXIgZGV2aWNlLgorICAgIC8vIEFsc28sIHJlc2lkZW50IGtleXMsIHVzZXIgdmVyaWZpY2F0
aW9ucyBhbmQgZGlyZWN0IGF0dGVzdGF0aW9uIGFyZSBlbmZvcmNlZCBhdCB0aGlzIHRhZ2UuCisg
ICAgLy8gRm9yIGJldHRlciBwZXJmb3JtYW5jZSwgdHJhbnNwb3J0cyBvZiBvcHRpb25zLmV4Y2x1
ZGVDcmVkZW50aWFscyBhcmUgY2hlY2tlZCBpbiBMb2NhbEF1dGhlbnRpY2F0b3IuCisgICAgaWYg
KCFtX2NsaWVudCkgIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93
bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2NsaWVudERhdGFKc29uID0g
V1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aW1l
b3V0VGltZXIgPSBXVEZNb3ZlKHRpbWVvdXRUaW1lciksIGFib3J0U2lnbmFsID0gV1RGTW92ZShh
Ym9ydFNpZ25hbCldIChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0
YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKGRpZFRpbWVvdXRUaW1lckZpcmUodGltZW91dFRpbWVyLmdldCgpKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGFib3J0U2lnbmFsICYmIGFib3J0U2lnbmFsLT5h
Ym9ydGVkKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0
RXJyb3IsICJBYm9ydGVkIGJ5IEFib3J0U2lnbmFsLiJfcyB9KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGEuY2xpZW50RGF0YUpTT04gPSBXVEZNb3ZlKGNs
aWVudERhdGFKc29uKTsKKyAgICAgICAgaWYgKGF1dG8gcHVibGljS2V5Q3JlZGVudGlhbCA9IFB1
YmxpY0tleUNyZWRlbnRpYWw6OnRyeUNyZWF0ZShkYXRhKSkgeworICAgICAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKHB1YmxpY0tleUNyZWRlbnRpYWwuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIEFTU0VSVCghZXhjZXB0aW9uLm1lc3NhZ2UuaXNOdWxsKCkp
OworICAgICAgICBwcm9taXNlLnJlamVjdChleGNlcHRpb24udG9FeGNlcHRpb24oKSk7CisgICAg
fTsKKyAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGlu
IHRoZSBtZXNzZW5nZXIuCisgICAgbV9jbGllbnQtPm1ha2VDcmVkZW50aWFsKGNsaWVudERhdGFK
c29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lk
IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIGNhbGxlck9yaWdpbiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBS
ZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJv
bWlzZSkgY29uc3QKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5h
dG9ySW50ZXJuYWw7CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93
d3cudzMub3JnL1RSL3dlYmF1dGhuLyNjcmVhdGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIg
MjAxNy4KKyAgICAvLyBGSVhNRTogRXh0ZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIFNr
aXAgU3RlcCA4LTkuCisgICAgLy8gU3RlcCAxLCAzLCAxMyBhcmUgaGFuZGxlZCBieSB0aGUgY2Fs
bGVyLgorICAgIC8vIFN0ZXAgMi4KKyAgICBpZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzKSB7
CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIlRo
ZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3Jz
LiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFN0ZXAgNCAmIDE2Lgor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gdGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRUaW1l
cihvcHRpb25zLnRpbWVvdXQsIHByb21pc2UpOworCisgICAgLy8gU3RlcCA1LTcuCisgICAgLy8g
RklYTUUoMTgxOTUwKTogV2UgbGFjayBmdW5kYW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJpdHlP
cmlnaW4gdG8gZGV0ZXJtaW5lIGlmIGEgaG9zdCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3QuCisg
ICAgLy8gU3RlcCA2IGlzIHRoZXJlZm9yZSBza2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBzdXBw
b3J0IHRvIGRldGVybWluZSB3aGV0aGVyIGEgZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKKyAgICAv
LyBkb21haW4gc3VmZml4IG9mIGFub3RoZXIgZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUgY29t
cGFyaXNvbiB0byBlcXVhbCBpbiBTdGVwIDcuCisgICAgaWYgKCFvcHRpb25zLnJwSWQuaXNFbXB0
eSgpICYmIGNhbGxlck9yaWdpbi5ob3N0KCkgIT0gb3B0aW9ucy5ycElkKSB7CisgICAgICAgIHBy
b21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJUaGUgb3JpZ2luIG9mIHRo
ZSBkb2N1bWVudCBpcyBub3QgYSByZWdpc3RyYWJsZSBkb21haW4gc3VmZml4IG9mIHRoZSBwcm92
aWRlZCBSUCBJRC4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG9wdGlv
bnMucnBJZC5pc0VtcHR5KCkpCisgICAgICAgIG9wdGlvbnMucnBJZCA9IGNhbGxlck9yaWdpbi5o
b3N0KCk7CisKKyAgICAvLyBTdGVwIDEwLTEyLgorICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBw
cm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkdldCwgb3B0aW9ucy5jaGFsbGVu
Z2UsIGNhbGxlck9yaWdpbik7CisgICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBwcm9kdWNl
Q2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKc29uKTsKKworICAgIC8vIFN0ZXAgMTQtMTUs
IDE3LTE5LgorICAgIC8vIE9ubHkgcGxhdGZvcm0gYXR0YWNobWVudHMgd2lsbCBiZSBzdXBwb3J0
ZWQgYXQgdGhpcyBzdGFnZS4gQXNzdW1pbmcgb25lIGF1dGhlbnRpY2F0b3IgcGVyIGRldmljZS4K
KyAgICAvLyBBbHNvLCByZXNpZGVudCBrZXlzLCB1c2VyIHZlcmlmaWNhdGlvbnMgYW5kIGRpcmVj
dCBhdHRlc3RhdGlvbiBhcmUgZW5mb3JjZWQgYXQgdGhpcyB0YWdlLgorICAgIC8vIEZvciBiZXR0
ZXIgcGVyZm9ybWFuY2UsIGZpbHRlcmluZyBvZiBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgaXMg
ZG9uZSBpbiBMb2NhbEF1dGhlbnRpY2F0b3IuCisgICAgaWYgKCFtX2NsaWVudCkgIHsKKyAgICAg
ICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRl
cm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNv
biksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aW1lb3V0VGltZXIgPSBXVEZNb3ZlKHRp
bWVvdXRUaW1lciksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChjb25zdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGRpZFRpbWVvdXRU
aW1lckZpcmUodGltZW91dFRpbWVyLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgaWYgKGFib3J0U2lnbmFsICYmIGFib3J0U2lnbmFsLT5hYm9ydGVkKCkpIHsKKyAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydGVkIGJ5IEFi
b3J0U2lnbmFsLiJfcyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGRhdGEuY2xpZW50RGF0YUpTT04gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKTsKKyAgICAg
ICAgaWYgKGF1dG8gcHVibGljS2V5Q3JlZGVudGlhbCA9IFB1YmxpY0tleUNyZWRlbnRpYWw6OnRy
eUNyZWF0ZShkYXRhKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHB1YmxpY0tleUNy
ZWRlbnRpYWwuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVCghZXhjZXB0aW9uLm1lc3NhZ2UuaXNOdWxsKCkpOworICAgICAgICBwcm9taXNlLnJl
amVjdChleGNlcHRpb24udG9FeGNlcHRpb24oKSk7CisgICAgfTsKKyAgICAvLyBBc3luYyBvcGVy
YXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCisgICAg
bV9jbGllbnQtPmdldEFzc2VydGlvbihjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9t
aXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKSBjb25zdAoreworICAgIC8vIFRoZSBm
b2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2lzVXNl
clZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZQorICAgIC8vIGFzIG9mIDUg
RGVjZW1iZXIgMjAxNy4KKyAgICBpZiAoIW1fY2xpZW50KSAgeworICAgICAgICBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJf
cyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FKDE4Mjc2Nyk6IFdl
IHNob3VsZCBjb25zaWRlciBtb3JlIG9uIHRoZSBhc3Nlc3NtZW50IG9mIHRoZSByZXR1cm4gdmFs
dWUuIFJpZ2h0IG5vdywgd2UgcmV0dXJuIHRydWUvZmFsc2UKKyAgICAvLyBpbW1lZGlhdGVseSBh
Y2NvcmRpbmcgdG8gcGxhdGZvcm0gc3BlY2lmaWMgcHJvY2VkdXJlcy4KKyAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBwcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9OworICAg
IC8vIEFzeW5jIG9wZXJhdGlvbiBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVz
c2VuZ2VyLgorICAgIG1fY2xpZW50LT5pc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0
b3JBdmFpbGFibGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjFjNDlkYjUyM2I5MzZiMGE0ZWMyMjEwNDFiNzdkYTdjYzE0Nzhm
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBYm9ydFNpZ25h
bDsKK2NsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKK2NsYXNzIEJhc2ljQ3Jl
ZGVudGlhbDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworCitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczsKK3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnM7CisKK3VzaW5nIENyZWRlbnRpYWxQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElE
TE51bGxhYmxlPElETEludGVyZmFjZTxCYXNpY0NyZWRlbnRpYWw+Pj47CisKK2NsYXNzIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yKTsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJik7CisKKyAgICAv
LyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IHN0YXRpYyBtZXRob2RzIG9mIFB1Ymxp
Y0tleUNyZWRlbnRpYWwuCisgICAgdm9pZCBjcmVhdGUoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgYm9vbCBzYW1lT3JpZ2lu
V2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYm
KSBjb25zdDsKKyAgICB2b2lkIGRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgYm9v
bCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50
aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJikgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0
OworCisgICAgc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4g
bV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMwYzgwY2E3N2NmNzIxZTA4M2I2NDYwZDBiOTZlMWZkYjgxZjQ2ZjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudC5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCIK
KworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ckNsaWVudDo6fkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCgpCit7CisgICAgLy8gSnVz
dCB0byBjYWxsIGhhbmRsZXJzIHRvIGF2b2lkIGFueSBhc3NlcnRpb24gZmFpbHVyZXMuCisgICAg
aWYgKG1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBtX3BlbmRpbmdDb21wbGV0
aW9uSGFuZGxlcih7IH0sIHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4i
X3MgfSk7CisgICAgZm9yIChhdXRvIGl0ciA9IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRs
ZXJzLmJlZ2luKCk7IGl0ciAhPSAgbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMuZW5k
KCk7ICsraXRyKQorICAgICAgICBpdHItPnZhbHVlKGZhbHNlKTsKK30KKwordm9pZCBBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OnJlcXVlc3RSZXBseShjb25zdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYg
ZXhjZXB0aW9uKQoreworICAgIG1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKGRhdGEsIGV4Y2Vw
dGlvbik7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ojppc1VzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNz
YWdlSWQsIGJvb2wgcmVzdWx0KQoreworICAgIGF1dG8gaGFuZGxlciA9IG1fcGVuZGluZ1F1ZXJ5
Q29tcGxldGlvbkhhbmRsZXJzLnRha2UobWVzc2FnZUlkKTsKKyAgICBoYW5kbGVyKHJlc3VsdCk7
Cit9CisKK2Jvb2wgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OjpzZXRSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXIoUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAg
ICBpZiAobV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgaGFuZGxlcih7IH0s
IHsgTm90QWxsb3dlZEVycm9yLCAiQSByZXF1ZXN0IGlzIHBlbmRpbmcuIl9zIH0pOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGhhbmRsZXIpOworICAgIHJldHVybiB0cnVlOworfQorCit1aW50NjRfdCBBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OmFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoUXVl
cnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit7CisgICAgdWludDY0X3QgbWVzc2FnZUlk
ID0gbV9hY2N1bXVsYXRlZE1lc3NhZ2VJZCsrOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5k
aW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMuYWRkKG1lc3NhZ2VJZCwgV1RGTW92ZShoYW5kbGVy
KSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
KyAgICByZXR1cm4gbWVzc2FnZUlkOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmY0ZDllOGY2Nzk2NTI3Nzk0YThiMTdjMzQ2MzhjNzMxNDM4ZjU0YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkV4Y2VwdGlv
bkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRGVmZXJyZWRQcm9taXNlOworCitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVu
dGlhbERhdGE7CitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKK3N0
cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CisKK3VzaW5nIFJlcXVlc3RD
b21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbERhdGEmLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+
OwordXNpbmcgUXVlcnlDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xp
ZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KTsKK3B1YmxpYzoKKyAgICBBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+QXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KCk7CisKKyAgICAvLyBTZW5kZXJzLgorICAgIHZp
cnR1YWwgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBp
c1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0
aW9uSGFuZGxlciYmKSA9IDA7CisKKyAgICAvLyBSZWNlaXZlcnMuCisgICAgdm9pZCByZXF1ZXN0
UmVwbHkoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmLCBjb25zdCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhJik7CisgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpOworCitw
cm90ZWN0ZWQ6CisgICAgLy8gT25seSBvbmUgcmVxdWVzdCBpcyBhbGxvd2VkIGF0IG9uZSB0aW1l
LiBJdCByZXR1cm5zIGZhbHNlIHdoZW5ldmVyIHRoZXJlIGlzIGFuIGV4aXN0aW5nIHBlbmRpbmcg
cmVxdWVzdC4KKyAgICAvLyBBbmQgaW52b2tlcyB0aGUgcHJvdmlkZWQgaGFuZGxlciB3aXRoIE5v
dEFsbG93ZWRFcnJvci4KKyAgICBib29sIHNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihSZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdWludDY0X3QgYWRkUXVlcnlDb21wbGV0aW9u
SGFuZGxlcihRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpOworCitwcml2YXRlOgorICAgIFJlcXVl
c3RDb21wbGV0aW9uSGFuZGxlciBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcjsKKyAgICB1aW50
NjRfdCBtX2FjY3VtdWxhdGVkTWVzc2FnZUlkIHsgMSB9OworICAgIEhhc2hNYXA8dWludDY0X3Qs
IFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXI+IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZDYw
MTYyMWYxOTExNzk1YjE3ZTRkZTc2NmZkNjM5Njk2ZjYxNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNh
dG9yTWFuYWdlci5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotI2luY2x1ZGUgIkFib3J0
U2lnbmFsLmgiCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgiCi0j
aW5jbHVkZSAiQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJD
cmVkZW50aWFsc01lc3Nlbmdlci5oIgotI2luY2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgiCi0j
aW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbC5oIgotI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMuaCIKLSNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KLSNpbmNsdWRlIDx3
dGYvSlNPTlZhbHVlcy5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBBdXRoZW50aWNhdG9yTWFuYWdlckludGVybmFsIHsKLQotZW51bSBjbGFzcyBDbGllbnREYXRh
VHlwZSB7Ci0gICAgQ3JlYXRlLAotICAgIEdldAotfTsKLQotLy8gRklYTUUoMTgxOTQ4KTogQWRk
IHRva2VuIGJpbmRpbmcgSUQgYW5kIGV4dGVuc2lvbnMuCi1zdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBwcm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVy
U291cmNlJiBjaGFsbGVuZ2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCi17Ci0gICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHN3aXRjaCAodHlwZSkg
ewotICAgIGNhc2UgQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZToKLSAgICAgICAgb2JqZWN0LT5zZXRT
dHJpbmcoInR5cGUiX3MsICJ3ZWJhdXRobi5jcmVhdGUiX3MpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENsaWVudERhdGFUeXBlOjpHZXQ6Ci0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJ0
eXBlIl9zLCAid2ViYXV0aG4uZ2V0Il9zKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIG9i
amVjdC0+c2V0U3RyaW5nKCJjaGFsbGVuZ2UiX3MsIFdURjo6YmFzZTY0VVJMRW5jb2RlKGNoYWxs
ZW5nZS5kYXRhKCksIGNoYWxsZW5nZS5sZW5ndGgoKSkpOwotICAgIG9iamVjdC0+c2V0U3RyaW5n
KCJvcmlnaW4iX3MsIG9yaWdpbi50b1Jhd1N0cmluZygpKTsKLSAgICAvLyBGSVhNRTogVGhpcyBt
aWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCi0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImhhc2hB
bGdvcml0aG0iX3MsICJTSEEtMjU2Il9zKTsKLQotICAgIGF1dG8gdXRmOEpTT05TdHJpbmcgPSBv
YmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZSh1dGY4SlNPTlN0cmluZy5kYXRhKCksIHV0ZjhKU09OU3RyaW5nLmxlbmd0aCgpKTsKLX0K
LQotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNvbnN0
IEFycmF5QnVmZmVyJiBjbGllbnREYXRhSnNvbikKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBtaWdo
dCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCi0gICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwotICAg
IGNyeXB0by0+YWRkQnl0ZXMoY2xpZW50RGF0YUpzb24uZGF0YSgpLCBjbGllbnREYXRhSnNvbi5i
eXRlTGVuZ3RoKCkpOwotICAgIHJldHVybiBjcnlwdG8tPmNvbXB1dGVIYXNoKCk7Ci19Ci0KLS8v
IEZJWE1FKDE4MTk0Nyk6IFdlIHNob3VsZCBwcm9iYWJseSB0cmltIHRpbWVPdXRJbk1zIHRvIHNv
bWUgbWF4IGFsbG93YWJsZSBudW1iZXIuCi1zdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBp
bml0VGltZW91dFRpbWVyKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgbG9uZz4gdGltZU91dEluTXMs
IGNvbnN0IENyZWRlbnRpYWxQcm9taXNlJiBwcm9taXNlKQotewotICAgIGlmICghdGltZU91dElu
TXMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGltZXI+KFtwcm9taXNlID0gcHJvbWlzZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAg
IHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIl9zIH0pOwotICAgIH0pOwotICAgIHRpbWVyLT5zdGFydE9uZVNob3QoU2Vjb25k
czo6ZnJvbU1pbGxpc2Vjb25kcygqdGltZU91dEluTXMpKTsKLSAgICByZXR1cm4gdGltZXI7Ci19
Ci0KLXN0YXRpYyBib29sIGRpZFRpbWVvdXRUaW1lckZpcmUoVGltZXIqIHRpbWVyKQotewotICAg
IGlmICghdGltZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXRpbWVyLT5pc0Fj
dGl2ZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB0aW1lci0+c3RvcCgpOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQXV0aGVudGljYXRvck1hbmFnZXJJbnRl
cm5hbAotCi1BdXRoZW50aWNhdG9yTWFuYWdlciYgQXV0aGVudGljYXRvck1hbmFnZXI6OnNpbmds
ZXRvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXV0aGVudGljYXRvck1hbmFnZXI+IGF1dGhlbnRpY2F0b3I7Ci0gICAgcmV0dXJu
IGF1dGhlbnRpY2F0b3I7Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnNldE1lc3Nl
bmdlcihDcmVkZW50aWFsc01lc3NlbmdlciYgbWVzc2VuZ2VyKQotewotICAgIG1fbWVzc2VuZ2Vy
ID0gbWFrZVdlYWtQdHIobWVzc2VuZ2VyKTsKLX0KLQotdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdl
cjo6Y3JlYXRlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBjYWxsZXJPcmlnaW4sIGNvbnN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldp
dGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlh
bFByb21pc2UmJiBwcm9taXNlKSBjb25zdAotewotICAgIHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50
aWNhdG9yTWFuYWdlckludGVybmFsOwotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRz
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1
IERlY2VtYmVyIDIwMTcuCi0gICAgLy8gRklYTUU6IEV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0
ZWQgeWV0LiBTa2lwIFN0ZXAgMTEtMTIuCi0gICAgLy8gU3RlcCAxLCAzLCAxNiBhcmUgaGFuZGxl
ZCBieSB0aGUgY2FsbGVyLgotICAgIC8vIFN0ZXAgMi4KLSAgICBpZiAoIXNhbWVPcmlnaW5XaXRo
QW5jZXN0b3JzKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93
ZWRFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBp
dHMgYW5jZXN0b3JzLiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN0
ZXAgNCAmIDE3LgotICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gdGltZW91dFRpbWVyID0gaW5p
dFRpbWVvdXRUaW1lcihvcHRpb25zLnRpbWVvdXQsIHByb21pc2UpOwotCi0gICAgLy8gU3RlcCA1
LTcuCi0gICAgLy8gRklYTUUoMTgxOTUwKTogV2UgbGFjayBmdW5kYW1lbnRhbCBzdXBwb3J0IGZy
b20gU2VjdXJpdHlPcmlnaW4gdG8gZGV0ZXJtaW5lIGlmIGEgaG9zdCBpcyBhIHZhbGlkIGRvbWFp
biBvciBub3QuCi0gICAgLy8gU3RlcCA2IGlzIHRoZXJlZm9yZSBza2lwcGVkLiBBbHNvLCB3ZSBs
YWNrIHRoZSBzdXBwb3J0IHRvIGRldGVybWluZSB3aGV0aGVyIGEgZG9tYWluIGlzIGEgcmVnaXN0
cmFibGUKLSAgICAvLyBkb21haW4gc3VmZml4IG9mIGFub3RoZXIgZG9tYWluLiBIZW5jZSByZXN0
cmljdCB0aGUgY29tcGFyaXNvbiB0byBlcXVhbCBpbiBTdGVwIDcuCi0gICAgaWYgKCFvcHRpb25z
LnJwLmlkLmlzRW1wdHkoKSAmJiBjYWxsZXJPcmlnaW4uaG9zdCgpICE9IG9wdGlvbnMucnAuaWQp
IHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRo
ZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCBhIHJlZ2lzdHJhYmxlIGRvbWFpbiBzdWZm
aXggb2YgdGhlIHByb3ZpZGVkIFJQIElELiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAob3B0aW9ucy5ycC5pZC5pc0VtcHR5KCkpCi0gICAgICAgIG9wdGlvbnMucnAuaWQg
PSBjYWxsZXJPcmlnaW4uaG9zdCgpOwotCi0gICAgLy8gU3RlcCA4LTEwLgotICAgIC8vIE1vc3Qg
b2YgdGhlIGpvYnMgYXJlIGRvbmUgYnkgYmluZGluZ3MuIEhvd2V2ZXIsIHdlIGNhbid0IGtub3cg
aWYgdGhlIEpTVmFsdWUgb2Ygb3B0aW9ucy5wdWJLZXlDcmVkUGFyYW1zCi0gICAgLy8gaXMgZW1w
dHkgb3Igbm90LiBSZXR1cm4gTm90U3VwcG9ydGVkRXJyb3IgYXMgbG9uZyBhcyBpdCBpcyBlbXB0
eS4KLSAgICBpZiAob3B0aW9ucy5wdWJLZXlDcmVkUGFyYW1zLmlzRW1wdHkoKSkgewotICAgICAg
ICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vIGRlc2ly
ZWQgcHJvcGVydGllcyBvZiB0aGUgdG8gYmUgY3JlYXRlZCBjcmVkZW50aWFsIGFyZSBwcm92aWRl
ZC4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBTdGVwIDEzLTE1Lgot
ICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBwcm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0
YVR5cGU6OkNyZWF0ZSwgb3B0aW9ucy5jaGFsbGVuZ2UsIGNhbGxlck9yaWdpbik7Ci0gICAgYXV0
byBjbGllbnREYXRhSnNvbkhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERh
dGFKc29uKTsKLQotICAgIC8vIFN0ZXAgMTgtMjEuCi0gICAgLy8gT25seSBwbGF0Zm9ybSBhdHRh
Y2htZW50cyB3aWxsIGJlIHN1cHBvcnRlZCBhdCB0aGlzIHN0YWdlLiBBc3N1bWluZyBvbmUgYXV0
aGVudGljYXRvciBwZXIgZGV2aWNlLgotICAgIC8vIEFsc28sIHJlc2lkZW50IGtleXMsIHVzZXIg
dmVyaWZpY2F0aW9ucyBhbmQgZGlyZWN0IGF0dGVzdGF0aW9uIGFyZSBlbmZvcmNlZCBhdCB0aGlz
IHRhZ2UuCi0gICAgLy8gRm9yIGJldHRlciBwZXJmb3JtYW5jZSwgdHJhbnNwb3J0cyBvZiBvcHRp
b25zLmV4Y2x1ZGVDcmVkZW50aWFscyBhcmUgY2hlY2tlZCBpbiBMb2NhbEF1dGhlbnRpY2F0b3Iu
Ci0gICAgaWYgKCFtX21lc3NlbmdlcikgIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0
aW9uIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2NsaWVu
dERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCB0aW1lb3V0VGltZXIgPSBXVEZNb3ZlKHRpbWVvdXRUaW1lciksIGFib3J0U2lnbmFs
ID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChFeGNlcHRpb25PcjxDcmVhdGlvblJldHVybkJ1bmRs
ZT4mJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoZGlkVGltZW91dFRpbWVyRmlyZSh0
aW1lb3V0VGltZXIuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoYWJv
cnRTaWduYWwgJiYgYWJvcnRTaWduYWwtPmFib3J0ZWQoKSkgewotICAgICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwu
Il9zIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlc3VsdC5l
eGNlcHRpb24oKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBh
dXRvIGJ1bmRsZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKFB1YmxpY0tleUNyZWRlbnRpYWw6OmNyZWF0ZShXVEZNb3ZlKGJ1bmRsZS5jcmVk
ZW50aWFsSWQpLCBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKFdURk1v
dmUoY2xpZW50RGF0YUpzb24pLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVuZGxlLmF0
dGVzdGF0aW9uT2JqZWN0KSkpKS5wdHIoKSk7Ci0gICAgfTsKLSAgICAvLyBBc3luYyBvcGVyYXRp
b25zIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCi0gICAgbV9t
ZXNzZW5nZXItPm1ha2VDcmVkZW50aWFsKGNsaWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2FsbGVy
T3JpZ2luLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMs
IGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9y
dFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBjb25zdAotewotICAgIHVzaW5n
IG5hbWVzcGFjZSBBdXRoZW50aWNhdG9yTWFuYWdlckludGVybmFsOwotCi0gICAgLy8gVGhlIGZv
bGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRl
Q3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCi0gICAgLy8gRklYTUU6IEV4dGVuc2lv
bnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBTa2lwIFN0ZXAgOC05LgotICAgIC8vIFN0ZXAgMSwg
MywgMTMgYXJlIGhhbmRsZWQgYnkgdGhlIGNhbGxlci4KLSAgICAvLyBTdGVwIDIuCi0gICAgaWYg
KCFzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycykgewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24geyBOb3RBbGxvd2VkRXJyb3IsICJUaGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBpcyBu
b3QgdGhlIHNhbWUgYXMgaXRzIGFuY2VzdG9ycy4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAvLyBTdGVwIDQgJiAxNi4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IHRp
bWVvdXRUaW1lciA9IGluaXRUaW1lb3V0VGltZXIob3B0aW9ucy50aW1lb3V0LCBwcm9taXNlKTsK
LQotICAgIC8vIFN0ZXAgNS03LgotICAgIC8vIEZJWE1FKDE4MTk1MCk6IFdlIGxhY2sgZnVuZGFt
ZW50YWwgc3VwcG9ydCBmcm9tIFNlY3VyaXR5T3JpZ2luIHRvIGRldGVybWluZSBpZiBhIGhvc3Qg
aXMgYSB2YWxpZCBkb21haW4gb3Igbm90LgotICAgIC8vIFN0ZXAgNiBpcyB0aGVyZWZvcmUgc2tp
cHBlZC4gQWxzbywgd2UgbGFjayB0aGUgc3VwcG9ydCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGRv
bWFpbiBpcyBhIHJlZ2lzdHJhYmxlCi0gICAgLy8gZG9tYWluIHN1ZmZpeCBvZiBhbm90aGVyIGRv
bWFpbi4gSGVuY2UgcmVzdHJpY3QgdGhlIGNvbXBhcmlzb24gdG8gZXF1YWwgaW4gU3RlcCA3Lgot
ICAgIGlmICghb3B0aW9ucy5ycElkLmlzRW1wdHkoKSAmJiBjYWxsZXJPcmlnaW4uaG9zdCgpICE9
IG9wdGlvbnMucnBJZCkgewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBTZWN1
cml0eUVycm9yLCAiVGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgaXMgbm90IGEgcmVnaXN0cmFi
bGUgZG9tYWluIHN1ZmZpeCBvZiB0aGUgcHJvdmlkZWQgUlAgSUQuIl9zIH0pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmIChvcHRpb25zLnJwSWQuaXNFbXB0eSgpKQotICAgICAgICBv
cHRpb25zLnJwSWQgPSBjYWxsZXJPcmlnaW4uaG9zdCgpOwotCi0gICAgLy8gU3RlcCAxMC0xMi4K
LSAgICBhdXRvIGNsaWVudERhdGFKc29uID0gcHJvZHVjZUNsaWVudERhdGFKc29uKENsaWVudERh
dGFUeXBlOjpHZXQsIG9wdGlvbnMuY2hhbGxlbmdlLCBjYWxsZXJPcmlnaW4pOwotICAgIGF1dG8g
Y2xpZW50RGF0YUpzb25IYXNoID0gcHJvZHVjZUNsaWVudERhdGFKc29uSGFzaChjbGllbnREYXRh
SnNvbik7Ci0KLSAgICAvLyBTdGVwIDE0LTE1LCAxNy0xOS4KLSAgICAvLyBPbmx5IHBsYXRmb3Jt
IGF0dGFjaG1lbnRzIHdpbGwgYmUgc3VwcG9ydGVkIGF0IHRoaXMgc3RhZ2UuIEFzc3VtaW5nIG9u
ZSBhdXRoZW50aWNhdG9yIHBlciBkZXZpY2UuCi0gICAgLy8gQWxzbywgcmVzaWRlbnQga2V5cywg
dXNlciB2ZXJpZmljYXRpb25zIGFuZCBkaXJlY3QgYXR0ZXN0YXRpb24gYXJlIGVuZm9yY2VkIGF0
IHRoaXMgdGFnZS4KLSAgICAvLyBGb3IgYmV0dGVyIHBlcmZvcm1hbmNlLCBmaWx0ZXJpbmcgb2Yg
b3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzIGlzIGRvbmUgaW4gTG9jYWxBdXRoZW50aWNhdG9yLgot
ICAgIGlmICghbV9tZXNzZW5nZXIpICB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFtjbGllbnRE
YXRhSnNvbiA9IFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgdGltZW91dFRpbWVyID0gV1RGTW92ZSh0aW1lb3V0VGltZXIpLCBhYm9ydFNpZ25hbCA9
IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoRXhjZXB0aW9uT3I8QXNzZXJ0aW9uUmV0dXJuQnVuZGxl
PiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChkaWRUaW1lb3V0VGltZXJGaXJlKHRp
bWVvdXRUaW1lci5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhYm9y
dFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRlZCgpKSB7Ci0gICAgICAgICAgICBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4i
X3MgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LmV4
Y2VwdGlvbigpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1
dG8gYnVuZGxlID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICBwcm9taXNl
LnJlc29sdmUoUHVibGljS2V5Q3JlZGVudGlhbDo6Y3JlYXRlKFdURk1vdmUoYnVuZGxlLmNyZWRl
bnRpYWxJZCksIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKFdURk1vdmUo
Y2xpZW50RGF0YUpzb24pLCBXVEZNb3ZlKGJ1bmRsZS5hdXRoZW50aWNhdG9yRGF0YSksIFdURk1v
dmUoYnVuZGxlLnNpZ25hdHVyZSksIFdURk1vdmUoYnVuZGxlLnVzZXJIYW5kbGUpKSkucHRyKCkp
OwotICAgIH07Ci0gICAgLy8gQXN5bmMgb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFu
ZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgotICAgIG1fbWVzc2VuZ2VyLT5nZXRBc3NlcnRpb24oY2xp
ZW50RGF0YUpzb25IYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19
Ci0KLXZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9t
aXNlKSBjb25zdAotewotICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3
dy53My5vcmcvVFIvd2ViYXV0aG4vI2lzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRv
ckF2YWlsYWJsZQotICAgIC8vIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KLSAgICBpZiAoIW1fbWVz
c2VuZ2VyKSAgewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBVbmtub3duRXJy
b3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIEZJWE1FKDE4Mjc2Nyk6IFdlIHNob3VsZCBjb25zaWRlciBtb3JlIG9uIHRo
ZSBhc3Nlc3NtZW50IG9mIHRoZSByZXR1cm4gdmFsdWUuIFJpZ2h0IG5vdywgd2UgcmV0dXJuIHRy
dWUvZmFsc2UKLSAgICAvLyBpbW1lZGlhdGVseSBhY2NvcmRpbmcgdG8gcGxhdGZvcm0gc3BlY2lm
aWMgcHJvY2VkdXJlcy4KLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoYm9vbCByZXN1bHQpIG11dGFibGUgewotICAgICAgICBwcm9taXNl
LnJlc29sdmUocmVzdWx0KTsKLSAgICB9OwotICAgIC8vIEFzeW5jIG9wZXJhdGlvbiBhcmUgZGlz
cGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgotICAgIG1fbWVzc2VuZ2VyLT5p
c1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2MzcyNzZkZGU2NzhjMjNiMGM5MjE5OGQxZmY3OWRhYjM1ZjZjYTVhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJfQVVU
SE4pCi0KLSNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBYm9ydFNpZ25hbDsKLWNs
YXNzIEJhc2ljQ3JlZGVudGlhbDsKLWNsYXNzIENyZWRlbnRpYWxzTWVzc2VuZ2VyOwotY2xhc3Mg
U2VjdXJpdHlPcmlnaW47Ci0KLXN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zOwotc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKLQotdXNpbmcg
Q3JlZGVudGlhbFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50
ZXJmYWNlPEJhc2ljQ3JlZGVudGlhbD4+PjsKLQotY2xhc3MgQXV0aGVudGljYXRvck1hbmFnZXIg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JNYW5hZ2VyKTsKLSAgICBm
cmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8QXV0aGVudGljYXRvck1hbmFnZXI+OwotcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlciYgc2luZ2xl
dG9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZXNzZW5nZXIoQ3JlZGVudGlhbHNN
ZXNzZW5nZXImKTsKLQotICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgc3Rh
dGljIG1ldGhvZHMgb2YgUHVibGljS2V5Q3JlZGVudGlhbC4KLSAgICB2b2lkIGNyZWF0ZShjb25z
dCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMmLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYs
IENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0OwotICAgIHZvaWQgZGlzY292ZXJGcm9tRXh0ZXJu
YWxTb3VyY2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMmLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJv
cnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0OwotICAgIHZvaWQgaXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJl
ZDxJRExCb29sZWFuPiYmKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBBdXRoZW50aWNhdG9yTWFu
YWdlcigpID0gZGVmYXVsdDsKLQotICAgIFdlYWtQdHI8Q3JlZGVudGlhbHNNZXNzZW5nZXI+IG1f
bWVzc2VuZ2VyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGI4ZjA5NDZkYzNlMDBkNGUzODQ5OTI1NmNjMWQ5MjMyNzJkMDc1Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3JSZXNwb25zZS5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1BdXRoZW50aWNhdG9yUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04pCi0gICAgOiBtX2Ns
aWVudERhdGFKU09OKFdURk1vdmUoY2xpZW50RGF0YUpTT04pKQotewotfQotCi1BcnJheUJ1ZmZl
ciogQXV0aGVudGljYXRvclJlc3BvbnNlOjpjbGllbnREYXRhSlNPTigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fY2xpZW50RGF0YUpTT04uZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaAppbmRleCA1NTI4
YzAzMDM0ZjUyMWM1NGMzMTQxMmQ1ZTYzYjc2ZWE3ZThmYWFjLi5jYjdlMDdlNTJlYzk0ZDRlMTQy
MDRlMTY2MzM1OTZiOTViMTAwZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmgKQEAgLTQwLDE1ICs0MCwxOCBA
QCBwdWJsaWM6CiAgICAgICAgIEF0dGVzdGF0aW9uCiAgICAgfTsKIAotICAgIGV4cGxpY2l0IEF1
dGhlbnRpY2F0b3JSZXNwb25zZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOworICAgIGV4cGxpY2l0
IEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04p
CisgICAgICAgIDogbV9jbGllbnREYXRhSlNPTihXVEZNb3ZlKGNsaWVudERhdGFKU09OKSkKKyAg
ICB7CisgICAgfQogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JSZXNwb25zZSgpID0gZGVmYXVs
dDsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwogCi0gICAgQXJyYXlCdWZm
ZXIqIGNsaWVudERhdGFKU09OKCkgY29uc3Q7CisgICAgQXJyYXlCdWZmZXIqIGNsaWVudERhdGFK
U09OKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnREYXRhSlNPTi5wdHIoKTsgfQogCiBwcml2YXRl
OgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9jbGllbnREYXRhSlNPTjsKKyAgICBSZWY8QXJy
YXlCdWZmZXI+IG1fY2xpZW50RGF0YUpTT047CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNy
ZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlD
cmVkZW50aWFsLmNwcAppbmRleCAxMTJmNDBhNjM0MmY2MmM3NmM1NDY1YmZlYWU4YzdiYzU2NWU3
YTEwLi4yMWY3MDBjZjBmMzZjZWE3Nzk2MzhmNDQwYmUwY2RhNTg3MjE0ODY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlh
bC5jcHAKQEAgLTI4LDEzICsyOCwzOSBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVB1YmxpY0tleUNyZWRlbnRpYWw6OlB1YmxpY0tleUNyZWRlbnRpYWwoUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGlkLCBSZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiYmIHJl
c3BvbnNlKQorUmVmPFB1YmxpY0tleUNyZWRlbnRpYWw+IFB1YmxpY0tleUNyZWRlbnRpYWw6OmNy
ZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgaWQsIFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYg
cmVzcG9uc2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHVibGljS2V5Q3JlZGVudGlh
bChXVEZNb3ZlKGlkKSwgV1RGTW92ZShyZXNwb25zZSkpKTsKK30KKworUmVmUHRyPFB1YmxpY0tl
eUNyZWRlbnRpYWw+IFB1YmxpY0tleUNyZWRlbnRpYWw6OnRyeUNyZWF0ZShjb25zdCBQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YSYgZGF0YSkKK3sKKyAgICBpZiAoIWRhdGEucmF3SWQgfHwgIWRhdGEu
Y2xpZW50RGF0YUpTT04pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGRhdGEu
aXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkgeworICAgICAgICBpZiAoIWRhdGEu
YXR0ZXN0YXRpb25PYmplY3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdWJsaWNLZXlDcmVkZW50aWFsKGRhdGEucmF3SWQucmVs
ZWFzZU5vbk51bGwoKSwgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShk
YXRhLmNsaWVudERhdGFKU09OLnJlbGVhc2VOb25OdWxsKCksIGRhdGEuYXR0ZXN0YXRpb25PYmpl
Y3QucmVsZWFzZU5vbk51bGwoKSkpKTsKKyAgICB9CisKKyAgICBpZiAoIWRhdGEuYXV0aGVudGlj
YXRvckRhdGEgfHwgIWRhdGEuc2lnbmF0dXJlIHx8ICFkYXRhLnVzZXJIYW5kbGUpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHVibGljS2V5Q3Jl
ZGVudGlhbChkYXRhLnJhd0lkLnJlbGVhc2VOb25OdWxsKCksIEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZTo6Y3JlYXRlKGRhdGEuY2xpZW50RGF0YUpTT04ucmVsZWFzZU5vbk51bGwoKSwg
ZGF0YS5hdXRoZW50aWNhdG9yRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLnNpZ25hdHVyZS5y
ZWxlYXNlTm9uTnVsbCgpLCBkYXRhLnVzZXJIYW5kbGUucmVsZWFzZU5vbk51bGwoKSkpKTsKK30K
KworUHVibGljS2V5Q3JlZGVudGlhbDo6UHVibGljS2V5Q3JlZGVudGlhbChSZWY8QXJyYXlCdWZm
ZXI+JiYgaWQsIFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYgcmVzcG9uc2UpCiAgICAgOiBC
YXNpY0NyZWRlbnRpYWwoV1RGOjpiYXNlNjRVUkxFbmNvZGUoaWQtPmRhdGEoKSwgaWQtPmJ5dGVM
ZW5ndGgoKSksIFR5cGU6OlB1YmxpY0tleSwgRGlzY292ZXJ5OjpSZW1vdGUpCiAgICAgLCBtX3Jh
d0lkKFdURk1vdmUoaWQpKQogICAgICwgbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKQEAg
LTQ2LDkgKzcyLDkgQEAgRXhjZXB0aW9uT3I8Ym9vbD4gUHVibGljS2V5Q3JlZGVudGlhbDo6Z2V0
Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpIGNvbnN0CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07CiB9CiAKLXZvaWQgUHVibGljS2V5Q3JlZGVudGlhbDo6aXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJl
ZDxJRExCb29sZWFuPiYmIHByb21pc2UpCit2b2lkIFB1YmxpY0tleUNyZWRlbnRpYWw6OmlzVXNl
clZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShEb2N1bWVudCYgZG9jdW1l
bnQsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCiB7Ci0gICAgQXV0
aGVudGljYXRvck1hbmFnZXI6OnNpbmdsZXRvbigpLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZShXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBkb2N1bWVudC5wYWdl
KCktPmF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZShXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9Q
dWJsaWNLZXlDcmVkZW50aWFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1
YmxpY0tleUNyZWRlbnRpYWwuaAppbmRleCBmZGVkYzU4OWIzMDM0MTE1N2RhZTNiYjdiYWE0Mjc0
ZmI2ZmE5YmE0Li4zMGZjZTQyMDJiZWJhZjBhOTgyZWNhOGZmM2U5ZWMzYjg5YmQ3MjlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRp
YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRl
bnRpYWwuaApAQCAtMzYsMjggKzM2LDI5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEF1dGhlbnRpY2F0b3JSZXNwb25zZTsKK2NsYXNzIERvY3VtZW50OworCitzdHJ1Y3QgUHVibGlj
S2V5Q3JlZGVudGlhbERhdGE7CiAKIGNsYXNzIFB1YmxpY0tleUNyZWRlbnRpYWwgZmluYWwgOiBw
dWJsaWMgQmFzaWNDcmVkZW50aWFsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFB1YmxpY0tl
eUNyZWRlbnRpYWw+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgaWQsIFJlZlB0cjxBdXRo
ZW50aWNhdG9yUmVzcG9uc2U+JiYgcmVzcG9uc2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBQdWJsaWNLZXlDcmVkZW50aWFsKFdURk1vdmUoaWQpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFB1YmxpY0tleUNyZWRlbnRpYWw+IGNyZWF0
ZShSZWY8QXJyYXlCdWZmZXI+JiYgaWQsIFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8UHVibGljS2V5Q3JlZGVudGlhbD4gdHJ5Q3JlYXRlKGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhJik7CiAKLSAgICBBcnJheUJ1ZmZlciogcmF3SWQoKSBjb25z
dCB7IHJldHVybiBtX3Jhd0lkLmdldCgpOyB9Ci0gICAgQXV0aGVudGljYXRvclJlc3BvbnNlKiBy
ZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UuZ2V0KCk7IH0KKyAgICBBcnJheUJ1
ZmZlciogcmF3SWQoKSBjb25zdCB7IHJldHVybiBtX3Jhd0lkLnB0cigpOyB9CisgICAgQXV0aGVu
dGljYXRvclJlc3BvbnNlKiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UucHRy
KCk7IH0KICAgICAvLyBOb3Qgc3VwcG9ydCB5ZXQuIEFsd2F5cyB0aHJvd3MuCiAgICAgRXhjZXB0
aW9uT3I8Ym9vbD4gZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpIGNvbnN0OwogCi0gICAgc3Rh
dGljIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERP
TVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpc1VzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoRG9jdW1lbnQmLCBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7CiAKIHByaXZhdGU6Ci0gICAgUHVibGljS2V5Q3Jl
ZGVudGlhbChSZWZQdHI8QXJyYXlCdWZmZXI+JiYgaWQsIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVz
cG9uc2U+JiYpOworICAgIFB1YmxpY0tleUNyZWRlbnRpYWwoUmVmPEFycmF5QnVmZmVyPiYmIGlk
LCBSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiYmKTsKIAogICAgIFR5cGUgY3JlZGVudGlhbFR5
cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpQdWJsaWNLZXk7IH0KIAotICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gbV9yYXdJZDsKLSAgICBSZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNl
PiBtX3Jlc3BvbnNlOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9yYXdJZDsKKyAgICBSZWY8QXV0
aGVudGljYXRvclJlc3BvbnNlPiBtX3Jlc3BvbnNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNL
ZXlDcmVkZW50aWFsLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGlj
S2V5Q3JlZGVudGlhbC5pZGwKaW5kZXggNzdiMWI3MjQwYjU5MWIyNDNkZWE5ODc5MjBkNDc0MjBl
ZmJjNTZhZC4uZDUxZjA2ZDQwZGQ5ZTRlYzNjNmEyODk3NjcyNjIwZmUyYjg1Zjk3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFs
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRl
bnRpYWwuaWRsCkBAIC0zNSw1ICszNSw1IEBAIHR5cGVkZWYgYm9vbGVhbiBBdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnM7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdXRoZW50
aWNhdG9yUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSBBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnMgZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpOwogCi0gICAgc3Rh
dGljIFByb21pc2U8Ym9vbGVhbj4gaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
QXZhaWxhYmxlKCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBzdGF0aWMgUHJvbWlzZTxib29s
ZWFuPiBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCmluZGV4IDc2MGU4ZmRhNWYx
ZTc1MTc3Y2VmZWY3NTE1ODZlYWI0OTQwNDMzYzguLmRhOWUzMTNlNjg0MmJkMGFlODU2Yzk4M2Ri
MDJkMjZjZTA0YjU1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5o
CkBAIC05NCw5ICs5NCw5IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewogICAgIGVuY29kZXIgPDwgcnAuaWQgPDwgcnAubmFtZSA8PCBycC5pY29uOwotICAgIFZl
Y3Rvcjx1aW50OF90PiBpZFZlY3RvcjsKLSAgICBpZFZlY3Rvci5hcHBlbmQodXNlci5pZC5kYXRh
KCksIHVzZXIuaWQubGVuZ3RoKCkpOwotICAgIGVuY29kZXIgPDwgaWRWZWN0b3IgPDwgdXNlci5k
aXNwbGF5TmFtZSA8PCB1c2VyLm5hbWUgPDwgdXNlci5pY29uIDw8IHB1YktleUNyZWRQYXJhbXMg
PDwgZXhjbHVkZUNyZWRlbnRpYWxzOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHVzZXIuaWQubGVuZ3RoKCkpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVzZXIuaWQuZGF0YSgpKSwgdXNlci5p
ZC5sZW5ndGgoKSwgMSk7CisgICAgZW5jb2RlciA8PCB1c2VyLmRpc3BsYXlOYW1lIDw8IHVzZXIu
bmFtZSA8PCB1c2VyLmljb24gPDwgcHViS2V5Q3JlZFBhcmFtcyA8PCBleGNsdWRlQ3JlZGVudGlh
bHM7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0xMDksOCArMTA5LDE1IEBAIHN0
ZDo6b3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4gUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucnAuaWNvbikpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXNlci5pZFZlY3Rvcikp
CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB1c2VySWRMZW5ndGg7CisgICAgZGVjb2Rl
ciA+PiB1c2VySWRMZW5ndGg7CisgICAgaWYgKCF1c2VySWRMZW5ndGgpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0LnVzZXIuaWRWZWN0b3IucmVzZXJ2ZUNhcGFjaXR5
KHVzZXJJZExlbmd0aC52YWx1ZSgpKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5n
dGhEYXRhKHJlc3VsdC51c2VyLmlkVmVjdG9yLmRhdGEoKSwgdXNlcklkTGVuZ3RoLnZhbHVlKCks
IDEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQudXNlci5kaXNwbGF5TmFtZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXNlci5uYW1lKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlh
bERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMjlmYjg3Zjc4MGE1YmY1MmMwMmIwMmM1NjljMDdkYWM1MDM1
ODc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9Q
dWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1dGhlbnRpY2F0b3JSZXNwb25zZTsKKworc3RydWN0
IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsKKyAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gcmF3SWQ7CisKKyAgICAvLyBBdXRoZW50aWNhdG9yUmVzcG9uc2UKKyAgICBib29sIGlzQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CisgICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlC
dWZmZXI+IGNsaWVudERhdGFKU09OOworCisgICAgLy8gQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UKKyAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXR0ZXN0YXRpb25PYmpl
Y3Q7CisKKyAgICAvLyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UKKyAgICBtdXRhYmxl
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXV0aGVudGljYXRvckRhdGE7CisgICAgbXV0YWJsZSBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHNpZ25hdHVyZTsKKyAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdXNlckhhbmRsZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gZGVjb2RlKERlY29kZXImKTsKK307
CisKKy8vIE5vdGVkOiBjbGllbnREYXRhSlNPTiBpcyBuZXZlciBlbmNvZGVkIG9yIGRlY29kZWQg
YXMgaXQgaXMgbmV2ZXIgc2VudCBhY3Jvc3MgZGlmZmVyZW50IHByb2Nlc3Nlcy4KK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Cit2b2lkIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihyYXdJZC0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihyYXdJZC0+ZGF0YSgpKSwgcmF3
SWQtPmJ5dGVMZW5ndGgoKSwgMSk7CisKKyAgICBlbmNvZGVyIDw8IGlzQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2U7CisKKyAgICBpZiAoaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZSkgeworICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhdHRl
c3RhdGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXR0ZXN0YXRpb25P
YmplY3QtPmRhdGEoKSksIGF0dGVzdGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCksIDEpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oYXV0aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXV0aGVudGlj
YXRvckRhdGEtPmRhdGEoKSksIGF1dGhlbnRpY2F0b3JEYXRhLT5ieXRlTGVuZ3RoKCksIDEpOwor
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpZ25hdHVyZS0+Ynl0ZUxlbmd0
aCgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihzaWduYXR1cmUtPmRhdGEoKSksIHNpZ25hdHVyZS0+Ynl0ZUxlbmd0
aCgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1c2VySGFuZGxl
LT5ieXRlTGVuZ3RoKCkpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVzZXJIYW5kbGUtPmRhdGEoKSksIHVzZXJIYW5k
bGUtPmJ5dGVMZW5ndGgoKSwgMSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6
Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUHVibGljS2V5Q3JlZGVudGlhbERh
dGEgcmVzdWx0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcmF3SWRMZW5ndGg7Cisg
ICAgZGVjb2RlciA+PiByYXdJZExlbmd0aDsKKyAgICBpZiAoIXJhd0lkTGVuZ3RoKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmVzdWx0LnJhd0lkID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShyYXdJZExlbmd0aC52YWx1ZSgpLCBzaXplb2YodWludDhfdCkpOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
cmVzdWx0LnJhd0lkLT5kYXRhKCkpLCByYXdJZExlbmd0aC52YWx1ZSgpLCAxKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTsKKyAgICBkZWNvZGVyID4+IGlzQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U7CisgICAgaWYgKCFpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJlc3VsdC5pc0F1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlID0gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZS52YWx1ZSgpOworCisgICAgaWYgKHJlc3VsdC5pc0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlKSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGF0dGVz
dGF0aW9uT2JqZWN0TGVuZ3RoOworICAgICAgICBkZWNvZGVyID4+IGF0dGVzdGF0aW9uT2JqZWN0
TGVuZ3RoOworICAgICAgICBpZiAoIWF0dGVzdGF0aW9uT2JqZWN0TGVuZ3RoKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICByZXN1bHQuYXR0ZXN0YXRpb25PYmpl
Y3QgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0TGVuZ3RoLnZhbHVlKCks
IHNpemVvZih1aW50OF90KSk7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0LmF0dGVzdGF0aW9uT2JqZWN0
LT5kYXRhKCkpLCBhdHRlc3RhdGlvbk9iamVjdExlbmd0aC52YWx1ZSgpLCAxKSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBhdXRoZW50aWNhdG9yRGF0YUxlbmd0aDsK
KyAgICBkZWNvZGVyID4+IGF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoOworICAgIGlmICghYXV0aGVu
dGljYXRvckRhdGFMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXN1bHQuYXV0aGVudGljYXRvckRhdGEgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0
b3JEYXRhTGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90KSk7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQu
YXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSksIGF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoLnZhbHVl
KCksIDEpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gc2lnbmF0dXJlTGVuZ3RoOworICAgIGRlY29kZXIgPj4gc2lnbmF0dXJlTGVu
Z3RoOworICAgIGlmICghc2lnbmF0dXJlTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgcmVzdWx0LnNpZ25hdHVyZSA9IEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0
dXJlTGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90KSk7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQuc2ln
bmF0dXJlLT5kYXRhKCkpLCBzaWduYXR1cmVMZW5ndGgudmFsdWUoKSwgMSkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB1c2VySGFu
ZGxlTGVuZ3RoOworICAgIGRlY29kZXIgPj4gdXNlckhhbmRsZUxlbmd0aDsKKyAgICBpZiAoIXVz
ZXJIYW5kbGVMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXN1
bHQudXNlckhhbmRsZSA9IEFycmF5QnVmZmVyOjpjcmVhdGUodXNlckhhbmRsZUxlbmd0aC52YWx1
ZSgpLCBzaXplb2YodWludDhfdCkpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0LnVzZXJIYW5kbGUtPmRhdGEo
KSksIHVzZXJIYW5kbGVMZW5ndGgudmFsdWUoKSwgMSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCmlu
ZGV4IDJhZTQwMzVlOTgyZTJiNmZkODMwNTg5OTEyMDE3NjFhYzJlMTIyNWQuLjI1YzQ2YmNlYTE2
MDkyNTA5ZGU5OWQzMTFhM2Q4YTcwYTVjMDhjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vY29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAt
MzUsMTEgKzM1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEV4Y2VwdGlvbkRh
dGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKK3N0cnVjdCBQ
dWJsaWNLZXlDcmVkZW50aWFsRGF0YTsKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnM7CiAKLXVzaW5nIENyZWF0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpPjsKLXVzaW5nIFJlcXVl
c3RDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+Jik+OwotdXNpbmcgRXhjZXB0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT47Cit1c2luZyBDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoVmFyaWFudDxQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgRXhjZXB0aW9uRGF0YT4mJik+Owog
CiB0eXBlZGVmIHZvaWQgKF5Db21wbGV0aW9uQmxvY2spKFNlY0tleVJlZiBfTnVsbGFibGUgcmVm
ZXJlbmNlS2V5LCBOU0FycmF5ICogX051bGxhYmxlIGNlcnRpZmljYXRlcywgTlNFcnJvciAqIF9O
dWxsYWJsZSBlcnJvcik7CiAKQEAgLTUwLDggKzQ5LDggQEAgcHVibGljOgogICAgIExvY2FsQXV0
aGVudGljYXRvcigpOwogICAgIHZpcnR1YWwgfkxvY2FsQXV0aGVudGljYXRvcigpID0gZGVmYXVs
dDsKIAotICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNo
LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQ3JlYXRpb25DYWxs
YmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKTsKLSAgICB2b2lkIGdldEFzc2VydGlvbihjb25z
dCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyYsIFJlcXVlc3RDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKTsKKyAgICB2
b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIENhbGxiYWNrJiYpOworICAgIHZvaWQg
Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgQ2FsbGJhY2smJik7CiAgICAgYm9vbCBpc0F2YWls
YWJsZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vY29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDQw
Yzg2MzFlZjAwMmI2MDBkN2QzZGE3OWI5YTkzYjQxNGI1MzkyM2MuLjk2NWQxZjI4YTczMjk2OGZh
YzUxNmJmNzA0YjM1NGEyMzNmYTM1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vY29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vY29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0zMiw2
ICszMiw3IEBACiAjaW1wb3J0ICJDT1NFQ29uc3RhbnRzLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25E
YXRhLmgiCiAjaW1wb3J0ICJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgiCisj
aW1wb3J0ICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgogI2ltcG9ydCAiUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zLmgiCiAjaW1wb3J0IDxTZWN1cml0eS9TZWNJdGVtLmg+CiAj
aW1wb3J0IDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgpAQCAtMTE1LDcgKzExNiw3IEBAIExv
Y2FsQXV0aGVudGljYXRvcjo6TG9jYWxBdXRoZW50aWNhdG9yKCkKICAgICBSRUxFQVNFX0FTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc0NyZWRlbnRp
YWxzKSk7CiB9CiAKLXZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMmIG9wdGlvbnMsIENyZWF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaykKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpt
YWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIENhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogCkBA
IC0xMjQsNyArMTI1LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFs
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICBBU1NFUlRfVU5V
U0VEKGhhc2gsIGhhc2ggPT0gaGFzaCk7CiAgICAgQVNTRVJUX1VOVVNFRChvcHRpb25zLCAhb3B0
aW9ucy5ycC5pZC5pc0VtcHR5KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FsbGJhY2ssIGNhbGxi
YWNrKTsKLSAgICBleGNlcHRpb25DYWxsYmFjayh7IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxp
YWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CisgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7
IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CiAj
ZWxzZQogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcv
VFIvd2ViYXV0aG4vI29wLW1ha2UtY3JlZCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8g
U2tpcCBTdGVwIDQtNSBhcyByZXF1aXJlUmVzaWRlbnRLZXkgYW5kIHJlcXVpcmVVc2VyVmVyaWZp
Y2F0aW9uIGFyZSBlbmZvcmNlZC4KQEAgLTEzOSw3ICsxNDAsNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25z
dCBQdWJsaQogICAgICAgICB9CiAgICAgfQogICAgIGlmICghY2FuRnVsbGZpbGxQdWJLZXlDcmVk
UGFyYW1zKSB7Ci0gICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55
IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiJfcyB9KTsKKyAgICAgICAg
Y2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIHBsYXRmb3Jt
IGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IgZG9lc24ndCBzdXBwb3J0IGFueSBwcm92aWRlZCBQdWJs
aWNLZXlDcmVkZW50aWFsUGFyYW1ldGVycy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTE1OCw3ICsxNTksNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRl
bnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgICAgICBP
U1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25h
cnlSZWYpcXVlcnksICZhdHRyaWJ1dGVzQXJyYXlSZWYpOwogICAgICAgICBpZiAoc3RhdHVzICYm
IHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKICAgICAgICAgICAgIExPR19FUlJPUigi
Q291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICVkIiwgc3RhdHVzKTsKLSAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3Mg
fSk7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAi
VW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJp
YnV0ZXNBcnJheVJlZik7CkBAIC0xNjYsNyArMTY3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0
b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVi
bGkKICAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKm5zQXR0cmlidXRlcyBpbiAoTlNBcnJheSAq
KWF0dHJpYnV0ZXNBcnJheVJlZikgewogICAgICAgICAgICAgTlNEYXRhICpuc0NyZWRlbnRpYWxJ
ZCA9IG5zQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXTsKICAgICAgICAg
ICAgIGlmIChleGNsdWRlQ3JlZGVudGlhbElkcy5jb250YWlucyhTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4obnNDcmVkZW50aWFsSWQuYnl0ZXMpLCBuc0NyZWRlbnRpYWxJZC5s
ZW5ndGgpKSkgewotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgTm90QWxsb3dl
ZEVycm9yLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUg
ZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRp
Y2F0b3IuIl9zIH0pOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBO
b3RBbGxvd2VkRXJyb3IsICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5
IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQg
YXV0aGVudGljYXRvci4iX3MgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0xODAsMTcgKzE4MSwxNyBAQCB2b2lkIExvY2FsQXV0aGVudGlj
YXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQ
dWJsaQogICAgIGlmICghW2NvbnRleHQgY2FuRXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VP
d25lckF1dGhlbnRpY2F0aW9uV2l0aEJpb21ldHJpY3MgZXJyb3I6JmVycm9yXSkgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkbid0IGV2YWx1YXRlIGF1dGhlbnRpY2F0aW9uIHdpdGggYmlvbWV0
cmljcyBwb2xpY3k6ICVAIiwgZXJyb3IpOwogICAgICAgICAvLyBGSVhNRSgxODI3NjcpCi0gICAg
ICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgTm90QWxsb3dlZEVycm9yLCAiTm8gYXZhbGlhYmxlIGF1
dGhlbnRpY2F0b3JzLiJfcyB9KTsKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5v
dEFsbG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBOU1N0cmluZyAqcmVhc29uID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJBbGxvdyAlQCB0byBjcmVhdGUgYSBwdWJsaWMga2V5IGNyZWRlbnRp
YWwgZm9yICVAIiwgKGlkKW9wdGlvbnMucnAuaWQsIChpZClvcHRpb25zLnVzZXIubmFtZV07CiAg
ICAgLy8gRklYTUUoMTgzNTM0KTogT3B0aW1pemUgdGhlIGZvbGxvd2luZyBuZXN0ZWQgY2FsbGJh
Y2tzIGFuZCB0aHJlYWRpbmcuCi0gICAgW2NvbnRleHQgZXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lE
ZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uV2l0aEJpb21ldHJpY3MgbG9jYWxpemVkUmVhc29uOnJl
YXNvbiByZXBseTpCbG9ja1B0cjx2b2lkKEJPT0wsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUo
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBvcHRp
b25zID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlvbnMpLCBoYXNoXSAoQk9PTCBzdWNjZXNzLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgW2NvbnRleHQgZXZhbHVhdGVQb2xpY3k6TEFQb2xp
Y3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uV2l0aEJpb21ldHJpY3MgbG9jYWxpemVkUmVhc29u
OnJlYXNvbiByZXBseTpCbG9ja1B0cjx2b2lkKEJPT0wsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFi
bGUoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBvcHRpb25zID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlvbnMpLCBoYXNoXSAoQk9PTCBz
dWNjZXNzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgICAgICBpZiAoIXN1Y2Nlc3MgfHwgZXJyb3IpIHsKICAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGRuJ3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczogJUAiLCBl
cnJvcik7Ci0gICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IE5vdEFsbG93ZWRFcnJvciwg
IkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOworICAgICAgICAgICAgY2FsbGJhY2so
RXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNl
bnQuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIwNSw3ICsy
MDYsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgICAgICBPU1N0YXR1cyBzdGF0dXMg
PSBTZWNJdGVtRGVsZXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkpOwog
ICAgICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKICAg
ICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZGV0ZWxlIG9sZGVyIGNyZWRlbnRpYWw6ICVk
Iiwgc3RhdHVzKTsKLSAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9y
LCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgICAgICBjYWxsYmFjayhF
eGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3Mg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjEzLDExICsyMTQsMTEg
QEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICAgICAgLy8gRklYTUUoMTgzNTM0KQogICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhp
cy0+aXNzdWVDbGllbnRDZXJ0aWZpY2F0ZShvcHRpb25zLnJwLmlkLCBvcHRpb25zLnVzZXIubmFt
ZSwgaGFzaCwgQmxvY2tQdHI8dm9pZChTZWNLZXlSZWYsIE5TQXJyYXkgKiwgTlNFcnJvciAqKT46
OmZyb21DYWxsYWJsZShbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgb3B0aW9ucyA9IGNyb3NzVGhyZWFk
Q29weShvcHRpb25zKV0gKF9OdWxsYWJsZSBTZWNLZXlSZWYgcHJpdmF0ZUtleSwgTlNBcnJheSAq
IF9OdWxsYWJsZSBjZXJ0aWZpY2F0ZXMsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAg
ICAgICAgd2Vha1RoaXMtPmlzc3VlQ2xpZW50Q2VydGlmaWNhdGUob3B0aW9ucy5ycC5pZCwgb3B0
aW9ucy51c2VyLm5hbWUsIGhhc2gsIEJsb2NrUHRyPHZvaWQoU2VjS2V5UmVmLCBOU0FycmF5ICos
IE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IG9wdGlvbnMgPSBjcm9zc1RocmVhZENvcHkob3B0aW9ucyldIChfTnVsbGFibGUgU2VjS2V5UmVm
IHByaXZhdGVLZXksIE5TQXJyYXkgKiBfTnVsbGFibGUgY2VydGlmaWNhdGVzLCBOU0Vycm9yICog
X051bGxhYmxlIGVycm9yKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3QgYXR0ZXN0OiAlQCIsIGVycm9yKTsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxs
YmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJVbmtu
b3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAvLyBBdHRlc3RhdGlvbiBDZXJ0aWZpY2F0ZSBhbmQgQXR0
ZXN0YXRpb24gSXNzdWluZyBDQQpAQCAtMjUwLDcgKzI1MSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0
IFB1YmxpCiAgICAgICAgICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRj
aGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNyZWRlbnRpYWxJZFF1ZXJ5LCAmYXR0cmli
dXRlc1JlZik7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdldCBDcmVkZW50aWFsIElEOiAlZCIsIHN0YXR1cyk7
Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAi
VW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9y
LiJfcyB9KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXMgPSBhZG9wdENGKGF0dHJpYnV0
ZXNSZWYpOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtl
Q3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAg
ICAgICAgICAgICAgc3RhdHVzID0gU2VjSXRlbVVwZGF0ZSgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKXVwZGF0ZVF1ZXJ5LCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXVwZGF0ZVBhcmFtcyk7
CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICBMT0df
RVJST1IoIkNvdWxkbid0IHVwZGF0ZSB0aGUgS2V5Y2hhaW4gaXRlbTogJWQiLCBzdGF0dXMpOwot
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVu
a25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4i
X3MgfSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC0zMDQsNyArMzA1LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkK
ICAgICAgICAgICAgICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JSZWYpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZXhwb3J0IHRoZSBwdWJsaWMga2V5OiAlQCIsIChO
U0Vycm9yKillcnJvclJlZik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxs
YmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJv
ciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVCgoKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0KCkpLmxlbmd0aCA9PSAoMSArIDIg
KiBFUzI1NktleVNpemVJbkJ5dGVzKSk7IC8vIDA0IHwgWCB8IFkKQEAgLTMyNSw3ICszMjYsNyBA
QCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgICAgICAgICAgICAgIGF1dG8gY29zZVB1Ymxp
Y0tleSA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKHB1
YmxpY0tleU1hcCkpKTsKICAgICAgICAgICAgICAgICBpZiAoIWNvc2VQdWJsaWNLZXkpIHsKICAg
ICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBlbmNvZGUgdGhlIHB1YmxpYyBr
ZXkgaW50byBDT1NFIGJpbmFyaWVzLiIpOwotICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwor
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9y
LCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYXR0ZXN0ZWRDcmVkZW50
aWFsRGF0YS5hcHBlbmRWZWN0b3IoY29zZVB1YmxpY0tleS52YWx1ZSgpKTsKQEAgLTM0Nyw3ICsz
NDgsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgICAgICAgICAgICAgICAgICBhdXRv
IHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJvclJlZik7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChlcnJvclJlZikgewogICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4n
dCBnZW5lcmF0ZSB0aGUgc2lnbmF0dXJlOiAlQCIsIChOU0Vycm9yKillcnJvclJlZik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVu
a25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJy
b3IuIl9zIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gbnNTaWduYXR1cmUgPSAoTlNEYXRh
ICopc2lnbmF0dXJlUmVmLmdldCgpOwpAQCAtMzc0LDE3ICszNzUsMTcgQEAgdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwg
Y29uc3QgUHVibGkKICAgICAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBjYm9yOjpD
Qk9SV3JpdGVyOjp3cml0ZShjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZShhdHRlc3RhdGlvbk9iamVj
dE1hcCkpKTsKICAgICAgICAgICAgIGlmICghYXR0ZXN0YXRpb25PYmplY3QpIHsKICAgICAgICAg
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGVuY29kZSB0aGUgYXR0ZXN0YXRpb24gb2JqZWN0
LiIpOwotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAi
VW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2so
RXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9z
IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgY2FsbGJhY2soY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdC52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgQXJyYXlCdWZmZXI6
OmNyZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwgdHJ1ZSwg
bnVsbHB0ciwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC52YWx1ZSgpLmRh
dGEoKSwgYXR0ZXN0YXRpb25PYmplY3QudmFsdWUoKS5zaXplKCkpLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyIH0pOwogICAgICAgICB9KS5nZXQoKSk7CiAgICAgfSkuZ2V0KCldOwogI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCiB9CiAKLXZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3Nl
cnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlcXVlc3RDYWxsYmFjayYmIGNhbGxiYWNrLCBF
eGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrKQordm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7
CiAKQEAgLTM5Myw3ICszOTQsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0
aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljSwogICAgIEFTU0VS
VF9VTlVTRUQoaGFzaCwgaGFzaCA9PSBoYXNoKTsKICAgICBBU1NFUlRfVU5VU0VEKG9wdGlvbnMs
ICFvcHRpb25zLnJwSWQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNhbGxiYWNrLCBj
YWxsYmFjayk7Ci0gICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBOb3RBbGxvd2VkRXJyb3IsICJObyBh
dmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9zIH0pOworICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRh
dGEgeyBOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9zIH0p
OwogI2Vsc2UKICAgICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMu
b3JnL1RSL3dlYmF1dGhuLyNvcC1nZXQtYXNzZXJ0aW9uIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4K
ICAgICAvLyBTa2lwIFN0ZXAgMiBhcyByZXF1aXJlVXNlclZlcmlmaWNhdGlvbiBpcyBlbmZvcmNl
ZC4KQEAgLTQwMiw3ICs0MDMsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0
aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljSwogICAgIC8vIFN0
ZXAgMy01LiBVbmxpa2UgdGhlIHNwZWMsIGlmIGFuIGFsbG93IGxpc3QgaXMgcHJvdmlkZWQgYW5k
IHRoZXJlIGlzIG5vIGludGVyc2VjdGlvbiBiZXR3ZWVuIGV4aXN0aW5nIG9uZXMgYW5kIHRoZSBh
bGxvdyBsaXN0LCB3ZSBhbHdheXMgcmV0dXJuIE5vdEFsbG93ZWRFcnJvci4KICAgICBIYXNoU2V0
PFN0cmluZz4gYWxsb3dDcmVkZW50aWFsSWRzID0gcHJvZHVjZUhhc2hTZXQob3B0aW9ucy5hbGxv
d0NyZWRlbnRpYWxzKTsKICAgICBpZiAoIW9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5
KCkgJiYgYWxsb3dDcmVkZW50aWFsSWRzLmlzRW1wdHkoKSkgewotICAgICAgICBleGNlcHRpb25D
YWxsYmFjayh7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZv
dW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAg
ICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQg
Y3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNh
dG9yLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDE4LDcgKzQxOSw3IEBA
IHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNv
cHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0Fy
cmF5UmVmKTsKICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0
dXMpOwotICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24g
aW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsg
VW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0
dHJpYnV0ZXNBcnJheVJlZik7CkBAIC00MzYsNyArNDM3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1
YmxpY0sKICAgICAgICAgaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMgPSByZXN1bHQ7
CiAgICAgfQogICAgIGlmICghaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMuY291bnQp
IHsKLSAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBOb3RBbGxvd2VkRXJyb3IsICJObyBtYXRj
aGVkIGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVu
dGljYXRvci4iX3MgfSk7CisgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxv
d2VkRXJyb3IsICJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZv
cm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQ1Miw3ICs0NTMsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0
aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljSwogICAgICAgICBh
dXRvIHJldGFpbkNvbnRleHQgPSBhZG9wdE5TKGNvbnRleHQpOwogICAgICAgICBMT0dfRVJST1Io
IkNvdWxkbid0IGV2YWx1YXRlIGF1dGhlbnRpY2F0aW9uIHdpdGggYmlvbWV0cmljcyBwb2xpY3k6
ICVAIiwgZXJyb3IpOwogICAgICAgICAvLyBGSVhNRSgxODI3NjcpCi0gICAgICAgIGV4Y2VwdGlv
bkNhbGxiYWNrKHsgTm90QWxsb3dlZEVycm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3Jz
LiJfcyB9KTsKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJv
ciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQ2MiwxMSArNDYzLDExIEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpn
ZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHVzZXJoYW5kbGU7CiAgICAgTlNEYXRhICpuc1VzZXJoYW5kbGUg
PSBzZWxlY3RlZENyZWRlbnRpYWxBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFn
XTsKICAgICB1c2VyaGFuZGxlLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pihuc1VzZXJoYW5kbGUuYnl0ZXMpLCBuc1VzZXJoYW5kbGUubGVuZ3RoKTsKLSAgICBhdXRvIHJl
cGx5ID0gQmxvY2tQdHI8dm9pZChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spLCBycElkID0gb3B0aW9ucy5ycElkLmlzb2xhdGVkQ29weSgpLCBoYXNo
LCBjcmVkZW50aWFsSWQgPSBXVEZNb3ZlKGNyZWRlbnRpYWxJZCksIHVzZXJoYW5kbGUgPSBXVEZN
b3ZlKHVzZXJoYW5kbGUpLCBjb250ZXh0ID0gYWRvcHROUyhjb250ZXh0KV0gKEJPT0wgc3VjY2Vz
cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgIGF1dG8gcmVwbHkgPSBCbG9ja1B0cjx2
b2lkKEJPT0wsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHJwSWQgPSBvcHRpb25zLnJwSWQuaXNvbGF0ZWRDb3B5KCksIGhhc2gsIGNyZWRl
bnRpYWxJZCA9IFdURk1vdmUoY3JlZGVudGlhbElkKSwgdXNlcmhhbmRsZSA9IFdURk1vdmUodXNl
cmhhbmRsZSksIGNvbnRleHQgPSBhZG9wdE5TKGNvbnRleHQpXSAoQk9PTCBzdWNjZXNzLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgICAgICBpZiAoIXN1Y2Nlc3MgfHwgZXJyb3IpIHsKICAgICAgICAgICAgIExPR19FUlJPUigi
Q291bGRuJ3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczogJUAiLCBlcnJvcik7Ci0gICAg
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdl
dCB1c2VyIGNvbnNlbnQuIl9zIH0pOworICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0
YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQ5MCw3ICs0OTEsNyBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aGFzaCwgY29uc3QgUHVibGljSwogICAgICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRl
bUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmcHJpdmF0ZUtl
eVJlZik7CiAgICAgICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZG4ndCBnZXQgdGhlIHByaXZhdGUga2V5IHJlZmVyZW5jZTogJWQiLCBzdGF0dXMp
OwotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5r
bm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhj
ZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0p
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1
dG8gcHJpdmF0ZUtleSA9IGFkb3B0Q0YocHJpdmF0ZUtleVJlZik7CkBAIC01MDQsNyArNTA1LDcg
QEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0sKICAgICAgICAgICAgIGF1dG8gcmV0YWluRXJyb3Ig
PSBhZG9wdENGKGVycm9yUmVmKTsKICAgICAgICAgICAgIGlmIChlcnJvclJlZikgewogICAgICAg
ICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZTogJUAi
LCAoTlNFcnJvciopZXJyb3JSZWYpOwotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAg
ICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24g
aW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGF1dG8gbnNTaWduYXR1cmUgPSAoTlNEYXRhICopc2lnbmF0dXJl
UmVmLmdldCgpOwpAQCAtNTEyLDcgKzUxMyw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpn
ZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBTdGVwIDEzLgotICAgICAgICBjYWxsYmFjayhjcmVkZW50
aWFsSWQsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHVzZXJoYW5kbGUpOworICAgICAgICBjYWxsYmFj
ayhQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlh
bElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIGZhbHNlLCBudWxscHRyLCBudWxscHRy
LCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhEYXRhLmRhdGEoKSwgYXV0aERhdGEuc2l6ZSgpKSwg
QXJyYXlCdWZmZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwg
QXJyYXlCdWZmZXI6OmNyZWF0ZSh1c2VyaGFuZGxlLmRhdGEoKSwgdXNlcmhhbmRsZS5zaXplKCkp
IH0pOwogICAgIH0pOwogCiAgICAgLy8gRklYTUUoMTgzNTMzKTogVXNlIHVzZXJoYW5kbGUgaW5z
dGVhZCBvZiB1c2VybmFtZSBkdWUgdG8gdGhlIHN0YXRlZCBLZXljaGFpbiBsaW1pdGF0aW9ucy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggYjA2NWZmODVmMjc5OGQxYjFmYjY0MTQwZmUzZDM3MTg4MGM1YzY0
Yy4uNmU1OWYwZTczMTU5ZWYyZjk2NjY5OTAzN2VmYWNkYmUzZWMxMTM0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTQ1LDcgKzQ1LDYgQEAgTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hl
cy5jcHAKIAogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3Bw
CiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcAot
TW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKIE1v
ZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCiAKIE1v
ZHVsZXMvZW50cmllc2FwaS9FcnJvckNhbGxiYWNrLmNwcApAQCAtMjQ3LDEwICsyNDYsOCBAQCBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCiBNb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29y
LmNwcAogCi1Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5j
cHAKLU1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3Bw
Ci1Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAotTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCitNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5jcHAKK01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yQ2xpZW50LmNwcAogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNw
cAogTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuY3BwCiBNb2R1bGVzL3dlYmF1dGhu
L2Nib3IvQ0JPUlZhbHVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk5YzZiNmI5ZDA1YTNjYzQ0ZmI5NzkzODNhMTVjZGE2
YWM0M2VjZDguLmE1ODk0MGZiOGNlZTNlNDRhOGE0NTllZGYyMDg3NzU1NWVmMmZkNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE3NTQsNyArMTc1NCw3IEBACiAJCTU3MzAzQzIyMjAwOUFGMDMwMDM1NTk2NSAvKiBKU0F1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0MyMTIwMDlBRUY2MDAzNTU5NjUgLyogSlNBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oICovOyB9OwogCQk1NzMwM0MyQzIwMDlCNEE4MDAz
NTU5NjUgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0MyNzIwMDlCMkZDMDAzNTU5NjUg
LyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggKi87IH07CiAJCTU3MzAzQzJGMjAw
OUI3RTEwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDMkQyMDA5QjdE
OTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggKi87IH07Ci0J
CTU3MzAzQzQ2MjAxMDVEMkYwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDNDMyMDEwNUIz
RDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTczMDNDNDYyMDEwNUQyRjAwMzU1OTY1IC8q
IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTczMDNDNDMyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTU3MzQ4OTM5MURBQzZCNkUwMERDMDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzM0ODkzODFEQUM2QjZEMDBEQzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICov
OyB9OwogCQk1NzM5RTEyRjFEQUM3Rjc4MDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzM5RTEyRTFEQUM3Rjc4MDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmgg
Ki87IH07CiAJCTU3NEY1NUUwMjA0RjNBQ0UwMDI5NDhDNiAvKiBMb2NhbEF1dGhlbnRpY2F0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NEY1NURF
MjA0RjM3NDQwMDI5NDhDNiAvKiBMb2NhbEF1dGhlbnRpY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTc2NCwxMSArMTc2NCw5IEBACiAJ
CTU3NTBBOTgyMUU2QTE1MDgwMDcwNUM0QSAvKiBKU0VjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk4MDFFNkExNTA4MDA3MDVD
NEEgLyogSlNFY0tleVBhcmFtcy5oICovOyB9OwogCQk1NzUwQTk4NzFFNkEyMTY4MDA3MDVDNEEg
LyogQ3J5cHRvQWxnb3JpdGhtRUNESC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1MEE5ODUxRTZBMjE2ODAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRo
bUVDREguaCAqLzsgfTsKIAkJNTc1NDcxOUYxRUNFNjI4MzAwREQ2M0IyIC8qIEpTUnNhUHNzUGFy
YW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU0
NzE5OTFFQ0U1RDJBMDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMuaCAqLzsgfTsKLQkJNTc2MDgy
NzIyMDIxNUE1NTAwMTE2Njc4IC8qIENyZWRlbnRpYWxzTWVzc2VuZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI3MDIwMjE1MTNGMDAxMTY2
NzggLyogQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk1NzYwODI3QTIwMjRFQTVDMDAxMTY2NzggLyogTW9ja0Ny
ZWRlbnRpYWxzTWVzc2VuZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzYwODI3ODIwMjQ0REFCMDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVz
c2VuZ2VyLmggKi87IH07Ci0JCTU3NjA4MjdCMjAyNEVEMjkwMDExNjY3OCAvKiBNb2NrQ3JlZGVu
dGlhbHNNZXNzZW5nZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc2MDgyNzkyMDI0NERBQzAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nl
bmdlci5jcHAgKi87IH07Ci0JCTU3NjA4Mjg2MjAyNTZBRkEwMDExNjY3OCAvKiBKU01vY2tDcmVk
ZW50aWFsc01lc3Nlbmdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc2MDgyODIyMDI1Njc5NzAwMTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRpYWxzTWVz
c2VuZ2VyLmggKi87IH07Ci0JCTU3NjA4Mjg4MjAyNTZBRkQwMDExNjY3OCAvKiBKU01vY2tDcmVk
ZW50aWFsc01lc3Nlbmdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzYwODI4MTIwMjU2Nzk2MDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNN
ZXNzZW5nZXIuY3BwICovOyB9OworCQk1NzYwODI3MjIwMjE1QTU1MDAxMTY2NzggLyogQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTc2MDgyN0EyMDI0RUE1QzAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3NjA4Mjc4MjAyNDREQUIwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmggKi87IH07CisJCTU3NjA4MjdCMjAyNEVEMjkwMDExNjY3OCAvKiBNb2NrQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3NjA4Mjc5MjAyNDREQUMwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcCAqLzsgfTsKIAkJNTc2ODE0MkExRTZGOTlDMTAwRTc3NzU0IC8qIENy
eXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjgxNDI5MUU2Rjk5QzEwMEU3Nzc1NCAvKiBDcnlw
dG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zLmggKi87IH07CiAJCTU3NjgxNDQxMUU3MDlG
QTQwMEU3Nzc1NCAvKiBKU0VjZGhLZXlEZXJpdmVQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjgxNDNFMUU3MDlDMzYwMEU3Nzc1NCAvKiBK
U0VjZGhLZXlEZXJpdmVQYXJhbXMuaCAqLzsgfTsKIAkJNTc2ODE0NDUxRTcwQ0IxRjAwRTc3NzU0
IC8qIEpTQWVzS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzY4MTQ0MzFFNzBDQjEwMDBFNzc3NTQgLyogSlNBZXNLZXlQYXJhbXMuaCAq
LzsgfTsKQEAgLTE3ODQsMTIgKzE3ODIsMTUgQEAKIAkJNTdCNUY3RjkxRTVCRTg0MDAwRjM0Rjkw
IC8qIENyeXB0b0FsZ29yaXRobUFFU19HQ00uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjVGN0Y3MUU1QkU4NDAwMEYzNEY5MCAvKiBDcnlwdG9BbGdv
cml0aG1BRVNfR0NNLmggKi87IH07CiAJCTU3QjVGODA5MUU1RDFBOTgwMEYzNEY5MCAvKiBDcnlw
dG9BbGdvcml0aG1BZXNHY21QYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3QjVGODA4MUU1RDFBOTgwMEYzNEY5MCAvKiBDcnlwdG9BbGdvcml0
aG1BZXNHY21QYXJhbXMuaCAqLzsgfTsKIAkJNTdCNUY4MTAxRTVFMkE0RTAwRjM0RjkwIC8qIEpT
QWVzR2NtUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1N0I1RjgwQjFFNUQyMkRBMDBGMzRGOTAgLyogSlNBZXNHY21QYXJhbXMuaCAqLzsgfTsK
LQkJNTdDN0E2OEMxRTU2OTY3NTAwQzY3RDcxIC8qIEJhc2ljQ3JlZGVudGlhbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdDN0E2OEIxRTU2OTY3NTAw
QzY3RDcxIC8qIEJhc2ljQ3JlZGVudGlhbC5oICovOyB9OworCQk1N0M3QTY4QzFFNTY5Njc1MDBD
NjdENzEgLyogQmFzaWNDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0M3QTY4QjFFNTY5Njc1MDBDNjdENzEgLyogQmFzaWNDcmVkZW50
aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTdDN0E2OUYxRTU3OTE3ODAwQzY3RDcxIC8qIEpTQmFzaWNDcmVkZW50aWFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0M3QTY5RDFFNTc5MTBEMDBD
NjdENzEgLyogSlNCYXNpY0NyZWRlbnRpYWwuaCAqLzsgfTsKIAkJNTdEMDAxOEQxREQ1NDEzMjAw
RUQxOUQ5IC8qIEpTQ3J5cHRvS2V5VXNhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3RDAwMThDMURENTQxMzIwMEVEMTlEOSAvKiBKU0NyeXB0b0tl
eVVzYWdlLmggKi87IH07CiAJCTU3RDg0NjI4MUZFODk2MDUwMENBMzY4MiAvKiBOYXZpZ2F0b3JD
cmVkZW50aWFscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTdEODQ2MjYxRkU4OTVGODAwQ0EzNjgyIC8qIE5hdmlnYXRvckNyZWRlbnRpYWxzLmggKi87
IH07Ci0JCTU3RDg0NjJFMUZFQUY2OTkwMENBMzY4MiAvKiBQdWJsaWNLZXlDcmVkZW50aWFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Q4NDYyQjFG
RUFGNjhGMDBDQTM2ODIgLyogUHVibGljS2V5Q3JlZGVudGlhbC5oICovOyB9OworCQk1N0Q4NDYy
RTFGRUFGNjk5MDBDQTM2ODIgLyogUHVibGljS2V5Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEODQ2MkIxRkVBRjY4RjAwQ0EzNjgy
IC8qIFB1YmxpY0tleUNyZWRlbnRpYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1N0Q4NDYzNTFGRUFGQ0QzMDBDQTM2ODIgLyogSlNQdWJsaWNL
ZXlDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1N0Q4NDYzMDFGRUFGQzJGMDBDQTM2ODIgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFsLmgg
Ki87IH07CisJCTU3RENFRDY3MjE0MDc3NUIwMDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3RENFRDYyMjE0MDc2M0MwMDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaCAqLzsgfTsKKwkJNTdEQ0VENjkyMTQwNzc2NDAwMTZCODQ3IC8qIEpTTW9ja0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0RDRUQ2MzIxNDA3NjNDMDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmNwcCAqLzsgfTsKKwkJNTdEQ0VENzQyMTQzMDVGMDAwMTZCODQ3IC8q
IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ3MjIxNDMwNUYwMDAxNkI4NDcgLyogUHVibGljS2V5Q3Jl
ZGVudGlhbERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1N0UxRTVBMzFFOEM5MUI1MDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NU
Ui5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMUU1
QTExRThDOTFCNTAwRUUzN0M5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DVFIuaCAqLzsgfTsKIAkJ
NTdFMUU1QTcxRThEQkQzRTAwRUUzN0M5IC8qIENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMUU1QTYx
RThEQkQzRTAwRUUzN0M5IC8qIENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5oICovOyB9Owog
CQk1N0UxRTVBRDFFOEREMDlCMDBFRTM3QzkgLyogSlNBZXNDdHJQYXJhbXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTFFNUFCMUU4REQwOUIwMEVF
MzdDOSAvKiBKU0Flc0N0clBhcmFtcy5oICovOyB9OwpAQCAtODQ1OCw3ICs4NDU5LDYgQEAKIAkJ
NTczMDNCQkUyMDA2RTAwNDAwMzU1OTY1IC8qIENCT1JSZWFkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0JPUlJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3MzAzQkJGMjAwNkUwMEMwMDM1NTk2NSAvKiBDQk9SUmVhZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENCT1JSZWFkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNCQ0YyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0
b3JSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTczMDNCRDAyMDA4N0E4MzAwMzU1OTY1IC8qIEF1
dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdG9y
UmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0JEMTIwMDg3
QTgzMDAzNTU5NjUgLyogQXV0aGVudGljYXRvclJlc3BvbnNlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdXRoZW50aWNh
dG9yUmVzcG9uc2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0JERDIw
MDk1QjI2MDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdXRoZW50aWNhdG9yUmVzcG9uc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNCREUyMDA5NUIyNzAwMzU1OTY1IC8qIEpTQXV0aGVu
dGljYXRvclJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTg0NzksMTcgKzg0NzksMTUgQEAKIAkJNTczMDNDMTMyMDA5QTI1NzAwMzU1OTY1IC8qIEpT
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNDMTQyMDA5QTI1NzAwMzU1OTY1IC8qIEpT
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0MxQjIwMDlBOTg2MDAzNTU5
NjUgLyogQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTczMDNDMUMyMDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNDMUQy
MDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MzAzQzIwMjAwOUFFRjUwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0MyMTIwMDlBRUY2MDAzNTU5NjUgLyogSlNBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MzAzQzI3MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3MzAzQzI4MjAwOUIy
RkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNDMjkyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNDMkQyMDA5QjdE
OTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAzQzJFMjAwOUI3REEwMDM1NTk2
NSAvKiBKU0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3MzAzQzQzMjAxMDVCM0QwMDM1NTk2
NSAvKiBBdXRoZW50aWNhdG9yTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9y
TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzMwM0M0NDIwMTA1QjNE
MDAzNTU5NjUgLyogQXV0aGVudGljYXRvck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXV0aGVudGljYXRvck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzMwM0M0MzIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1NzMwM0M0NDIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzQ4OTM4MURBQzZCNkQwMERD
MDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTczOUUxMkUxREFDN0Y3ODAwRTE0MzgzIC8qIEpTQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcz
OUUxMzAxREFDN0ZEMTAwRTE0MzgzIC8qIEpTQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODUxMiwxMyArODUx
MCwxMSBAQAogCQk1NzU0NzE5QTFFQ0U1RDJBMDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSc2FQc3NQYXJhbXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYwODI0RjIwMTE4RDhEMDAxMTY2Nzgg
LyogSlNCYXNpY0NyZWRlbnRpYWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNp
Y0NyZWRlbnRpYWxDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYw
ODI1NjIwMTFCRTAyMDAxMTY2NzggLyogSlNBdXRoZW50aWNhdG9yUmVzcG9uc2VDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdXRoZW50aWNhdG9yUmVzcG9uc2VDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyog
Q3JlZGVudGlhbHNNZXNzZW5nZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyNzgyMDI0NERBQjAwMTE2
Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ3Jl
ZGVudGlhbHNNZXNzZW5nZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgy
NzkyMDI0NERBQzAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1NzYwODI4MDIwMjU1NkY0MDAxMTY2NzggLyogTW9ja0NyZWRlbnRp
YWxzTWVzc2VuZ2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI4MTIwMjU2Nzk2MDAxMTY2NzggLyogSlNN
b2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1NzYwODI4MjIwMjU2Nzk3MDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlh
bHNNZXNzZW5nZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2NrQ3Jl
ZGVudGlhbHNNZXNzZW5nZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgy
OTMyMDJCQTk1MzAwMTE2Njc4IC8qIENyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyNzgyMDI0NERBQjAwMTE2
Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9j
a0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1NzYwODI3OTIwMjQ0REFDMDAxMTY2NzggLyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyODAyMDI1NTZGNDAwMTE2Njc4
IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vY2tBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzYwODI5
MzIwMkJBOTUzMDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NjgxNDI4MUU2Rjk4QUQwMEU3Nzc1NCAvKiBF
Y2RoS2V5RGVyaXZlUGFyYW1zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFY2RoS2V5RGVyaXZlUGFyYW1zLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2ODE0MjkxRTZGOTlDMTAwRTc3NzU0IC8qIENy
eXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzY4MTQzNDFFNkZFM0U4MDBFNzc3NTQgLyogQ3J5cHRv
QWxnb3JpdGhtRUNESE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTg1NzIsNiArODU2OCw5IEBACiAJCTU3RDg0NjJEMUZFQUY2OEYwMENBMzY4MiAvKiBQdWJs
aWNLZXlDcmVkZW50aWFsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQdWJsaWNLZXlDcmVkZW50aWFsLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEODQ2MzAxRkVBRkMyRjAwQ0EzNjgyIC8qIEpTUHVi
bGljS2V5Q3JlZGVudGlhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1B1
YmxpY0tleUNyZWRlbnRpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEODQ2
MzExRkVBRkMyRjAwQ0EzNjgyIC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0RDRUQ2MjIxNDA3NjNDMDAxNkI4NDcgLyog
SlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1N0RDRUQ2MzIxNDA3NjNDMDAxNkI4NDcgLyogSlNNb2NrQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU3RENFRDcyMjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0UxRTVBMDFFOEM5MUI1MDBFRTM3QzkgLyogQ3J5
cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTdFMUU1QTExRThDOTFCNTAwRUUzN0M5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DVFIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtQUVTX0NU
Ui5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0UxRTVBNjFFOERCRDNFMDBFRTM3
QzkgLyogQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTY5MTksNiArMTY5MTgsOSBAQAogCQkJCUE3QkU3RURFMTRDOTE3
NUEwMDE0NDg5RCAvKiBNYWxsb2NTdGF0aXN0aWNzLmlkbCAqLywKIAkJCQlDRDUzOTNDQjE3NURD
Q0U2MDBDMDcxMjMgLyogTWVtb3J5SW5mby5oICovLAogCQkJCUNENTM5M0NDMTc1RENDRTYwMEMw
NzEyMyAvKiBNZW1vcnlJbmZvLmlkbCAqLywKKwkJCQk1NzYwODI3OTIwMjQ0REFDMDAxMTY2Nzgg
LyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi8sCisJCQkJNTc2MDgyNzgyMDI0
NERBQjAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLywKKwkJCQk1
NzYwODI4MDIwMjU1NkY0MDAxMTY2NzggLyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5p
ZGwgKi8sCiAJCQkJQ0RGNEI3MjExRTAzQkY4MTAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmNw
cCAqLywKIAkJCQlDREY0QjcyMjFFMDNCRjgxMDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuaCAq
LywKIAkJCQlDREY0QjcxRjFFMDNCRjZGMDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuaWRsICov
LApAQCAtMTY5MjcsOSArMTY5MjksNiBAQAogCQkJCUExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAv
KiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLywKIAkJCQlBMUI1QjI5RDFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oICovLAogCQkJCUExOUFFQTFD
MUFBQTdDNDkwMEI1MkIyNSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbCAqLywKLQkJ
CQk1NzYwODI3OTIwMjQ0REFDMDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNw
cCAqLywKLQkJCQk1NzYwODI3ODIwMjQ0REFCMDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVz
c2VuZ2VyLmggKi8sCi0JCQkJNTc2MDgyODAyMDI1NTZGNDAwMTE2Njc4IC8qIE1vY2tDcmVkZW50
aWFsc01lc3Nlbmdlci5pZGwgKi8sCiAJCQkJNTEwNThBRDcxRDY3OTI1NzAwOUE1MzhDIC8qIE1v
Y2tHYW1lcGFkLmNwcCAqLywKIAkJCQk1MTA1OEFEODFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dh
bWVwYWQuaCAqLywKIAkJCQk1MTA1OEFEOTFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQ
cm92aWRlci5jcHAgKi8sCkBAIC0xNjk3NiwxMiArMTY5NzUsMTIgQEAKIAkJCQlBN0I0RUE2OTE0
QzkzNDg0MDBDOEY1QkYgLyogSlNNYWxsb2NTdGF0aXN0aWNzLmggKi8sCiAJCQkJQ0Q1MzkzRDEx
NzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5jcHAgKi8sCiAJCQkJQ0Q1MzkzRDIxNzVF
MDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5oICovLAorCQkJCTU3RENFRDYzMjE0MDc2M0Mw
MDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwICovLAorCQkJCTU3
RENFRDYyMjE0MDc2M0MwMDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
aCAqLywKIAkJCQlDREY0QjcyRDFFMDNDQTRBMDBFMjM1QTIgLyogSlNNb2NrQ0RNRmFjdG9yeS5j
cHAgKi8sCiAJCQkJQ0RGNEI3MkUxRTAzQ0E0QTAwRTIzNUEyIC8qIEpTTW9ja0NETUZhY3Rvcnku
aCAqLywKIAkJCQlBMTlBRUExRDFBQUE4MDZFMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmNwcCAqLywKIAkJCQlBMTlBRUExRTFBQUE4MDZFMDBCNTJCMjUgLyogSlNNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmggKi8sCi0JCQkJNTc2MDgyODEyMDI1Njc5NjAwMTE2Njc4
IC8qIEpTTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCAqLywKLQkJCQk1NzYwODI4MjIwMjU2
Nzk3MDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCAqLywKIAkJCQkyRDZG
M0U5MjFDMUY4NTU1MDA2MURCRDQgLyogSlNNb2NrUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJE
NkYzRTkzMUMxRjg1NTUwMDYxREJENCAvKiBKU01vY2tQYWdlT3ZlcmxheS5oICovLAogCQkJCUEx
NDZEMzIwMUY5OUNBM0UwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50QWRkcmVzcy5jcHAgKi8sCkBA
IC0xODcxMCw4ICsxODcwOSw2IEBACiAJCQkJNzdENTEwMTgxRUQ3MTU5OTAwREE0Qzg3IC8qIENy
ZWRlbnRpYWxzQ29udGFpbmVyLmNwcCAqLywKIAkJCQk3N0Q1MTAxNjFFRDYwMjFCMDBEQTRDODcg
LyogQ3JlZGVudGlhbHNDb250YWluZXIuaCAqLywKIAkJCQk1N0Q4NDYyOTFGRTk5RjYzMDBDQTM2
ODIgLyogQ3JlZGVudGlhbHNDb250YWluZXIuaWRsICovLAotCQkJCTU3NjA4MjkzMjAyQkE5NTMw
MDExNjY3OCAvKiBDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgKi8sCi0JCQkJNTc2MDgyNzAyMDIx
NTEzRjAwMTE2Njc4IC8qIENyZWRlbnRpYWxzTWVzc2VuZ2VyLmggKi8sCiAJCQkJNTdEODQ2MjQx
RkU4OTVGNTAwQ0EzNjgyIC8qIE5hdmlnYXRvckNyZWRlbnRpYWxzLmNwcCAqLywKIAkJCQk1N0Q4
NDYyNjFGRTg5NUY4MDBDQTM2ODIgLyogTmF2aWdhdG9yQ3JlZGVudGlhbHMuaCAqLywKIAkJCQk1
N0Q4NDYyNTFGRTg5NUY2MDBDQTM2ODIgLyogTmF2aWdhdG9yQ3JlZGVudGlhbHMuaWRsICovLApA
QCAtMTg3NDEsMTUgKzE4NzM4LDE0IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1NzMwM0JCMzIw
MDZDNkVEMDAzNTU5NjUgLyogY2JvciAqLywKIAkJCQk1NzRGNTVERDIwNEYzNzQ0MDAyOTQ4QzYg
LyogY29jb2EgKi8sCi0JCQkJNTczMDNDMjgyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgKi8sCiAJCQkJNTczMDNDMjcyMDA5QjJGQzAwMzU1OTY1
IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oICovLAogCQkJCTU3MzAzQzI5MjAw
OUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaWRsICovLAot
CQkJCTU3MzAzQzFDMjAwOUE5ODYwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZS5jcHAgKi8sCiAJCQkJNTczMDNDMUIyMDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggKi8sCiAJCQkJNTczMDNDMUQyMDA5QTk4NjAwMzU1
OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbCAqLywKLQkJCQk1NzMw
M0M0NDIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvck1hbmFnZXIuY3BwICovLAotCQkJ
CTU3MzAzQzQzMjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yTWFuYWdlci5oICovLAot
CQkJCTU3MzAzQkQwMjAwODdBODMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuY3Bw
ICovLAorCQkJCTU3MzAzQzQ0MjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwICovLAorCQkJCTU3MzAzQzQzMjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaCAqLywKKwkJCQk1NzYwODI5MzIwMkJBOTUzMDAxMTY2NzggLyogQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcCAqLywKKwkJCQk1NzYwODI3MDIwMjE1MTNG
MDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggKi8sCiAJCQkJNTcz
MDNCQ0YyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5oICovLAogCQkJ
CTU3MzAzQkQxMjAwODdBODMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaWRsICov
LAogCQkJCTU3NEY1NURDMjA0RjM3MzIwMDI5NDhDNiAvKiBDT1NFQ29uc3RhbnRzLmggKi8sCkBA
IC0xODc1OCw2ICsxODc1NCw3IEBACiAJCQkJNTdEODQ2MkQxRkVBRjY4RjAwQ0EzNjgyIC8qIFB1
YmxpY0tleUNyZWRlbnRpYWwuaWRsICovLAogCQkJCTU3MzAzQkU2MjAwOTc0N0EwMDM1NTk2NSAv
KiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi8sCiAJCQkJNTczMDNCRTgy
MDA5NzQ3QTAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaWRs
ICovLAorCQkJCTU3RENFRDcyMjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YS5oICovLAogCQkJCTU3MzAzQkVDMjAwOTgwQkYwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVk
ZW50aWFsRGVzY3JpcHRvci5oICovLAogCQkJCTU3MzAzQkVFMjAwOTgwQkYwMDM1NTk2NSAvKiBQ
dWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5pZGwgKi8sCiAJCQkJNTczMDNDMDYyMDA5OThG
ODAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovLApAQCAt
MjY5OTgsMTggKzI2OTk1LDE4IEBACiAJCQkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpT
SW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0MEI1OTUx
NEM5MzVBQjAwQTc3RkE0IC8qIEpTTWFsbG9jU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0Q1MzkzRDQxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVtb3J5SW5mby5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTdEQ0VENjcyMTQwNzc1QjAwMTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM4RUM5MzMxRjk5QjlGNzAwNEQyMkE4
IC8qIEpTTW9ja0NETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExOUFFQTIxMUFBQTgw
ODYwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICov
LAotCQkJCTU3NjA4Mjg2MjAyNTZBRkEwMDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01lc3Nl
bmdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM4RUM5MzQxRjk5QjlGNzAwNEQyMkE4IC8qIEpT
TW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQ2RDMyMzFGOTlEMEVGMDBE
MjkxOTYgLyogSlNNb2NrUGF5bWVudEFkZHJlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNDZE
MzFCMUY5OUJDRkIwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQyN0RBNzFFMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUVCRjUxMjFEMTY5NjQ5NkMwMDU2QkQyNSAv
KiBKU1R5cGVDb252ZXJzaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMjZCNDExNjBBOEND
RTAwMjY3NTdCIC8qIExlZ2FjeU1vY2tDRE0uaCBpbiBIZWFkZXJzICovLAorCQkJCTU3NjA4MjdB
MjAyNEVBNUMwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKLQkJCQk1NzYwODI3QTIwMjRF
QTVDMDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTA1OEFEQzFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMDU4QURFMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MTk5LDcgKzI3MTk2
LDggQEAKIAkJCQk1MTRDNzY0QzBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzJDMjAwOUI0QTgwMDM1NTk2NSAvKiBBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzFGMjAw
OUFCNDIwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTczMDNDNDYyMDEwNUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzMwM0M0NjIwMTA1RDJGMDAzNTU5NjUgLyog
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzYwODI3MjIw
MjE1QTU1MDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1NzMwM0JEMjIwMDg3QTgzMDAzNTU5NjUgLyogQXV0aGVudGljYXRvclJl
c3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTAxOTIwRTEzMkVCRjJFMDA4QkZFNTUgLyog
QXV0b2NhcGl0YWxpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QTdBQTQzMTMyRjBFQ0MwMEQz
QTNDMiAvKiBBdXRvY2FwaXRhbGl6ZVR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDY0LDcg
KzI3NDYyLDYgQEAKIAkJCQk3N0Q1MTAwRDFFRDVFMjk1MDBEQTRDODcgLyogQ3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzdENTEwMEIxRUQ1RTI4ODAwREE0
Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzdE
NTEwMTcxRUQ2MDIyMjAwREE0Qzg3IC8qIENyZWRlbnRpYWxzQ29udGFpbmVyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1NzYwODI3MjIwMjE1QTU1MDAxMTY2NzggLyogQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTA1MjMzMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVk
ZW50aWFsU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDIxNDZCNUM1NTAwQUE3
ODM0IC8qIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUM0
MTYxMjBGNjU2MkZEMDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI5Nzk1LDYgKzI5NzkyLDcgQEAKIAkJCQlGRjk0NUVDQzE2MUY3RjM2MDA5
NzFCQzggLyogUHNldWRvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEODQ2MkUxRkVB
RjY5OTAwQ0EzNjgyIC8qIFB1YmxpY0tleUNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3MzAzQkU5MjAwOTc0OEQwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0RDRUQ3NDIxNDMwNUYwMDAxNkI4NDcgLyog
UHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkVGMjAw
OTgwQzYwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTczMDNDMEEyMDA5OUJBRDAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCRUIyMDA5N0Y0MDAw
MzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
NDA4LDE5ICszMTQwNiwxOSBAQAogCQkJCTUzRUQzRkRFMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0lu
dGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM5MzIx
Rjk5QjlGNzAwNEQyMkE4IC8qIEpTTWFsbG9jU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDRDUzOTNEMzE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTU3RENFRDY5MjE0MDc3NjQwMDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MzIxRTAzRDA2MDAw
RTIzNUEyIC8qIEpTTW9ja0NETUZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE5QUVB
MjIxQUFBODA4QTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk1NzYwODI4ODIwMjU2QUZEMDAxMTY2NzggLyogSlNNb2NrQ3JlZGVu
dGlhbHNNZXNzZW5nZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ0MTUwREUxQzFGODY4QzAw
MEEzQkEyIC8qIEpTTW9ja1BhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDZE
MzIyMUY5OUQwRUMwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50QWRkcmVzcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBMTQ2RDMxQTFGOTlCQ0Y4MDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQyN0RBNzFEMTM3MzVERkEwMDdDNTdGQiAv
KiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRUJGNTEy
MUMxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEQzI2QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTU3NjA4MjdCMjAyNEVEMjkwMDExNjY3OCAvKiBNb2NrQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcw
MEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUJGNkI4
MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTc2MDgyN0IyMDI0RUQyOTAwMTE2Njc4IC8qIE1v
Y2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTA1OEFEQjFE
Njc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREQxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8qIE1vY2tMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDM0NDYw
N2I3MjZhYzNhMGZiMTNhZDJlZDZmOGQ1NmFkMmNhMzIyOGYuLjlmMDM0NzJiNGE2MGNlYTMzOGFh
ZGQ0NzgxZGM5N2RhMDMwZDFmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjQsNiArMjQsNyBA
QAogI2luY2x1ZGUgIkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3Rl
bmVyLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAi
QmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJDU1NBbmltYXRpb25Db250cm9sbGVyLmgiCkBAIC0yNTUsNiArMjU2LDkgQEAg
UGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAgICAgLCBtX3BheW1lbnRDb29yZGluYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGlu
YXRvckNsaWVudCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgICwgbV9hdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3I+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Q2xpZW50KSkpCisjZW5kaWYKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAg
LCBtX2FwcGxpY2F0aW9uTWFuaWZlc3QocGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25NYW5p
ZmVzdCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBkYmE0ZjBmMDgyNzFlYjc1YjlmMzZiNWM0
ZDAzMWY4ZThkNmYzOTQ2Li42YjFjOGJiODRiZDYxMDQzZjcxMmRhZDI3MjNmMzg1NzZhNmRjNDY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtNzYsNiArNzYsNyBAQCBjbGFzcyBJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENsaWVudDsKIGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOworY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOwogY2xhc3MgQmFj
a0ZvcndhcmRDb250cm9sbGVyOwogY2xhc3MgQmFja0ZvcndhcmRDbGllbnQ7CiBjbGFzcyBDYWNo
ZVN0b3JhZ2VQcm92aWRlcjsKQEAgLTQxMCw2ICs0MTEsMTAgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0UGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6dW5pcXVlX3B0cjxQYXlt
ZW50Q29vcmRpbmF0b3I+JiYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAg
IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvciYgYXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkgY29u
c3QgeyByZXR1cm4gKm1fYXV0aGVudGljYXRvckNvb3JkaW5hdG9yOyB9CisjZW5kaWYKKwogI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEFw
cGxpY2F0aW9uTWFuaWZlc3Q+JiBhcHBsaWNhdGlvbk1hbmlmZXN0KCkgY29uc3QgeyByZXR1cm4g
bV9hcHBsaWNhdGlvbk1hbmlmZXN0OyB9CiAjZW5kaWYKQEAgLTkwMSw2ICs5MDYsMTAgQEAgcHJp
dmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudENvb3JkaW5hdG9yPiBtX3BheW1lbnRD
b29yZGluYXRvcjsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yPiBtX2F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcjsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIHN0
ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGNk
NDAwNWI1NjM3M2M4ODQzY2U5NzEyNmJiM2ZlMzAxMjcxODk0ZmYuLjE0Yzk5MTU5ZGRkNzMwOTc3
OTc3ZTE2YWM0MWQ0YjYxNmIzM2MwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3Rv
cmUuaCIKICNpbmNsdWRlICJXZWJHTFN0YXRlVHJhY2tlci5oIgogCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmln
dXJhdGlvbihVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCwgUmVmPFNvY2tl
dFByb3ZpZGVyPiYmIHNvY2tldFByb3ZpZGVyLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+
JiYgbGliV2ViUlRDUHJvdmlkZXIsIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiBjYWNoZVN0
b3JhZ2VQcm92aWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRl
eCAzYTczNDU3NmQ0MGEyY2Q0YmRhMTRjNGViZTAzMzJhYTM1NmUyMWU0Li42MGJkZWM3ZDNmYzE4
MTc2NWJlYTIxYmExNDY1NmU1ZGYwOTBmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7
CitjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBCYWNrRm9yd2Fy
ZENsaWVudDsKIGNsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgQ2hyb21lQ2xpZW50
OwpAQCAtODAsNiArODEsMTAgQEAgcHVibGljOgogICAgIFBheW1lbnRDb29yZGluYXRvckNsaWVu
dCogcGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IHsgbnVsbHB0ciB9OwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQ+IGF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGlj
YXRpb25NYW5pZmVzdD4gYXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGY3NWFiMjQ1YWU3MDA5YTQzODEzODg0ZGM0ZmMyNTc0
MTYzOWJjMGIuLjgwZDViZDg3YWJmZmZkNDQxOGM2MjE1NTAwMjM4ZmQ0MzQ2YjNjODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI2Nyw4ICsyNjcsOCBAQAogI2VuZGlm
CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmgiCi0jaW5jbHVkZSAiTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmgiCisjaW5jbHVkZSAiQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5oIgogI2VuZGlmCiAKIHVzaW5nIEpTQzo6Q2FsbERhdGE7CkBAIC01NDksOCArNTQ5
LDExIEBAIEludGVybmFsczo6SW50ZXJuYWxzKERvY3VtZW50JiBkb2N1bWVudCkKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBtX21vY2tDcmVkZW50aWFsc01lc3NlbmdlciA9
IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyPigqdGhpcyk7Ci0gICAg
QXV0aGVudGljYXRvck1hbmFnZXI6OnNpbmdsZXRvbigpLnNldE1lc3NlbmdlcigqbV9tb2NrQ3Jl
ZGVudGlhbHNNZXNzZW5nZXIpOworICAgIGlmIChkb2N1bWVudC5wYWdlKCkpIHsKKyAgICAgICAg
YXV0byBtb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxNb2Nr
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigpOworICAgICAgICBtX21vY2tBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IgPSBtYWtlV2Vha1B0cihtb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmdl
dCgpKTsKKyAgICAgICAgZG9jdW1lbnQucGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Io
KS5zZXRDbGllbnQoV1RGTW92ZShtb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKSk7CisgICAg
fQogI2VuZGlmCiB9CiAKQEAgLTQ2MjAsOSArNDYyMyw5IEBAIE1vY2tQYXltZW50Q29vcmRpbmF0
b3ImIEludGVybmFsczo6bW9ja1BheW1lbnRDb29yZGluYXRvcigpIGNvbnN0CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShXRUJfQVVUSE4pCi1Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXImIEludGVybmFs
czo6bW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyKCkgY29uc3QKK01vY2tBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3ImIEludGVybmFsczo6bW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICptX21vY2tDcmVkZW50aWFsc01lc3NlbmdlcjsKKyAgICByZXR1cm4g
Km1fbW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCBiNGE1MGJhN2QxMTBiN2EyNTdiMDlhMWIxMjI0MjIyZGQw
MGIzMjcwLi4yNDE3ZWU4NTIxOTc1MjY4ZWZlYzJhOGY4OTI1MzM4YjBjNjExNTQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgTWVkaWFTdHJl
YW1UcmFjazsKIGNsYXNzIE1lbW9yeUluZm87CiBjbGFzcyBNb2NrQ0RNRmFjdG9yeTsKIGNsYXNz
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7Ci1jbGFzcyBNb2NrQ3JlZGVudGlhbHNNZXNzZW5n
ZXI7CitjbGFzcyBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOwogY2xhc3MgTW9ja1BhZ2VP
dmVybGF5OwogY2xhc3MgTW9ja1BheW1lbnRDb29yZGluYXRvcjsKIGNsYXNzIE5vZGVMaXN0OwpA
QCAtNjk3LDcgKzY5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlc3RJbmNvbWluZ1N5bmNJUENN
ZXNzYWdlV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5KCk7CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQotICAgIE1vY2tDcmVkZW50aWFsc01lc3NlbmdlciYgbW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
KCkgY29uc3Q7CisgICAgTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvciYgbW9ja0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcigpIGNvbnN0OwogI2VuZGlmCiAKICAgICBib29sIGlzU3lzdGVtUHJl
dmlld0xpbmsoRWxlbWVudCYpIGNvbnN0OwpAQCAtNzYzLDcgKzc2Myw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1vY2tD
cmVkZW50aWFsc01lc3Nlbmdlcj4gbV9tb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI7CisgICAgV2Vh
a1B0cjxNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPiBtX21vY2tBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApp
bmRleCAwNzg4NDZlZThiMmVhN2ZkYjUwNzJiMjQ0YzZhNjc2YWNmZDVjZjU0Li4yMTg0ZmQyMWRk
MWFjMTg4ZGJmMDQxODg1ODA1Yzg3M2UxYjYxZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCkBAIC02NDYsNyArNjQ2LDcgQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAg
ICAgW0VuYWJsZWRBdFJ1bnRpbWU9V2ViQW5pbWF0aW9uc10gdm9pZCBwYXVzZVRpbWVsaW5lKEFu
aW1hdGlvblRpbWVsaW5lIHRpbWVsaW5lKTsKICAgICBbRW5hYmxlZEF0UnVudGltZT1XZWJBbmlt
YXRpb25zXSB2b2lkIHNldFRpbWVsaW5lQ3VycmVudFRpbWUoQW5pbWF0aW9uVGltZWxpbmUgdGlt
ZWxpbmUsIGRvdWJsZSBjdXJyZW50VGltZSk7CiAgICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV0g
cmVhZG9ubHkgYXR0cmlidXRlIE1vY2tQYXltZW50Q29vcmRpbmF0b3IgbW9ja1BheW1lbnRDb29y
ZGluYXRvcjsKLSAgICBbQ29uZGl0aW9uYWw9V0VCX0FVVEhOXSByZWFkb25seSBhdHRyaWJ1dGUg
TW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyIG1vY2tDcmVkZW50aWFsc01lc3NlbmdlcjsKKyAgICBb
Q29uZGl0aW9uYWw9V0VCX0FVVEhOXSByZWFkb25seSBhdHRyaWJ1dGUgTW9ja0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvciBtb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOwogCiAgICAgYm9vbGVh
biBpc1N5c3RlbVByZXZpZXdMaW5rKEVsZW1lbnQgZWxlbWVudCk7CiAgICAgYm9vbGVhbiBpc1N5
c3RlbVByZXZpZXdJbWFnZShFbGVtZW50IGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2Q3ZDY5YTYyZDYwYWQ5ODY0NzdhZDZhMzJkNDg2YjA0YjU0Y2Y5MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIgorCisjaWYgRU5BQkxF
KFdFQl9BVVRITikKKworI2luY2x1ZGUgIkludGVybmFscy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UHVibGljS2V5Q3JlZGVudGlhbERhdGEuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpz
ZXRDcmVhdGlvblJldHVybkJ1bmRsZShjb25zdCBCdWZmZXJTb3VyY2UmIGNyZWRlbnRpYWxJZCwg
Y29uc3QgQnVmZmVyU291cmNlJiBhdHRlc3RhdGlvbk9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW1f
Y3JlZGVudGlhbElkICYmICFtX2F0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICBtX2NyZWRlbnRpYWxJ
ZCA9IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElk
Lmxlbmd0aCgpKTsKKyAgICBtX2F0dGVzdGF0aW9uT2JqZWN0ID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShhdHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0Lmxlbmd0aCgpKTsK
K30KKwordm9pZCBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpzZXRBc3NlcnRpb25SZXR1
cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNlJiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNv
dXJjZSYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2lnbmF0dXJlLCBj
b25zdCBCdWZmZXJTb3VyY2UmIHVzZXJIYW5kbGUpCit7CisgICAgQVNTRVJUKCFtX2NyZWRlbnRp
YWxJZCAmJiAhbV9hdXRoZW50aWNhdG9yRGF0YSAmJiAhbV9zaWduYXR1cmUgJiYgIW1fdXNlckhh
bmRsZSk7CisgICAgbV9jcmVkZW50aWFsSWQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRp
YWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5sZW5ndGgoKSk7CisgICAgbV9hdXRoZW50aWNhdG9y
RGF0YSA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRhdGEuZGF0YSgpLCBhdXRo
ZW50aWNhdG9yRGF0YS5sZW5ndGgoKSk7CisgICAgbV9zaWduYXR1cmUgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5sZW5ndGgoKSk7CisgICAgbV91c2Vy
SGFuZGxlID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1c2VySGFuZGxlLmRhdGEoKSwgdXNlckhhbmRs
ZS5sZW5ndGgoKSk7Cit9CisKK3ZvaWQgTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFr
ZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIp
Cit7CisgICAgaWYgKCFzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVy
KSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2RpZFRpbWVPdXQpIHsKKyAgICAgICAg
bV9kaWRUaW1lT3V0ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1f
ZGlkVXNlckNhbmNlbCkgeworICAgICAgICBtX2RpZFVzZXJDYW5jZWwgPSBmYWxzZTsKKyAgICAg
ICAgcmVxdWVzdFJlcGx5KHsgfSwgeyBOb3RBbGxvd2VkRXJyb3IsICJVc2VyIGNhbmNlbGxlZC4i
X3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fY3JlZGVudGlhbElkKSB7
CisgICAgICAgIEFTU0VSVChtX2F0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgcmVxdWVzdFJl
cGx5KFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgV1RGTW92ZShtX2NyZWRlbnRpYWxJZCksIHRy
dWUsIG51bGxwdHIsIFdURk1vdmUobV9hdHRlc3RhdGlvbk9iamVjdCksIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIgfSwgeyB9KTsKKyAgICAgICAgbV9jcmVkZW50aWFsSWQgPSBudWxscHRyOwor
ICAgICAgICBtX2F0dGVzdGF0aW9uT2JqZWN0ID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBNb2NrQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29u
c3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25I
YW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBpZiAoIXNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGhhbmRsZXIpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGlkVGlt
ZU91dCkgeworICAgICAgICBtX2RpZFRpbWVPdXQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAobV9kaWRVc2VyQ2FuY2VsKSB7CisgICAgICAgIG1fZGlkVXNlckNhbmNl
bCA9IGZhbHNlOworICAgICAgICByZXF1ZXN0UmVwbHkoeyB9LCB7IE5vdEFsbG93ZWRFcnJvciwg
IlVzZXIgY2FuY2VsbGVkLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
bV9jcmVkZW50aWFsSWQpIHsKKyAgICAgICAgQVNTRVJUKG1fYXV0aGVudGljYXRvckRhdGEgJiYg
bV9zaWduYXR1cmUgJiYgbV91c2VySGFuZGxlKTsKKyAgICAgICAgcmVxdWVzdFJlcGx5KFB1Ymxp
Y0tleUNyZWRlbnRpYWxEYXRhIHsgV1RGTW92ZShtX2NyZWRlbnRpYWxJZCksIGZhbHNlLCBudWxs
cHRyLCBudWxscHRyLCBXVEZNb3ZlKG1fYXV0aGVudGljYXRvckRhdGEpLCBXVEZNb3ZlKG1fc2ln
bmF0dXJlKSwgV1RGTW92ZShtX3VzZXJIYW5kbGUpIH0sIHsgfSk7CisgICAgICAgIG1fY3JlZGVu
dGlhbElkID0gbnVsbHB0cjsKKyAgICAgICAgbV9hdXRoZW50aWNhdG9yRGF0YSA9IG51bGxwdHI7
CisgICAgICAgIG1fc2lnbmF0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgbV91c2VySGFuZGxlID0g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKwordm9pZCBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlp
bmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYm
IGhhbmRsZXIpCit7CisgICAgYXV0byBtZXNzYWdlSWQgPSBhZGRRdWVyeUNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoaGFuZGxlcikpOworICAgIGlmIChtX2RpZFVzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JQcmVzZW50KSB7CisgICAgICAgIGlzVXNlclZlcmlmeWluZ1BsYXRmb3Jt
QXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJZCwgdHJ1ZSk7CisgICAgICAgIG1f
ZGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvclByZXNlbnQgPSBmYWxzZTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlUmVwbHkobWVzc2FnZUlkLCBmYWxzZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNj
MGYzMDY3YTFjM2QwYzVlMGEyZTRhYzlkODYxZWIyZDMzYzVkYmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApA
QCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCX0FVVEhOKQorCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmgi
CisjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnRlcm5hbHM7CisKK2NsYXNzIE1vY2tBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IgZmluYWwgOiBwdWJsaWMgQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldERpZFRpbWVPdXQoKSB7IG1fZGlkVGlt
ZU91dCA9IHRydWU7IH0KKyAgICB2b2lkIHNldERpZFVzZXJDYW5jZWwoKSB7IG1fZGlkVXNlckNh
bmNlbCA9IHRydWU7IH0KKyAgICB2b2lkIHNldERpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JQcmVzZW50KCkgeyBtX2RpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0
b3JQcmVzZW50ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoY29u
c3QgQnVmZmVyU291cmNlJiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYXR0ZXN0
YXRpb25PYmplY3QpOworICAgIHZvaWQgc2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKGNvbnN0IEJ1
ZmZlclNvdXJjZSYgY3JlZGVudGlhbElkLCBjb25zdCBCdWZmZXJTb3VyY2UmIGF1dGhlbnRpY2F0
b3JEYXRhLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNl
JiB1c2VySGFuZGxlKTsKKworICAgIC8vIFJlZkNvdW50ZWQgaXMgcmVxdWlyZWQgZm9yIEpTIHdy
YXBwZXIuIFRoZXJlZm9yZSwgZmFrZSB0aGVtIHRvIGNvbXBpbGUuCisgICAgdm9pZCByZWYoKSBj
b25zdCB7IH0KKyAgICB2b2lkIGRlcmVmKCkgY29uc3QgeyB9CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBtYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CisgICAgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBo
YXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
KworICAgIC8vIEFsbCBmb2xsb3dpbmcgZmllbGRzIGFyZSBkaXNwb3NhYmxlLgorICAgIGJvb2wg
bV9kaWRUaW1lT3V0IHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkVXNlckNhbmNlbCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2RpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVz
ZW50IHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fY3JlZGVudGlhbElkOwor
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9hdHRlc3RhdGlvbk9iamVjdDsKKyAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IG1fYXV0aGVudGljYXRvckRhdGE7CisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBtX3NpZ25hdHVyZTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fdXNlckhhbmRsZTsKKwor
ICAgIC8vIFRvIGNsZWFuIHVwIGNvbXBsZXRpb24gaGFuZGxlcnMuCisgICAgVmVjdG9yPHVpbnQ2
NF90PiBtX3RpbWVPdXRNZXNzYWdlSWRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaWRsCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVh
YzVjYjJlZjgyMGI1MDI2YTI1OThjZmQyZmNjYjY1NzUzM2VkOTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaWRs
CkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FV
VEhOLAorICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorXSBpbnRlcmZhY2UgTW9ja0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvciB7CisgICAgdm9pZCBzZXREaWRUaW1lT3V0KCk7CisgICAgdm9pZCBzZXRE
aWRVc2VyQ2FuY2VsKCk7CisgICAgdm9pZCBzZXREaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRo
ZW50aWNhdG9yUHJlc2VudCgpOworICAgIHZvaWQgc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoQnVm
ZmVyU291cmNlIGNyZWRlbnRpYWxJZCwgQnVmZmVyU291cmNlIGF0dGVzdGF0aW9uT2JqZWN0KTsK
KyAgICB2b2lkIHNldEFzc2VydGlvblJldHVybkJ1bmRsZShCdWZmZXJTb3VyY2UgY3JlZGVudGlh
bElkLCBCdWZmZXJTb3VyY2UgYXV0aGVudGljYXRvckRhdGEsIEJ1ZmZlclNvdXJjZSBzaWduYXR1
cmUsIEJ1ZmZlclNvdXJjZSB1c2VySGFuZGxlKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDEwMmUzM2I1YzViODhhODFmMWUyYTY0YjdjZTBmZTNmNTUwMTRhM2YuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQot
Ci0jaW5jbHVkZSAiSW50ZXJuYWxzLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLU1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6TW9ja0NyZWRlbnRp
YWxzTWVzc2VuZ2VyKEludGVybmFscyYgaW50ZXJuYWxzKQotICAgIDogbV9pbnRlcm5hbHMoaW50
ZXJuYWxzKQotewotfQotCi1Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6On5Nb2NrQ3JlZGVudGlh
bHNNZXNzZW5nZXIoKQotewotICAgIC8vIEhhdmUgbm8gZWZmZWN0cyB0byBvcmlnaW5hbCBwcm9t
aXNlcy4gSnVzdCB0byBjYWxsIGhhbmRsZXJzIHRvIGF2b2lkIGFueSBhc3NlcnRpb24gZmFpbHVy
ZXMuCi0gICAgZm9yIChhdXRvIG1lc3NhZ2VJZCA6IG1fdGltZU91dE1lc3NhZ2VJZHMpCi0gICAg
ICAgIGV4Y2VwdGlvblJlcGx5KG1lc3NhZ2VJZCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRF
cnJvciwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl9zIH0pOwotfQotCi12b2lkIE1vY2tDcmVkZW50
aWFsc01lc3Nlbmdlcjo6c2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNl
JiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYXR0ZXN0YXRpb25PYmplY3QpCi17
Ci0gICAgQVNTRVJUKG1fY3JlZGVudGlhbElkLmlzRW1wdHkoKSAmJiBtX2F0dGVzdGF0aW9uT2Jq
ZWN0LmlzRW1wdHkoKSk7Ci0gICAgbV9jcmVkZW50aWFsSWQuYXBwZW5kKGNyZWRlbnRpYWxJZC5k
YXRhKCksIGNyZWRlbnRpYWxJZC5sZW5ndGgoKSk7Ci0gICAgbV9hdHRlc3RhdGlvbk9iamVjdC5h
cHBlbmQoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5sZW5ndGgo
KSk7Ci19Ci0KLXZvaWQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjpzZXRBc3NlcnRpb25SZXR1
cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNlJiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNv
dXJjZSYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2lnbmF0dXJlLCBj
b25zdCBCdWZmZXJTb3VyY2UmIHVzZXJIYW5kbGUpCi17Ci0gICAgQVNTRVJUKG1fY3JlZGVudGlh
bElkLmlzRW1wdHkoKSAmJiBtX2F1dGhlbnRpY2F0b3JEYXRhLmlzRW1wdHkoKSAmJiBtX3NpZ25h
dHVyZS5pc0VtcHR5KCkgJiYgbV91c2VySGFuZGxlLmlzRW1wdHkoKSk7Ci0gICAgbV9jcmVkZW50
aWFsSWQuYXBwZW5kKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5sZW5ndGgoKSk7
Ci0gICAgbV9hdXRoZW50aWNhdG9yRGF0YS5hcHBlbmQoYXV0aGVudGljYXRvckRhdGEuZGF0YSgp
LCBhdXRoZW50aWNhdG9yRGF0YS5sZW5ndGgoKSk7Ci0gICAgbV9zaWduYXR1cmUuYXBwZW5kKHNp
Z25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5sZW5ndGgoKSk7Ci0gICAgbV91c2VySGFuZGxlLmFw
cGVuZCh1c2VySGFuZGxlLmRhdGEoKSwgdXNlckhhbmRsZS5sZW5ndGgoKSk7Ci19Ci0KLXZvaWQg
TW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjpyZWYoKQotewotICAgIG1faW50ZXJuYWxzLnJlZigp
OwotfQotCi12b2lkIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6ZGVyZWYoKQotewotICAgIG1f
aW50ZXJuYWxzLmRlcmVmKCk7Ci19Ci0KLXZvaWQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjpt
YWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGhhbmRs
ZXIpCi17Ci0gICAgYXV0byBtZXNzYWdlSWQgPSBhZGRDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoaGFuZGxlcikpOwotICAgIGlmIChtX2RpZFRpbWVPdXQpIHsKLSAgICAgICAgbV9k
aWRUaW1lT3V0ID0gZmFsc2U7Ci0gICAgICAgIG1fdGltZU91dE1lc3NhZ2VJZHMuYXBwZW5kKG1l
c3NhZ2VJZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1fZGlkVXNlckNhbmNl
bCkgewotICAgICAgICBtX2RpZFVzZXJDYW5jZWwgPSBmYWxzZTsKLSAgICAgICAgZXhjZXB0aW9u
UmVwbHkobWVzc2FnZUlkLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiVXNlciBj
YW5jZWxsZWQuIl9zIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9jcmVk
ZW50aWFsSWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9hdHRlc3RhdGlvbk9iamVj
dC5pc0VtcHR5KCkpOwotICAgICAgICBtYWtlQ3JlZGVudGlhbFJlcGx5KG1lc3NhZ2VJZCwgbV9j
cmVkZW50aWFsSWQsIG1fYXR0ZXN0YXRpb25PYmplY3QpOwotICAgICAgICBtX2NyZWRlbnRpYWxJ
ZC5jbGVhcigpOwotICAgICAgICBtX2F0dGVzdGF0aW9uT2JqZWN0LmNsZWFyKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgTW9j
a0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICBhdXRvIG1lc3NhZ2VJZCA9IGFkZFJlcXVl
c3RDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBpZiAobV9kaWRUaW1l
T3V0KSB7Ci0gICAgICAgIG1fZGlkVGltZU91dCA9IGZhbHNlOwotICAgICAgICBtX3RpbWVPdXRN
ZXNzYWdlSWRzLmFwcGVuZChtZXNzYWdlSWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmIChtX2RpZFVzZXJDYW5jZWwpIHsKLSAgICAgICAgbV9kaWRVc2VyQ2FuY2VsID0gZmFsc2U7
Ci0gICAgICAgIGV4Y2VwdGlvblJlcGx5KG1lc3NhZ2VJZCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFs
bG93ZWRFcnJvciwgIlVzZXIgY2FuY2VsbGVkLiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBpZiAoIW1fY3JlZGVudGlhbElkLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQo
IW1fYXV0aGVudGljYXRvckRhdGEuaXNFbXB0eSgpICYmICFtX3NpZ25hdHVyZS5pc0VtcHR5KCkg
JiYgIW1fdXNlckhhbmRsZS5pc0VtcHR5KCkpOwotICAgICAgICBnZXRBc3NlcnRpb25SZXBseSht
ZXNzYWdlSWQsIG1fY3JlZGVudGlhbElkLCBtX2F1dGhlbnRpY2F0b3JEYXRhLCBtX3NpZ25hdHVy
ZSwgbV91c2VySGFuZGxlKTsKLSAgICAgICAgbV9jcmVkZW50aWFsSWQuY2xlYXIoKTsKLSAgICAg
ICAgbV9hdXRoZW50aWNhdG9yRGF0YS5jbGVhcigpOwotICAgICAgICBtX3NpZ25hdHVyZS5jbGVh
cigpOwotICAgICAgICBtX3VzZXJIYW5kbGUuY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBNb2NrQ3JlZGVudGlhbHNN
ZXNzZW5nZXI6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShR
dWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICBhdXRvIG1lc3NhZ2VJZCA9
IGFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgaWYgKG1f
ZGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvclByZXNlbnQpIHsKLSAgICAgICAg
aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2Fn
ZUlkLCB0cnVlKTsKLSAgICAgICAgbV9kaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yUHJlc2VudCA9IGZhbHNlOwotICAgIH0gZWxzZQotICAgICAgICBpc1VzZXJWZXJpZnlpbmdQ
bGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseShtZXNzYWdlSWQsIGZhbHNlKTsKLX0K
LQotdm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6Om1ha2VDcmVkZW50aWFsUmVwbHkodWlu
dDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCkKLXsKLSAgICBhdXRvIGhhbmRs
ZXIgPSB0YWtlQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcihtZXNzYWdlSWQpOwotICAgIGhhbmRs
ZXIoQ3JlYXRpb25SZXR1cm5CdW5kbGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQu
ZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3Rh
dGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSkpKTsKLX0KLQotdm9p
ZCBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6OmdldEFzc2VydGlvblJlcGx5KHVpbnQ2NF90IG1l
c3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2ln
bmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCi17Ci0gICAgYXV0byBo
YW5kbGVyID0gdGFrZVJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihtZXNzYWdlSWQpOwotICAgIGhh
bmRsZXIoQXNzZXJ0aW9uUmV0dXJuQnVuZGxlKEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlh
bElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0
aGVudGljYXRvckRhdGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkpLCBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUuZGF0YSgpLCB1c2VySGFuZGxlLnNpemUoKSkpKTsKLX0K
LQotdm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3Jt
QXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCByZXN1
bHQpCi17Ci0gICAgYXV0byBoYW5kbGVyID0gdGFrZVF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIobWVz
c2FnZUlkKTsKLSAgICBoYW5kbGVyKHJlc3VsdCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjRiMDhkZjRlYWEwODQ4ZTExMTkxZTlhODZlNDA0YTJiYzUxMTgyZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVVRI
TikKLQotI2luY2x1ZGUgIkJ1ZmZlclNvdXJjZS5oIgotI2luY2x1ZGUgIkNyZWRlbnRpYWxzTWVz
c2VuZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBJbnRlcm5hbHM7Ci0KLWNsYXNzIE1vY2tDcmVkZW50aWFsc01lc3NlbmdlciBm
aW5hbCA6IHB1YmxpYyBDcmVkZW50aWFsc01lc3NlbmdlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGlj
aXQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyKEludGVybmFscyYpOwotICAgIH5Nb2NrQ3JlZGVu
dGlhbHNNZXNzZW5nZXIoKTsKLQotICAgIHZvaWQgc2V0RGlkVGltZU91dCgpIHsgbV9kaWRUaW1l
T3V0ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0RGlkVXNlckNhbmNlbCgpIHsgbV9kaWRVc2VyQ2Fu
Y2VsID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0RGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVu
dGljYXRvclByZXNlbnQoKSB7IG1fZGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRv
clByZXNlbnQgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRDcmVhdGlvblJldHVybkJ1bmRsZShjb25z
dCBCdWZmZXJTb3VyY2UmIGNyZWRlbnRpYWxJZCwgY29uc3QgQnVmZmVyU291cmNlJiBhdHRlc3Rh
dGlvbk9iamVjdCk7Ci0gICAgdm9pZCBzZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoY29uc3QgQnVm
ZmVyU291cmNlJiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYXV0aGVudGljYXRv
ckRhdGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2Um
IHVzZXJIYW5kbGUpOwotCi0gICAgdm9pZCByZWYoKTsKLSAgICB2b2lkIGRlcmVmKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQ3JlYXRpb25Db21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYs
IFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGlzVXNlclZlcmlm
eWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwotICAgIHZvaWQgbWFrZUNyZWRlbnRpYWxSZXBseSh1aW50NjRfdCBtZXNzYWdl
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KSBmaW5hbDsKLSAgICB2b2lkIGdldEFzc2VydGlvblJl
cGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFs
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUp
IGZpbmFsOwotICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBib29sKSBmaW5hbDsKLQotICAgIEludGVy
bmFscyYgbV9pbnRlcm5hbHM7Ci0gICAgLy8gQWxsIGZvbGxvd2luZyBmaWVsZHMgYXJlIGRpc3Bv
c2FibGUuCi0gICAgYm9vbCBtX2RpZFRpbWVPdXQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9kaWRV
c2VyQ2FuY2VsIHsgZmFsc2UgfTsKLSAgICBib29sIG1fZGlkVXNlclZlcmlmeWluZ1BsYXRmb3Jt
QXV0aGVudGljYXRvclByZXNlbnQgeyBmYWxzZSB9OwotICAgIFZlY3Rvcjx1aW50OF90PiBtX2F0
dGVzdGF0aW9uT2JqZWN0OwotICAgIFZlY3Rvcjx1aW50OF90PiBtX2NyZWRlbnRpYWxJZDsgLy8g
T3ZlcmxhcHBlZCBiZXR3ZWVuIENyZWF0aW9uUmV0dXJuQnVuZGxlIGFuZCBBc3NlcnRpb25SZXR1
cm5CdW5kbGUuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYXV0aGVudGljYXRvckRhdGE7Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IG1fc2lnbmF0dXJlOwotICAgIFZlY3Rvcjx1aW50OF90PiBtX3VzZXJI
YW5kbGU7Ci0KLSAgICAvLyBUbyBjbGVhbiB1cCBjb21wbGV0aW9uIGhhbmRsZXJzLgotICAgIFZl
Y3Rvcjx1aW50NjRfdD4gbV90aW1lT3V0TWVzc2FnZUlkczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5pZGwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDMxZTEyNmE5MmJmMTE5YTNjNDVmYWU1ZWIyOGE4YjlhYjk1OGQ5
ODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJf
QVVUSE4sCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi1dIGludGVyZmFjZSBNb2NrQ3JlZGVudGlh
bHNNZXNzZW5nZXIgewotICAgIHZvaWQgc2V0RGlkVGltZU91dCgpOwotICAgIHZvaWQgc2V0RGlk
VXNlckNhbmNlbCgpOwotICAgIHZvaWQgc2V0RGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVu
dGljYXRvclByZXNlbnQoKTsKLSAgICB2b2lkIHNldENyZWF0aW9uUmV0dXJuQnVuZGxlKEJ1ZmZl
clNvdXJjZSBjcmVkZW50aWFsSWQsIEJ1ZmZlclNvdXJjZSBhdHRlc3RhdGlvbk9iamVjdCk7Ci0g
ICAgdm9pZCBzZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoQnVmZmVyU291cmNlIGNyZWRlbnRpYWxJ
ZCwgQnVmZmVyU291cmNlIGF1dGhlbnRpY2F0b3JEYXRhLCBCdWZmZXJTb3VyY2Ugc2lnbmF0dXJl
LCBCdWZmZXJTb3VyY2UgdXNlckhhbmRsZSk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDFlNGNjNTFkOGY5MGY0YzMzZTNiOGM4NDBmNjUzNTMzYmFjY2JlNDUuLmJkZWMyODMx
YjY1MTBhNzgwZmVkNmJiNDI2MTFiYzkyZjQ3ODczYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTQzLDcgKzQzLDYgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL0FwcGxpY2F0aW9uQ2FjaGUgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvQ2FjaGUgXAotICAgICQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudCBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24gXApAQCAtNTgs
NiArNTcsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvUmVzb3VyY2VD
YWNoZSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1N0b3JhZ2UgXAogICAgICQoV2ViS2l0
MikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudCBcCisgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJQYWdlIFwKICAgICAkKFdlYktpdDIp
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUgXApAQCAtNjksNyArNjksNiBAQCBW
UEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9BcHBsZVBheSBcCiAgICAgJChXZWJL
aXQyKS9VSVByb2Nlc3MvQXV0b21hdGlvbiBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvQ29j
b2EgXAotICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50IFwKICAg
ICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9EYXRhYmFzZXMgXAogICAgICQoV2ViS2l0MikvVUlQcm9j
ZXNzL0Rvd25sb2FkcyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvTWVkaWFTdHJlYW0gXApA
QCAtODAsNiArNzksNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL1N0b3JhZ2UgXAogICAgICQo
V2ViS2l0MikvVUlQcm9jZXNzL1VzZXJDb250ZW50IFwKKyAgICAkKFdlYktpdDIpL1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbiBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvV2ViU3RvcmFn
ZSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvbWFjIFwKICAgICAkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9pb3MgXApAQCAtMTQ5LDggKzE0OSw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAg
IFdlYkNvbm5lY3Rpb24gXAogICAgIFdlYkNvb2tpZU1hbmFnZXIgXAogICAgIFdlYkNvb2tpZU1h
bmFnZXJQcm94eSBcCi0gICAgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIgXAotICAgIFdlYkNyZWRl
bnRpYWxzTWVzc2VuZ2VyUHJveHkgXAorICAgIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvciBc
CisgICAgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgXAogICAgIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyIFwKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5IFwKICAgICBXZWJHZW9s
b2NhdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDAyNmRhNTJlOWVkODNj
NGE4ZGJkNGE4Y2UyMTdmMzg4ZDMxMjk5OGIuLjE2ZDA3YmEwMzNjZTg3Y2ZlMzc2OWFiM2RlOGY4
Mjk2MGJhNzI5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTM0NCw4ICszNDQsNiBAQCBV
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KIFVJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZy
YW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbQogVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0Nv
bnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCiAKLVVJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVu
dC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmNwcAotCiBVSVByb2Nlc3MvR2FtZXBhZC9j
b2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9pb3MvVUlH
YW1lcGFkUHJvdmlkZXJJT1MubW0KIFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92
aWRlck1hYy5tbQpAQCAtNDU2LDYgKzQ1NCw4IEBAIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLm1tCiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCiAKK1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKwog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogCiBV
SVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTQ2NCw4ICs0NjQsNiBA
QCBVSVByb2Nlc3MvV2ViU3RvcmFnZS9pb3MvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VySU9T
Lm1tCiAKIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAogCi1X
ZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmNw
cAotCiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KIFdlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTUxMCw2ICs1MDgsOCBAQCBXZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQogCitXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKKwogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVu
dC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOWNiY2ZiZjJjZDkwNDFhZjQ4ZDA5YzJkMGU2ZjBlNGRlMjAyMDU2OC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuaCIK
LQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNpbmNsdWRlICJXZWJDcmVkZW50aWFsc01lc3Nl
bmdlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1l
c3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9Mb2NhbEF1dGhlbnRpY2F0b3IuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHko
V2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCi0gICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdl
UHJveHkpCi17Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgKnRoaXMpOwotICAgIG1fYXV0aGVudGlj
YXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yPigpOwot
fQotCi1XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5Ojp+V2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXJQcm94eSgpCi17Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViQ3Jl
ZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6bWFrZUNyZWRlbnRpYWwodWludDY0X3QgbWVzc2FnZUlk
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgLy8gRklYTUUoMTgyNzY3
KQotICAgIGlmICghbV9hdXRoZW50aWNhdG9yKSB7Ci0gICAgICAgIGV4Y2VwdGlvblJlcGx5KG1l
c3NhZ2VJZCwgeyBXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVu
dGljYXRvcnMuIl9zIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8vIEZJWE1FKDE4
MzUzNCk6IFdlYWsgcG9pbnRlcnMgZG9lc24ndCB3b3JrIGluIGFub3RoZXIgdGhyZWFkIGJlY2F1
c2Ugb2YgcmFjZSBjb25kaXRpb24uCi0gICAgLy8gRklYTUUoMTgzNTM0KTogVW5pZnkgY2FsbGJh
Y2tzLgotICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgYXV0byBj
YWxsYmFjayA9IFt3ZWFrVGhpcywgbWVzc2FnZUlkXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBj
cmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpIHsK
LSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgd2Vh
a1RoaXMtPm1ha2VDcmVkZW50aWFsUmVwbHkobWVzc2FnZUlkLCBjcmVkZW50aWFsSWQsIGF0dGVz
dGF0aW9uT2JqZWN0KTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbd2Vh
a1RoaXMsIG1lc3NhZ2VJZF0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlv
bikgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB3ZWFrVGhpcy0+ZXhjZXB0aW9uUmVwbHkobWVzc2FnZUlkLCBleGNlcHRpb24pOwotICAgIH07
Ci0gICAgbV9hdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbChoYXNoLCBvcHRpb25zLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOwotfQotCi12b2lkIFdl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6OmdldEFzc2VydGlvbih1aW50NjRfdCBtZXNzYWdl
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zKQotewotICAgIC8vIEZJWE1FKDE4Mjc2
NykKLSAgICBpZiAoIW1fYXV0aGVudGljYXRvcikKLSAgICAgICAgZXhjZXB0aW9uUmVwbHkobWVz
c2FnZUlkLCB7IFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50
aWNhdG9ycy4iX3MgfSk7Ci0gICAgLy8gRklYTUUoMTgzNTM0KTogV2VhayBwb2ludGVycyBkb2Vz
bid0IHdvcmsgaW4gYW5vdGhlciB0aHJlYWQgYmVjYXVzZSBvZiByYWNlIGNvbmRpdGlvbi4KLSAg
ICAvLyBGSVhNRSgxODM1MzQpOiBVbmlmeSBjYWxsYmFja3MuCi0gICAgYXV0byB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzLCBtZXNz
YWdlSWRdIChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWdu
YXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRsZSkgewotICAgICAgICBpZiAo
d2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+Z2V0QXNzZXJ0aW9uUmVwbHkobWVzc2Fn
ZUlkLCBjcmVkZW50aWFsSWQsIGF1dGhlbnRpY2F0b3JEYXRhLCBzaWduYXR1cmUsIHVzZXJIYW5k
bGUpOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFjayA9IFt3ZWFrVGhpcywgbWVz
c2FnZUlkXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7Ci0gICAg
ICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5leGNlcHRpb25SZXBseSht
ZXNzYWdlSWQsIGV4Y2VwdGlvbik7Ci0gICAgfTsKLSAgICBtX2F1dGhlbnRpY2F0b3ItPmdldEFz
c2VydGlvbihoYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjaykpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6Omlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSh1aW50NjRfdCBtZXNz
YWdlSWQpCi17Ci0gICAgaWYgKCFtX2F1dGhlbnRpY2F0b3IpIHsKLSAgICAgICAgaXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2FnZUlkLCBmYWxz
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2FnZUlkLCBtX2F1dGhlbnRpY2F0b3ItPmlz
QXZhaWxhYmxlKCkpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6OmV4
Y2VwdGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYgZXhjZXB0aW9uKQotewotICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6Oldl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjpFeGNlcHRpb25SZXBseShtZXNzYWdlSWQsIGV4Y2VwdGlv
bikpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6Om1ha2VDcmVkZW50
aWFsUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRl
bnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCkKLXsKLSAg
ICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6
TWFrZUNyZWRlbnRpYWxSZXBseShtZXNzYWdlSWQsIGNyZWRlbnRpYWxJZCwgYXR0ZXN0YXRpb25P
YmplY3QpKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5OjpnZXRBc3Nl
cnRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3Jl
ZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2Vy
SGFuZGxlKQotewotICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYkNyZWRlbnRp
YWxzTWVzc2VuZ2VyOjpHZXRBc3NlcnRpb25SZXBseShtZXNzYWdlSWQsIGNyZWRlbnRpYWxJZCwg
YXV0aGVudGljYXRvckRhdGEsIHNpZ25hdHVyZSwgdXNlckhhbmRsZSkpOwotfQotCi12b2lkIFdl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVu
dGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCByZXN1bHQpCi17
Ci0gICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6V2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXI6OklzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1l
c3NhZ2VJZCwgcmVzdWx0KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyUHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ3NGM5NzI3
MGI3ODNlODdlNGY4ZTUyZjI4ZGEwZWEyOTBjNzBjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DcmVkZW50aWFs
TWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCX0FVVEhOKQotCi0jaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBMb2NhbEF1dGhlbnRpY2F0
b3I7Ci0KLXN0cnVjdCBFeGNlcHRpb25EYXRhOwotc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnM7Ci1zdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZVByb3h5OwotCi1jbGFz
cyBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk+
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5
KTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5KFdl
YlBhZ2VQcm94eSYpOwotICAgIH5XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5KCk7Ci0KLXBy
aXZhdGU6Ci0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCi0gICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLQotICAg
IC8vIFJlY2VpdmVycy4KLSAgICB2b2lkIG1ha2VDcmVkZW50aWFsKHVpbnQ2NF90IG1lc3NhZ2VJ
ZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJik7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb24odWludDY0
X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYpOwotICAgIHZvaWQgaXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKHVpbnQ2NF90IG1lc3NhZ2VJZCk7
Ci0KLSAgICAvLyBTZW5kZXJzLgotICAgIHZvaWQgZXhjZXB0aW9uUmVwbHkodWludDY0X3QgbWVz
c2FnZUlkLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik7Ci0gICAgdm9pZCBtYWtlQ3Jl
ZGVudGlhbFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBj
cmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpOwot
ICAgIHZvaWQgZ2V0QXNzZXJ0aW9uUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50
aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgdXNlckhhbmRsZSk7Ci0gICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpOwot
Ci0gICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQcm94eTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yPiBtX2F1dGhlbnRpY2F0b3I7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVk
ZW50aWFsc01lc3NlbmdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5tZXNz
YWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTU4YmJhZTZmMDE0YjBiYmI2
Y2U5NzhhODQ5YWZmNTM4ZjMzMjYwZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVu
dC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwK
QEAgLTEsMzQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0j
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0jIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSMv
Ci0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi1tZXNzYWdlcyAtPiBXZWJDcmVkZW50aWFsc01l
c3NlbmdlclByb3h5IHsKLQotICAgIE1ha2VDcmVkZW50aWFsKHVpbnQ2NF90IG1lc3NhZ2VJZCwg
VmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zIG9wdGlvbnMpOwotICAgIEdldEFzc2VydGlvbih1aW50NjRfdCBtZXNz
YWdlSWQsIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlvbnMpOwotICAgIElzVXNlclZlcmlmeWluZ1BsYXRm
b3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSh1aW50NjRfdCBtZXNzYWdlSWQpOwotfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMjIzOTQ4ZWUxODAwMThjZDJkMDU5MWFkNjIwY2JmZDhlN2I5NmM3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0wLDAgKzEsMTE0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisj
aW5jbHVkZSAiV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbEF1dGhlbnRp
Y2F0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJv
eHkpCisgICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCit7CisgICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2F1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRvcj4oKTsKK30KKworV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6On5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSgpCit7
CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4m
IGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
IG9wdGlvbnMpCit7CisgICAgLy8gRklYTUUoMTgyNzY3KQorICAgIGlmICghbV9hdXRoZW50aWNh
dG9yKSB7CisgICAgICAgIHJlcXVlc3RSZXBseSh7IH0sIHsgV2ViQ29yZTo6Tm90QWxsb3dlZEVy
cm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAvLyBGSVhNRSgxODM1MzQpOiBXZWFrIHBvaW50ZXJzIGRvZXNuJ3Qgd29y
ayBpbiBhbm90aGVyIHRocmVhZCBiZWNhdXNlIG9mIHJhY2UgY29uZGl0aW9uLgorICAgIGF1dG8g
Y2FsbGJhY2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChWYXJpYW50PFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJl
c3VsdCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5
Q3JlZGVudGlhbERhdGEmIGRhdGEpIHsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5yZXF1ZXN0UmVw
bHkoZGF0YSwgeyB9KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5yZXF1ZXN0UmVwbHkoeyB9
LCBleGNlcHRpb24pOworICAgICAgICB9KTsKKyAgICB9OworICAgIG1fYXV0aGVudGljYXRvci0+
bWFrZUNyZWRlbnRpYWwoaGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2
b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24oY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgLy8gRklYTUUoMTgyNzY3KQorICAgIGlm
ICghbV9hdXRoZW50aWNhdG9yKQorICAgICAgICByZXF1ZXN0UmVwbHkoeyB9LCB7IFdlYkNvcmU6
Ok5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7Cisg
ICAgLy8gRklYTUUoMTgzNTM0KTogV2VhayBwb2ludGVycyBkb2Vzbid0IHdvcmsgaW4gYW5vdGhl
ciB0aHJlYWQgYmVjYXVzZSBvZiByYWNlIGNvbmRpdGlvbi4KKyAgICBhdXRvIGNhbGxiYWNrID0g
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXVEY6
OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxE
YXRhJiBkYXRhKSB7CisgICAgICAgICAgICB3ZWFrVGhpcy0+cmVxdWVzdFJlcGx5KGRhdGEsIHsg
fSk7CisgICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICB3ZWFrVGhpcy0+cmVxdWVzdFJlcGx5KHsgfSwgZXhjZXB0aW9u
KTsKKyAgICAgICAgfSk7CisgICAgfTsKKyAgICBtX2F1dGhlbnRpY2F0b3ItPmdldEFzc2VydGlv
bihoYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZSh1aW50NjRfdCBtZXNzYWdlSWQpCit7CisgICAgaWYgKCFtX2F1dGhlbnRp
Y2F0b3IpIHsKKyAgICAgICAgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlUmVwbHkobWVzc2FnZUlkLCBmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVz
c2FnZUlkLCBtX2F1dGhlbnRpY2F0b3ItPmlzQXZhaWxhYmxlKCkpOworfQorCit2b2lkIFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpyZXF1ZXN0UmVwbHkoY29uc3QgV2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbERhdGEmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmIGV4Y2VwdGlvbikKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OlJlcXVlc3RSZXBseShkYXRhLCBleGNlcHRpb24pKTsK
K30KKwordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNVc2VyVmVyaWZ5
aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlk
LCBib29sIHJlc3VsdCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OklzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJZCwgcmVzdWx0KSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxNzVh
YWNlMDMwNmI2YmQ1YmNkMTIzODNlZmIyYWEwOTQ1ZjVkOTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIExvY2FsQXV0aGVudGljYXRvcjsKKworc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3Qg
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKK3N0cnVjdCBQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YTsKK3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5KFdlYlBhZ2VQcm94eSYpOworICAgIH5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eSgpOworCitwcml2YXRlOgorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgorICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
b3ZlcnJpZGU7CisKKyAgICAvLyBSZWNlaXZlcnMuCisgICAgdm9pZCBtYWtlQ3JlZGVudGlhbChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMmKTsKKyAgICB2b2lkIGdldEFzc2VydGlvbihjb25zdCBWZWN0
b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucyYpOworICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yQXZhaWxhYmxlKHVpbnQ2NF90IG1lc3NhZ2VJZCk7CisKKyAgICAvLyBTZW5kZXJzLgorICAg
IHZvaWQgcmVxdWVzdFJlcGx5KGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
JiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpOworICAgIHZvaWQgaXNVc2VyVmVyaWZ5
aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlk
LCBib29sKTsKKworICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRvcj4gbV9hdXRoZW50aWNhdG9yOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2M2Njc3NmU2MWEwNWIxYmFkNTI5MmRk
MTE1MjEzYWFmYTNhYmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwzNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyMvCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCittZXNzYWdlcyAtPiBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSB7CisKKyAgICBNYWtlQ3JlZGVudGlhbChWZWN0b3I8
dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMgb3B0aW9ucyk7CisgICAgR2V0QXNzZXJ0aW9uKFZlY3Rvcjx1aW50OF90PiBoYXNo
LCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIG9wdGlv
bnMpOworICAgIElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSh1
aW50NjRfdCBtZXNzYWdlSWQpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGUyODMxMGJhNjBhOTI4MzM3YTA4Zjc2OTNkOGVkYzkxNTZl
YmE0MzYuLjAxYjFiYmJiZWVkZjdlNDM1YTllNzg1ODFiZjA0MzY3YzljYThhY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjExLDcgKzIxMSw3IEBACiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0jaW5jbHVkZSAiV2ViQ3JlZGVudGlhbHNN
ZXNzZW5nZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5LmgiCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5H
KQpAQCAtNDYxLDcgKzQ2MSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eT4oKnRoaXMpOworICAgIG1f
Y3JlZGVudGlhbHNNZXNzZW5nZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5PigqdGhpcyk7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+YWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlSUQsICp0aGlzKTsKQEAgLTc3OSw3ICs3NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBB
UEk6Ok5hdgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIG1fY3JlZGVudGlh
bHNNZXNzZW5nZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJv
eHk+KCp0aGlzKTsKKyAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICAg
ICBpbml0aWFsaXplV2ViUGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCBhOThmZDcyZWVlNGJmN2EwNTA4NmI1ODVhYmJlNzNhMWQ2NjM1NWViLi40MTkzM2Ex
NDljY2Q1YzlkM2ZlYjdlNTgzMWJhMjQwODM4MWI5YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMjM2LDcgKzIzNiw3IEBAIGNsYXNzIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk7CiBjbGFzcyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk7CiBjbGFzcyBX
ZWJOYXZpZ2F0aW9uU3RhdGU7CiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk7Ci1j
bGFzcyBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5OworY2xhc3MgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViVVJM
U2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CkBAIC0xOTE3LDcgKzE5MTcsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5PiBtX2NyZWRlbnRpYWxzTWVzc2Vu
Z2VyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eT4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsKICNlbmRpZgogCiAgICAgQ2FsbGJhY2tNYXAgbV9j
YWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3YmRhYzYwZmMzMmI2MDczN2U2ZWQxMWY2MTc3OTQxMDUwZjc1NzBhLi4zZjlk
YTY4ZWU2NjU5NjJiMGE2OGUyMzBmNTg5ZTkzOTc5OTkyYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMjgsMTEgKzEwMjgsMTEg
QEAKIAkJNTNCQTQ3RDExREMyRUY1RTAwNERGNEFEIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOUVCNTQ3MURD
MkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggKi87IH07CiAJCTUzREVBMzY2
MURERTQyMzEwMEU4MjY0OCAvKiBqc29uLmhwcCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzREVBMzY1MURERTQyMkUwMEU4MjY0OCAvKiBqc29uLmhwcCAq
LzsgfTsKIAkJNTcwQUI4RjMyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEFCOEYyMjBB
RTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggKi87IH07Ci0JCTU3NjA4MjlDMjAy
RDJDM0MwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI5
MDIwMjk4RkJEMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwotCQk1NzYwODI5RDIwMkQyQzQwMDAxMTY2NzggLyogV2ViQ3JlZGVudGlh
bHNNZXNzZW5nZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTc2MDgyOEYyMDI5OEZCRDAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVz
c2VuZ2VyTWVzc2FnZXMuaCAqLzsgfTsKLQkJNTc2MDgyOUUyMDJEMkM0MzAwMTE2Njc4IC8qIFdl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2MDgyOUEyMDJCRUU1QTAwMTE2
Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwotCQk1NzYwODI5RjIwMkQyQzQ2MDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzYwODI5QjIwMkJFRTVBMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJCTU3QjRCNDYwMjBCNTA0QUMwMEQ0QUQ3OSAvKiBD
bGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I0QjQ1RTIwQjUwNEFCMDBENEFE
NzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oICovOyB9
OworCQk1N0RDRUQ2RTIxNDJFRTVFMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RENFRDZCMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk1N0RDRUQ2RjIxNDJFRTYz
MDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZBMjE0MkVBRTIw
MDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovOyB9Owor
CQk1N0RDRUQ3MDIxNDJFRTY4MDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTdEQ0VENkMyMTQyRUFGOTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNTdEQ0VENzEy
MTQyRUU2QzAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENF
RDZEMjE0MkVBRkEwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1l
c3NhZ2VzLmggKi87IH07CiAJCTVDMEIxNzc4MUU3Qzg4MEUwMEU5MTIzQyAvKiBOZXR3b3JrU29j
a2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29j
a2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNUMwQjE3NzkxRTdDODgyMTAw
RTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBCMTc3NjFFN0M4NzlDMDBFOTEy
M0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNUMxNDI2
RUQxQzIzRjgwOTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZFMzFD
MjNGODA1MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLzsg
fTsKQEAgLTMzNjgsMTggKzMzNjgsMTggQEAKIAkJNTcwQUI5MDMyMEIyNTQxQzAwQjhCRTg3IC8q
IFNlY0tleVByb3h5U3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTZWNLZXlQcm94eVN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NzUwNzVBNzIwQUI3NjM2MDA2OTNFQTkgLyogV2ViQ3JlZGVudGlhbE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcms7
IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0xvY2FsQXV0aGVudGljYXRpb24uZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKLQkJNTc2MDgyOEIyMDI5ODU0MjAwMTE2
Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNyZWRl
bnRpYWxzTWVzc2VuZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjhD
MjAyOTg1NDIwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJDcmVkZW50aWFsc01lc3Nlbmdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTU3NjA4MjhEMjAyOTg3RTYwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01l
c3Nlbmdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJDcmVkZW50aWFsc01lc3Nlbmdlci5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOEYyMDI5OEZCRDAwMTE2
Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1NzYwODI5MDIwMjk4RkJEMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ3JlZGVudGlhbHNN
ZXNzZW5nZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1NzYwODI5NTIwMkJEOEJBMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4Mjk2MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJD
cmVkZW50aWFsc01lc3NlbmdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyZWRl
bnRpYWxzTWVzc2VuZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
NzYwODI5OTIwMkJEQUUyMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5Lm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI5QTIwMkJFRTVBMDAxMTY2Nzgg
LyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOUIyMDJCRUU1QTAwMTE2
Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyOEIyMDI5ODU0MjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyOEMyMDI5ODU0MjAw
MTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NzYwODI4RDIwMjk4N0U2MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyOTUyMDJCRDhC
QTAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU3NjA4Mjk2MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3
NjA4Mjk5MjAyQkRBRTIwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNEI0NUQyMEI1MDRBQjAw
RDRBRDc5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW07IHBh
dGggPSBBdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNEI0NUUyMEI1MDRBQjAwRDRBRDc5IC8q
IENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQ
Q0NvbnN0YW50cy5oOyBwYXRoID0gQXV0aGVudGljYXRpb24vY29jb2EvQ2xpZW50Q2VydGlmaWNh
dGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1N0RDRUQ2QTIxNDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTdEQ0VENkIyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1N0RDRUQ2QzIxNDJFQUY5MDAxNkI4NDcgLyogV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0RD
RUQ2RDIxNDJFQUZBMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdv
cmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzBCMTc3NTFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTb2NrZXRT
dHJlYW1NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzBCMTc3NjFF
N0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzIxLDI0ICs2NzIx
LDI0IEBACiAJCQluYW1lID0gRnJhbWV3b3JrczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07Ci0JCTU3NjA4MjhBMjAyOTg0QzkwMDExNjY3OCAvKiBDcmVkZW50aWFsTWFuYWdlbWVu
dCAqLyA9IHsKKwkJNTc2MDgyOEEyMDI5ODRDOTAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0aW9u
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1NzYwODI4
QzIwMjk4NTQyMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwICovLAotCQkJ
CTU3NjA4MjhCMjAyOTg1NDIwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlci5oICov
LAotCQkJCTU3NjA4MjhEMjAyOTg3RTYwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdl
ci5tZXNzYWdlcy5pbiAqLywKKwkJCQk1NzYwODI4QzIwMjk4NTQyMDAxMTY2NzggLyogV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLywKKwkJCQk1NzYwODI4QjIwMjk4NTQyMDAxMTY2
NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi8sCisJCQkJNTc2MDgyOEQyMDI5
ODdFNjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbiAq
LywKIAkJCSk7Ci0JCQlwYXRoID0gQ3JlZGVudGlhbE1hbmFnZW1lbnQ7CisJCQlwYXRoID0gV2Vi
QXV0aGVudGljYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk1NzYw
ODI5NDIwMkJEODQ5MDAxMTY2NzggLyogQ3JlZGVudGlhbE1hbmFnZW1lbnQgKi8gPSB7CisJCTU3
NjA4Mjk0MjAyQkQ4NDkwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdGlvbiAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTc2MDgyOTYyMDJCRDhCQTAwMTE2
Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuY3BwICovLAotCQkJCTU3NjA4Mjk1
MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmggKi8sCi0J
CQkJNTc2MDgyOTkyMDJCREFFMjAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJv
eHkubWVzc2FnZXMuaW4gKi8sCisJCQkJNTc2MDgyOTYyMDJCRDhCQTAwMTE2Njc4IC8qIFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCAqLywKKwkJCQk1NzYwODI5NTIwMkJEOEJB
MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCAqLywKKwkJCQk1
NzYwODI5OTIwMkJEQUUyMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW4gKi8sCiAJCQkpOwotCQkJcGF0aCA9IENyZWRlbnRpYWxNYW5hZ2VtZW50
OworCQkJcGF0aCA9IFdlYkF1dGhlbnRpY2F0aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKIAkJfTsKIAkJNTdCNEI0NUMyMEI1MDQ4QjAwRDRBRDc5IC8qIGNvY29hICovID0gewpAQCAt
NzAzMyw3ICs3MDMzLDYgQEAKIAkJCQkxQzBBMTk0MzFDOEZGMUE4MDBGRTBFQkIgLyogQXV0b21h
dGlvbiAqLywKIAkJCQk0MUQxMjlEODFGM0QxMDE0MDBEMTVFNDcgLyogQ2FjaGUgKi8sCiAJCQkJ
N0M2RTcwRjgxOEIyRDQ3RTAwRjI0RTJFIC8qIGNvY29hICovLAotCQkJCTU3NjA4MjhBMjAyOTg0
QzkwMDExNjY3OCAvKiBDcmVkZW50aWFsTWFuYWdlbWVudCAqLywKIAkJCQk1MTJBOTc1NDE4MERG
OTI3MDAzOUExNDkgLyogRGF0YWJhc2VzICovLAogCQkJCUJDQUNDNDNCMTZCMjRDNUQwMEI2RTA5
MiAvKiBFbnRyeVBvaW50ICovLAogCQkJCUUxNzA4NzZEMTZENkNBNzIwMEY5OTIyNiAvKiBGaWxl
QVBJICovLApAQCAtNzA0OCw2ICs3MDQ3LDcgQEAKIAkJCQkxQTZGQjdBQTExRTY0QjQ5MDBEQjEz
NzEgLyogUGx1Z2lucyAqLywKIAkJCQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFn
ZSAqLywKIAkJCQkxQUFGMDhBQTE5MjY5MzBCMDBCNjM5MEMgLyogVXNlckNvbnRlbnQgKi8sCisJ
CQkJNTc2MDgyOEEyMDI5ODRDOTAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0aW9uICovLAogCQkJ
CUJDMDMyRDVEMTBGNDM3MjIwMDU4QzE1QSAvKiBXZWJDb3JlU3VwcG9ydCAqLywKIAkJCQlCQzAz
MkQ1RTEwRjQzNzJCMDA1OEMxNUEgLyogV2ViUGFnZSAqLywKIAkJCQkxQUFDNERERTE2QjFDQkY2
MDA5NDI1RTMgLyogV2ViU3RvcmFnZSAqLywKQEAgLTcxOTMsNyArNzE5Myw2IEBACiAJCQkJNTEy
RjU4OEQxMkE4ODM2RjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uICovLAogCQkJCTk5NTVBNkU4
MUM3OTgwOTAwMEVCNkE5MyAvKiBBdXRvbWF0aW9uICovLAogCQkJCTFBQkMzREYyMTg5OUU0MTUw
MDRGMDYyNiAvKiBDb2NvYSAqLywKLQkJCQk1NzYwODI5NDIwMkJEODQ5MDAxMTY2NzggLyogQ3Jl
ZGVudGlhbE1hbmFnZW1lbnQgKi8sCiAJCQkJMUFCN0Q0QzcxMjg4QUE5QTAwQ0ZEMDhDIC8qIERv
d25sb2FkcyAqLywKIAkJCQk1MTVCRTE3QjFENTRFRjVBMDBERDdDNjggLyogR2FtZXBhZCAqLywK
IAkJCQkyREE5NDRBODE4ODRFOUFCMDBFRDg2REIgLyogaW9zICovLApAQCAtNzIwNSw2ICs3MjA0
LDcgQEAKIAkJCQkyRDE1NTFBOTFGNUE5QjQyMDAwNkUzRkUgLyogUmVtb3RlTGF5ZXJUcmVlICov
LAogCQkJCTUxN0RENUJCMTgwREE3QzQwMDgxNjYwQiAvKiBTdG9yYWdlICovLAogCQkJCTFBQUYw
ODlFMTkyNjgxQUMwMEI2MzkwQyAvKiBVc2VyQ29udGVudCAqLywKKwkJCQk1NzYwODI5NDIwMkJE
ODQ5MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRpb24gKi8sCiAJCQkJMUE1M0MyQTMxQTMyNTY5
MTAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhICovLAogCQkJCTFBNDRCOTU4MTZCNzNGOEMwMEI3QkJE
OCAvKiBXZWJTdG9yYWdlICovLAogCQkJCTdDRDEwMkQ5MTg2Njc3MDYwMEVENDI5RCAvKiBBdXRv
Q29ycmVjdGlvbkNhbGxiYWNrLmggKi8sCkBAIC04MzQ0LDYgKzgzNDQsMTAgQEAKIAkJCQkxQTYw
MjI0QjE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VzLmggKi8sCiAJ
CQkJMUE4RTdEM0ExOEMxNTE0OTAwNUE3MDJBIC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQThFN0QzQjE4QzE1MTQ5MDA1QTcwMkEgLyog
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNzYWdlcy5oICovLAorCQkJCTU3RENFRDZCMjE0
MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAorCQkJCTU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovLAorCQkJCTU3RENFRDZDMjE0MkVBRjkwMDE2Qjg0
NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCisJCQkJNTdEQ0VENkQyMTQyRUFGQTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkxQzBBMTk1NTFDOTAwNjhGMDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDMEEx
OTU2MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggKi8s
CiAJCQkJMUMwQTE5NTExQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtODM1NiwxMCArODM2MCw2IEBACiAJCQkJMzMw
OTM0NDQxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oICovLAog
CQkJCTMzMDkzNDQ1MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTMzMDkzNDQ2MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJD
b29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovLAotCQkJCTU3NjA4MjkwMjAyOThGQkQwMDEx
NjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0J
CQkJNTc2MDgyOEYyMDI5OEZCRDAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyTWVz
c2FnZXMuaCAqLywKLQkJCQk1NzYwODI5QTIwMkJFRTVBMDAxMTY2NzggLyogV2ViQ3JlZGVudGlh
bHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJNTc2MDgyOUIyMDJC
RUU1QTAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlcy5oICov
LAogCQkJCUNENzNCQTQ4MTMxQUNEOEUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJQ0Q3M0JBNDkxMzFBQ0Q4RTAwRUVERUQyIC8qIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQlDRDczQkE0NTEzMUFDQzg4MDBF
RURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CkBAIC05MjIzLDYgKzkyMjMsOCBAQAogCQkJCTFBRjRDRUYwMThCQzQ4MTgwMEJDMkQzNCAvKiBW
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4RTdEM0Qx
OEMxNTE0OTAwNUE3MDJBIC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3RENFRDZGMjE0MkVFNjMwMDE2
Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTdEQ0VENzEyMTQyRUU2QzAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NTVBNkVDMUM3OTgw
QzIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTlDM0FFMkQxREFEQTZBRDAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQzBBMTk1ODFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21h
dGlvblNlc3Npb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MjYzLDggKzkyNjUsNiBA
QAogCQkJCTMzMDkzNDRBMTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8q
IFdlYkNvcmVBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUIxMkE4
ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3NjA4
MjlEMjAyRDJDNDAwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1NzYwODI5RjIwMkQyQzQ2MDAxMTY2NzggLyogV2ViQ3JlZGVu
dGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4M0Y2
RDFBNUI2M0ZGMDAwMjZFQzYgLyogV2ViRGF0YWJhc2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTUyQ0Y1NTIyMEEzNUMzQTAwREFEQTI3IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTU2OEI5MUYyMEEzQUIyRjAwRTNDODU2IC8qIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDkwMCw2
ICsxMDkwMCw4IEBACiAJCQkJMjY4NDA1NTIxOEI4NkVENjAwMjJDMzhCIC8qIFZpZXdVcGRhdGVE
aXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjAyMjRD
MThDMTZCOUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBOEU3RDNDMThDMTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
N0RDRUQ2RTIxNDJFRTVFMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU3RENFRDcwMjE0MkVFNjgwMDE2
Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzBBMTk1NzFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0
b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMw
QTE5NTMxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBE
IC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0xMDkwNyw4ICsxMDkwOSw2IEBACiAJCQkJMzMwOTM0NDcxMzE1QjkyMjAwOTdB
N0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzMwOTM0NDkxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4ODIxMkI2QUIxMDBG
NDkzRkQgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU3
NjA4MjlDMjAyRDJDM0MwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzYwODI5RTIwMkQyQzQzMDAxMTY2Nzgg
LyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDkyQTc4OTIxMkI2QUIxMDBGNDkzRkQgLyogV2ViRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0Q3M0JBNEUxMzFBQ0RCNzAwRUVERUQyIC8qIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENzNCQTQ3
MTMxQUNDOUEwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFs
c01lc3Nlbmdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNzlkN2VmZTFl
YmEzMTYwZGJmYzhkMDFkZTMyMGVlNGQxZTFhNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxN
YW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNp
bmNsdWRlICJXZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2Vi
Q3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUGFnZS5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViQ3Jl
ZGVudGlhbHNNZXNzZW5nZXI6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyKFdlYlBhZ2UmIHdlYlBh
Z2UpCi0gICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5wYWdlSUQoKSwgKnRoaXMpOwotfQot
Ci1XZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6fldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyKCkKLXsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMp
OwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjptYWtlQ3JlZGVudGlhbChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFdlYkNvcmU6OkNyZWF0aW9uQ29tcGxldGlvbkhh
bmRsZXImJiBoYW5kbGVyKQotewotICAgIGF1dG8gbWVzc2FnZUlkID0gYWRkQ3JlYXRpb25Db21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBtX3dlYlBhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6TWFrZUNyZWRlbnRpYWwobWVzc2Fn
ZUlkLCBoYXNoLCBvcHRpb25zKSk7Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6
OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgV2ViQ29yZTo6UmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICBhdXRvIG1lc3NhZ2VJZCA9
IGFkZFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBtX3dl
YlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6R2V0QXNz
ZXJ0aW9uKG1lc3NhZ2VJZCwgaGFzaCwgb3B0aW9ucykpOwotfQotCi12b2lkIFdlYkNyZWRlbnRp
YWxzTWVzc2VuZ2VyOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgYXV0
byBtZXNzYWdlSWQgPSBhZGRRdWVyeUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikp
OwotICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJDcmVkZW50aWFsc01lc3NlbmdlclBy
b3h5OjpJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUobWVzc2Fn
ZUlkKSk7Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6Om1ha2VDcmVkZW50aWFs
UmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRp
YWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCkKLXsKLSAgICBh
dXRvIGhhbmRsZXIgPSB0YWtlQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcihtZXNzYWdlSWQpOwot
ICAgIGhhbmRsZXIoV2ViQ29yZTo6Q3JlYXRpb25SZXR1cm5CdW5kbGUoQXJyYXlCdWZmZXI6OmNy
ZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNp
emUoKSkpKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6Z2V0QXNzZXJ0aW9u
UmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRp
YWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRs
ZSkKLXsKLSAgICBhdXRvIGhhbmRsZXIgPSB0YWtlUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKG1l
c3NhZ2VJZCk7Ci0gICAgaGFuZGxlcihXZWJDb3JlOjpBc3NlcnRpb25SZXR1cm5CdW5kbGUoQXJy
YXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgp
KSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRp
Y2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwg
c2lnbmF0dXJlLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUodXNlckhhbmRsZS5kYXRhKCks
IHVzZXJIYW5kbGUuc2l6ZSgpKSkpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50
NjRfdCBtZXNzYWdlSWQsIGJvb2wgcmVzdWx0KQotewotICAgIGF1dG8gaGFuZGxlciA9IHRha2VR
dWVyeUNvbXBsZXRpb25IYW5kbGVyKG1lc3NhZ2VJZCk7Ci0gICAgaGFuZGxlcihyZXN1bHQpOwot
fQotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdl
bWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwY2E3ZTUyZTU0MTVjM2UzY2JmNWYzZjRkNTg0YjQ5MWM4
MmMyZmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi0jaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsc01lc3Nlbmdlci5oPgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZTsKLQotY2xhc3MgV2ViQ3JlZGVu
dGlhbHNNZXNzZW5nZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q3JlZGVudGlhbHNNZXNzZW5n
ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0
IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyKFdlYlBhZ2UmKTsKLSAgICB+V2ViQ3JlZGVudGlhbHNN
ZXNzZW5nZXIoKTsKLQotcHJpdmF0ZToKLSAgICAvLyBXZWJDb3JlOjpDcmVkZW50aWFsc01lc3Nl
bmdlcgotICAgIC8vIFNlbmRlcnMuCi0gICAgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zJiwgV2ViQ29yZTo6Q3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAg
ICB2b2lkIGdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkNvcmU6OlJlcXVl
c3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXZWJDb3JlOjpRdWVyeUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwotCi0gICAgLy8gUmVjZWl2ZXJzLgotICAgIHZvaWQgbWFrZUNyZWRlbnRp
YWxSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVu
dGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KSBmaW5hbDsK
LSAgICB2b2lkIGdldEFzc2VydGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVu
dGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpIGZpbmFsOwotICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBi
b29sKSBmaW5hbDsKLQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgotICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7
Ci0KLSAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1l
bnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGE2YzhlZWNhN2M0NzM0NDAxODRmZjE5OTE5MDlmMzI1YmM2ZTdkMWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
Lm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0jIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSMvCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi1t
ZXNzYWdlcyAtPiBXZWJDcmVkZW50aWFsc01lc3NlbmdlciB7Ci0KLSAgICBFeGNlcHRpb25SZXBs
eSh1aW50NjRfdCBtZXNzYWdlSWQsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2Vw
dGlvbik7Ci0gICAgTWFrZUNyZWRlbnRpYWxSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIFZlY3Rv
cjx1aW50OF90PiBjcmVkZW50aWFsSWQsIFZlY3Rvcjx1aW50OF90PiBhdHRlc3RhdGlvbk9iamVj
dCk7Ci0gICAgR2V0QXNzZXJ0aW9uUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBWZWN0b3I8dWlu
dDhfdD4gY3JlZGVudGlhbElkLCBWZWN0b3I8dWludDhfdD4gYXV0aGVudGljYXRvckRhdGEsIFZl
Y3Rvcjx1aW50OF90PiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiB1c2VySGFuZGxlKTsKLSAg
ICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50
NjRfdCBtZXNzYWdlSWQsIGJvb2wgcmVzdWx0KTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwYmE0YzU3
YzY0MTRhODc4YWYyN2JkYjU4M2EwN2U1YTQyNGE4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIgorCisjaWYg
RU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6V2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yKFdlYlBhZ2UmIHdlYlBhZ2UpCisgICAgOiBtX3dlYlBh
Z2Uod2ViUGFnZSkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsKK30KKworV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkKK3sKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworfQor
Cit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyKQoreworICAgIGlmICghc2V0UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoaGFuZGxlcikpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYlBhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Ok1ha2VDcmVkZW50aWFs
KGhhc2gsIG9wdGlvbnMpKTsKK30KKwordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgV2ViQ29yZTo6UmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBpZiAoIXNldFJlcXVlc3RD
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5OjpHZXRBc3NlcnRpb24oaGFzaCwgb3B0aW9ucykpOworfQorCit2b2lkIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlKFdlYkNvcmU6OlF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQoreworICAg
IGF1dG8gbWVzc2FnZUlkID0gYWRkUXVlcnlDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRs
ZXIpKTsKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHk6OklzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJs
ZShtZXNzYWdlSWQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc0N2JlZjY0Yjk5YTk5YmFjZTNlNjQ3MzRjMGYxN2U2NDMyMzFj
ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50
aWFsRGF0YS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xh
c3MgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKFdl
YlBhZ2UmKTsKKyAgICB+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCk7CisKK3ByaXZhdGU6
CisgICAgLy8gV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50CisgICAgLy8g
U2VuZGVycy4KKyAgICB2b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYs
IGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBXZWJD
b3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBnZXRBc3Nl
cnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CisgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRp
Y2F0b3JBdmFpbGFibGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
KworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICBXZWJQ
YWdlJiBtX3dlYlBhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2VjMTkzNTE5OWZmYmQ5
M2U2YzViOWYzOTY2MjUyMjc1ZmFmZWUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorIy8KKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKK21lc3NhZ2VzIC0+IFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvciB7CisKKyAgICBSZXF1ZXN0UmVwbHkoc3RydWN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhIGV4Y2VwdGlvbik7CisgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50
aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBib29sIHJlc3VsdCk7Cit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA0NGRlZmYxMzQwZjU5YWQ5NzAxZTkzYjMyYTk0ZDRmNmQ3NjFhNjQwLi5lYjk2NTg4
ZWMwY2YwZDM1MDc0ZmQ1YWYzZmUxZDJhMjM3Yjk0MGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjc4LDggKzI3OCw4IEBACiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0jaW5jbHVkZSAiV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmg+CisjaW5jbHVk
ZSAiV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTM5Miw5ICszOTIsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24ocGFyYW1ldGVycy51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKQog
ICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7IHBhcmFtZXRlcnMub3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfQogICAgICwgbV9jcHVMaW1pdChwYXJhbWV0ZXJzLmNw
dUxpbWl0KQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgLCBtX2NyZWRlbnRpYWxzTWVzc2Vu
Z2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI+KCp0aGlzKSkKLSNl
bmRpZgogewogICAgIEFTU0VSVChtX3BhZ2VJRCk7CiAKQEAgLTQ0OCw2ICs0NDUsMTAgQEAgV2Vi
UGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNs
aWVudCA9IG5ldyBXZWJQYXltZW50Q29vcmRpbmF0b3IoKnRoaXMpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKQorICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yPigqdGhpcyk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbk1hbmlmZXN0ID0gcGFyYW1ldGVycy5h
cHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCkBAIC02MDUsMTAgKzYwNiw2IEBAIFdlYlBhZ2U6
OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRNZXNzZW5nZXIoKm1f
Y3JlZGVudGlhbHNNZXNzZW5nZXIpOwotI2VuZGlmCi0KICAgICBmb3IgKGF1dG8gaXRlcmF0b3Ig
OiBwYXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzKQogICAgICAgICByZWdpc3RlclVSTFNjaGVt
ZUhhbmRsZXIoaXRlcmF0b3IudmFsdWUsIGl0ZXJhdG9yLmtleSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNDQ5OTQ4MDI5M2M1ZTQyZWFlZTg3
Yjc1YTQzNWVlOGQxZmU1MDhlLi4xZWJiNmQ5ZTI0NjI0MDNjMDc3YzU5YjgyOTE0NTdhZmUyY2Uz
MDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0y
MjYsNyArMjI2LDYgQEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOwogY2xhc3MgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7CiBjbGFzcyBXZWJUb3Vj
aEV2ZW50OwotY2xhc3MgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI7CiBjbGFzcyBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjsKIAogZW51bSBjbGFzcyBEZXZpY2VBY2Nlc3NTdGF0ZTsKQEAgLTE3
MzUsMTAgKzE3MzQsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIHVpbnQ2NF90
PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwOwogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoV0VCX0FVVEhOKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDcmVkZW50aWFsc01lc3Nl
bmdlcj4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsKLSNlbmRpZgotCiAgICAgYm9vbCBtX2lzU3Vz
cGVuZGVkIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA2ZGViYzI5NzljNjYzNGI3NjYxYTQ4NThjMTVhMmI2NDc1M2Rh
N2Y4Li4wYjUxNGRjYzUyZjMxYzk2Y2VmMTk4N2ExNTc0Mzg5NTVmMjhmZTM1IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTgtMDktMDggIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViQXV0aE5dIFBvbGlzaCBBdXRoZW50aWNhdG9yTWFuYWdlciBhbmQgcmVuYW1lIGl0IHRv
IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg5Mjc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDExNTkz
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL0xvY2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTA5LTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFR1cm4gb24gQVJDIGZvciBXZWJLaXRUZXN0UnVu
bmVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9Mb2NhbEF1dGhl
bnRpY2F0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9Mb2NhbEF1dGhlbnRp
Y2F0b3IubW0KaW5kZXggODU1YjE0ZmNjZGM3NGUzOTU5ZjVkMTJkMTQ0MjE0OWUzMzEzZjJkNy4u
Y2Q2M2Q3MzlmNjRlNDJjNmRhMTZiZTdlN2ExNjhlNjg5MmJkN2QzZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtMzgs
NiArMzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0xvY2FsQXV0aGVudGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNy
ZWRlbnRpYWxEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9CYXNlNjQuaD4KQEAgLTI2NiwxNiArMjY3LDE3IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9y
LCBNYWtlQ3JlZGVudGlhbE5vdFN1cHBvcnRlZFB1YktleUNyZWRQYXJhbXMpCiAKICAgICBib29s
IGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRv
cj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRv
cj4oKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7
Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFj
ayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0
YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RTdXBwb3J0ZWRFcnJvciwgZXhj
ZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIlRoZSBwbGF0Zm9ybSBhdHRhY2hl
ZCBhdXRoZW50aWNhdG9yIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5Q3Jl
ZGVudGlhbFBhcmFtZXRlcnMuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwot
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFu
dDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9G
QUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29u
c3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQ
RUNUX0VRKFdlYkNvcmU6Ok5vdFN1cHBvcnRlZEVycm9yLCBleGNlcHRpb24uY29kZSk7CisgICAg
ICAgICAgICBFWFBFQ1RfU1RSRVEoIlRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9y
IGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRl
cnMuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0aGVudGljYXRvci0+bWFrZUNy
ZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwo
eyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC0yOTQsMTggKzI5NiwxOSBAQCBURVNUKExv
Y2FsQXV0aGVudGljYXRvciwgTWFrZUNyZWRlbnRpYWxFeGNsdWRlQ3JlZGVudGlhbHNNYXRjaCkK
IAogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxB
dXRoZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxB
dXRoZW50aWNhdG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9G
QUxTRSh0cnVlKTsKLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0
cnVlOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIEVY
UEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKLSAgICAg
ICAgRVhQRUNUX1NUUkVRKCJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5
IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQg
YXV0aGVudGljYXRvci4iLCBleGNlcHRpb24ubWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAg
ICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNh
bGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0
YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0
Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYp
IHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGNsZWFuVXBL
ZXljaGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0sIFsmXShjb25z
dCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBFWFBF
Q1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7CisgICAgICAg
ICAgICBFWFBFQ1RfU1RSRVEoIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50
cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hl
ZCBhdXRoZW50aWNhdG9yLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9
LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlv
bk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CiB9CkBAIC0zMTksMTYgKzMyMiwxNyBAQCBURVNUKExvY2FsQXV0aGVudGlj
YXRvciwgTWFrZUNyZWRlbnRpYWxCaW9tZXRyaWNzTm90RW5yb2xsZWQpCiAKICAgICBib29sIGRv
bmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4g
YXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4o
KTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Ci0g
ICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFjayA9
IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0YWJs
ZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlv
bi5jb2RlKTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJObyBhdmFsaWFibGUgYXV0aGVudGljYXRv
cnMuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsK
KyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6
Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NU
UkVRKCJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNj
aWkoKS5kYXRhKCkpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAg
IH07Ci0gICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlv
bnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAg
YXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1v
dmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9
CkBAIC0zNDMsMTYgKzM0NywxNyBAQCBURVNUKExvY2FsQXV0aGVudGljYXRvciwgTWFrZUNyZWRl
bnRpYWxCaW9tZXRyaWNzTm90QXV0aGVudGljYXRlZCkKIAogICAgIGJvb2wgZG9uZSA9IGZhbHNl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxBdXRoZW50aWNhdG9yPiBhdXRoZW50aWNh
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxBdXRoZW50aWNhdG9yPigpOwotICAgIGF1
dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAgICAgICAgZG9u
ZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0gWyZkb25lXSAo
Y29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAg
ICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOwot
ICAgICAgICBFWFBFQ1RfU1RSRVEoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIiwgZXhjZXB0
aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBh
dXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RG
Ojpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRv
bmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEm
IGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRF
cnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJDb3VsZG4n
dCBnZXQgdXNlciBjb25zZW50LiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKICAgICB9OwotICAgIGF1dGhl
bnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOworICAgIGF1dGhlbnRpY2F0b3It
Pm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpAQCAtMzY4LDE2ICsz
NzMsMTcgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFsTm90QXR0ZXN0
YXRlZCkKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExv
Y2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExv
Y2FsQXV0aGVudGljYXRvcj4oKTsKICAgICBhdXRoZW50aWNhdG9yLT5zZXRGYWlsdXJlRmxhZygp
OwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAg
ICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0g
WyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxl
IHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6OlVua25vd25FcnJvciwgZXhjZXB0aW9uLmNv
ZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIiwgZXhj
ZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAg
V1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAg
IGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6OlVua25vd25F
cnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJVbmtub3du
IGludGVybmFsIGVycm9yLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKICAgICB9OwotICAgIGF1dGhlbnRp
Y2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOworICAgIGF1dGhlbnRpY2F0b3ItPm1h
a2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpAQCAtMzk5LDIyICs0MDUs
MjMgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFsRGVsZXRlT2xkZXJD
cmVkZW5pdGFsKQogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxU
ZXN0TG9jYWxBdXRoZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXN0TG9jYWxBdXRoZW50aWNhdG9yPigpOwogICAgIGF1dGhlbnRpY2F0b3ItPnNldEZhaWx1cmVG
bGFnKCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUp
OwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgbXV0YWJsZSB7Ci0g
ICAgICAgIE5TRGljdGlvbmFyeSAqcXVlcnkgPSBAewotICAgICAgICAgICAgKGlkKWtTZWNDbGFz
czogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAo
aWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJl
bDogdGVzdFJwSWQsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOnRlc3RVc2VyaGFuZGxlIGxlbmd0aDpzaXplb2YodGVzdFVzZXJo
YW5kbGUpXSwKLSAgICAgICAgfTsKLSAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNv
cHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCBOVUxMKTsKLSAgICAg
ICAgRVhQRUNUX0VRKGVyclNlY0l0ZW1Ob3RGb3VuZCwgc3RhdHVzKTsKLSAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7
CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGlj
S2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Cisg
ICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqcXVl
cnkgPSBAeworICAgICAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXks
CisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNs
YXNzUHJpdmF0ZSwKKyAgICAgICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogdGVzdFJwSWQs
CisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczp0ZXN0VXNlcmhhbmRsZSBsZW5ndGg6c2l6ZW9mKHRlc3RVc2VyaGFuZGxlKV0s
CisgICAgICAgICAgICB9OworICAgICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNv
cHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCBOVUxMKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShlcnJTZWNJdGVtTm90Rm91bmQsIHN0YXR1cyk7CisgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5t
YWtlQ3JlZGVudGlhbCh7IH0sIGNyZWF0aW9uT3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVu
dGlhbCh7IH0sIGNyZWF0aW9uT3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KQEAgLTQzMiwxMDMgKzQzOSwxMDkgQEAg
VEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFsUGFzc2VkV2l0aFNlbGZBdHRl
c3RhdGlvbikKIAogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxU
ZXN0TG9jYWxBdXRoZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXN0TG9jYWxBdXRoZW50aWNhdG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBhdHRlc3RhdGlvbk9iamV0KSB7Ci0gICAgICAgIC8vIENoZWNrIEtleWNoYWluCi0gICAgICAg
IE5TRGljdGlvbmFyeSAqcXVlcnkgPSBAewotICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlk
KWtTZWNDbGFzc0tleSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1Nl
Y0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogdGVz
dFJwSWQsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsOiBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6dGVzdENyZWRlbnRp
YWxJZEJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJh
Y3RlcnNdKS5nZXQoKSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6dGVzdFVzZXJoYW5kbGUgbGVuZ3RoOnNpemVvZih0ZXN0VXNl
cmhhbmRsZSldLAotICAgICAgICB9OwotICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVt
Q29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksIE5VTEwpOwotICAg
ICAgICBFWFBFQ1RfRkFMU0Uoc3RhdHVzKTsKLQotICAgICAgICAvLyBDaGVjayBDcmVkZW50aWFs
IElECi0gICAgICAgIEVYUEVDVF9UUlVFKFdURjo6YmFzZTY0RW5jb2RlKGNyZWRlbnRpYWxJZC5k
YXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpID09IHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpOwot
Ci0gICAgICAgIC8vIENoZWNrIEF0dGVzdGF0aW9uIE9iamVjdAotICAgICAgICBhdXRvIGF0dGVz
dGF0aW9uT2JqZWN0TWFwID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChhdHRlc3RhdGlvbk9iamV0
KTsKLSAgICAgICAgQVNTRVJUX1RSVUUoISFhdHRlc3RhdGlvbk9iamVjdE1hcCk7Ci0KLSAgICAg
ICAgLy8gQ2hlY2sgQXV0aGVudGljYXRvciBEYXRhLgotICAgICAgICBhdXRvJiBhdXRoRGF0YSA9
IGF0dGVzdGF0aW9uT2JqZWN0TWFwLT5nZXRNYXAoKS5maW5kKGNib3I6OkNCT1JWYWx1ZSgiYXV0
aERhdGEiKSktPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7Ci0gICAgICAgIHNpemVfdCBwb3MgPSAw
OwotICAgICAgICB1aW50OF90IGV4cGVjdGVkUnBJZEhhc2hbXSA9IHsKLSAgICAgICAgICAgIDB4
NDksIDB4OTYsIDB4MGQsIDB4ZTUsIDB4ODgsIDB4MGUsIDB4OGMsIDB4NjgsCi0gICAgICAgICAg
ICAweDc0LCAweDM0LCAweDE3LCAweDBmLCAweDY0LCAweDc2LCAweDYwLCAweDViLAotICAgICAg
ICAgICAgMHg4ZiwgMHhlNCwgMHhhZSwgMHhiOSwgMHhhMiwgMHg4NiwgMHgzMiwgMHhjNywKLSAg
ICAgICAgICAgIDB4OTksIDB4NWMsIDB4ZjMsIDB4YmEsIDB4ODMsIDB4MWQsIDB4OTcsIDB4NjMK
LSAgICAgICAgfTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkg
KyBwb3MsIGV4cGVjdGVkUnBJZEhhc2gsIHNpemVvZihleHBlY3RlZFJwSWRIYXNoKSkpOwotICAg
ICAgICBwb3MgKz0gc2l6ZW9mKGV4cGVjdGVkUnBJZEhhc2gpOwotCi0gICAgICAgIC8vIEZMQUdT
Ci0gICAgICAgIEVYUEVDVF9FUSg2OSwgYXV0aERhdGFbcG9zXSk7Ci0gICAgICAgIHBvcysrOwot
Ci0gICAgICAgIHVpbnQzMl90IGNvdW50ZXIgPSAtMTsKLSAgICAgICAgbWVtY3B5KCZjb3VudGVy
LCBhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBFWFBF
Q1RfRVEoMHUsIGNvdW50ZXIpOwotICAgICAgICBwb3MgKz0gc2l6ZW9mKHVpbnQzMl90KTsKLQot
ICAgICAgICB1aW50OF90IGV4cGVjdGVkQUFHVUlEW10gPSB7Ci0gICAgICAgICAgICAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotICAgICAgICAgICAgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMAotICAgICAgICB9Owot
ICAgICAgICBFWFBFQ1RfRkFMU0UobWVtY21wKGF1dGhEYXRhLmRhdGEoKSArIHBvcywgZXhwZWN0
ZWRBQUdVSUQsIHNpemVvZihleHBlY3RlZEFBR1VJRCkpKTsKLSAgICAgICAgcG9zICs9IHNpemVv
ZihleHBlY3RlZEFBR1VJRCk7Ci0KLSAgICAgICAgdWludDE2X3QgbCA9IC0xOwotICAgICAgICBt
ZW1jcHkoJmwsIGF1dGhEYXRhLmRhdGEoKSArIHBvcywgc2l6ZW9mKHVpbnQxNl90KSk7Ci0gICAg
ICAgIEVYUEVDVF9FUSgyMHUsIGwpOwotICAgICAgICBwb3MgKz0gc2l6ZW9mKHVpbnQxNl90KTsK
LQotICAgICAgICBFWFBFQ1RfRkFMU0UobWVtY21wKGF1dGhEYXRhLmRhdGEoKSArIHBvcywgY3Jl
ZGVudGlhbElkLmRhdGEoKSwgbCkpOwotICAgICAgICBwb3MgKz0gbDsKLQotICAgICAgICAvLyBD
cmVkZW50aWFsIFB1YmxpYyBLZXkKLSAgICAgICAgLy8gRklYTUUoMTgzNTM2KTogVGhlIENCT1Ig
cmVhZGVyIGRvZXNuJ3Qgc3VwcG9ydCBuZWdhdGl2ZSBpbnRlZ2VyIGFzIG1hcCBrZXkuIFRodXMg
d2UgY291bGRuJ3QgdXRpbHppZSBpdC4KLSAgICAgICAgRVhQRUNUX1NUUkVRKCJwUUVDQXlZZ0FT
RllJRGovenhTa3pLZ2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OUlsZ2dWQkpQZ3FV
SXdmaFdISjkxbmI3VVBINzZjMCtXRk96WktzbFB5eUZzZTRnPSIsIFdURjo6YmFzZTY0RW5jb2Rl
KGF1dGhEYXRhLmRhdGEoKSArIHBvcywgYXV0aERhdGEuc2l6ZSgpIC0gcG9zKS5hc2NpaSgpLmRh
dGEoKSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgU2VsZiBBdHRlc3RhdGlvbgotICAgICAgICBFWFBF
Q1RfU1RSRVEoIkFwcGxlIiwgYXR0ZXN0YXRpb25PYmplY3RNYXAtPmdldE1hcCgpLmZpbmQoY2Jv
cjo6Q0JPUlZhbHVlKCJmbXQiKSktPnNlY29uZC5nZXRTdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
Ci0KLSAgICAgICAgYXV0byYgYXR0U3RtdCA9IGF0dGVzdGF0aW9uT2JqZWN0TWFwLT5nZXRNYXAo
KS5maW5kKGNib3I6OkNCT1JWYWx1ZSgiYXR0U3RtdCIpKS0+c2Vjb25kLmdldE1hcCgpOwotICAg
ICAgICBFWFBFQ1RfRVEoQ09TRTo6RVMyNTYsIGF0dFN0bXQuZmluZChjYm9yOjpDQk9SVmFsdWUo
ImFsZyIpKS0+c2Vjb25kLmdldE5lZ2F0aXZlKCkpOwotCi0gICAgICAgIGF1dG8mIHNpZyA9IGF0
dFN0bXQuZmluZChjYm9yOjpDQk9SVmFsdWUoInNpZyIpKS0+c2Vjb25kLmdldEJ5dGVTdHJpbmco
KTsKLSAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gZ2V0VGVzdEtleSgpOwotICAgICAgICBFWFBF
Q1RfVFJVRShTZWNLZXlWZXJpZnlTaWduYXR1cmUoU2VjS2V5Q29weVB1YmxpY0tleShwcml2YXRl
S2V5LmdldCgpKSwga1NlY0tleUFsZ29yaXRobUVDRFNBU2lnbmF0dXJlTWVzc2FnZVg5NjJTSEEy
NTYsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmF1dGhEYXRhLmRh
dGEoKSBsZW5ndGg6YXV0aERhdGEuc2l6ZSgpXSwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6c2lnLmRhdGEoKSBsZW5ndGg6c2lnLnNpemUoKV0sIE5VTEwpKTsKLQot
ICAgICAgICAvLyBDaGVjayBjZXJ0aWZpY2F0ZXMKLSAgICAgICAgYXV0byYgeDVjID0gYXR0U3Rt
dC5maW5kKGNib3I6OkNCT1JWYWx1ZSgieDVjIikpLT5zZWNvbmQuZ2V0QXJyYXkoKTsKLSAgICAg
ICAgYXV0byYgYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZURhdGEgPSB4NWNbMF0uZ2V0Qnl0ZVN0cmlu
ZygpOwotICAgICAgICBhdXRvIGF0dGVzdGF0aW9uQ2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0Nl
cnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoTlVMTCwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6YXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZURhdGEuZGF0YSgpIGxlbmd0aDph
dHRlc3RhdGlvbkNlcnRpZmljYXRlRGF0YS5zaXplKCldKSk7Ci0gICAgICAgIENGU3RyaW5nUmVm
IGNvbW1vbk5hbWUgPSBudWxscHRyOwotICAgICAgICBzdGF0dXMgPSBTZWNDZXJ0aWZpY2F0ZUNv
cHlDb21tb25OYW1lKGF0dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCksICZjb21tb25OYW1lKTsK
LSAgICAgICAgYXV0byByZXRhaW5Db21tb25OYW1lID0gYWRvcHRDRihjb21tb25OYW1lKTsKLSAg
ICAgICAgQVNTRVJUKCFzdGF0dXMpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIjAwMDA4MDEwLTAw
MEE0OUEyMzBBMDIxM0EiLCBbKE5TU3RyaW5nICopY29tbW9uTmFtZSBjU3RyaW5nVXNpbmdFbmNv
ZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXSk7Ci0KLSAgICAgICAgYXV0byYgYXR0ZXN0YXRp
b25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZURhdGEgPSB4NWNbMV0uZ2V0Qnl0ZVN0cmluZygpOwotICAg
ICAgICBhdXRvIGF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0Nl
cnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoTlVMTCwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6YXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZURhdGEuZGF0YSgp
IGxlbmd0aDphdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlRGF0YS5zaXplKCldKSk7Ci0g
ICAgICAgIGNvbW1vbk5hbWUgPSBudWxscHRyOwotICAgICAgICBzdGF0dXMgPSBTZWNDZXJ0aWZp
Y2F0ZUNvcHlDb21tb25OYW1lKGF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGUuZ2V0KCks
ICZjb21tb25OYW1lKTsKLSAgICAgICAgcmV0YWluQ29tbW9uTmFtZSA9IGFkb3B0Q0YoY29tbW9u
TmFtZSk7Ci0gICAgICAgIEFTU0VSVCghc3RhdHVzKTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJC
YXNpYyBBdHRlc3RhdGlvbiBVc2VyIFN1YiBDQTEiLCBbKE5TU3RyaW5nICopY29tbW9uTmFtZSBj
U3RyaW5nVXNpbmdFbmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXSk7Ci0KLSAgICAgICAg
Y2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0
byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBjbGVh
blVwS2V5Y2hhaW4oKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9
IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVz
dWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmIGRhdGEpIHsK
KyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjcmVkZW50aWFsSWQ7CisgICAgICAgICAgICBj
cmVkZW50aWFsSWQuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEucmF3SWQt
PmRhdGEoKSksIGRhdGEucmF3SWQtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBWZWN0b3I8
dWludDhfdD4gYXR0ZXN0YXRpb25PYmplY3Q7CisgICAgICAgICAgICBhdHRlc3RhdGlvbk9iamVj
dC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YS5hdHRlc3RhdGlvbk9iamVj
dC0+ZGF0YSgpKSwgZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgpKTsKKworICAg
ICAgICAgICAgLy8gQ2hlY2sgS2V5Y2hhaW4KKyAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqcXVl
cnkgPSBAeworICAgICAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXks
CisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNs
YXNzUHJpdmF0ZSwKKyAgICAgICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogdGVzdFJwSWQs
CisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDogYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOnRlc3RDcmVkZW50aWFs
SWRCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0
ZXJzXSkuZ2V0KCksCisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp0ZXN0VXNlcmhhbmRsZSBsZW5ndGg6c2l6ZW9mKHRlc3RV
c2VyaGFuZGxlKV0sCisgICAgICAgICAgICB9OworICAgICAgICAgICAgT1NTdGF0dXMgc3RhdHVz
ID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCBO
VUxMKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0dXMpOworCisgICAgICAgICAgICAv
LyBDaGVjayBDcmVkZW50aWFsIElECisgICAgICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmJhc2U2
NEVuY29kZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSA9PSB0ZXN0
Q3JlZGVudGlhbElkQmFzZTY0KTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgQXR0ZXN0YXRpb24g
T2JqZWN0CisgICAgICAgICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0TWFwID0gY2Jvcjo6Q0JP
UlJlYWRlcjo6cmVhZChhdHRlc3RhdGlvbk9iamVjdCk7CisgICAgICAgICAgICBBU1NFUlRfVFJV
RSghIWF0dGVzdGF0aW9uT2JqZWN0TWFwKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgQXV0aGVu
dGljYXRvciBEYXRhLgorICAgICAgICAgICAgYXV0byYgYXV0aERhdGEgPSBhdHRlc3RhdGlvbk9i
amVjdE1hcC0+Z2V0TWFwKCkuZmluZChjYm9yOjpDQk9SVmFsdWUoImF1dGhEYXRhIikpLT5zZWNv
bmQuZ2V0Qnl0ZVN0cmluZygpOworICAgICAgICAgICAgc2l6ZV90IHBvcyA9IDA7CisgICAgICAg
ICAgICB1aW50OF90IGV4cGVjdGVkUnBJZEhhc2hbXSA9IHsKKyAgICAgICAgICAgICAgICAweDQ5
LCAweDk2LCAweDBkLCAweGU1LCAweDg4LCAweDBlLCAweDhjLCAweDY4LAorICAgICAgICAgICAg
ICAgIDB4NzQsIDB4MzQsIDB4MTcsIDB4MGYsIDB4NjQsIDB4NzYsIDB4NjAsIDB4NWIsCisgICAg
ICAgICAgICAgICAgMHg4ZiwgMHhlNCwgMHhhZSwgMHhiOSwgMHhhMiwgMHg4NiwgMHgzMiwgMHhj
NywKKyAgICAgICAgICAgICAgICAweDk5LCAweDVjLCAweGYzLCAweGJhLCAweDgzLCAweDFkLCAw
eDk3LCAweDYzCisgICAgICAgICAgICB9OworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNt
cChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkUnBJZEhhc2gsIHNpemVvZihleHBlY3Rl
ZFJwSWRIYXNoKSkpOworICAgICAgICAgICAgcG9zICs9IHNpemVvZihleHBlY3RlZFJwSWRIYXNo
KTsKKworICAgICAgICAgICAgLy8gRkxBR1MKKyAgICAgICAgICAgIEVYUEVDVF9FUSg2OSwgYXV0
aERhdGFbcG9zXSk7CisgICAgICAgICAgICBwb3MrKzsKKworICAgICAgICAgICAgdWludDMyX3Qg
Y291bnRlciA9IC0xOworICAgICAgICAgICAgbWVtY3B5KCZjb3VudGVyLCBhdXRoRGF0YS5kYXRh
KCkgKyBwb3MsIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKDB1LCBj
b3VudGVyKTsKKyAgICAgICAgICAgIHBvcyArPSBzaXplb2YodWludDMyX3QpOworCisgICAgICAg
ICAgICB1aW50OF90IGV4cGVjdGVkQUFHVUlEW10gPSB7CisgICAgICAgICAgICAgICAgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAgICAgICAgICAg
ICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwCisgICAgICAg
ICAgICB9OworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkg
KyBwb3MsIGV4cGVjdGVkQUFHVUlELCBzaXplb2YoZXhwZWN0ZWRBQUdVSUQpKSk7CisgICAgICAg
ICAgICBwb3MgKz0gc2l6ZW9mKGV4cGVjdGVkQUFHVUlEKTsKKworICAgICAgICAgICAgdWludDE2
X3QgbCA9IC0xOworICAgICAgICAgICAgbWVtY3B5KCZsLCBhdXRoRGF0YS5kYXRhKCkgKyBwb3Ms
IHNpemVvZih1aW50MTZfdCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKDIwdSwgbCk7CisgICAg
ICAgICAgICBwb3MgKz0gc2l6ZW9mKHVpbnQxNl90KTsKKworICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGNyZWRlbnRpYWxJZC5kYXRhKCksIGwp
KTsKKyAgICAgICAgICAgIHBvcyArPSBsOworCisgICAgICAgICAgICAvLyBDcmVkZW50aWFsIFB1
YmxpYyBLZXkKKyAgICAgICAgICAgIC8vIEZJWE1FKDE4MzUzNik6IFRoZSBDQk9SIHJlYWRlciBk
b2Vzbid0IHN1cHBvcnQgbmVnYXRpdmUgaW50ZWdlciBhcyBtYXAga2V5LiBUaHVzIHdlIGNvdWxk
bid0IHV0aWx6aWUgaXQuCisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoInBRRUNBeVlnQVNGWUlE
ai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBnRnBzakYvUW0xNzQ5SWxnZ1ZCSlBncVVJd2Zo
V0hKOTFuYjdVUEg3NmMwK1dGT3paS3NsUHl5RnNlNGc9IiwgV1RGOjpiYXNlNjRFbmNvZGUoYXV0
aERhdGEuZGF0YSgpICsgcG9zLCBhdXRoRGF0YS5zaXplKCkgLSBwb3MpLmFzY2lpKCkuZGF0YSgp
KTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgU2VsZiBBdHRlc3RhdGlvbgorICAgICAgICAgICAg
RVhQRUNUX1NUUkVRKCJBcHBsZSIsIGF0dGVzdGF0aW9uT2JqZWN0TWFwLT5nZXRNYXAoKS5maW5k
KGNib3I6OkNCT1JWYWx1ZSgiZm10IikpLT5zZWNvbmQuZ2V0U3RyaW5nKCkuYXNjaWkoKS5kYXRh
KCkpOworCisgICAgICAgICAgICBhdXRvJiBhdHRTdG10ID0gYXR0ZXN0YXRpb25PYmplY3RNYXAt
PmdldE1hcCgpLmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJhdHRTdG10IikpLT5zZWNvbmQuZ2V0TWFw
KCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoQ09TRTo6RVMyNTYsIGF0dFN0bXQuZmluZChjYm9y
OjpDQk9SVmFsdWUoImFsZyIpKS0+c2Vjb25kLmdldE5lZ2F0aXZlKCkpOworCisgICAgICAgICAg
ICBhdXRvJiBzaWcgPSBhdHRTdG10LmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJzaWciKSktPnNlY29u
ZC5nZXRCeXRlU3RyaW5nKCk7CisgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkgPSBnZXRUZXN0
S2V5KCk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShTZWNLZXlWZXJpZnlTaWduYXR1cmUoU2Vj
S2V5Q29weVB1YmxpY0tleShwcml2YXRlS2V5LmdldCgpKSwga1NlY0tleUFsZ29yaXRobUVDRFNB
U2lnbmF0dXJlTWVzc2FnZVg5NjJTSEEyNTYsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmF1dGhEYXRhLmRhdGEoKSBsZW5ndGg6YXV0aERhdGEuc2l6ZSgpXSwgKF9f
YnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6c2lnLmRhdGEoKSBsZW5ndGg6
c2lnLnNpemUoKV0sIE5VTEwpKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgY2VydGlmaWNhdGVz
CisgICAgICAgICAgICBhdXRvJiB4NWMgPSBhdHRTdG10LmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJ4
NWMiKSktPnNlY29uZC5nZXRBcnJheSgpOworICAgICAgICAgICAgYXV0byYgYXR0ZXN0YXRpb25D
ZXJ0aWZpY2F0ZURhdGEgPSB4NWNbMF0uZ2V0Qnl0ZVN0cmluZygpOworICAgICAgICAgICAgYXV0
byBhdHRlc3RhdGlvbkNlcnRpZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdp
dGhEYXRhKE5VTEwsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmF0
dGVzdGF0aW9uQ2VydGlmaWNhdGVEYXRhLmRhdGEoKSBsZW5ndGg6YXR0ZXN0YXRpb25DZXJ0aWZp
Y2F0ZURhdGEuc2l6ZSgpXSkpOworICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgY29tbW9uTmFtZSA9
IG51bGxwdHI7CisgICAgICAgICAgICBzdGF0dXMgPSBTZWNDZXJ0aWZpY2F0ZUNvcHlDb21tb25O
YW1lKGF0dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCksICZjb21tb25OYW1lKTsKKyAgICAgICAg
ICAgIGF1dG8gcmV0YWluQ29tbW9uTmFtZSA9IGFkb3B0Q0YoY29tbW9uTmFtZSk7CisgICAgICAg
ICAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoIjAwMDA4MDEw
LTAwMEE0OUEyMzBBMDIxM0EiLCBbKE5TU3RyaW5nICopY29tbW9uTmFtZSBjU3RyaW5nVXNpbmdF
bmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXSk7CisKKyAgICAgICAgICAgIGF1dG8mIGF0
dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVEYXRhID0geDVjWzFdLmdldEJ5dGVTdHJpbmco
KTsKKyAgICAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZSA9IGFk
b3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShOVUxMLCAoX19icmlkZ2UgQ0ZEYXRh
UmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczphdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRl
RGF0YS5kYXRhKCkgbGVuZ3RoOmF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVEYXRhLnNp
emUoKV0pKTsKKyAgICAgICAgICAgIGNvbW1vbk5hbWUgPSBudWxscHRyOworICAgICAgICAgICAg
c3RhdHVzID0gU2VjQ2VydGlmaWNhdGVDb3B5Q29tbW9uTmFtZShhdHRlc3RhdGlvbklzc3VpbmdD
QUNlcnRpZmljYXRlLmdldCgpLCAmY29tbW9uTmFtZSk7CisgICAgICAgICAgICByZXRhaW5Db21t
b25OYW1lID0gYWRvcHRDRihjb21tb25OYW1lKTsKKyAgICAgICAgICAgIEFTU0VSVCghc3RhdHVz
KTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiQmFzaWMgQXR0ZXN0YXRpb24gVXNlciBTdWIg
Q0ExIiwgWyhOU1N0cmluZyAqKWNvbW1vbk5hbWUgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVND
SUlTdHJpbmdFbmNvZGluZ10pOworCisgICAgICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKKyAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUp
OworICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKICAgICBWZWN0b3I8dWludDhfdD4gaGFzaCgzMik7Ci0g
ICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoaGFzaCwgY3JlYXRpb25PcHRpb25zLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOworICAgIGF1dGhl
bnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKGhhc2gsIGNyZWF0aW9uT3B0aW9ucywgV1RGTW92ZShj
YWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KQEAg
LTU0NCwxNiArNTU3LDE3IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9yLCBHZXRBc3NlcnRpb25B
bGxvd0NyZWRlbnRpYWxzTWlzbWF0Y2gxKQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0byBjYWxs
YmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpIHsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9
OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2Vi
Q29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVDVF9T
VFJFUSgiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0
dGFjaGVkIGF1dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkp
OwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFy
aWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25z
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0o
Y29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAg
RVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAg
ICAgICAgICAgRVhQRUNUX1NUUkVRKCJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBp
biB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iLCBleGNlcHRpb24ubWVzc2Fn
ZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7
CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0T3B0
aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsKKyAg
ICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92
ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0K
QEAgLTU2NiwxNiArNTgwLDE3IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9yLCBHZXRBc3NlcnRp
b25BbGxvd0NyZWRlbnRpYWxzTWlzbWF0Y2gyKQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0byBj
YWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYp
IHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAg
ICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEo
V2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVD
VF9TVFJFUSgiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3Jt
IGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRh
KCkpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAo
VmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShj
b25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVY
UEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBb
Jl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAg
ICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOwor
ICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3Vu
ZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iLCBleGNlcHRpb24ubWVz
c2FnZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAg
fSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0
T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsK
KyAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RG
TW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
IH0KQEAgLTU5NSwxOCArNjEwLDE5IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9yLCBHZXRBc3Nl
cnRpb25BbGxvd0NyZWRlbnRpYWxzTWlzbWF0Y2gzKQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0
byBjYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBjbGVhblVwS2V5Y2hh
aW4oKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNh
bGxiYWNrID0gWyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwg
ZXhjZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIk5vIG1hdGNoZWQgY3JlZGVu
dGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIs
IGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgY2xlYW5VcEtleWNo
YWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOworICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVd
IChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYmIHJlc3VsdCkgeworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZd
KGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJikgeworICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKHRydWUpOworICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpO
b3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJF
USgiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFj
aGVkIGF1dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9
LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0T3B0
aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKIH0KQEAgLTYyMiwxOCArNjM4LDE5IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9y
LCBHZXRBc3NlcnRpb25CaW9tZXRyaWNzTm90RW5yb2xsZWQpCiAKICAgICBib29sIGRvbmUgPSBm
YWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVu
dGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JikgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGNsZWFuVXBL
ZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0
aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNl
cHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVy
cm9yLCBleGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gYXZhbGlhYmxl
IGF1dGhlbnRpY2F0b3JzLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAg
ICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOworICAgIGF1dG8g
Y2FsbGJhY2sgPSBbJmRvbmVdIChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxE
YXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgeworICAgICAgICBXVEY6OnN3
aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
JikgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOworICAgICAgICAgICAgY2xlYW5V
cEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNv
bnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiIsIGV4Y2Vw
dGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFp
bigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAg
YXV0aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUo
Y2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRv
ci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsK
IAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC02NTAsMTggKzY2
NywxOSBAQCBURVNUKExvY2FsQXV0aGVudGljYXRvciwgR2V0QXNzZXJ0aW9uQmlvbWV0cmljc05v
dEF1dGhlbnRpY2F0ZWQpCiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZk
b25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBF
WFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBk
b25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVd
IChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAg
ICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7
Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2VudC4iLCBleGNl
cHRpb24ubWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIGNsZWFuVXBLZXljaGFpbigp
OwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFy
aWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25z
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYgZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxs
b3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7CisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoIkNv
dWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRh
KCkpOworICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRp
b24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1
ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKIH0KQEAgLTY4MCw0OCArNjk4LDU4IEBAIFRFU1QoTG9jYWxBdXRoZW50
aWNhdG9yLCBHZXRBc3NlcnRpb25QYXNzZWQpCiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAgICBhdXRvIGNh
bGxiYWNrID0gWyZkb25lLCBoYXNoXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFs
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aERhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJoYW5kbGUpIHsKLSAgICAg
ICAgLy8gQ2hlY2sgQ3JlZGVudGlhbCBJRAotICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmJhc2U2
NEVuY29kZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSA9PSB0ZXN0
Q3JlZGVudGlhbElkQmFzZTY0KTsKLQotICAgICAgICAvLyBDaGVjayBBdXRoZW50aWNhdG9yIERh
dGEuCi0gICAgICAgIHNpemVfdCBwb3MgPSAwOwotICAgICAgICB1aW50OF90IGV4cGVjdGVkUnBJ
ZEhhc2hbXSA9IHsKLSAgICAgICAgICAgIDB4NDksIDB4OTYsIDB4MGQsIDB4ZTUsIDB4ODgsIDB4
MGUsIDB4OGMsIDB4NjgsCi0gICAgICAgICAgICAweDc0LCAweDM0LCAweDE3LCAweDBmLCAweDY0
LCAweDc2LCAweDYwLCAweDViLAotICAgICAgICAgICAgMHg4ZiwgMHhlNCwgMHhhZSwgMHhiOSwg
MHhhMiwgMHg4NiwgMHgzMiwgMHhjNywKLSAgICAgICAgICAgIDB4OTksIDB4NWMsIDB4ZjMsIDB4
YmEsIDB4ODMsIDB4MWQsIDB4OTcsIDB4NjMKLSAgICAgICAgfTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkUnBJZEhhc2gsIHNpemVv
ZihleHBlY3RlZFJwSWRIYXNoKSkpOwotICAgICAgICBwb3MgKz0gc2l6ZW9mKGV4cGVjdGVkUnBJ
ZEhhc2gpOwotCi0gICAgICAgIC8vIEZMQUdTCi0gICAgICAgIEVYUEVDVF9FUSg1LCBhdXRoRGF0
YVtwb3NdKTsKLSAgICAgICAgcG9zKys7Ci0KLSAgICAgICAgdWludDMyX3QgY291bnRlciA9IC0x
OwotICAgICAgICBtZW1jcHkoJmNvdW50ZXIsIGF1dGhEYXRhLmRhdGEoKSArIHBvcywgc2l6ZW9m
KHVpbnQzMl90KSk7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgY291bnRlcik7Ci0KLSAgICAgICAg
Ly8gQ2hlY2sgc2lnbmF0dXJlCi0gICAgICAgIGF1dG8gcHJpdmF0ZUtleSA9IGdldFRlc3RLZXko
KTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFUb1NpZ24oYXV0aERhdGEpOwotICAgICAg
ICBkYXRhVG9TaWduLmFwcGVuZFZlY3RvcihoYXNoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoU2Vj
S2V5VmVyaWZ5U2lnbmF0dXJlKFNlY0tleUNvcHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSks
IGtTZWNLZXlBbGdvcml0aG1FQ0RTQVNpZ25hdHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAoX19icmlk
Z2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhVG9TaWduLmRhdGEoKSBsZW5n
dGg6ZGF0YVRvU2lnbi5zaXplKCldLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdp
dGhCeXRlczpzaWduYXR1cmUuZGF0YSgpIGxlbmd0aDpzaWduYXR1cmUuc2l6ZSgpXSwgTlVMTCkp
OwotCi0gICAgICAgIC8vIENoZWNrIFVzZXIgSGFuZGxlCi0gICAgICAgIEVYUEVDVF9FUSh1c2Vy
aGFuZGxlLnNpemUoKSwgc2l6ZW9mKHRlc3RVc2VyaGFuZGxlKSk7Ci0gICAgICAgIEVYUEVDVF9G
QUxTRShtZW1jbXAodXNlcmhhbmRsZS5kYXRhKCksIHRlc3RVc2VyaGFuZGxlLCBzaXplb2YodGVz
dFVzZXJoYW5kbGUpKSk7Ci0KLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRv
bmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0g
KGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmUsIGhhc2hdIChWYXJp
YW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiYmIHJlc3VsdCkgeworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhKSB7CisgICAgICAgICAgICBW
ZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkOworICAgICAgICAgICAgY3JlZGVudGlhbElkLmFw
cGVuZChyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLnJhd0lkLT5kYXRhKCkpLCBkYXRh
LnJhd0lkLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGF1dGhE
YXRhOworICAgICAgICAgICAgYXV0aERhdGEuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRhdGEuYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSksIGRhdGEuYXV0aGVudGljYXRvckRh
dGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJl
OworICAgICAgICAgICAgc2lnbmF0dXJlLmFwcGVuZChyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihkYXRhLnNpZ25hdHVyZS0+ZGF0YSgpKSwgZGF0YS5zaWduYXR1cmUtPmJ5dGVMZW5ndGgoKSk7
CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdXNlcmhhbmRsZTsKKyAgICAgICAgICAgIHVz
ZXJoYW5kbGUuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEudXNlckhhbmRs
ZS0+ZGF0YSgpKSwgZGF0YS51c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCkpOworCisgICAgICAgICAg
ICAvLyBDaGVjayBDcmVkZW50aWFsIElECisgICAgICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmJh
c2U2NEVuY29kZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSA9PSB0
ZXN0Q3JlZGVudGlhbElkQmFzZTY0KTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgQXV0aGVudGlj
YXRvciBEYXRhLgorICAgICAgICAgICAgc2l6ZV90IHBvcyA9IDA7CisgICAgICAgICAgICB1aW50
OF90IGV4cGVjdGVkUnBJZEhhc2hbXSA9IHsKKyAgICAgICAgICAgICAgICAweDQ5LCAweDk2LCAw
eDBkLCAweGU1LCAweDg4LCAweDBlLCAweDhjLCAweDY4LAorICAgICAgICAgICAgICAgIDB4NzQs
IDB4MzQsIDB4MTcsIDB4MGYsIDB4NjQsIDB4NzYsIDB4NjAsIDB4NWIsCisgICAgICAgICAgICAg
ICAgMHg4ZiwgMHhlNCwgMHhhZSwgMHhiOSwgMHhhMiwgMHg4NiwgMHgzMiwgMHhjNywKKyAgICAg
ICAgICAgICAgICAweDk5LCAweDVjLCAweGYzLCAweGJhLCAweDgzLCAweDFkLCAweDk3LCAweDYz
CisgICAgICAgICAgICB9OworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNtcChhdXRoRGF0
YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkUnBJZEhhc2gsIHNpemVvZihleHBlY3RlZFJwSWRIYXNo
KSkpOworICAgICAgICAgICAgcG9zICs9IHNpemVvZihleHBlY3RlZFJwSWRIYXNoKTsKKworICAg
ICAgICAgICAgLy8gRkxBR1MKKyAgICAgICAgICAgIEVYUEVDVF9FUSg1LCBhdXRoRGF0YVtwb3Nd
KTsKKyAgICAgICAgICAgIHBvcysrOworCisgICAgICAgICAgICB1aW50MzJfdCBjb3VudGVyID0g
LTE7CisgICAgICAgICAgICBtZW1jcHkoJmNvdW50ZXIsIGF1dGhEYXRhLmRhdGEoKSArIHBvcywg
c2l6ZW9mKHVpbnQzMl90KSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIGNvdW50ZXIpOwor
CisgICAgICAgICAgICAvLyBDaGVjayBzaWduYXR1cmUKKyAgICAgICAgICAgIGF1dG8gcHJpdmF0
ZUtleSA9IGdldFRlc3RLZXkoKTsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhVG9T
aWduKGF1dGhEYXRhKTsKKyAgICAgICAgICAgIGRhdGFUb1NpZ24uYXBwZW5kVmVjdG9yKGhhc2gp
OworICAgICAgICAgICAgRVhQRUNUX1RSVUUoU2VjS2V5VmVyaWZ5U2lnbmF0dXJlKFNlY0tleUNv
cHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSksIGtTZWNLZXlBbGdvcml0aG1FQ0RTQVNpZ25h
dHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdp
dGhCeXRlczpkYXRhVG9TaWduLmRhdGEoKSBsZW5ndGg6ZGF0YVRvU2lnbi5zaXplKCldLCAoX19i
cmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczpzaWduYXR1cmUuZGF0YSgpIGxl
bmd0aDpzaWduYXR1cmUuc2l6ZSgpXSwgTlVMTCkpOworCisgICAgICAgICAgICAvLyBDaGVjayBV
c2VyIEhhbmRsZQorICAgICAgICAgICAgRVhQRUNUX0VRKHVzZXJoYW5kbGUuc2l6ZSgpLCBzaXpl
b2YodGVzdFVzZXJoYW5kbGUpKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShtZW1jbXAodXNl
cmhhbmRsZS5kYXRhKCksIHRlc3RVc2VyaGFuZGxlLCBzaXplb2YodGVzdFVzZXJoYW5kbGUpKSk7
CisKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBjbGVh
blVwS2V5Y2hhaW4oKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKICAg
ICB9OwotICAgIGF1dGhlbnRpY2F0b3ItPmdldEFzc2VydGlvbihoYXNoLCByZXF1ZXN0T3B0aW9u
cywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsKKyAgICBh
dXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oaGFzaCwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUo
Y2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggOWNhZjA3MmJjMGM4NWJhZjFhZTQ2M2I3NjA1MGE3YWE2NzM4YTNjZC4uODJmYWU2NzRh
YTJkZDFjMDY2NzRkMTU5MDZiOGI4MjQ4NGUwZTUyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE4LTA5LTA4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dlYkF1dGhOXSBQb2xpc2ggQXV0aGVudGljYXRvck1hbmFnZXIgYW5kIHJlbmFtZSBpdCB0byBB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4OTI3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQxMTU5MzY+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRw
L3dwdC9jcmVkZW50aWFsLW1hbmFnZW1lbnQvY3JlZGVudGlhbHNjb250YWluZXItc3RvcmUtYmFz
aWNzLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0
bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1mYWlsdXJlLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLmh0dHBzLmh0bWw6CisgICAgICAgICog
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLmh0dHBz
Lmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1zdWNjZXNzLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1pcy11c2VyLXZlcmlmeWluZy1wbGF0Zm9ybS1hdXRoZW50aWNhdG9yLWF2YWlsYWJs
ZS5odG1sOgorCiAyMDE4LTA5LTA4ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQXBwbGUgUGF5XSBEaXNwYXRjaCBhIHBheW1lbnRtZXRob2RjaGFuZ2UgZXZlbnQg
d2hlbiB0aGUgcGF5bWVudCBtZXRob2QgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2NyZWRlbnRpYWxzY29udGFpbmVyLXN0b3Jl
LWJhc2ljcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3JlZGVudGlhbC1tYW5h
Z2VtZW50L2NyZWRlbnRpYWxzY29udGFpbmVyLXN0b3JlLWJhc2ljcy5odHRwcy5odG1sCmluZGV4
IDE5ODg4MjU0NzMwZjE2ODMyYTAyNTk5Y2M5ZDA1YmU0NTg2MDQxMjEuLjIzNjkxMzUwYzA1ZWNl
MDA4N2U1MmVjZGM4MTg0ZTBkZGZkZTc5ZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L2NyZWRlbnRpYWwtbWFuYWdlbWVudC9jcmVkZW50aWFsc2NvbnRhaW5lci1zdG9yZS1iYXNp
Y3MuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcmVkZW50aWFsLW1hbmFn
ZW1lbnQvY3JlZGVudGlhbHNjb250YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWwKQEAgLTQy
LDcgKzQyLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKICAgICAgICAgLy8gQSBtb2Nr
IGF0dGVzdGF0aW9uIG9iamVjdAotICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVz
c2VuZ2VyLnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJheSgnMDAn
KSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMScpKTsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoaGV4U3RyaW5n
VG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJykpOwogICAgICAg
ICBjb25zdCBjcmVkZW50aWFsID0gYXdhaXQgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShv
cHRpb25zKTsKIAogICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICJOb3RTdXBwb3J0
ZWRFcnJvciIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9pZGwu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1s
CmluZGV4IDljMmM3ZjMxMzY0ODFhNzk2MzI1MmY1ZDliM2U3NmY4M2I5MjUxNzYuLmNlNzE4ODU5
MTJlMTI3ZGYxMzI3OWM2ZjQ1MzRiZjJjYzEyYWE3ZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCkBAIC01Miw3ICs1Miw3IEBAIHByb21pc2VfdGVz
dChhc3luYyAoKSA9PiB7CiAgICAgICAgIH0KICAgICB9OwogICAgIC8vIEEgbW9jayBhdHRlc3Rh
dGlvbiBvYmplY3QKLSAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldENy
ZWF0aW9uUmV0dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJheSgnMDAnKSwgaGV4U3RyaW5n
VG9VaW50OEFycmF5KCcwMScpKTsKKyAgICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5zZXRDcmVhdGlvblJldHVybkJ1bmRsZShoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAw
JyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDEnKSk7CiAgICAgY3JlYXRlZENyZWRlbnRpYWwg
PSBhd2FpdCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGNyZWF0aW9uT3B0aW9ucyk7CiAK
IApAQCAtNjIsNyArNjIsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgICAgICB9
CiAgICAgfTsKICAgICAvLyBBIG1vY2sgYXNzZXJ0aW9uIHJldHVybiBidW5kbGUuCi0gICAgaW50
ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5zZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUo
aGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJyks
IGhleFN0cmluZ1RvVWludDhBcnJheSgnMDInKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMycp
KTsKKyAgICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXRBc3NlcnRp
b25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1Vp
bnQ4QXJyYXkoJzAxJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDInKSwgaGV4U3RyaW5nVG9V
aW50OEFycmF5KCcwMycpKTsKICAgICByZXF1ZXN0ZWRDcmVkZW50aWFsID0gYXdhaXQgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmdldChyZXF1ZXN0T3B0aW9ucyk7CiAKICAgICBpZGxBcnJheS5hZGRf
b2JqZWN0cyh7IlB1YmxpY0tleUNyZWRlbnRpYWwiOiBbImNyZWF0ZWRDcmVkZW50aWFsIl0sICJB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSI6IFsiY3JlYXRlZENyZWRlbnRpYWwucmVz
cG9uc2UiXSwgIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSI6IFsicmVxdWVzdGVkQ3Jl
ZGVudGlhbC5yZXNwb25zZSJdfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IGJiNTU0OGM5MGQwYmNkMDU3MWI0NjNjZWVkYzk4
N2M1MzU1NDFmYjMuLjQ1MDc3YTNjZjlkMzM3MWZlYzZmZjZiOGJkYTViMjdkMmQ4NDE2ZDEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1s
CkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgICAgICAgICAgdGltZW91dDogMCwKICAgICAgICAg
ICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nl
bmdlci5zZXREaWRUaW1lT3V0KCk7CisgICAgICAgIGludGVybmFscy5tb2NrQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLnNldERpZFRpbWVPdXQoKTsKIAogICAgICAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLAogICAgICAgICAgICAgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKSk7CkBAIC04Miw3ICs4Miw3IEBACiAgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAog
ICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRp
YWxzTWVzc2VuZ2VyLnNldERpZFVzZXJDYW5jZWwoKTsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0RGlkVXNlckNhbmNlbCgpOwogCiAgICAgICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsCiAgICAgICAgICAgICBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3Vj
Y2Vzcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLmh0dHBzLmh0bWwKaW5kZXggYWI0ZmNjMDgyZDFh
MGJjZGZiYTgyYjBhYmNlYzNmZjZkYTE3MDY4MC4uNjk5NjhjM2Y0ZWRjMWYxZDYyMTViZjJlOWFl
YmQ5NTZkYjM1ODUxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLmh0dHBzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLmh0dHBzLmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgICAgIH0KICAgICAg
ICAgfTsKICAgICAgICAgLy8gQSBtb2NrIGF0dGVzdGF0aW9uIG9iamVjdAotICAgICAgICBpbnRl
cm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGhl
eFN0cmluZ1RvVWludDhBcnJheSgnMDAnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMScpKTsK
KyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0Q3JlYXRp
b25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1Vp
bnQ4QXJyYXkoJzAxJykpOwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24oY3JlZGVudGlhbCkgewogICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC5pZCwgJ0FBJyk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IDUxMmJiMmRhZDE2NGNkMjM4
ZGIxNDJlZjMzMzQ4OGQwNzAzNjdlNTIuLjBkNGMwNDUyNTY3MDM1MmVmMzdjODdmNjBkZjIzMzIx
YzNkZTcyYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRw
cy5odG1sCkBAIC0xMSw3ICsxMSw3IEBACiAgICAgICAgICAgICAgICAgdGltZW91dDogMCwKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFs
c01lc3Nlbmdlci5zZXREaWRUaW1lT3V0KCk7CisgICAgICAgIGludGVybmFscy5tb2NrQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLnNldERpZFRpbWVPdXQoKTsKIAogICAgICAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLAogICAgICAgICAgICAgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSk7CkBAIC0zNSw3ICszNSw3IEBACiAgICAgICAgICAg
ICAgICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogYXNjaWlU
b1VpbnQ4QXJyYXkoIjEyMzQ1NiIpIH1dLAogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAg
ICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldERpZFVzZXJDYW5jZWwo
KTsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0RGlk
VXNlckNhbmNlbCgpOwogCiAgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgIk5vdEFs
bG93ZWRFcnJvciIsCiAgICAgICAgICAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlv
bnMpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLmh0dHBzLmh0bWwK
aW5kZXggMmU1ZWM4ODIxM2M2ZTY0ZTczZjZjMjVlMjhiZmEwZGQ3M2ZkMWNmNC4uZjNmZDE1NjRh
ZWQ0ZWU1NTExMzFjYzY4NTI3MzFmYzgyODczN2E0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLmh0dHBz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1zdWNjZXNzLmh0dHBzLmh0bWwKQEAgLTEyLDcgKzEyLDcgQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfTsKICAgICAgICAgLy8gQSBtb2NrIGFzc2VydGlvbiByZXR1cm4gYnVu
ZGxlLgotICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldEFzc2Vy
dGlvblJldHVybkJ1bmRsZShoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAwJyksIGhleFN0cmluZ1Rv
VWludDhBcnJheSgnMDEnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMicpLCBoZXhTdHJpbmdU
b1VpbnQ4QXJyYXkoJzAzJykpOworICAgICAgICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5zZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5
KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJyksIGhleFN0cmluZ1RvVWludDhBcnJh
eSgnMDInKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMycpKTsKIAogICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGZ1bmN0aW9uKGNyZWRlbnRp
YWwpIHsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC5pZCwgJ0FBJyk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWlzLXVz
ZXItdmVyaWZ5aW5nLXBsYXRmb3JtLWF1dGhlbnRpY2F0b3ItYXZhaWxhYmxlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWlzLXVzZXItdmVyaWZ5aW5nLXBs
YXRmb3JtLWF1dGhlbnRpY2F0b3ItYXZhaWxhYmxlLmh0bWwKaW5kZXggZGE4ZTUzNDU5NjBmOWQ0
YzYyNjRlZGFjMzk5MWQyMjA1NTRlZmU5Ny4uMTgxZDMzYTRmOGY5ODQzYWZkOGEyODM4NWM5ZTg5
OGNlODZjMDllYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1pcy11c2VyLXZlcmlmeWluZy1wbGF0Zm9ybS1hdXRoZW50aWNhdG9yLWF2YWlsYWJs
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktaXMt
dXNlci12ZXJpZnlpbmctcGxhdGZvcm0tYXV0aGVudGljYXRvci1hdmFpbGFibGUuaHRtbApAQCAt
NCw3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAg
ICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3NlbmdlcjsKKyAgICAgICAgaW50ZXJu
YWxzLm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I7CiAKICAgICAgICAgcmV0dXJuIFB1Ymxp
Y0tleUNyZWRlbnRpYWwuaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxh
YmxlKCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LCBmYWxzZSk7CkBAIC0xMiw3ICsxMiw3IEBACiAgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwuaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCkgd2l0
aG91dCBhbnkgYXZhaWxhYmxlIGF1dGhlbnRpY2F0b3JzLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdl
ci5zZXREaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCgpOworICAg
ICAgICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXREaWRVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCgpOwogCiAgICAgICAgIHJldHVybiBQ
dWJsaWNLZXlDcmVkZW50aWFsLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2
YWlsYWJsZSgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdCwgdHJ1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349318</attachid>
            <date>2018-09-10 11:11:33 -0700</date>
            <delta_ts>2018-09-10 12:35:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189277-20180910111132.patch</filename>
            <type>text/plain</type>
            <size>277855</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1ODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM3NTIxN2Y4Njg2ZTI1
MGJiM2EyMzQyOWYwMjAwZmI1NzNmZmU3ZS4uMDhlODU5YTc4OWNhYTY0Y2YzNThkMzdjYWI2MWQw
YjE1YWFjNGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxOC0wOS0wOCAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gUG9s
aXNoIEF1dGhlbnRpY2F0b3JNYW5hZ2VyIGFuZCByZW5hbWUgaXQgdG8gQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODkyNzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTE1OTM2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWltcyB0byBw
b2xpc2ggQXV0aGVudGljYXRvck1hbmFnZXIgc3VjaCB0aGF0OgorICAgICAgICAxKSBJdCBpcyBu
byBsb25nZXIgYSBzaW5nbGV0b24uIEluc3RlYWQsIGl0IHdpbGwgbGl2ZSB3aXRoIFBhZ2UuIEl0
IHdhcyBhIHNpbmdsZXRvbiBzaW1wbHkgYmVjYXVzZSBzdGF0aWMKKyAgICAgICAgUHVibGljS2V5
Q3JlZGVudGlhbDo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxl
KCkgaGF2ZSB0byBhY2Nlc3MgaXQuIEhvd2V2ZXIsIHRoaXMgcmVxdWVzdAorICAgICAgICBjYW4g
YmUgZnVsZmlsbGVkIGJ5IGFkZGluZyBhbiBhdHRyaWJ1dGUgW0NhbGxXaXRoPURvY3VtZW50XSB0
byB0aGUgSURMIGRlZmluYXRpb24uIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KKyAgICAgICAgc3Vj
aCBuZWVkLiBBbHNvLCB0aGUgc2luZ2xldG9uIGlzIGlsbHkgaW1wbGVtZW50ZWQgYXMgaXQgb3du
cyBhIHNpbmdsZSBJUEMgcHJveHkgdG8gVUkgUHJvY2VzcyB3aGljaCBtZWFucworICAgICAgICBk
aWZmZXJlbnQgd2ViIHBhZ2VzIHdpbGwgdGFsayB0byB0aGUgc2FtZSB3ZWIgcGFnZSBwcm94eS4g
QW55d2F5LCBtYWtpbmcgaXQgbGl2ZSB3aXRoIFBhZ2Ugc2hvdWxkIGZpeCBldmVyeXRoaW5nLgor
ICAgICAgICAyKSBTaW5jZSB3ZSBhcmUgbm93IHBsYW5uaW5nIHRvIHN1cHBvcnQgZXh0ZXJuYWwg
YXV0aGVudGljYXRvcnMsIHRoZSBtYW5hZ2VyIG9mIGFsbCBhdXRoZW50aWNhdG9ycyB3aWxsIHRo
ZW4KKyAgICAgICAgaGF2ZSB0byBsaXZlIGluIFVJIFByb2Nlc3Mgd2hpY2ggbWFrZXMgdGhpcyBB
dXRoZW50aWNhdG9yTWFuYWdlciBvYnNvbGV0ZS4gSW5zdGVhZCwgcmVuYW1lIGl0IHRvIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci4KKyAgICAgICAgMykgUmVuYW1lIENyZWRlbnRpYWxzTWVzc2Vu
Z2VyIHRvIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCB0byB0aWdodCBpdCB0byBXZWJB
dXRoTi4gQWxzbywgc2ltcGxpZnkgdGhlCisgICAgICAgIG1lc3NhZ2UgcmVwbHkgbW9kZWwgYXMg
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy9QdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMgPT4KKyAgICAgICAgRXhjZXB0aW9uRGF0YS9QdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSBmb3IgbWFrZUNyZWRlbnRpYWwvZ2V0QXNzZXJ0aW9uIG9wZXJhdGlvbnMuCisgICAgICAg
IDQpIFJlc3RyaWN0IG9uZSByZXF1ZXN0IHBlciB0aW1lLCBpLmUuIG1ha2VDcmVkZW50aWFsL2dl
dEFzc2VydGlvbiBmb3IgYSBzaW5nbGUgcGFnZS4KKyAgICAgICAgNSkgVW5pZnlpbmcgbWFrZUNy
ZWRlbnRpYWxSZXBseS9nZXRBc3NlcnRpb25SZXBseS9leGNlcHRpb25SZXBseSBpbnRvIHJlcXVl
c3RSZXBseSBmb3IgSVBDLiBDb3JyZXNwb25kaW5nbHksCisgICAgICAgIHVuaWZ5IGNhbGxiYWNr
IGFuZCBleGNlcHRpb25DYWxsYmFjayBpbnRvIGNhbGxiYWNrIGFzIHdlbGwgZm9yIExvY2FsQXV0
aGVudGljYXRvci4KKyAgICAgICAgNikgRW5oYW5jZSBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zIGVuY29kaW5nL2RlY29kaW5nIHdpdGggZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEvZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxzQ29udGFpbmVyOjppc0NyZWF0ZSk6CisgICAgICAgICog
TW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oOgorICAg
ICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNzZW5nZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3Jl
ZGVudGlhbHNNZXNzZW5nZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGlj
YXRvckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlOjp1c2VySGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjphdHRlc3RhdGlvbk9iamVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw6OnByb2R1Y2VD
bGllbnREYXRhSnNvbik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JJbnRlcm5hbDo6cHJvZHVjZUNsaWVudERhdGFKc29uSGFzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6aW5pdFRpbWVvdXRUaW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6ZGlkVGlt
ZW91dFRpbWVyRmlyZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5
aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5oLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQ6On5BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OjpyZXF1ZXN0UmVwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ojppc1VzZXJWZXJpZnlpbmdQ
bGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OnNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OmFk
ZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJv
eHkuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVz
cG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXV0aGVu
dGljYXRvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25z
ZTo6Y2xpZW50RGF0YUpTT04gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vUHVi
bGljS2V5Q3JlZGVudGlhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbDo6dHJ5
Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWw6OlB1YmxpY0tl
eUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbDo6aXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oOgorICAgICAgICAoV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0
YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGE6
OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRl
bnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRp
b24pOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YXV0aGVudGljYXRvckNvb3JkaW5h
dG9yIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjptb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3I6OnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OnNldEFzc2VydGlvblJldHVy
bkJ1bmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVz
c2VuZ2VyLmguCisgICAgICAgICogdGVzdGluZy9Nb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmlkbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxz
TWVzc2VuZ2VyLmlkbC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdl
ci5jcHA6IFJlbW92ZWQuCisKIDIwMTgtMDktMDggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIERpc3BhdGNoIGEgcGF5bWVudG1ldGhvZGNoYW5n
ZSBldmVudCB3aGVuIHRoZSBwYXltZW50IG1ldGhvZCBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVlOWUx
ODg5ODNhNzYzMmJkMTU2ZTg3Y2FiNDdjMWQ4MWRkY2ZiOGIuLmUzNTg3YTBjNDY0ZTc3Yzc1MTRi
MWJiYWM1NDIwNGY3ZGYxZjY3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTgtMDkt
MDggIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0
aE5dIFBvbGlzaCBBdXRoZW50aWNhdG9yTWFuYWdlciBhbmQgcmVuYW1lIGl0IHRvIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg5Mjc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDExNTkzNj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6
OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpyZXF1ZXN0UmVwbHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlh
bE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbjogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRl
bnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkubWVzc2FnZXMuaW4u
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Om1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01l
c3Nlbmdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6On5X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nl
bmdlci5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6bV9jcHVMaW1pdCk6CisgICAgICAgIChXZWJLaXQ6Om1fY3JlZGVu
dGlhbHNNZXNzZW5nZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisKIDIwMTgtMDktMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5pZnkgbW9zdCBvZiB0aGUgV2ViS2l0IE9iamVjdGl2ZS1DIEFQ
SSBzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMjM2NDhjNTAwYzc5
NGQ3YzM5M2UzOGI3MWVkYTI4YzlkNGQzYjVkLi41ZGIzMDE0NWFhNzI2ZjViM2IwYWQzYWNjZjc0
NzIwYzRhMjEyNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTk2Miw5ICs5
NjIsOSBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL0ludGVy
bmFscy5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbCBc
CiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01lbW9yeUluZm8uaWRsIFwKKyAgICAkKFdlYkNvcmUp
L3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5pZGwgXAogICAgICQoV2ViQ29y
ZSkvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbCBcCi0gICAgJChXZWJDb3JlKS90ZXN0aW5nL01v
Y2tDcmVkZW50aWFsc01lc3Nlbmdlci5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2Nr
UGFnZU92ZXJsYXkuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1lbnRBZGRy
ZXNzLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3Iu
aWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKaW5kZXggMTQ3MDdh
ZTExYWVkYWE2NGYwZWJjNzJkOGIyM2IyMTY5Zjg5MjhlMy4uY2IyNzYwYzFhYTc0ZTkxNDc0NTM1
MGUwMGYxZjcxNjNmMDNiM2ExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5l
ci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNjMsNyArNjQsNyBAQCB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQo
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYgb3B0aW9ucywgQ3JlZGVudGlhbFBybwogewogICAg
IC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvY3JlZGVu
dGlhbC1tYW5hZ2VtZW50LTEvI2FsZ29yaXRobS1yZXF1ZXN0IGFzIG9mIDQgQXVndXN0IDIwMTcK
ICAgICAvLyB3aXRoIGVuaGFuY2VtZW50IGZyb20gMTQgTm92ZW1iZXIgMjAxNyBFZGl0b3IncyBE
cmFmdC4KLSAgICBpZiAoIW1fZG9jdW1lbnQpIHsKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1f
ZG9jdW1lbnQtPnBhZ2UoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgyLDggKzgz
LDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KENyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyYmIG9wdGlvbnMsIENyZWRlbnRpYWxQcm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQvaGFuZGxlZCBpbiAoV2ViKUNy
ZWRlbnRpYWxNZXNzZW5nZXIsIHdoaWNoIGV4Y2hhbmdlcyBtZXNzYWdlcyBiZXR3ZWVuIFdlYlBy
b2Nlc3MgYW5kIFVJUHJvY2Vzcy4KLSAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2luZ2xldG9u
KCkuZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KSwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUoKSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNl
c3RvcnMoKSwgV1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOworICAg
IG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuZGlzY292ZXJG
cm9tRXh0ZXJuYWxTb3VyY2UobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgb3B0aW9ucy5w
dWJsaWNLZXkudmFsdWUoKSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RG
TW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIENyZWRl
bnRpYWxzQ29udGFpbmVyOjpzdG9yZShjb25zdCBCYXNpY0NyZWRlbnRpYWwmLCBDcmVkZW50aWFs
UHJvbWlzZSYmIHByb21pc2UpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQ3JlZGVudGlhbHNDb250
YWluZXI6OmlzQ3JlYXRlKENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiBvcHRpb25zLCBDcmVk
ZW50CiB7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jcmVkZW50aWFsLW1hbmFnZW1lbnQtMS8jYWxnb3JpdGhtLWNyZWF0ZSBhcyBvZiA0IEF1
Z3VzdCAyMDE3CiAgICAgLy8gd2l0aCBlbmhhbmNlbWVudCBmcm9tIDE0IE5vdmVtYmVyIDIwMTcg
RWRpdG9yJ3MgRHJhZnQuCi0gICAgaWYgKCFtX2RvY3VtZW50KSB7CisgICAgaWYgKCFtX2RvY3Vt
ZW50IHx8ICFtX2RvY3VtZW50LT5wYWdlKCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhj
ZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0xMTIsOCArMTEyLDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6aXNDcmVhdGUoQ3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmIG9wdGlvbnMsIENyZWRlbnQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQvaGFuZGxl
ZCBpbiAoV2ViKUNyZWRlbnRpYWxNZXNzZW5nZXIsIHdoaWNoIGV4Y2hhbmdlcyBtZXNzYWdlcyBi
ZXR3ZWVuIFdlYlByb2Nlc3MgYW5kIFVJUHJvY2Vzcy4KLSAgICBBdXRoZW50aWNhdG9yTWFuYWdl
cjo6c2luZ2xldG9uKCkuY3JlYXRlKG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIG9wdGlv
bnMucHVibGljS2V5LnZhbHVlKCksIGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCks
IFdURk1vdmUob3B0aW9ucy5zaWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2RvY3Vt
ZW50LT5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpLmNyZWF0ZShtX2RvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpLCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpLCBkb2VzSGF2ZVNh
bWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9wdGlvbnMuc2lnbmFsKSwgV1RGTW92
ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6OnByZXZlbnRTaWxl
bnRBY2Nlc3MoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVu
dGlhbHNDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuaAppbmRleCAyZDViMzhiNTY3MTdmM2RlOGI5MDE0
MWM3ODU2NjFmZWUwNmZlMTc0Li40ZTFiYjRlNWJlNWU1MjU1YTM3Nzg2ZjhlZjY5YjhhNzdkYWY1
M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2Vt
ZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvck1h
bmFnZXIuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlh
bHNNZXNzZW5nZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdl
bWVudC9DcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGI0NmJkMDc0YWY0N2U4OWNjOWNjNzViNDFlYWM2MmRhMjY0NjJiZmMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJDcmVkZW50aWFsc01lc3Nlbmdlci5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRI
TikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgQ3JlZGVudGlhbHNNZXNzZW5n
ZXJJbnRlcm5hbCB7Ci0KLWNvbnN0IHVpbnQ2NF90IG1heE1lc3NhZ2VJZCA9IDB4RkZGRkZGRkZG
RkZGRkY7IC8vIDU2IGJpdHMKLWNvbnN0IHNpemVfdCBjYWxsQmFja0NsYXNzaWZpZXJPZmZzZXQg
PSA1NjsKLQotfQotCi12b2lkIENyZWRlbnRpYWxzTWVzc2VuZ2VyOjpleGNlcHRpb25SZXBseSh1
aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikKLXsKLSAg
ICB1c2luZyBuYW1lc3BhY2UgQ3JlZGVudGlhbHNNZXNzZW5nZXJJbnRlcm5hbDsKLQotICAgIGlm
ICghKG1lc3NhZ2VJZCA+PiBjYWxsQmFja0NsYXNzaWZpZXJPZmZzZXQgXiBDYWxsQmFja0NsYXNz
aWZpZXI6OkNyZWF0aW9uKSkgewotICAgICAgICBhdXRvIGhhbmRsZXIgPSB0YWtlQ3JlYXRpb25D
b21wbGV0aW9uSGFuZGxlcihtZXNzYWdlSWQpOwotICAgICAgICBoYW5kbGVyKGV4Y2VwdGlvbi50
b0V4Y2VwdGlvbigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIShtZXNzYWdl
SWQgPj4gY2FsbEJhY2tDbGFzc2lmaWVyT2Zmc2V0IF4gQ2FsbEJhY2tDbGFzc2lmaWVyOjpSZXF1
ZXN0KSkgewotICAgICAgICBhdXRvIGhhbmRsZXIgPSB0YWtlUmVxdWVzdENvbXBsZXRpb25IYW5k
bGVyKG1lc3NhZ2VJZCk7Ci0gICAgICAgIGhhbmRsZXIoZXhjZXB0aW9uLnRvRXhjZXB0aW9uKCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi11aW50NjRfdCBDcmVkZW50aWFsc01lc3Nl
bmdlcjo6YWRkQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcihDcmVhdGlvbkNvbXBsZXRpb25IYW5k
bGVyJiYgaGFuZGxlcikKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgQ3JlZGVudGlhbHNNZXNzZW5n
ZXJJbnRlcm5hbDsKLQotICAgIHVpbnQ2NF90IG1lc3NhZ2VJZCA9IG1fYWNjdW11bGF0ZWRNZXNz
YWdlSWQrKzsKLSAgICBBU1NFUlQobWVzc2FnZUlkIDw9IG1heE1lc3NhZ2VJZCk7Ci0gICAgbWVz
c2FnZUlkID0gbWVzc2FnZUlkIHwgQ2FsbEJhY2tDbGFzc2lmaWVyOjpDcmVhdGlvbiA8PCBjYWxs
QmFja0NsYXNzaWZpZXJPZmZzZXQ7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdDcmVh
dGlvbkNvbXBsZXRpb25IYW5kbGVycy5hZGQobWVzc2FnZUlkLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
LSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAg
IHJldHVybiBtZXNzYWdlSWQ7Ci19Ci0KLUNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgQ3JlZGVu
dGlhbHNNZXNzZW5nZXI6OnRha2VDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IG1l
c3NhZ2VJZCkKLXsKLSAgICByZXR1cm4gbV9wZW5kaW5nQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxl
cnMudGFrZShtZXNzYWdlSWQpOwotfQotCi11aW50NjRfdCBDcmVkZW50aWFsc01lc3Nlbmdlcjo6
YWRkUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIENyZWRlbnRpYWxzTWVzc2VuZ2VySW50ZXJu
YWw7Ci0KLSAgICB1aW50NjRfdCBtZXNzYWdlSWQgPSBtX2FjY3VtdWxhdGVkTWVzc2FnZUlkKys7
Ci0gICAgQVNTRVJUKG1lc3NhZ2VJZCA8PSBtYXhNZXNzYWdlSWQpOwotICAgIG1lc3NhZ2VJZCA9
IG1lc3NhZ2VJZCB8IENhbGxCYWNrQ2xhc3NpZmllcjo6UmVxdWVzdCA8PCBjYWxsQmFja0NsYXNz
aWZpZXJPZmZzZXQ7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXJzLmFkZChtZXNzYWdlSWQsIFdURk1vdmUoaGFuZGxlcikpOwotICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmV0dXJuIG1l
c3NhZ2VJZDsKLX0KLQotUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyIENyZWRlbnRpYWxzTWVzc2Vu
Z2VyOjp0YWtlUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IG1lc3NhZ2VJZCkKLXsK
LSAgICByZXR1cm4gbV9wZW5kaW5nUmVxdWVzdENvbXBsZXRpb25IYW5kbGVycy50YWtlKG1lc3Nh
Z2VJZCk7Ci19Ci0KLXVpbnQ2NF90IENyZWRlbnRpYWxzTWVzc2VuZ2VyOjphZGRRdWVyeUNvbXBs
ZXRpb25IYW5kbGVyKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQotewotICAgIHVz
aW5nIG5hbWVzcGFjZSBDcmVkZW50aWFsc01lc3NlbmdlckludGVybmFsOwotCi0gICAgdWludDY0
X3QgbWVzc2FnZUlkID0gbV9hY2N1bXVsYXRlZE1lc3NhZ2VJZCsrOwotICAgIEFTU0VSVChtZXNz
YWdlSWQgPCBtYXhNZXNzYWdlSWQpOwotICAgIG1lc3NhZ2VJZCA9IG1lc3NhZ2VJZCB8IENhbGxC
YWNrQ2xhc3NpZmllcjo6UXVlcnkgPDwgY2FsbEJhY2tDbGFzc2lmaWVyT2Zmc2V0OwotICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMuYWRkKG1lc3Nh
Z2VJZCwgV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXR1cm4gbWVzc2FnZUlkOwotfQotCi1RdWVyeUNv
bXBsZXRpb25IYW5kbGVyIENyZWRlbnRpYWxzTWVzc2VuZ2VyOjp0YWtlUXVlcnlDb21wbGV0aW9u
SGFuZGxlcih1aW50NjRfdCBtZXNzYWdlSWQpCi17Ci0gICAgcmV0dXJuIG1fcGVuZGluZ1F1ZXJ5
Q29tcGxldGlvbkhhbmRsZXJzLnRha2UobWVzc2FnZUlkKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVu
dGlhbHNNZXNzZW5nZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI4YWY5NWMx
NmFiZmY5Y2JlZWExNTgzNjY2YjA1OTU5YWJiZThlYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxt
YW5hZ2VtZW50L0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVVRI
TikKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERlZmVycmVk
UHJvbWlzZTsKLQotc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7Ci1z
dHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwotCi1zdHJ1Y3QgQ3JlYXRp
b25SZXR1cm5CdW5kbGUgewotICAgIENyZWF0aW9uUmV0dXJuQnVuZGxlKFJlZjxBcnJheUJ1ZmZl
cj4mJiBjcmVkZW50aWFsSWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkK
LSAgICAgICAgOiBjcmVkZW50aWFsSWQoV1RGTW92ZShjcmVkZW50aWFsSWQpKQotICAgICAgICAs
IGF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBSZWY8QXJyYXlCdWZmZXI+IGNyZWRlbnRpYWxJZDsKLSAgICBSZWY8QXJyYXlC
dWZmZXI+IGF0dGVzdGF0aW9uT2JqZWN0OwotfTsKLXN0cnVjdCBBc3NlcnRpb25SZXR1cm5CdW5k
bGUgewotICAgIEFzc2VydGlvblJldHVybkJ1bmRsZShSZWY8QXJyYXlCdWZmZXI+JiYgY3JlZGVu
dGlhbElkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1
ZmZlcj4mJiBzaWduYXR1cmUsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQotICAgICAg
ICA6IGNyZWRlbnRpYWxJZChXVEZNb3ZlKGNyZWRlbnRpYWxJZCkpCi0gICAgICAgICwgYXV0aGVu
dGljYXRvckRhdGEoV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCi0gICAgICAgICwgc2lnbmF0
dXJlKFdURk1vdmUoc2lnbmF0dXJlKSkKLSAgICAgICAgLCB1c2VySGFuZGxlKFdURk1vdmUodXNl
ckhhbmRsZSkpCi0gICAgewotICAgIH0KLQotICAgIFJlZjxBcnJheUJ1ZmZlcj4gY3JlZGVudGlh
bElkOwotICAgIFJlZjxBcnJheUJ1ZmZlcj4gYXV0aGVudGljYXRvckRhdGE7Ci0gICAgUmVmPEFy
cmF5QnVmZmVyPiBzaWduYXR1cmU7Ci0gICAgUmVmPEFycmF5QnVmZmVyPiB1c2VySGFuZGxlOwot
fTsKLQotdXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhjZXB0aW9uT3I8Q3JlYXRpb25SZXR1cm5CdW5kbGU+JiYpPjsKLXVzaW5nIFJlcXVl
c3RDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
QXNzZXJ0aW9uUmV0dXJuQnVuZGxlPiYmKT47Ci11c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVy
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47Ci0KLWNsYXNzIENyZWRlbnRpYWxzTWVz
c2VuZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPENyZWRlbnRpYWxzTWVzc2VuZ2VyPiB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jl
ZGVudGlhbHNNZXNzZW5nZXIpOwotcHVibGljOgotICAgIENyZWRlbnRpYWxzTWVzc2VuZ2VyKCkg
PSBkZWZhdWx0OwotCi0gICAgLy8gU2VuZGVycy4KLSAgICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRl
bnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zJiwgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gs
IGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRm
b3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsK
LQotICAgIC8vIFJlY2VpdmVycy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4Y2VwdGlvblJl
cGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOwotICAgIHZpcnR1
YWwgdm9pZCBtYWtlQ3JlZGVudGlhbFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0
YXRpb25PYmplY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXNzZXJ0aW9uUmVwbHkodWlu
dDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRsZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFp
bGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpID0gMDsKLQotcHJvdGVjdGVkOgot
ICAgIHZpcnR1YWwgfkNyZWRlbnRpYWxzTWVzc2VuZ2VyKCkgPSBkZWZhdWx0OwotCi0gICAgV0VC
Q09SRV9FWFBPUlQgdWludDY0X3QgYWRkQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcihDcmVhdGlv
bkNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIENyZWF0aW9uQ29tcGxl
dGlvbkhhbmRsZXIgdGFrZUNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIodWludDY0X3QpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IGFkZFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihSZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyIHRha2VSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIodWludDY0X3QpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IGFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoUXVlcnlD
b21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBRdWVyeUNvbXBsZXRpb25I
YW5kbGVyIHRha2VRdWVyeUNvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90KTsKLQotcHJpdmF0ZToK
LSAgICBlbnVtIENhbGxCYWNrQ2xhc3NpZmllciA6IHVpbnQ2NF90IHsKLSAgICAgICAgQ3JlYXRp
b24gPSAweDAxLAotICAgICAgICBSZXF1ZXN0ID0gMHgwMiwKLSAgICAgICAgUXVlcnkgPSAweDAz
LAotICAgIH07Ci0gICAgLy8gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBpcyByZXNlcnZlZCBh
cyBjYWxsYmFjayBjbGFzc2lmaWVyLgotICAgIHVpbnQ2NF90IG1fYWNjdW11bGF0ZWRNZXNzYWdl
SWQgeyAxIH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxl
cj4gbV9wZW5kaW5nQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcnM7Ci0gICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyPiBtX3BlbmRpbmdSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXJzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXI+
IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMyYTJjYjIz
N2QyMGJhNGJlYzk4MGIxNDQ4ZjRkOWZlNmI1YjZkNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgY2xpZW50
RGF0YUpTT04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5k
bGUpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShjbGllbnREYXRhSlNPTikp
Ci0gICAgLCBtX2F1dGhlbnRpY2F0b3JEYXRhKFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpKQot
ICAgICwgbV9zaWduYXR1cmUoV1RGTW92ZShzaWduYXR1cmUpKQotICAgICwgbV91c2VySGFuZGxl
KFdURk1vdmUodXNlckhhbmRsZSkpCi17Ci19Ci0KLUFycmF5QnVmZmVyKiBBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U6OmF1dGhlbnRpY2F0b3JEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5nZXQoKTsKLX0KLQotQXJyYXlCdWZmZXIqIEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZTo6c2lnbmF0dXJlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9zaWduYXR1cmUuZ2V0KCk7Ci19Ci0KLUFycmF5QnVmZmVyKiBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OnVzZXJIYW5kbGUoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXJIYW5k
bGUuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaAppbmRleCA0NDUxZjI1
MzFhNDM5M2UxODk4ZWQ2Y2YzMGEyZGU4ZDk5NGE1ZTUwLi5jZjI4YzFhY2FlMTljY2VlMzcyMmY0
ZjAyOTIyMjkxMTk4MTRkMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKQEAg
LTMzLDI1ICszMywzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQorICAgIHN0YXRpYyBSZWY8QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIGNsaWVu
dERhdGFKU09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJh
eUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlKFdURk1vdmUoY2xpZW50RGF0YUpTT04pLCBXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRh
KSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKHVzZXJIYW5kbGUpKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0Owog
Ci0gICAgQXJyYXlCdWZmZXIqIGF1dGhlbnRpY2F0b3JEYXRhKCkgY29uc3Q7Ci0gICAgQXJyYXlC
dWZmZXIqIHNpZ25hdHVyZSgpIGNvbnN0OwotICAgIEFycmF5QnVmZmVyKiB1c2VySGFuZGxlKCkg
Y29uc3Q7CisgICAgQXJyYXlCdWZmZXIqIGF1dGhlbnRpY2F0b3JEYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVyKiBzaWduYXR1
cmUoKSBjb25zdCB7IHJldHVybiBtX3NpZ25hdHVyZS5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVy
KiB1c2VySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV91c2VySGFuZGxlLnB0cigpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBjbGllbnREYXRhSlNPTiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0
b3JEYXRhLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgdXNlckhhbmRsZSk7CisgICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJl
ZjxBcnJheUJ1ZmZlcj4mJiBjbGllbnREYXRhSlNPTiwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhl
bnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWY8QXJyYXlCdWZm
ZXI+JiYgdXNlckhhbmRsZSkKKyAgICAgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92
ZShjbGllbnREYXRhSlNPTikpCisgICAgICAgICwgbV9hdXRoZW50aWNhdG9yRGF0YShXVEZNb3Zl
KGF1dGhlbnRpY2F0b3JEYXRhKSkKKyAgICAgICAgLCBtX3NpZ25hdHVyZShXVEZNb3ZlKHNpZ25h
dHVyZSkpCisgICAgICAgICwgbV91c2VySGFuZGxlKFdURk1vdmUodXNlckhhbmRsZSkpCisgICAg
eworICAgIH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkFz
c2VydGlvbjsgfQogCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2F1dGhlbnRpY2F0b3JEYXRh
OwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7Ci0gICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBtX3VzZXJIYW5kbGU7CisgICAgUmVmPEFycmF5QnVmZmVyPiBtX2F1dGhlbnRpY2F0
b3JEYXRhOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7CisgICAgUmVmPEFycmF5
QnVmZmVyPiBtX3VzZXJIYW5kbGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4ZjA2YzQzODZmMjNmMTA5MzY2MDIyOTI5ODU5MTE3YzcxY2E1YjQyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIgotCi0jaWYg
RU5BQkxFKFdFQl9BVVRITikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YXR0ZXN0YXRpb25PYmplY3QpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShj
bGllbnREYXRhSlNPTikpCi0gICAgLCBtX2F0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0
YXRpb25PYmplY3QpKQotewotfQotCi1BcnJheUJ1ZmZlciogQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2U6OmF0dGVzdGF0aW9uT2JqZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9h
dHRlc3RhdGlvbk9iamVjdC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UuaAppbmRleCA0ODA3MDdiNmY3MWYyNTgzMjhkOTY4NzIwYjM4ZDBkZmUzODE3YWRjLi4wNTM3
ZDk3YzNiZDIwNmY5ZmJkMjcxNmVkMzU0MDliNjdlM2VlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZS5oCkBAIC0zMywyMSArMzMsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRo
ZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgY2xpZW50
RGF0YUpTT04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkKKyAgICBz
dGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFy
cmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRp
b25PYmplY3QpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZShXVEZNb3ZlKGNsaWVudERhdGFKU09OKSwgV1RGTW92ZShh
dHRlc3RhdGlvbk9iamVjdCkpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAotICAgIEFycmF5QnVmZmVyKiBhdHRl
c3RhdGlvbk9iamVjdCgpIGNvbnN0OworICAgIEFycmF5QnVmZmVyKiBhdHRlc3RhdGlvbk9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0ZXN0YXRpb25PYmplY3QucHRyKCk7IH0KIAogcHJpdmF0
ZToKLSAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgY2xpZW50RGF0YUpTT04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9i
amVjdCk7CisgICAgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVm
ZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmpl
Y3QpCisgICAgICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUoY2xpZW50RGF0YUpT
T04pKQorICAgICAgICAsIG1fYXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdHRlc3RhdGlvbk9i
amVjdCkpCisgICAgeworICAgIH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFR5cGU6OkF0dGVzdGF0aW9uOyB9CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXR0
ZXN0YXRpb25PYmplY3Q7CisgICAgUmVmPEFycmF5QnVmZmVyPiBtX2F0dGVzdGF0aW9uT2JqZWN0
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNkNGE1MWZkMmFlOWRmZmU3ZDIwMTM3ODU4MDJkMGZlNmVmZmU1ZjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHAKQEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisKKyNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiQWJvcnRTaWduYWwuaCIKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAi
UHVibGljS2V5Q3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgorI2lu
Y2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIgorI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRv
L0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcklu
dGVybmFsIHsKKworZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSB7CisgICAgQ3JlYXRlLAorICAg
IEdldAorfTsKKworLy8gRklYTUUoMTgxOTQ4KTogQWRkIHRva2VuIGJpbmRpbmcgSUQgYW5kIGV4
dGVuc2lvbnMuCitzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBwcm9kdWNlQ2xpZW50RGF0YUpzb24o
Q2xpZW50RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBjaGFsbGVuZ2UsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit7CisgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQ2xpZW50RGF0YVR5
cGU6OkNyZWF0ZToKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInR5cGUiX3MsICJ3ZWJhdXRo
bi5jcmVhdGUiX3MpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENsaWVudERhdGFUeXBlOjpH
ZXQ6CisgICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJ0eXBlIl9zLCAid2ViYXV0aG4uZ2V0Il9z
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIG9iamVjdC0+c2V0U3RyaW5nKCJjaGFsbGVu
Z2UiX3MsIFdURjo6YmFzZTY0VVJMRW5jb2RlKGNoYWxsZW5nZS5kYXRhKCksIGNoYWxsZW5nZS5s
ZW5ndGgoKSkpOworICAgIG9iamVjdC0+c2V0U3RyaW5nKCJvcmlnaW4iX3MsIG9yaWdpbi50b1Jh
d1N0cmluZygpKTsKKyAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRl
bnQuCisgICAgb2JqZWN0LT5zZXRTdHJpbmcoImhhc2hBbGdvcml0aG0iX3MsICJTSEEtMjU2Il9z
KTsKKworICAgIGF1dG8gdXRmOEpTT05TdHJpbmcgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKKyAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1dGY4SlNPTlN0cmluZy5kYXRh
KCksIHV0ZjhKU09OU3RyaW5nLmxlbmd0aCgpKTsKK30KKworc3RhdGljIFZlY3Rvcjx1aW50OF90
PiBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNvbnN0IEFycmF5QnVmZmVyJiBjbGllbnREYXRh
SnNvbikKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQu
CisgICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIGNyeXB0by0+YWRkQnl0ZXMoY2xpZW50
RGF0YUpzb24uZGF0YSgpLCBjbGllbnREYXRhSnNvbi5ieXRlTGVuZ3RoKCkpOworICAgIHJldHVy
biBjcnlwdG8tPmNvbXB1dGVIYXNoKCk7Cit9CisKKy8vIEZJWE1FKDE4MTk0Nyk6IFdlIHNob3Vs
ZCBwcm9iYWJseSB0cmltIHRpbWVPdXRJbk1zIHRvIHNvbWUgbWF4IGFsbG93YWJsZSBudW1iZXIu
CitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBpbml0VGltZW91dFRpbWVyKHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQgbG9uZz4gdGltZU91dEluTXMsIGNvbnN0IENyZWRlbnRpYWxQcm9taXNl
JiBwcm9taXNlKQoreworICAgIGlmICghdGltZU91dEluTXMpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtwcm9taXNl
ID0gcHJvbWlzZV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl9zIH0pOworICAgIH0p
OworICAgIHRpbWVyLT5zdGFydE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqdGlt
ZU91dEluTXMpKTsKKyAgICByZXR1cm4gdGltZXI7Cit9CisKK3N0YXRpYyBib29sIGRpZFRpbWVv
dXRUaW1lckZpcmUoVGltZXIqIHRpbWVyKQoreworICAgIGlmICghdGltZXIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIXRpbWVyLT5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB0aW1lci0+c3RvcCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBu
YW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWwKKworQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjp1bmlxdWVfcHRyPEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJiBjbGllbnQpCisgICAgOiBtX2NsaWVudChX
VEZNb3ZlKGNsaWVudCkpCit7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpz
ZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4m
JiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7Cit9CisKK3ZvaWQg
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNh
bGxlck9yaWdpbiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0
aW9ucywgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYm
IGFib3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0Cit7CisgICAg
dXNpbmcgbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckludGVybmFsOworCisgICAg
Ly8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRo
bi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCisgICAgLy8gRklYTUU6
IEV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBTa2lwIFN0ZXAgMTEtMTIuCisgICAg
Ly8gU3RlcCAxLCAzLCAxNiBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgorICAgIC8vIFN0ZXAg
Mi4KKyAgICBpZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzKSB7CisgICAgICAgIHByb21pc2Uu
cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRv
Y3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiJfcyB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIFN0ZXAgNCAmIDE3LgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gdGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRUaW1lcihvcHRpb25zLnRpbWVvdXQs
IHByb21pc2UpOworCisgICAgLy8gU3RlcCA1LTcuCisgICAgLy8gRklYTUUoMTgxOTUwKTogV2Ug
bGFjayBmdW5kYW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gZGV0ZXJtaW5l
IGlmIGEgaG9zdCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3QuCisgICAgLy8gU3RlcCA2IGlzIHRo
ZXJlZm9yZSBza2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBzdXBwb3J0IHRvIGRldGVybWluZSB3
aGV0aGVyIGEgZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKKyAgICAvLyBkb21haW4gc3VmZml4IG9m
IGFub3RoZXIgZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUgY29tcGFyaXNvbiB0byBlcXVhbCBp
biBTdGVwIDcuCisgICAgaWYgKCFvcHRpb25zLnJwLmlkLmlzRW1wdHkoKSAmJiBjYWxsZXJPcmln
aW4uaG9zdCgpICE9IG9wdGlvbnMucnAuaWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhj
ZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5v
dCBhIHJlZ2lzdHJhYmxlIGRvbWFpbiBzdWZmaXggb2YgdGhlIHByb3ZpZGVkIFJQIElELiJfcyB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAob3B0aW9ucy5ycC5pZC5pc0VtcHR5
KCkpCisgICAgICAgIG9wdGlvbnMucnAuaWQgPSBjYWxsZXJPcmlnaW4uaG9zdCgpOworCisgICAg
Ly8gU3RlcCA4LTEwLgorICAgIC8vIE1vc3Qgb2YgdGhlIGpvYnMgYXJlIGRvbmUgYnkgYmluZGlu
Z3MuIEhvd2V2ZXIsIHdlIGNhbid0IGtub3cgaWYgdGhlIEpTVmFsdWUgb2Ygb3B0aW9ucy5wdWJL
ZXlDcmVkUGFyYW1zCisgICAgLy8gaXMgZW1wdHkgb3Igbm90LiBSZXR1cm4gTm90U3VwcG9ydGVk
RXJyb3IgYXMgbG9uZyBhcyBpdCBpcyBlbXB0eS4KKyAgICBpZiAob3B0aW9ucy5wdWJLZXlDcmVk
UGFyYW1zLmlzRW1wdHkoKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciwgIk5vIGRlc2lyZWQgcHJvcGVydGllcyBvZiB0aGUgdG8gYmUgY3Jl
YXRlZCBjcmVkZW50aWFsIGFyZSBwcm92aWRlZC4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBTdGVwIDEzLTE1LgorICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBwcm9k
dWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZSwgb3B0aW9ucy5jaGFsbGVu
Z2UsIGNhbGxlck9yaWdpbik7CisgICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBwcm9kdWNl
Q2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKc29uKTsKKworICAgIC8vIFN0ZXAgMTgtMjEu
CisgICAgLy8gT25seSBwbGF0Zm9ybSBhdHRhY2htZW50cyB3aWxsIGJlIHN1cHBvcnRlZCBhdCB0
aGlzIHN0YWdlLiBBc3N1bWluZyBvbmUgYXV0aGVudGljYXRvciBwZXIgZGV2aWNlLgorICAgIC8v
IEFsc28sIHJlc2lkZW50IGtleXMsIHVzZXIgdmVyaWZpY2F0aW9ucyBhbmQgZGlyZWN0IGF0dGVz
dGF0aW9uIGFyZSBlbmZvcmNlZCBhdCB0aGlzIHRhZ2UuCisgICAgLy8gRm9yIGJldHRlciBwZXJm
b3JtYW5jZSwgdHJhbnNwb3J0cyBvZiBvcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFscyBhcmUgY2hl
Y2tlZCBpbiBMb2NhbEF1dGhlbnRpY2F0b3IuCisgICAgaWYgKCFtX2NsaWVudCkgIHsKKyAgICAg
ICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRl
cm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNv
biksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aW1lb3V0VGltZXIgPSBXVEZNb3ZlKHRp
bWVvdXRUaW1lciksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChjb25zdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGRpZFRpbWVvdXRU
aW1lckZpcmUodGltZW91dFRpbWVyLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgaWYgKGFib3J0U2lnbmFsICYmIGFib3J0U2lnbmFsLT5hYm9ydGVkKCkpIHsKKyAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydGVkIGJ5IEFi
b3J0U2lnbmFsLiJfcyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGRhdGEuY2xpZW50RGF0YUpTT04gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKTsKKyAgICAg
ICAgaWYgKGF1dG8gcHVibGljS2V5Q3JlZGVudGlhbCA9IFB1YmxpY0tleUNyZWRlbnRpYWw6OnRy
eUNyZWF0ZShkYXRhKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHB1YmxpY0tleUNy
ZWRlbnRpYWwuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVCghZXhjZXB0aW9uLm1lc3NhZ2UuaXNOdWxsKCkpOworICAgICAgICBwcm9taXNlLnJl
amVjdChleGNlcHRpb24udG9FeGNlcHRpb24oKSk7CisgICAgfTsKKyAgICAvLyBBc3luYyBvcGVy
YXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCisgICAg
bV9jbGllbnQtPm1ha2VDcmVkZW50aWFsKGNsaWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNh
bGxlck9yaWdpbiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRp
b25zLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYg
YWJvcnRTaWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKK3sKKyAgICB1
c2luZyBuYW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CisKKyAgICAv
LyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhu
LyNjcmVhdGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KKyAgICAvLyBGSVhNRTog
RXh0ZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIFNraXAgU3RlcCA4LTkuCisgICAgLy8g
U3RlcCAxLCAzLCAxMyBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgorICAgIC8vIFN0ZXAgMi4K
KyAgICBpZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzKSB7CisgICAgICAgIHByb21pc2UucmVq
ZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3Vt
ZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiJfcyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIFN0ZXAgNCAmIDE2LgorICAgIHN0ZDo6dW5pcXVlX3B0cjxU
aW1lcj4gdGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRUaW1lcihvcHRpb25zLnRpbWVvdXQsIHBy
b21pc2UpOworCisgICAgLy8gU3RlcCA1LTcuCisgICAgLy8gRklYTUUoMTgxOTUwKTogV2UgbGFj
ayBmdW5kYW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gZGV0ZXJtaW5lIGlm
IGEgaG9zdCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3QuCisgICAgLy8gU3RlcCA2IGlzIHRoZXJl
Zm9yZSBza2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBzdXBwb3J0IHRvIGRldGVybWluZSB3aGV0
aGVyIGEgZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKKyAgICAvLyBkb21haW4gc3VmZml4IG9mIGFu
b3RoZXIgZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUgY29tcGFyaXNvbiB0byBlcXVhbCBpbiBT
dGVwIDcuCisgICAgaWYgKCFvcHRpb25zLnJwSWQuaXNFbXB0eSgpICYmIGNhbGxlck9yaWdpbi5o
b3N0KCkgIT0gb3B0aW9ucy5ycElkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IsICJUaGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBpcyBub3QgYSBy
ZWdpc3RyYWJsZSBkb21haW4gc3VmZml4IG9mIHRoZSBwcm92aWRlZCBSUCBJRC4iX3MgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG9wdGlvbnMucnBJZC5pc0VtcHR5KCkpCisg
ICAgICAgIG9wdGlvbnMucnBJZCA9IGNhbGxlck9yaWdpbi5ob3N0KCk7CisKKyAgICAvLyBTdGVw
IDEwLTEyLgorICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBwcm9kdWNlQ2xpZW50RGF0YUpzb24o
Q2xpZW50RGF0YVR5cGU6OkdldCwgb3B0aW9ucy5jaGFsbGVuZ2UsIGNhbGxlck9yaWdpbik7Cisg
ICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNs
aWVudERhdGFKc29uKTsKKworICAgIC8vIFN0ZXAgMTQtMTUsIDE3LTE5LgorICAgIC8vIE9ubHkg
cGxhdGZvcm0gYXR0YWNobWVudHMgd2lsbCBiZSBzdXBwb3J0ZWQgYXQgdGhpcyBzdGFnZS4gQXNz
dW1pbmcgb25lIGF1dGhlbnRpY2F0b3IgcGVyIGRldmljZS4KKyAgICAvLyBBbHNvLCByZXNpZGVu
dCBrZXlzLCB1c2VyIHZlcmlmaWNhdGlvbnMgYW5kIGRpcmVjdCBhdHRlc3RhdGlvbiBhcmUgZW5m
b3JjZWQgYXQgdGhpcyB0YWdlLgorICAgIC8vIEZvciBiZXR0ZXIgcGVyZm9ybWFuY2UsIGZpbHRl
cmluZyBvZiBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgaXMgZG9uZSBpbiBMb2NhbEF1dGhlbnRp
Y2F0b3IuCisgICAgaWYgKCFtX2NsaWVudCkgIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhj
ZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2Ns
aWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCB0aW1lb3V0VGltZXIgPSBXVEZNb3ZlKHRpbWVvdXRUaW1lciksIGFib3J0U2ln
bmFsID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGRpZFRpbWVvdXRUaW1lckZpcmUodGltZW91dFRpbWVy
LmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGFib3J0U2lnbmFsICYm
IGFib3J0U2lnbmFsLT5hYm9ydGVkKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4
Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydGVkIGJ5IEFib3J0U2lnbmFsLiJfcyB9KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGEuY2xpZW50RGF0YUpT
T04gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKTsKKyAgICAgICAgaWYgKGF1dG8gcHVibGljS2V5
Q3JlZGVudGlhbCA9IFB1YmxpY0tleUNyZWRlbnRpYWw6OnRyeUNyZWF0ZShkYXRhKSkgeworICAg
ICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHB1YmxpY0tleUNyZWRlbnRpYWwuZ2V0KCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCghZXhjZXB0aW9uLm1l
c3NhZ2UuaXNOdWxsKCkpOworICAgICAgICBwcm9taXNlLnJlamVjdChleGNlcHRpb24udG9FeGNl
cHRpb24oKSk7CisgICAgfTsKKyAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVk
IGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCisgICAgbV9jbGllbnQtPmdldEFzc2VydGlv
bihjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVh
bj4mJiBwcm9taXNlKSBjb25zdAoreworICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBo
dHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2lzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZQorICAgIC8vIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KKyAgICBp
ZiAoIW1fY2xpZW50KSAgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBVbmtu
b3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIEZJWE1FKDE4Mjc2Nyk6IFdlIHNob3VsZCBjb25zaWRlciBtb3Jl
IG9uIHRoZSBhc3Nlc3NtZW50IG9mIHRoZSByZXR1cm4gdmFsdWUuIFJpZ2h0IG5vdywgd2UgcmV0
dXJuIHRydWUvZmFsc2UKKyAgICAvLyBpbW1lZGlhdGVseSBhY2NvcmRpbmcgdG8gcGxhdGZvcm0g
c3BlY2lmaWMgcHJvY2VkdXJlcy4KKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBw
cm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9OworICAgIC8vIEFzeW5jIG9wZXJhdGlvbiBh
cmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgorICAgIG1fY2xpZW50
LT5pc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFj
NDlkYjUyM2I5MzZiMGE0ZWMyMjEwNDFiNzdkYTdjYzE0NzhmZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBYm9ydFNpZ25hbDsKK2NsYXNzIEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudDsKK2NsYXNzIEJhc2ljQ3JlZGVudGlhbDsKK2NsYXNzIFNlY3Vy
aXR5T3JpZ2luOworCitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsK
K3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CisKK3VzaW5nIENyZWRl
bnRpYWxQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFj
ZTxCYXNpY0NyZWRlbnRpYWw+Pj47CisKK2NsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKTsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3Ioc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudD4mJik7CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhv
ZHMgaW1wbGVtZW50IHN0YXRpYyBtZXRob2RzIG9mIFB1YmxpY0tleUNyZWRlbnRpYWwuCisgICAg
dm9pZCBjcmVhdGUoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zJiwgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRy
PEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2b2lkIGRp
c2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2Vz
dG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsK
KyAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShE
T01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVf
cHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzgwY2E3N2NmNzIxZTA4
M2I2NDYwZDBiOTZlMWZkYjgxZjQ2ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAKQEAg
LTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCIKKworI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDo6fkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudCgpCit7CisgICAgLy8gSnVzdCB0byBjYWxsIGhhbmRsZXJzIHRv
IGF2b2lkIGFueSBhc3NlcnRpb24gZmFpbHVyZXMuCisgICAgaWYgKG1fcGVuZGluZ0NvbXBsZXRp
b25IYW5kbGVyKQorICAgICAgICBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgTm90
QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iX3MgfSk7CisgICAgZm9yIChhdXRv
IGl0ciA9IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzLmJlZ2luKCk7IGl0ciAhPSAg
bV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMuZW5kKCk7ICsraXRyKQorICAgICAgICBp
dHItPnZhbHVlKGZhbHNlKTsKK30KKwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQ6OnJlcXVlc3RSZXBseShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYg
ZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKQoreworICAgIG1f
cGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKGRhdGEsIGV4Y2VwdGlvbik7Cit9CisKK3ZvaWQgQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wgcmVzdWx0KQor
eworICAgIGF1dG8gaGFuZGxlciA9IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzLnRh
a2UobWVzc2FnZUlkKTsKKyAgICBoYW5kbGVyKHJlc3VsdCk7Cit9CisKK2Jvb2wgQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yQ2xpZW50OjpzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoUmVxdWVz
dENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBpZiAobV9wZW5kaW5nQ29tcGxl
dGlvbkhhbmRsZXIpIHsKKyAgICAgICAgaGFuZGxlcih7IH0sIHsgTm90QWxsb3dlZEVycm9yLCAi
QSByZXF1ZXN0IGlzIHBlbmRpbmcuIl9zIH0pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOwor
ICAgIHJldHVybiB0cnVlOworfQorCit1aW50NjRfdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQ6OmFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYm
IGhhbmRsZXIpCit7CisgICAgdWludDY0X3QgbWVzc2FnZUlkID0gbV9hY2N1bXVsYXRlZE1lc3Nh
Z2VJZCsrOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFu
ZGxlcnMuYWRkKG1lc3NhZ2VJZCwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICByZXR1cm4gbWVzc2FnZUlk
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
VEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJhM2Q5MWQ2
NTBmNDBkNjQ2YjMxZjYxYTA2ODFlZTU1NWViYTE0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50
LmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKKyNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVmZXJy
ZWRQcm9taXNlOworCitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsK
K3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTsKK3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnM7CisKK3VzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERh
dGEmLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+OwordXNpbmcgUXVlcnlDb21wbGV0
aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OworCitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50KTsKK3B1YmxpYzoKKyAgICBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+QXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Q2xpZW50KCk7CisKKyAgICAvLyBTZW5kZXJzLgorICAgIHZpcnR1YWwgdm9pZCBtYWtlQ3JlZGVu
dGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisK
KyAgICAvLyBSZWNlaXZlcnMuCisgICAgdm9pZCByZXF1ZXN0UmVwbHkoY29uc3QgV2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbERhdGEmLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik7
CisgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVS
ZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpOworCitwcm90ZWN0ZWQ6CisgICAgLy8gT25s
eSBvbmUgcmVxdWVzdCBpcyBhbGxvd2VkIGF0IG9uZSB0aW1lLiBJdCByZXR1cm5zIGZhbHNlIHdo
ZW5ldmVyIHRoZXJlIGlzIGFuIGV4aXN0aW5nIHBlbmRpbmcgcmVxdWVzdC4KKyAgICAvLyBBbmQg
aW52b2tlcyB0aGUgcHJvdmlkZWQgaGFuZGxlciB3aXRoIE5vdEFsbG93ZWRFcnJvci4KKyAgICBi
b29sIHNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgdWludDY0X3QgYWRkUXVlcnlDb21wbGV0aW9uSGFuZGxlcihRdWVyeUNvbXBsZXRp
b25IYW5kbGVyJiYpOworCitwcml2YXRlOgorICAgIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciBt
X3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcjsKKyAgICB1aW50NjRfdCBtX2FjY3VtdWxhdGVkTWVz
c2FnZUlkIHsgMSB9OworICAgIEhhc2hNYXA8dWludDY0X3QsIFF1ZXJ5Q29tcGxldGlvbkhhbmRs
ZXI+IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZDYwMTYyMWYxOTExNzk1YjE3ZTRkZTc2
NmZkNjM5Njk2ZjYxNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgotCi0jaWYg
RU5BQkxFKFdFQl9BVVRITikKLQotI2luY2x1ZGUgIkFib3J0U2lnbmFsLmgiCi0jaW5jbHVkZSAi
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJDcmVkZW50aWFsc01lc3Nlbmdlci5o
IgotI2luY2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgiCi0jaW5jbHVkZSAiUHVibGljS2V5Q3Jl
ZGVudGlhbC5oIgotI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMu
aCIKLSNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCIKLSNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8cGFs
L2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KLSNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgotI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBBdXRoZW50aWNhdG9yTWFuYWdl
ckludGVybmFsIHsKLQotZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSB7Ci0gICAgQ3JlYXRlLAot
ICAgIEdldAotfTsKLQotLy8gRklYTUUoMTgxOTQ4KTogQWRkIHRva2VuIGJpbmRpbmcgSUQgYW5k
IGV4dGVuc2lvbnMuCi1zdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBwcm9kdWNlQ2xpZW50RGF0YUpz
b24oQ2xpZW50RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBjaGFsbGVuZ2UsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCi17Ci0gICAgYXV0byBvYmplY3QgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQ2xpZW50RGF0
YVR5cGU6OkNyZWF0ZToKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInR5cGUiX3MsICJ3ZWJh
dXRobi5jcmVhdGUiX3MpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENsaWVudERhdGFUeXBl
OjpHZXQ6Ci0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJ0eXBlIl9zLCAid2ViYXV0aG4uZ2V0
Il9zKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIG9iamVjdC0+c2V0U3RyaW5nKCJjaGFs
bGVuZ2UiX3MsIFdURjo6YmFzZTY0VVJMRW5jb2RlKGNoYWxsZW5nZS5kYXRhKCksIGNoYWxsZW5n
ZS5sZW5ndGgoKSkpOwotICAgIG9iamVjdC0+c2V0U3RyaW5nKCJvcmlnaW4iX3MsIG9yaWdpbi50
b1Jhd1N0cmluZygpKTsKLSAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBl
bmRlbnQuCi0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImhhc2hBbGdvcml0aG0iX3MsICJTSEEtMjU2
Il9zKTsKLQotICAgIGF1dG8gdXRmOEpTT05TdHJpbmcgPSBvYmplY3QtPnRvSlNPTlN0cmluZygp
LnV0ZjgoKTsKLSAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1dGY4SlNPTlN0cmluZy5k
YXRhKCksIHV0ZjhKU09OU3RyaW5nLmxlbmd0aCgpKTsKLX0KLQotc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNvbnN0IEFycmF5QnVmZmVyJiBjbGllbnRE
YXRhSnNvbikKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRl
bnQuCi0gICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwotICAgIGNyeXB0by0+YWRkQnl0ZXMoY2xp
ZW50RGF0YUpzb24uZGF0YSgpLCBjbGllbnREYXRhSnNvbi5ieXRlTGVuZ3RoKCkpOwotICAgIHJl
dHVybiBjcnlwdG8tPmNvbXB1dGVIYXNoKCk7Ci19Ci0KLS8vIEZJWE1FKDE4MTk0Nyk6IFdlIHNo
b3VsZCBwcm9iYWJseSB0cmltIHRpbWVPdXRJbk1zIHRvIHNvbWUgbWF4IGFsbG93YWJsZSBudW1i
ZXIuCi1zdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBpbml0VGltZW91dFRpbWVyKHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQgbG9uZz4gdGltZU91dEluTXMsIGNvbnN0IENyZWRlbnRpYWxQcm9t
aXNlJiBwcm9taXNlKQotewotICAgIGlmICghdGltZU91dEluTXMpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtwcm9t
aXNlID0gcHJvbWlzZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl9zIH0pOwotICAg
IH0pOwotICAgIHRpbWVyLT5zdGFydE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygq
dGltZU91dEluTXMpKTsKLSAgICByZXR1cm4gdGltZXI7Ci19Ci0KLXN0YXRpYyBib29sIGRpZFRp
bWVvdXRUaW1lckZpcmUoVGltZXIqIHRpbWVyKQotewotICAgIGlmICghdGltZXIpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXRpbWVyLT5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB0aW1lci0+c3RvcCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgQXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbAotCi1BdXRoZW50aWNhdG9y
TWFuYWdlciYgQXV0aGVudGljYXRvck1hbmFnZXI6OnNpbmdsZXRvbigpCi17Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXV0aGVudGljYXRv
ck1hbmFnZXI+IGF1dGhlbnRpY2F0b3I7Ci0gICAgcmV0dXJuIGF1dGhlbnRpY2F0b3I7Ci19Ci0K
LXZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnNldE1lc3NlbmdlcihDcmVkZW50aWFsc01lc3Nl
bmdlciYgbWVzc2VuZ2VyKQotewotICAgIG1fbWVzc2VuZ2VyID0gbWFrZVdlYWtQdHIobWVzc2Vu
Z2VyKTsKLX0KLQotdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBjYWxsZXJPcmlnaW4sIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxB
Ym9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBj
b25zdAotewotICAgIHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNhdG9yTWFuYWdlckludGVybmFs
OwotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCi0gICAg
Ly8gRklYTUU6IEV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBTa2lwIFN0ZXAgMTEt
MTIuCi0gICAgLy8gU3RlcCAxLCAzLCAxNiBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgotICAg
IC8vIFN0ZXAgMi4KLSAgICBpZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzKSB7Ci0gICAgICAg
IHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSBvcmlnaW4g
b2YgdGhlIGRvY3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiJfcyB9KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN0ZXAgNCAmIDE3LgotICAgIHN0ZDo6
dW5pcXVlX3B0cjxUaW1lcj4gdGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRUaW1lcihvcHRpb25z
LnRpbWVvdXQsIHByb21pc2UpOwotCi0gICAgLy8gU3RlcCA1LTcuCi0gICAgLy8gRklYTUUoMTgx
OTUwKTogV2UgbGFjayBmdW5kYW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJpdHlPcmlnaW4gdG8g
ZGV0ZXJtaW5lIGlmIGEgaG9zdCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3QuCi0gICAgLy8gU3Rl
cCA2IGlzIHRoZXJlZm9yZSBza2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBzdXBwb3J0IHRvIGRl
dGVybWluZSB3aGV0aGVyIGEgZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKLSAgICAvLyBkb21haW4g
c3VmZml4IG9mIGFub3RoZXIgZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUgY29tcGFyaXNvbiB0
byBlcXVhbCBpbiBTdGVwIDcuCi0gICAgaWYgKCFvcHRpb25zLnJwLmlkLmlzRW1wdHkoKSAmJiBj
YWxsZXJPcmlnaW4uaG9zdCgpICE9IG9wdGlvbnMucnAuaWQpIHsKLSAgICAgICAgcHJvbWlzZS5y
ZWplY3QoRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3Vt
ZW50IGlzIG5vdCBhIHJlZ2lzdHJhYmxlIGRvbWFpbiBzdWZmaXggb2YgdGhlIHByb3ZpZGVkIFJQ
IElELiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob3B0aW9ucy5ycC5p
ZC5pc0VtcHR5KCkpCi0gICAgICAgIG9wdGlvbnMucnAuaWQgPSBjYWxsZXJPcmlnaW4uaG9zdCgp
OwotCi0gICAgLy8gU3RlcCA4LTEwLgotICAgIC8vIE1vc3Qgb2YgdGhlIGpvYnMgYXJlIGRvbmUg
YnkgYmluZGluZ3MuIEhvd2V2ZXIsIHdlIGNhbid0IGtub3cgaWYgdGhlIEpTVmFsdWUgb2Ygb3B0
aW9ucy5wdWJLZXlDcmVkUGFyYW1zCi0gICAgLy8gaXMgZW1wdHkgb3Igbm90LiBSZXR1cm4gTm90
U3VwcG9ydGVkRXJyb3IgYXMgbG9uZyBhcyBpdCBpcyBlbXB0eS4KLSAgICBpZiAob3B0aW9ucy5w
dWJLZXlDcmVkUGFyYW1zLmlzRW1wdHkoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vIGRlc2lyZWQgcHJvcGVydGllcyBvZiB0aGUg
dG8gYmUgY3JlYXRlZCBjcmVkZW50aWFsIGFyZSBwcm92aWRlZC4iX3MgfSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBTdGVwIDEzLTE1LgotICAgIGF1dG8gY2xpZW50RGF0YUpz
b24gPSBwcm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZSwgb3B0aW9u
cy5jaGFsbGVuZ2UsIGNhbGxlck9yaWdpbik7Ci0gICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2gg
PSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKc29uKTsKLQotICAgIC8vIFN0
ZXAgMTgtMjEuCi0gICAgLy8gT25seSBwbGF0Zm9ybSBhdHRhY2htZW50cyB3aWxsIGJlIHN1cHBv
cnRlZCBhdCB0aGlzIHN0YWdlLiBBc3N1bWluZyBvbmUgYXV0aGVudGljYXRvciBwZXIgZGV2aWNl
LgotICAgIC8vIEFsc28sIHJlc2lkZW50IGtleXMsIHVzZXIgdmVyaWZpY2F0aW9ucyBhbmQgZGly
ZWN0IGF0dGVzdGF0aW9uIGFyZSBlbmZvcmNlZCBhdCB0aGlzIHRhZ2UuCi0gICAgLy8gRm9yIGJl
dHRlciBwZXJmb3JtYW5jZSwgdHJhbnNwb3J0cyBvZiBvcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFs
cyBhcmUgY2hlY2tlZCBpbiBMb2NhbEF1dGhlbnRpY2F0b3IuCi0gICAgaWYgKCFtX21lc3Nlbmdl
cikgIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAi
VW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShj
bGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aW1lb3V0VGltZXIg
PSBXVEZNb3ZlKHRpbWVvdXRUaW1lciksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNpZ25h
bCldIChFeGNlcHRpb25PcjxDcmVhdGlvblJldHVybkJ1bmRsZT4mJiByZXN1bHQpIG11dGFibGUg
ewotICAgICAgICBpZiAoZGlkVGltZW91dFRpbWVyRmlyZSh0aW1lb3V0VGltZXIuZ2V0KCkpKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoYWJvcnRTaWduYWwgJiYgYWJvcnRTaWdu
YWwtPmFib3J0ZWQoKSkgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsg
QWJvcnRFcnJvciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwuIl9zIH0pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
LSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlc3VsdC5leGNlcHRpb24oKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGJ1bmRsZSA9IHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFB1YmxpY0tleUNy
ZWRlbnRpYWw6OmNyZWF0ZShXVEZNb3ZlKGJ1bmRsZS5jcmVkZW50aWFsSWQpLCBBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVuZGxlLmF0dGVzdGF0aW9uT2JqZWN0KSkpKS5w
dHIoKSk7Ci0gICAgfTsKLSAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFu
ZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCi0gICAgbV9tZXNzZW5nZXItPm1ha2VDcmVkZW50
aWFsKGNsaWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotfQotCi12b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpkaXNjb3ZlckZyb21FeHRlcm5h
bFNvdXJjZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3JpZ2luLCBjb25zdCBQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhB
bmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFBy
b21pc2UmJiBwcm9taXNlKSBjb25zdAotewotICAgIHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNh
dG9yTWFuYWdlckludGVybmFsOwotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERl
Y2VtYmVyIDIwMTcuCi0gICAgLy8gRklYTUU6IEV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQg
eWV0LiBTa2lwIFN0ZXAgOC05LgotICAgIC8vIFN0ZXAgMSwgMywgMTMgYXJlIGhhbmRsZWQgYnkg
dGhlIGNhbGxlci4KLSAgICAvLyBTdGVwIDIuCi0gICAgaWYgKCFzYW1lT3JpZ2luV2l0aEFuY2Vz
dG9ycykgewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RBbGxvd2VkRXJy
b3IsICJUaGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBpcyBub3QgdGhlIHNhbWUgYXMgaXRzIGFu
Y2VzdG9ycy4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBTdGVwIDQg
JiAxNi4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IHRpbWVvdXRUaW1lciA9IGluaXRUaW1l
b3V0VGltZXIob3B0aW9ucy50aW1lb3V0LCBwcm9taXNlKTsKLQotICAgIC8vIFN0ZXAgNS03Lgot
ICAgIC8vIEZJWE1FKDE4MTk1MCk6IFdlIGxhY2sgZnVuZGFtZW50YWwgc3VwcG9ydCBmcm9tIFNl
Y3VyaXR5T3JpZ2luIHRvIGRldGVybWluZSBpZiBhIGhvc3QgaXMgYSB2YWxpZCBkb21haW4gb3Ig
bm90LgotICAgIC8vIFN0ZXAgNiBpcyB0aGVyZWZvcmUgc2tpcHBlZC4gQWxzbywgd2UgbGFjayB0
aGUgc3VwcG9ydCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGRvbWFpbiBpcyBhIHJlZ2lzdHJhYmxl
Ci0gICAgLy8gZG9tYWluIHN1ZmZpeCBvZiBhbm90aGVyIGRvbWFpbi4gSGVuY2UgcmVzdHJpY3Qg
dGhlIGNvbXBhcmlzb24gdG8gZXF1YWwgaW4gU3RlcCA3LgotICAgIGlmICghb3B0aW9ucy5ycElk
LmlzRW1wdHkoKSAmJiBjYWxsZXJPcmlnaW4uaG9zdCgpICE9IG9wdGlvbnMucnBJZCkgewotICAg
ICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiVGhlIG9yaWdp
biBvZiB0aGUgZG9jdW1lbnQgaXMgbm90IGEgcmVnaXN0cmFibGUgZG9tYWluIHN1ZmZpeCBvZiB0
aGUgcHJvdmlkZWQgUlAgSUQuIl9zIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChvcHRpb25zLnJwSWQuaXNFbXB0eSgpKQotICAgICAgICBvcHRpb25zLnJwSWQgPSBjYWxsZXJP
cmlnaW4uaG9zdCgpOwotCi0gICAgLy8gU3RlcCAxMC0xMi4KLSAgICBhdXRvIGNsaWVudERhdGFK
c29uID0gcHJvZHVjZUNsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlOjpHZXQsIG9wdGlvbnMu
Y2hhbGxlbmdlLCBjYWxsZXJPcmlnaW4pOwotICAgIGF1dG8gY2xpZW50RGF0YUpzb25IYXNoID0g
cHJvZHVjZUNsaWVudERhdGFKc29uSGFzaChjbGllbnREYXRhSnNvbik7Ci0KLSAgICAvLyBTdGVw
IDE0LTE1LCAxNy0xOS4KLSAgICAvLyBPbmx5IHBsYXRmb3JtIGF0dGFjaG1lbnRzIHdpbGwgYmUg
c3VwcG9ydGVkIGF0IHRoaXMgc3RhZ2UuIEFzc3VtaW5nIG9uZSBhdXRoZW50aWNhdG9yIHBlciBk
ZXZpY2UuCi0gICAgLy8gQWxzbywgcmVzaWRlbnQga2V5cywgdXNlciB2ZXJpZmljYXRpb25zIGFu
ZCBkaXJlY3QgYXR0ZXN0YXRpb24gYXJlIGVuZm9yY2VkIGF0IHRoaXMgdGFnZS4KLSAgICAvLyBG
b3IgYmV0dGVyIHBlcmZvcm1hbmNlLCBmaWx0ZXJpbmcgb2Ygb3B0aW9ucy5hbGxvd0NyZWRlbnRp
YWxzIGlzIGRvbmUgaW4gTG9jYWxBdXRoZW50aWNhdG9yLgotICAgIGlmICghbV9tZXNzZW5nZXIp
ICB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlVu
a25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUoY2xp
ZW50RGF0YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgdGltZW91dFRpbWVyID0g
V1RGTW92ZSh0aW1lb3V0VGltZXIpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwp
XSAoRXhjZXB0aW9uT3I8QXNzZXJ0aW9uUmV0dXJuQnVuZGxlPiYmIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgIGlmIChkaWRUaW1lb3V0VGltZXJGaXJlKHRpbWVvdXRUaW1lci5nZXQoKSkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25h
bC0+YWJvcnRlZCgpKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBB
Ym9ydEVycm9yLCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewot
ICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LmV4Y2VwdGlvbigpKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gYnVuZGxlID0gcmVzdWx0LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5Q3Jl
ZGVudGlhbDo6Y3JlYXRlKFdURk1vdmUoYnVuZGxlLmNyZWRlbnRpYWxJZCksIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBXVEZN
b3ZlKGJ1bmRsZS5hdXRoZW50aWNhdG9yRGF0YSksIFdURk1vdmUoYnVuZGxlLnNpZ25hdHVyZSks
IFdURk1vdmUoYnVuZGxlLnVzZXJIYW5kbGUpKSkucHRyKCkpOwotICAgIH07Ci0gICAgLy8gQXN5
bmMgb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2Vy
LgotICAgIG1fbWVzc2VuZ2VyLT5nZXRBc3NlcnRpb24oY2xpZW50RGF0YUpzb25IYXNoLCBvcHRp
b25zLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRv
ck1hbmFnZXI6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShE
T01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKSBjb25zdAotewotICAgIC8v
IFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4v
I2lzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZQotICAgIC8vIGFz
IG9mIDUgRGVjZW1iZXIgMjAxNy4KLSAgICBpZiAoIW1fbWVzc2VuZ2VyKSAgewotICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFs
IGVycm9yLiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FKDE4
Mjc2Nyk6IFdlIHNob3VsZCBjb25zaWRlciBtb3JlIG9uIHRoZSBhc3Nlc3NtZW50IG9mIHRoZSBy
ZXR1cm4gdmFsdWUuIFJpZ2h0IG5vdywgd2UgcmV0dXJuIHRydWUvZmFsc2UKLSAgICAvLyBpbW1l
ZGlhdGVseSBhY2NvcmRpbmcgdG8gcGxhdGZvcm0gc3BlY2lmaWMgcHJvY2VkdXJlcy4KLSAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9v
bCByZXN1bHQpIG11dGFibGUgewotICAgICAgICBwcm9taXNlLnJlc29sdmUocmVzdWx0KTsKLSAg
ICB9OwotICAgIC8vIEFzeW5jIG9wZXJhdGlvbiBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBp
biB0aGUgbWVzc2VuZ2VyLgotICAgIG1fbWVzc2VuZ2VyLT5pc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
TWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzcyNzZkZGU2NzhjMjNi
MGM5MjE5OGQxZmY3OWRhYjM1ZjZjYTVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvck1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBBYm9ydFNpZ25hbDsKLWNsYXNzIEJhc2ljQ3JlZGVudGlhbDsK
LWNsYXNzIENyZWRlbnRpYWxzTWVzc2VuZ2VyOwotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0KLXN0
cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOwotc3RydWN0IFB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKLQotdXNpbmcgQ3JlZGVudGlhbFByb21pc2UgPSBE
T01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEJhc2ljQ3JlZGVudGlh
bD4+PjsKLQotY2xhc3MgQXV0aGVudGljYXRvck1hbmFnZXIgewotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEF1dGhlbnRpY2F0b3JNYW5hZ2VyKTsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0
cm95ZWQ8QXV0aGVudGljYXRvck1hbmFnZXI+OwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlciYgc2luZ2xldG9uKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRNZXNzZW5nZXIoQ3JlZGVudGlhbHNNZXNzZW5nZXImKTsKLQotICAgIC8v
IFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgc3RhdGljIG1ldGhvZHMgb2YgUHVibGlj
S2V5Q3JlZGVudGlhbC4KLSAgICB2b2lkIGNyZWF0ZShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBib29sIHNhbWVPcmlnaW5X
aXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYp
IGNvbnN0OwotICAgIHZvaWQgZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgU2VjdXJp
dHlPcmlnaW4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBib29s
IHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRp
YWxQcm9taXNlJiYpIGNvbnN0OwotICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRo
ZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICBBdXRoZW50aWNhdG9yTWFuYWdlcigpID0gZGVmYXVsdDsKLQot
ICAgIFdlYWtQdHI8Q3JlZGVudGlhbHNNZXNzZW5nZXI+IG1fbWVzc2VuZ2VyOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3Bv
bnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJl
c3BvbnNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI4ZjA5NDZkYzNlMDBk
NGUzODQ5OTI1NmNjMWQ5MjMyNzJkMDc1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JSZXNwb25zZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JSZXNwb25z
ZS5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1B
dXRoZW50aWNhdG9yUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWZQdHI8QXJyYXlC
dWZmZXI+JiYgY2xpZW50RGF0YUpTT04pCi0gICAgOiBtX2NsaWVudERhdGFKU09OKFdURk1vdmUo
Y2xpZW50RGF0YUpTT04pKQotewotfQotCi1BcnJheUJ1ZmZlciogQXV0aGVudGljYXRvclJlc3Bv
bnNlOjpjbGllbnREYXRhSlNPTigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50RGF0YUpT
T04uZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaAppbmRleCA1NTI4YzAzMDM0ZjUyMWM1NGMzMTQxMmQ1
ZTYzYjc2ZWE3ZThmYWFjLi5jYjdlMDdlNTJlYzk0ZDRlMTQyMDRlMTY2MzM1OTZiOTViMTAwZTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvclJlc3BvbnNlLmgKQEAgLTQwLDE1ICs0MCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIEF0
dGVzdGF0aW9uCiAgICAgfTsKIAotICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0b3JSZXNwb25zZShS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYpOworICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0b3JSZXNwb25z
ZShSZWY8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04pCisgICAgICAgIDogbV9jbGllbnRE
YXRhSlNPTihXVEZNb3ZlKGNsaWVudERhdGFKU09OKSkKKyAgICB7CisgICAgfQogICAgIHZpcnR1
YWwgfkF1dGhlbnRpY2F0b3JSZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgPSAwOwogCi0gICAgQXJyYXlCdWZmZXIqIGNsaWVudERhdGFKU09OKCkg
Y29uc3Q7CisgICAgQXJyYXlCdWZmZXIqIGNsaWVudERhdGFKU09OKCkgY29uc3QgeyByZXR1cm4g
bV9jbGllbnREYXRhSlNPTi5wdHIoKTsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gbV9jbGllbnREYXRhSlNPTjsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IG1fY2xpZW50RGF0
YUpTT047CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNwcAppbmRleCAx
MTJmNDBhNjM0MmY2MmM3NmM1NDY1YmZlYWU4YzdiYzU2NWU3YTEwLi4yMWY3MDBjZjBmMzZjZWE3
Nzk2MzhmNDQwYmUwY2RhNTg3MjE0ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5jcHAKQEAgLTI4LDEzICsyOCwz
OSBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1
ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVB1YmxpY0tl
eUNyZWRlbnRpYWw6OlB1YmxpY0tleUNyZWRlbnRpYWwoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGlk
LCBSZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiYmIHJlc3BvbnNlKQorUmVmPFB1YmxpY0tl
eUNyZWRlbnRpYWw+IFB1YmxpY0tleUNyZWRlbnRpYWw6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+
JiYgaWQsIFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYgcmVzcG9uc2UpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUHVibGljS2V5Q3JlZGVudGlhbChXVEZNb3ZlKGlkKSwgV1RGTW92
ZShyZXNwb25zZSkpKTsKK30KKworUmVmUHRyPFB1YmxpY0tleUNyZWRlbnRpYWw+IFB1YmxpY0tl
eUNyZWRlbnRpYWw6OnRyeUNyZWF0ZShjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0
YSkKK3sKKyAgICBpZiAoIWRhdGEucmF3SWQgfHwgIWRhdGEuY2xpZW50RGF0YUpTT04pCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGRhdGEuaXNBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZSkgeworICAgICAgICBpZiAoIWRhdGEuYXR0ZXN0YXRpb25PYmplY3QpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBQdWJsaWNLZXlDcmVkZW50aWFsKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLmNsaWVudERhdGFKU09OLnJl
bGVhc2VOb25OdWxsKCksIGRhdGEuYXR0ZXN0YXRpb25PYmplY3QucmVsZWFzZU5vbk51bGwoKSkp
KTsKKyAgICB9CisKKyAgICBpZiAoIWRhdGEuYXV0aGVudGljYXRvckRhdGEgfHwgIWRhdGEuc2ln
bmF0dXJlIHx8ICFkYXRhLnVzZXJIYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHVibGljS2V5Q3JlZGVudGlhbChkYXRhLnJhd0lkLnJl
bGVhc2VOb25OdWxsKCksIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGRh
dGEuY2xpZW50RGF0YUpTT04ucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdXRoZW50aWNhdG9yRGF0
YS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLnNpZ25hdHVyZS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRh
LnVzZXJIYW5kbGUucmVsZWFzZU5vbk51bGwoKSkpKTsKK30KKworUHVibGljS2V5Q3JlZGVudGlh
bDo6UHVibGljS2V5Q3JlZGVudGlhbChSZWY8QXJyYXlCdWZmZXI+JiYgaWQsIFJlZjxBdXRoZW50
aWNhdG9yUmVzcG9uc2U+JiYgcmVzcG9uc2UpCiAgICAgOiBCYXNpY0NyZWRlbnRpYWwoV1RGOjpi
YXNlNjRVUkxFbmNvZGUoaWQtPmRhdGEoKSwgaWQtPmJ5dGVMZW5ndGgoKSksIFR5cGU6OlB1Ymxp
Y0tleSwgRGlzY292ZXJ5OjpSZW1vdGUpCiAgICAgLCBtX3Jhd0lkKFdURk1vdmUoaWQpKQogICAg
ICwgbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKQEAgLTQ2LDkgKzcyLDkgQEAgRXhjZXB0
aW9uT3I8Ym9vbD4gUHVibGljS2V5Q3JlZGVudGlhbDo6Z2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0
cygpIGNvbnN0CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiB9
CiAKLXZvaWQgUHVibGljS2V5Q3JlZGVudGlhbDo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRo
ZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21p
c2UpCit2b2lkIFB1YmxpY0tleUNyZWRlbnRpYWw6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZShEb2N1bWVudCYgZG9jdW1lbnQsIERPTVByb21pc2VEZWZlcnJl
ZDxJRExCb29sZWFuPiYmIHByb21pc2UpCiB7Ci0gICAgQXV0aGVudGljYXRvck1hbmFnZXI6OnNp
bmdsZXRvbigpLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShX
VEZNb3ZlKHByb21pc2UpKTsKKyAgICBkb2N1bWVudC5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcigpLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShX
VEZNb3ZlKHByb21pc2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaApp
bmRleCBmZGVkYzU4OWIzMDM0MTE1N2RhZTNiYjdiYWE0Mjc0ZmI2ZmE5YmE0Li4zMGZjZTQyMDJi
ZWJhZjBhOTgyZWNhOGZmM2U5ZWMzYjg5YmQ3MjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaApAQCAtMzYsMjggKzM2
LDI5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JSZXNwb25z
ZTsKK2NsYXNzIERvY3VtZW50OworCitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERhdGE7CiAK
IGNsYXNzIFB1YmxpY0tleUNyZWRlbnRpYWwgZmluYWwgOiBwdWJsaWMgQmFzaWNDcmVkZW50aWFs
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFB1YmxpY0tleUNyZWRlbnRpYWw+IGNyZWF0ZShS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgaWQsIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYg
cmVzcG9uc2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdWJsaWNLZXlD
cmVkZW50aWFsKFdURk1vdmUoaWQpLCBXVEZNb3ZlKHJlc3BvbnNlKSkpOwotICAgIH0KKyAgICBz
dGF0aWMgUmVmPFB1YmxpY0tleUNyZWRlbnRpYWw+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYg
aWQsIFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8UHVi
bGljS2V5Q3JlZGVudGlhbD4gdHJ5Q3JlYXRlKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
Jik7CiAKLSAgICBBcnJheUJ1ZmZlciogcmF3SWQoKSBjb25zdCB7IHJldHVybiBtX3Jhd0lkLmdl
dCgpOyB9Ci0gICAgQXV0aGVudGljYXRvclJlc3BvbnNlKiByZXNwb25zZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzcG9uc2UuZ2V0KCk7IH0KKyAgICBBcnJheUJ1ZmZlciogcmF3SWQoKSBjb25zdCB7
IHJldHVybiBtX3Jhd0lkLnB0cigpOyB9CisgICAgQXV0aGVudGljYXRvclJlc3BvbnNlKiByZXNw
b25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UucHRyKCk7IH0KICAgICAvLyBOb3Qgc3Vw
cG9ydCB5ZXQuIEFsd2F5cyB0aHJvd3MuCiAgICAgRXhjZXB0aW9uT3I8Ym9vbD4gZ2V0Q2xpZW50
RXh0ZW5zaW9uUmVzdWx0cygpIGNvbnN0OwogCi0gICAgc3RhdGljIHZvaWQgaXNVc2VyVmVyaWZ5
aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExC
b29sZWFuPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGUoRG9jdW1lbnQmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVh
bj4mJik7CiAKIHByaXZhdGU6Ci0gICAgUHVibGljS2V5Q3JlZGVudGlhbChSZWZQdHI8QXJyYXlC
dWZmZXI+JiYgaWQsIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYpOworICAgIFB1Ymxp
Y0tleUNyZWRlbnRpYWwoUmVmPEFycmF5QnVmZmVyPiYmIGlkLCBSZWY8QXV0aGVudGljYXRvclJl
c3BvbnNlPiYmKTsKIAogICAgIFR5cGUgY3JlZGVudGlhbFR5cGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBUeXBlOjpQdWJsaWNLZXk7IH0KIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9yYXdJ
ZDsKLSAgICBSZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiBtX3Jlc3BvbnNlOworICAgIFJl
ZjxBcnJheUJ1ZmZlcj4gbV9yYXdJZDsKKyAgICBSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiBt
X3Jlc3BvbnNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5pZGwKaW5k
ZXggNzdiMWI3MjQwYjU5MWIyNDNkZWE5ODc5MjBkNDc0MjBlZmJjNTZhZC4uZDUxZjA2ZDQwZGQ5
ZTRlYzNjNmEyODk3NjcyNjIwZmUyYjg1Zjk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsCkBAIC0zNSw1ICsz
NSw1IEBAIHR5cGVkZWYgYm9vbGVhbiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnM7CiAgICAgW1Nh
bWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdXRoZW50aWNhdG9yUmVzcG9uc2UgcmVzcG9u
c2U7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnMgZ2V0
Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpOwogCi0gICAgc3RhdGljIFByb21pc2U8Ym9vbGVhbj4g
aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCk7CisgICAgW0Nh
bGxXaXRoPURvY3VtZW50XSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBpc1VzZXJWZXJpZnlpbmdQ
bGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucy5oCmluZGV4IDc2MGU4ZmRhNWYxZTc1MTc3Y2VmZWY3NTE1ODZlYWI0
OTQwNDMzYzguLmRhOWUzMTNlNjg0MmJkMGFlODU2Yzk4M2RiMDJkMjZjZTA0YjU1ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCkBAIC05NCw5ICs5NCw5IEBAIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwg
cnAuaWQgPDwgcnAubmFtZSA8PCBycC5pY29uOwotICAgIFZlY3Rvcjx1aW50OF90PiBpZFZlY3Rv
cjsKLSAgICBpZFZlY3Rvci5hcHBlbmQodXNlci5pZC5kYXRhKCksIHVzZXIuaWQubGVuZ3RoKCkp
OwotICAgIGVuY29kZXIgPDwgaWRWZWN0b3IgPDwgdXNlci5kaXNwbGF5TmFtZSA8PCB1c2VyLm5h
bWUgPDwgdXNlci5pY29uIDw8IHB1YktleUNyZWRQYXJhbXMgPDwgZXhjbHVkZUNyZWRlbnRpYWxz
OworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVzZXIuaWQubGVuZ3RoKCkp
OworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHVzZXIuaWQuZGF0YSgpKSwgdXNlci5pZC5sZW5ndGgoKSwgMSk7CisgICAg
ZW5jb2RlciA8PCB1c2VyLmRpc3BsYXlOYW1lIDw8IHVzZXIubmFtZSA8PCB1c2VyLmljb24gPDwg
cHViS2V5Q3JlZFBhcmFtcyA8PCBleGNsdWRlQ3JlZGVudGlhbHM7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+CkBAIC0xMDksOCArMTA5LDE1IEBAIHN0ZDo6b3B0aW9uYWw8UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQucnAuaWNvbikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQudXNlci5pZFZlY3RvcikpCisKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiB1c2VySWRMZW5ndGg7CisgICAgZGVjb2RlciA+PiB1c2VySWRMZW5ndGg7Cisg
ICAgaWYgKCF1c2VySWRMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmVzdWx0LnVzZXIuaWRWZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KHVzZXJJZExlbmd0aC52YWx1ZSgp
KTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlc3VsdC51c2VyLmlk
VmVjdG9yLmRhdGEoKSwgdXNlcklkTGVuZ3RoLnZhbHVlKCksIDEpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXNlci5kaXNw
bGF5TmFtZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQudXNlci5uYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MjlmYjg3Zjc4MGE1YmY1MmMwMmIwMmM1NjljMDdkYWM1MDM1ODc0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0
YS5oCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEF1dGhlbnRpY2F0b3JSZXNwb25zZTsKKworc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxE
YXRhIHsKKyAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmF3SWQ7CisKKyAgICAvLyBB
dXRoZW50aWNhdG9yUmVzcG9uc2UKKyAgICBib29sIGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U7CisgICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlCdWZmZXI+IGNsaWVudERhdGFKU09O
OworCisgICAgLy8gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKKyAgICBtdXRhYmxl
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXR0ZXN0YXRpb25PYmplY3Q7CisKKyAgICAvLyBBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UKKyAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXV0aGVudGljYXRvckRhdGE7CisgICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNpZ25h
dHVyZTsKKyAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdXNlckhhbmRsZTsKKworICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQdWJsaWNLZXlD
cmVkZW50aWFsRGF0YT4gZGVjb2RlKERlY29kZXImKTsKK307CisKKy8vIE5vdGVkOiBjbGllbnRE
YXRhSlNPTiBpcyBuZXZlciBlbmNvZGVkIG9yIGRlY29kZWQgYXMgaXQgaXMgbmV2ZXIgc2VudCBh
Y3Jvc3MgZGlmZmVyZW50IHByb2Nlc3Nlcy4KK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lk
IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYXdJZC0+Ynl0ZUxlbmd0
aCgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihyYXdJZC0+ZGF0YSgpKSwgcmF3SWQtPmJ5dGVMZW5ndGgoKSwgMSk7
CisKKyAgICBlbmNvZGVyIDw8IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CisK
KyAgICBpZiAoaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkgeworICAgICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhdHRlc3RhdGlvbk9iamVjdC0+Ynl0ZUxl
bmd0aCgpKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSksIGF0dGVz
dGF0aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCksIDEpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXV0aGVudGljYXRvckRhdGEt
PmJ5dGVMZW5ndGgoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSksIGF1
dGhlbnRpY2F0b3JEYXRhLT5ieXRlTGVuZ3RoKCksIDEpOworICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaWdu
YXR1cmUtPmRhdGEoKSksIHNpZ25hdHVyZS0+Ynl0ZUxlbmd0aCgpLCAxKTsKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCkpOworICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHVzZXJIYW5kbGUtPmRhdGEoKSksIHVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSwgMSk7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNy
ZWRlbnRpYWxEYXRhPiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgUHVibGljS2V5Q3JlZGVudGlhbERhdGEgcmVzdWx0OworCisgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcmF3SWRMZW5ndGg7CisgICAgZGVjb2RlciA+PiByYXdJZExl
bmd0aDsKKyAgICBpZiAoIXJhd0lkTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmVzdWx0LnJhd0lkID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZExlbmd0aC52
YWx1ZSgpLCBzaXplb2YodWludDhfdCkpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0LnJhd0lkLT5kYXRhKCkp
LCByYXdJZExlbmd0aC52YWx1ZSgpLCAxKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZTsKKyAgICBkZWNvZGVyID4+IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7
CisgICAgaWYgKCFpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJlc3VsdC5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlID0gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS52YWx1ZSgpOwor
CisgICAgaWYgKHJlc3VsdC5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKSB7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGF0dGVzdGF0aW9uT2JqZWN0TGVuZ3RoOwor
ICAgICAgICBkZWNvZGVyID4+IGF0dGVzdGF0aW9uT2JqZWN0TGVuZ3RoOworICAgICAgICBpZiAo
IWF0dGVzdGF0aW9uT2JqZWN0TGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgICAgICByZXN1bHQuYXR0ZXN0YXRpb25PYmplY3QgPSBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKGF0dGVzdGF0aW9uT2JqZWN0TGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90KSk7Cisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4ocmVzdWx0LmF0dGVzdGF0aW9uT2JqZWN0LT5kYXRhKCkpLCBhdHRlc3RhdGlv
bk9iamVjdExlbmd0aC52YWx1ZSgpLCAxKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBhdXRoZW50aWNhdG9yRGF0YUxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGF1dGhl
bnRpY2F0b3JEYXRhTGVuZ3RoOworICAgIGlmICghYXV0aGVudGljYXRvckRhdGFMZW5ndGgpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXN1bHQuYXV0aGVudGljYXRvckRh
dGEgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoLnZhbHVlKCks
IHNpemVvZih1aW50OF90KSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQuYXV0aGVudGljYXRvckRhdGEtPmRh
dGEoKSksIGF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoLnZhbHVlKCksIDEpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2lnbmF0dXJl
TGVuZ3RoOworICAgIGRlY29kZXIgPj4gc2lnbmF0dXJlTGVuZ3RoOworICAgIGlmICghc2lnbmF0
dXJlTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmVzdWx0LnNp
Z25hdHVyZSA9IEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlTGVuZ3RoLnZhbHVlKCksIHNp
emVvZih1aW50OF90KSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQuc2lnbmF0dXJlLT5kYXRhKCkpLCBzaWdu
YXR1cmVMZW5ndGgudmFsdWUoKSwgMSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB1c2VySGFuZGxlTGVuZ3RoOworICAgIGRlY29k
ZXIgPj4gdXNlckhhbmRsZUxlbmd0aDsKKyAgICBpZiAoIXVzZXJIYW5kbGVMZW5ndGgpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXN1bHQudXNlckhhbmRsZSA9IEFycmF5
QnVmZmVyOjpjcmVhdGUodXNlckhhbmRsZUxlbmd0aC52YWx1ZSgpLCBzaXplb2YodWludDhfdCkp
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4ocmVzdWx0LnVzZXJIYW5kbGUtPmRhdGEoKSksIHVzZXJIYW5kbGVMZW5ndGgu
dmFsdWUoKSwgMSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vY29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCmluZGV4IDJhZTQwMzVlOTgyZTJiNmZk
ODMwNTg5OTEyMDE3NjFhYzJlMTIyNWQuLjI1YzQ2YmNlYTE2MDkyNTA5ZGU5OWQzMTFhM2Q4YTcw
YTVjMDhjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY29j
b2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzUsMTEgKzM1LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKK3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0
YTsKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiAKLXVzaW5nIENy
ZWF0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYpPjsKLXVzaW5nIFJlcXVlc3RDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik+OwotdXNpbmcgRXhj
ZXB0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmKT47Cit1c2luZyBDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoVmFyaWFudDxQdWJsaWNLZXlD
cmVkZW50aWFsRGF0YSwgRXhjZXB0aW9uRGF0YT4mJik+OwogCiB0eXBlZGVmIHZvaWQgKF5Db21w
bGV0aW9uQmxvY2spKFNlY0tleVJlZiBfTnVsbGFibGUgcmVmZXJlbmNlS2V5LCBOU0FycmF5ICog
X051bGxhYmxlIGNlcnRpZmljYXRlcywgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcik7CiAKQEAg
LTUwLDggKzQ5LDggQEAgcHVibGljOgogICAgIExvY2FsQXV0aGVudGljYXRvcigpOwogICAgIHZp
cnR1YWwgfkxvY2FsQXV0aGVudGljYXRvcigpID0gZGVmYXVsdDsKIAotICAgIHZvaWQgbWFrZUNy
ZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQ3JlYXRpb25DYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmKTsKLSAgICB2b2lkIGdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhh
c2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDYWxs
YmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIG1ha2VDcmVkZW50aWFsKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYsIENhbGxiYWNrJiYpOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiwgQ2FsbGJhY2smJik7CiAgICAgYm9vbCBpc0F2YWlsYWJsZSgpIGNvbnN0OwogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2NvY29h
L0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Y29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDQwYzg2MzFlZjAwMmI2MDBkN2QzZGE3
OWI5YTkzYjQxNGI1MzkyM2MuLjk2NWQxZjI4YTczMjk2OGZhYzUxNmJmNzA0YjM1NGEyMzNmYTM1
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Y29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJD
T1NFQ29uc3RhbnRzLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25EYXRhLmgiCiAjaW1wb3J0ICJQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgiCisjaW1wb3J0ICJQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YS5oIgogI2ltcG9ydCAiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
LmgiCiAjaW1wb3J0IDxTZWN1cml0eS9TZWNJdGVtLmg+CiAjaW1wb3J0IDxwYWwvY3J5cHRvL0Ny
eXB0b0RpZ2VzdC5oPgpAQCAtMTE1LDcgKzExNiw3IEBAIExvY2FsQXV0aGVudGljYXRvcjo6TG9j
YWxBdXRoZW50aWNhdG9yKCkKICAgICBSRUxFQVNFX0FTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc0NyZWRlbnRpYWxzKSk7CiB9CiAKLXZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhh
c2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIENy
ZWF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25D
YWxsYmFjaykKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMmIG9wdGlvbnMsIENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgdXNpbmcgbmFtZXNw
YWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogCkBAIC0xMjQsNyArMTI1LDcgQEAgdm9p
ZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICBBU1NFUlRfVU5VU0VEKGhhc2gsIGhhc2ggPT0gaGFz
aCk7CiAgICAgQVNTRVJUX1VOVVNFRChvcHRpb25zLCAhb3B0aW9ucy5ycC5pZC5pc0VtcHR5KCkp
OwogICAgIEFTU0VSVF9VTlVTRUQoY2FsbGJhY2ssIGNhbGxiYWNrKTsKLSAgICBleGNlcHRpb25D
YWxsYmFjayh7IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4i
X3MgfSk7CisgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5v
IGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CiAjZWxzZQogICAgIC8vIFRoZSBmb2xs
b3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29wLW1ha2Ut
Y3JlZCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU2tpcCBTdGVwIDQtNSBhcyByZXF1
aXJlUmVzaWRlbnRLZXkgYW5kIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uIGFyZSBlbmZvcmNlZC4K
QEAgLTEzOSw3ICsxNDAsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRp
YWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgICAgICB9CiAg
ICAgfQogICAgIGlmICghY2FuRnVsbGZpbGxQdWJLZXlDcmVkUGFyYW1zKSB7Ci0gICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgcGxhdGZvcm0gYXR0YWNo
ZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55IHByb3ZpZGVkIFB1YmxpY0tleUNy
ZWRlbnRpYWxQYXJhbWV0ZXJzLiJfcyB9KTsKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0
YSB7IE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0
b3IgZG9lc24ndCBzdXBwb3J0IGFueSBwcm92aWRlZCBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1l
dGVycy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1OCw3ICsxNTksNyBA
QCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJ
dGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZhdHRyaWJ1
dGVzQXJyYXlSZWYpOwogICAgICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVt
Tm90Rm91bmQpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgcXVlcnkgS2V5Y2hh
aW46ICVkIiwgc3RhdHVzKTsKLSAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93
bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgICAgICBjYWxs
YmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJv
ci4iX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBy
ZXRhaW5BdHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CkBAIC0x
NjYsNyArMTY3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICAgICAgZm9yIChOU0Rp
Y3Rpb25hcnkgKm5zQXR0cmlidXRlcyBpbiAoTlNBcnJheSAqKWF0dHJpYnV0ZXNBcnJheVJlZikg
ewogICAgICAgICAgICAgTlNEYXRhICpuc0NyZWRlbnRpYWxJZCA9IG5zQXR0cmlidXRlc1soaWQp
a1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXTsKICAgICAgICAgICAgIGlmIChleGNsdWRlQ3JlZGVu
dGlhbElkcy5jb250YWlucyhTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obnND
cmVkZW50aWFsSWQuYnl0ZXMpLCBuc0NyZWRlbnRpYWxJZC5sZW5ndGgpKSkgewotICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgTm90QWxsb3dlZEVycm9yLCAiQXQgbGVhc3Qgb25l
IGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxp
c3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0pOworICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJBdCBs
ZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVu
dGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
ODAsMTcgKzE4MSwxNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgIGlmICghW2NvbnRl
eHQgY2FuRXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uV2l0
aEJpb21ldHJpY3MgZXJyb3I6JmVycm9yXSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0
IGV2YWx1YXRlIGF1dGhlbnRpY2F0aW9uIHdpdGggYmlvbWV0cmljcyBwb2xpY3k6ICVAIiwgZXJy
b3IpOwogICAgICAgICAvLyBGSVhNRSgxODI3NjcpCi0gICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KHsgTm90QWxsb3dlZEVycm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsK
KyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2
YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBOU1N0cmluZyAqcmVhc29uID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBbGxv
dyAlQCB0byBjcmVhdGUgYSBwdWJsaWMga2V5IGNyZWRlbnRpYWwgZm9yICVAIiwgKGlkKW9wdGlv
bnMucnAuaWQsIChpZClvcHRpb25zLnVzZXIubmFtZV07CiAgICAgLy8gRklYTUUoMTgzNTM0KTog
T3B0aW1pemUgdGhlIGZvbGxvd2luZyBuZXN0ZWQgY2FsbGJhY2tzIGFuZCB0aHJlYWRpbmcuCi0g
ICAgW2NvbnRleHQgZXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0
aW9uV2l0aEJpb21ldHJpY3MgbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpCbG9ja1B0cjx2
b2lkKEJPT0wsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBvcHRpb25zID0gY3Jvc3NUaHJlYWRDb3B5
KG9wdGlvbnMpLCBoYXNoXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CisgICAgW2NvbnRleHQgZXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRp
Y2F0aW9uV2l0aEJpb21ldHJpY3MgbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpCbG9ja1B0
cjx2b2lkKEJPT0wsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBvcHRpb25zID0gY3Jv
c3NUaHJlYWRDb3B5KG9wdGlvbnMpLCBoYXNoXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJv
cikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBp
ZiAoIXN1Y2Nlc3MgfHwgZXJyb3IpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3Qg
YXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczogJUAiLCBlcnJvcik7Ci0gICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayh7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNv
bnNlbnQuIl9zIH0pOworICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFs
bG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIwNSw3ICsyMDYsNyBAQCB2b2lkIExvY2FsQXV0
aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBj
b25zdCBQdWJsaQogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtRGVsZXRlKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkpOwogICAgICAgICBpZiAoc3RhdHVzICYm
IHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKICAgICAgICAgICAgIExPR19FUlJPUigi
Q291bGRuJ3QgZGV0ZWxlIG9sZGVyIGNyZWRlbnRpYWw6ICVkIiwgc3RhdHVzKTsKLSAgICAgICAg
ICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBl
cnJvci4iX3MgfSk7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93
bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMjEzLDExICsyMTQsMTEgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3Qg
UHVibGkKICAgICAgICAgLy8gRklYTUUoMTgzNTM0KQogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhpcy0+aXNzdWVDbGllbnRDZXJ0aWZp
Y2F0ZShvcHRpb25zLnJwLmlkLCBvcHRpb25zLnVzZXIubmFtZSwgaGFzaCwgQmxvY2tQdHI8dm9p
ZChTZWNLZXlSZWYsIE5TQXJyYXkgKiwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgb3B0aW9ucyA9IGNyb3NzVGhyZWFkQ29weShvcHRpb25zKV0gKF9OdWxs
YWJsZSBTZWNLZXlSZWYgcHJpdmF0ZUtleSwgTlNBcnJheSAqIF9OdWxsYWJsZSBjZXJ0aWZpY2F0
ZXMsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgd2Vha1RoaXMtPmlzc3Vl
Q2xpZW50Q2VydGlmaWNhdGUob3B0aW9ucy5ycC5pZCwgb3B0aW9ucy51c2VyLm5hbWUsIGhhc2gs
IEJsb2NrUHRyPHZvaWQoU2VjS2V5UmVmLCBOU0FycmF5ICosIE5TRXJyb3IgKik+Ojpmcm9tQ2Fs
bGFibGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIG9wdGlvbnMgPSBjcm9zc1RocmVh
ZENvcHkob3B0aW9ucyldIChfTnVsbGFibGUgU2VjS2V5UmVmIHByaXZhdGVLZXksIE5TQXJyYXkg
KiBfTnVsbGFibGUgY2VydGlmaWNhdGVzLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICAgICAgICAgIGlmIChlcnJv
cikgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXR0ZXN0OiAlQCIsIGVy
cm9yKTsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwg
IlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgICAgIGNhbGxiYWNr
KEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJf
cyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAvLyBBdHRlc3RhdGlvbiBDZXJ0aWZpY2F0ZSBhbmQgQXR0ZXN0YXRpb24gSXNzdWluZyBDQQpA
QCAtMjUwLDcgKzI1MSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlh
bChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAgICAgICAgICAg
ICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKWNyZWRlbnRpYWxJZFF1ZXJ5LCAmYXR0cmlidXRlc1JlZik7CiAgICAgICAgICAg
ICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxk
bid0IGdldCBDcmVkZW50aWFsIElEOiAlZCIsIHN0YXR1cyk7Ci0gICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJv
ci4iX3MgfSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBV
bmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhdXRv
IHJldGFpbkF0dHJpYnV0ZXMgPSBhZG9wdENGKGF0dHJpYnV0ZXNSZWYpOwpAQCAtMjcxLDcgKzI3
Miw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAgICAgICAgICAgICAgc3RhdHVzID0g
U2VjSXRlbVVwZGF0ZSgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXVwZGF0ZVF1ZXJ5LCAoX19i
cmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXVwZGF0ZVBhcmFtcyk7CiAgICAgICAgICAgICAgICAgaWYg
KHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHVwZGF0
ZSB0aGUgS2V5Y2hhaW4gaXRlbTogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3Iu
Il9zIH0pOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgVW5r
bm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zMDQs
NyArMzA1LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICAgICAgICAgICAgICAgICAg
YXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoZXJyb3JSZWYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3QgZXhwb3J0IHRoZSBwdWJsaWMga2V5OiAlQCIsIChOU0Vycm9yKillcnJvclJlZik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwg
IlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwg
ZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgoKE5TRGF0YSAqKXB1Ymxp
Y0tleURhdGFSZWYuZ2V0KCkpLmxlbmd0aCA9PSAoMSArIDIgKiBFUzI1NktleVNpemVJbkJ5dGVz
KSk7IC8vIDA0IHwgWCB8IFkKQEAgLTMyNSw3ICszMjYsNyBAQCB2b2lkIExvY2FsQXV0aGVudGlj
YXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQ
dWJsaQogICAgICAgICAgICAgICAgIGF1dG8gY29zZVB1YmxpY0tleSA9IGNib3I6OkNCT1JXcml0
ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKHB1YmxpY0tleU1hcCkpKTsKICAgICAg
ICAgICAgICAgICBpZiAoIWNvc2VQdWJsaWNLZXkpIHsKICAgICAgICAgICAgICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZG4ndCBlbmNvZGUgdGhlIHB1YmxpYyBrZXkgaW50byBDT1NFIGJpbmFyaWVz
LiIpOwotICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJv
ciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBl
cnJvci4iX3MgfSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YS5hcHBlbmRWZWN0b3Io
Y29zZVB1YmxpY0tleS52YWx1ZSgpKTsKQEAgLTM0Nyw3ICszNDgsNyBAQCB2b2lkIExvY2FsQXV0
aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBj
b25zdCBQdWJsaQogICAgICAgICAgICAgICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRD
RihlcnJvclJlZik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvclJlZikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUgc2lnbmF0
dXJlOiAlQCIsIChOU0Vycm9yKillcnJvclJlZik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3Iu
Il9zIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7
IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbnNTaWduYXR1cmUgPSAoTlNEYXRhICopc2lnbmF0dXJlUmVmLmdldCgp
OwpAQCAtMzc0LDE3ICszNzUsMTcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVk
ZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICAgICAg
ICAgIGF1dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBjYm9yOjpDQk9SV3JpdGVyOjp3cml0ZShjYm9y
OjpDQk9SVmFsdWUoV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdE1hcCkpKTsKICAgICAgICAgICAg
IGlmICghYXR0ZXN0YXRpb25PYmplY3QpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkNv
dWxkbid0IGVuY29kZSB0aGUgYXR0ZXN0YXRpb24gb2JqZWN0LiIpOwotICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJv
ci4iX3MgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25v
d25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY2FsbGJhY2soY3JlZGVudGlh
bElkLCBhdHRlc3RhdGlvbk9iamVjdC52YWx1ZSgpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKFB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgQXJyYXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQu
ZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwgdHJ1ZSwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6
OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC52YWx1ZSgpLmRhdGEoKSwgYXR0ZXN0YXRpb25PYmpl
Y3QudmFsdWUoKS5zaXplKCkpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH0pOwogICAgICAg
ICB9KS5nZXQoKSk7CiAgICAgfSkuZ2V0KCldOwogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiB9
CiAKLXZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9w
dGlvbnMsIFJlcXVlc3RDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4
Y2VwdGlvbkNhbGxiYWNrKQordm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbihj
b25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucyYgb3B0aW9ucywgQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICB1c2luZyBu
YW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7CiAKQEAgLTM5Myw3ICszOTQsNyBA
QCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaGFzaCwgY29uc3QgUHVibGljSwogICAgIEFTU0VSVF9VTlVTRUQoaGFzaCwgaGFzaCA9
PSBoYXNoKTsKICAgICBBU1NFUlRfVU5VU0VEKG9wdGlvbnMsICFvcHRpb25zLnJwSWQuaXNFbXB0
eSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNhbGxiYWNrLCBjYWxsYmFjayk7Ci0gICAgZXhjZXB0
aW9uQ2FsbGJhY2soeyBOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRv
cnMuIl9zIH0pOworICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3Is
ICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9zIH0pOwogI2Vsc2UKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNvcC1n
ZXQtYXNzZXJ0aW9uIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTa2lwIFN0ZXAgMiBh
cyByZXF1aXJlVXNlclZlcmlmaWNhdGlvbiBpcyBlbmZvcmNlZC4KQEAgLTQwMiw3ICs0MDMsNyBA
QCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaGFzaCwgY29uc3QgUHVibGljSwogICAgIC8vIFN0ZXAgMy01LiBVbmxpa2UgdGhlIHNw
ZWMsIGlmIGFuIGFsbG93IGxpc3QgaXMgcHJvdmlkZWQgYW5kIHRoZXJlIGlzIG5vIGludGVyc2Vj
dGlvbiBiZXR3ZWVuIGV4aXN0aW5nIG9uZXMgYW5kIHRoZSBhbGxvdyBsaXN0LCB3ZSBhbHdheXMg
cmV0dXJuIE5vdEFsbG93ZWRFcnJvci4KICAgICBIYXNoU2V0PFN0cmluZz4gYWxsb3dDcmVkZW50
aWFsSWRzID0gcHJvZHVjZUhhc2hTZXQob3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKTsKICAgICBp
ZiAoIW9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCkgJiYgYWxsb3dDcmVkZW50aWFs
SWRzLmlzRW1wdHkoKSkgewotICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IE5vdEFsbG93ZWRF
cnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBh
dHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9u
RGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5k
IGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNDE4LDcgKzQxOSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJs
aWNLCiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKICAgICBpZiAoc3Rh
dHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0dXMpOwotICAgICAgICBleGNlcHRp
b25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0p
OworICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93
biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0
byByZXRhaW5BdHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CkBA
IC00MzYsNyArNDM3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbihj
b25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0sKICAgICAgICAgaW50ZXJz
ZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMgPSByZXN1bHQ7CiAgICAgfQogICAgIGlmICghaW50
ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMuY291bnQpIHsKLSAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soeyBOb3RBbGxvd2VkRXJyb3IsICJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBm
b3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSk7CisgICAg
ICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJObyBtYXRjaGVk
IGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGlj
YXRvci4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1Miw3ICs0NTMsNyBA
QCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaGFzaCwgY29uc3QgUHVibGljSwogICAgICAgICBhdXRvIHJldGFpbkNvbnRleHQgPSBh
ZG9wdE5TKGNvbnRleHQpOwogICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGV2YWx1YXRlIGF1
dGhlbnRpY2F0aW9uIHdpdGggYmlvbWV0cmljcyBwb2xpY3k6ICVAIiwgZXJyb3IpOwogICAgICAg
ICAvLyBGSVhNRSgxODI3NjcpCi0gICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgTm90QWxsb3dl
ZEVycm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsKKyAgICAgICAgY2Fs
bGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRo
ZW50aWNhdG9ycy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2MiwxMSAr
NDYzLDExIEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHVz
ZXJoYW5kbGU7CiAgICAgTlNEYXRhICpuc1VzZXJoYW5kbGUgPSBzZWxlY3RlZENyZWRlbnRpYWxB
dHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXTsKICAgICB1c2VyaGFuZGxlLmFw
cGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc1VzZXJoYW5kbGUuYnl0ZXMp
LCBuc1VzZXJoYW5kbGUubGVuZ3RoKTsKLSAgICBhdXRvIHJlcGx5ID0gQmxvY2tQdHI8dm9pZChC
T09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBycElk
ID0gb3B0aW9ucy5ycElkLmlzb2xhdGVkQ29weSgpLCBoYXNoLCBjcmVkZW50aWFsSWQgPSBXVEZN
b3ZlKGNyZWRlbnRpYWxJZCksIHVzZXJoYW5kbGUgPSBXVEZNb3ZlKHVzZXJoYW5kbGUpLCBjb250
ZXh0ID0gYWRvcHROUyhjb250ZXh0KV0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11
dGFibGUgeworICAgIGF1dG8gcmVwbHkgPSBCbG9ja1B0cjx2b2lkKEJPT0wsIE5TRXJyb3IgKik+
Ojpmcm9tQ2FsbGFibGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJwSWQgPSBvcHRp
b25zLnJwSWQuaXNvbGF0ZWRDb3B5KCksIGhhc2gsIGNyZWRlbnRpYWxJZCA9IFdURk1vdmUoY3Jl
ZGVudGlhbElkKSwgdXNlcmhhbmRsZSA9IFdURk1vdmUodXNlcmhhbmRsZSksIGNvbnRleHQgPSBh
ZG9wdE5TKGNvbnRleHQpXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIXN1Y2Nlc3Mg
fHwgZXJyb3IpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXV0aGVudGljYXRl
IHdpdGggYmlvbWV0cmljczogJUAiLCBlcnJvcik7Ci0gICAgICAgICAgICBleGNlcHRpb25DYWxs
YmFjayh7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0p
OworICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwg
IkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTQ5MCw3ICs0OTEsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6
Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljSwog
ICAgICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmcHJpdmF0ZUtleVJlZik7CiAgICAgICAgICAgICBp
ZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZXQgdGhl
IHByaXZhdGUga2V5IHJlZmVyZW5jZTogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4i
X3MgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25F
cnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gcHJpdmF0ZUtleSA9IGFkb3B0
Q0YocHJpdmF0ZUtleVJlZik7CkBAIC01MDQsNyArNTA1LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1
YmxpY0sKICAgICAgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsK
ICAgICAgICAgICAgIGlmIChlcnJvclJlZikgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigi
Q291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZTogJUAiLCAoTlNFcnJvciopZXJyb3JSZWYp
OwotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5r
bm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhj
ZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0p
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1
dG8gbnNTaWduYXR1cmUgPSAoTlNEYXRhICopc2lnbmF0dXJlUmVmLmdldCgpOwpAQCAtNTEyLDcg
KzUxMyw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAgICAgICAgIH0KIAogICAgICAgICAv
LyBTdGVwIDEzLgotICAgICAgICBjYWxsYmFjayhjcmVkZW50aWFsSWQsIGF1dGhEYXRhLCBzaWdu
YXR1cmUsIHVzZXJoYW5kbGUpOworICAgICAgICBjYWxsYmFjayhQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlh
bElkLnNpemUoKSksIGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGF1dGhEYXRhLmRhdGEoKSwgYXV0aERhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShz
aWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZSh1
c2VyaGFuZGxlLmRhdGEoKSwgdXNlcmhhbmRsZS5zaXplKCkpIH0pOwogICAgIH0pOwogCiAgICAg
Ly8gRklYTUUoMTgzNTMzKTogVXNlIHVzZXJoYW5kbGUgaW5zdGVhZCBvZiB1c2VybmFtZSBkdWUg
dG8gdGhlIHN0YXRlZCBLZXljaGFpbiBsaW1pdGF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYjA2
NWZmODVmMjc5OGQxYjFmYjY0MTQwZmUzZDM3MTg4MGM1YzY0Yy4uNmU1OWYwZTczMTU5ZWYyZjk2
NjY5OTAzN2VmYWNkYmUzZWMxMTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ1LDcgKzQ1LDYgQEAg
TW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKIAogTW9kdWxlcy9jcmVk
ZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuY3BwCiBNb2R1bGVzL2NyZWRlbnRpYWxt
YW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcAotTW9kdWxlcy9jcmVkZW50aWFsbWFu
YWdlbWVudC9DcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCiAKIE1vZHVsZXMvZW50cmllc2FwaS9FcnJv
ckNhbGxiYWNrLmNwcApAQCAtMjQ3LDEwICsyNDYsOCBAQCBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJEU1BLZXJuZWwuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAog
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAogCi1Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKLU1vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCi1Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAotTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVz
cG9uc2UuY3BwCitNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAK
K01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcAogTW9k
dWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNwcAogTW9kdWxlcy93ZWJhdXRobi9j
Ym9yL0NCT1JSZWFkZXIuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDk5YzZiNmI5ZDA1YTNjYzQ0ZmI5NzkzODNhMTVjZGE2YWM0M2VjZDguLmE1ODk0MGZiOGNl
ZTNlNDRhOGE0NTllZGYyMDg3NzU1NWVmMmZkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NTQsNyArMTc1NCw3IEBACiAJ
CTU3MzAzQzIyMjAwOUFGMDMwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzMwM0MyMTIwMDlBRUY2MDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZS5oICovOyB9OwogCQk1NzMwM0MyQzIwMDlCNEE4MDAzNTU5NjUgLyogQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzMwM0MyNzIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmggKi87IH07CiAJCTU3MzAzQzJGMjAwOUI3RTEwMDM1NTk2NSAvKiBKU0F1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDMkQyMDA5QjdEOTAwMzU1OTY1IC8qIEpTQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggKi87IH07Ci0JCTU3MzAzQzQ2MjAxMDVEMkYwMDM1
NTk2NSAvKiBBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDNDMyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNTczMDNDNDYyMDEwNUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcz
MDNDNDMyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MzQ4OTM5MURB
QzZCNkUwMERDMDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM0ODkzODFEQUM2QjZEMDBEQzA2
NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OwogCQk1NzM5RTEyRjFEQUM3
Rjc4MDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM5RTEyRTFEQUM3Rjc4MDBFMTQz
ODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggKi87IH07CiAJCTU3NEY1NUUwMjA0
RjNBQ0UwMDI5NDhDNiAvKiBMb2NhbEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NEY1NURFMjA0RjM3NDQwMDI5NDhDNiAvKiBM
b2NhbEF1dGhlbnRpY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTc2NCwxMSArMTc2NCw5IEBACiAJCTU3NTBBOTgyMUU2QTE1MDgwMDcw
NUM0QSAvKiBKU0VjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzUwQTk4MDFFNkExNTA4MDA3MDVDNEEgLyogSlNFY0tleVBhcmFtcy5o
ICovOyB9OwogCQk1NzUwQTk4NzFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3JpdGhtRUNE
SC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5
ODUxRTZBMjE2ODAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVDREguaCAqLzsgfTsKIAkJNTc1
NDcxOUYxRUNFNjI4MzAwREQ2M0IyIC8qIEpTUnNhUHNzUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU0NzE5OTFFQ0U1RDJBMDBERDYzQjIg
LyogSlNSc2FQc3NQYXJhbXMuaCAqLzsgfTsKLQkJNTc2MDgyNzIyMDIxNUE1NTAwMTE2Njc4IC8q
IENyZWRlbnRpYWxzTWVzc2VuZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQ3JlZGVudGlhbHNNZXNz
ZW5nZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk1NzYwODI3QTIwMjRFQTVDMDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI3ODIw
MjQ0REFCMDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmggKi87IH07Ci0JCTU3
NjA4MjdCMjAyNEVEMjkwMDExNjY3OCAvKiBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2MDgyNzkyMDI0
NERBQzAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgKi87IH07Ci0JCTU3
NjA4Mjg2MjAyNTZBRkEwMDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2MDgyODIyMDI1
Njc5NzAwMTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmggKi87IH07Ci0JCTU3
NjA4Mjg4MjAyNTZBRkQwMDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI4MTIw
MjU2Nzk2MDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwICovOyB9Owor
CQk1NzYwODI3MjIwMjE1QTU1MDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYw
ODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTc2MDgy
N0EyMDI0RUE1QzAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4Mjc4MjAyNDRE
QUIwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi87IH07CisJCTU3
NjA4MjdCMjAyNEVEMjkwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4Mjc5
MjAyNDREQUMwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLzsg
fTsKIAkJNTc2ODE0MkExRTZGOTlDMTAwRTc3NzU0IC8qIENyeXB0b0FsZ29yaXRobUVjZGhLZXlE
ZXJpdmVQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3NjgxNDI5MUU2Rjk5QzEwMEU3Nzc1NCAvKiBDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVy
aXZlUGFyYW1zLmggKi87IH07CiAJCTU3NjgxNDQxMUU3MDlGQTQwMEU3Nzc1NCAvKiBKU0VjZGhL
ZXlEZXJpdmVQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3NjgxNDNFMUU3MDlDMzYwMEU3Nzc1NCAvKiBKU0VjZGhLZXlEZXJpdmVQYXJhbXMu
aCAqLzsgfTsKIAkJNTc2ODE0NDUxRTcwQ0IxRjAwRTc3NzU0IC8qIEpTQWVzS2V5UGFyYW1zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzY4MTQ0MzFF
NzBDQjEwMDBFNzc3NTQgLyogSlNBZXNLZXlQYXJhbXMuaCAqLzsgfTsKQEAgLTE3ODQsMTIgKzE3
ODIsMTUgQEAKIAkJNTdCNUY3RjkxRTVCRTg0MDAwRjM0RjkwIC8qIENyeXB0b0FsZ29yaXRobUFF
U19HQ00uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
QjVGN0Y3MUU1QkU4NDAwMEYzNEY5MCAvKiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNLmggKi87IH07
CiAJCTU3QjVGODA5MUU1RDFBOTgwMEYzNEY5MCAvKiBDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJh
bXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjVG
ODA4MUU1RDFBOTgwMEYzNEY5MCAvKiBDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMuaCAqLzsg
fTsKIAkJNTdCNUY4MTAxRTVFMkE0RTAwRjM0RjkwIC8qIEpTQWVzR2NtUGFyYW1zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I1RjgwQjFFNUQyMkRB
MDBGMzRGOTAgLyogSlNBZXNHY21QYXJhbXMuaCAqLzsgfTsKLQkJNTdDN0E2OEMxRTU2OTY3NTAw
QzY3RDcxIC8qIEJhc2ljQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTdDN0E2OEIxRTU2OTY3NTAwQzY3RDcxIC8qIEJhc2ljQ3JlZGVu
dGlhbC5oICovOyB9OworCQk1N0M3QTY4QzFFNTY5Njc1MDBDNjdENzEgLyogQmFzaWNDcmVkZW50
aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0M3
QTY4QjFFNTY5Njc1MDBDNjdENzEgLyogQmFzaWNDcmVkZW50aWFsLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdDN0E2OUYxRTU3OTE3ODAwQzY3
RDcxIC8qIEpTQmFzaWNDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0M3QTY5RDFFNTc5MTBEMDBDNjdENzEgLyogSlNCYXNpY0NyZWRl
bnRpYWwuaCAqLzsgfTsKIAkJNTdEMDAxOEQxREQ1NDEzMjAwRUQxOUQ5IC8qIEpTQ3J5cHRvS2V5
VXNhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
RDAwMThDMURENTQxMzIwMEVEMTlEOSAvKiBKU0NyeXB0b0tleVVzYWdlLmggKi87IH07CiAJCTU3
RDg0NjI4MUZFODk2MDUwMENBMzY4MiAvKiBOYXZpZ2F0b3JDcmVkZW50aWFscy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEODQ2MjYxRkU4OTVGODAw
Q0EzNjgyIC8qIE5hdmlnYXRvckNyZWRlbnRpYWxzLmggKi87IH07Ci0JCTU3RDg0NjJFMUZFQUY2
OTkwMENBMzY4MiAvKiBQdWJsaWNLZXlDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Q4NDYyQjFGRUFGNjhGMDBDQTM2ODIgLyogUHVi
bGljS2V5Q3JlZGVudGlhbC5oICovOyB9OworCQk1N0Q4NDYyRTFGRUFGNjk5MDBDQTM2ODIgLyog
UHVibGljS2V5Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdEODQ2MkIxRkVBRjY4RjAwQ0EzNjgyIC8qIFB1YmxpY0tleUNyZWRlbnRp
YWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
N0Q4NDYzNTFGRUFGQ0QzMDBDQTM2ODIgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Q4NDYzMDFGRUFGQzJG
MDBDQTM2ODIgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFsLmggKi87IH07CisJCTU3RENFRDY3MjE0
MDc3NUIwMDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDYyMjE0MDc2M0Mw
MDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLzsgfTsKKwkJNTdE
Q0VENjkyMTQwNzc2NDAwMTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2
MzIxNDA3NjNDMDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAq
LzsgfTsKKwkJNTdEQ0VENzQyMTQzMDVGMDAwMTZCODQ3IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RD
RUQ3MjIxNDMwNUYwMDAxNkI4NDcgLyogUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1N0UxRTVBMzFFOEM5
MUI1MDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMUU1QTExRThDOTFCNTAwRUUzN0M5IC8q
IENyeXB0b0FsZ29yaXRobUFFU19DVFIuaCAqLzsgfTsKIAkJNTdFMUU1QTcxRThEQkQzRTAwRUUz
N0M5IC8qIENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMUU1QTYxRThEQkQzRTAwRUUzN0M5IC8qIENy
eXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5oICovOyB9OwogCQk1N0UxRTVBRDFFOEREMDlCMDBF
RTM3QzkgLyogSlNBZXNDdHJQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3RTFFNUFCMUU4REQwOUIwMEVFMzdDOSAvKiBKU0Flc0N0clBhcmFt
cy5oICovOyB9OwpAQCAtODQ1OCw3ICs4NDU5LDYgQEAKIAkJNTczMDNCQkUyMDA2RTAwNDAwMzU1
OTY1IC8qIENCT1JSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ0JPUlJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAzQkJG
MjAwNkUwMEMwMDM1NTk2NSAvKiBDQk9SUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENCT1JSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcz
MDNCQ0YyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTczMDNCRDAyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0JEMTIwMDg3QTgzMDAzNTU5NjUgLyogQXV0aGVu
dGljYXRvclJlc3BvbnNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0JERDIwMDk1QjI2MDAzNTU5NjUgLyogSlNB
dXRoZW50aWNhdG9yUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNBdXRoZW50aWNhdG9yUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTczMDNCREUyMDA5NUIyNzAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXV0aGVudGljYXRvclJlc3Bv
bnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0NzksMTcgKzg0NzksMTUg
QEAKIAkJNTczMDNDMTMyMDA5QTI1NzAwMzU1OTY1IC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1B1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTczMDNDMTQyMDA5QTI1NzAwMzU1OTY1IC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzMwM0MxQjIwMDlBOTg2MDAzNTU5NjUgLyogQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTczMDNDMUMyMDA5
QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNDMUQyMDA5QTk4NjAwMzU1OTY1IC8qIEF1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAz
QzIwMjAwOUFFRjUwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NzMwM0MyMTIwMDlBRUY2MDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAz
QzI3MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3MzAzQzI4MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTczMDNDMjkyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNDMkQyMDA5QjdEOTAwMzU1OTY1IC8qIEpTQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3MzAzQzJFMjAwOUI3REEwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTU3MzAzQzQzMjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9yTWFuYWdlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1NzMwM0M0NDIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRvck1hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzMwM0M0MzIwMTA1QjNEMDAzNTU5
NjUgLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzMwM0M0
NDIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MzQ4OTM4MURBQzZCNkQwMERDMDY2NyAvKiBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczOUUx
MkUxREFDN0Y3ODAwRTE0MzgzIC8qIEpTQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczOUUxMzAxREFDN0ZEMTAwRTE0Mzgz
IC8qIEpTQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODUxMiwxMyArODUxMCwxMSBAQAogCQk1NzU0NzE5QTFF
Q0U1RDJBMDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNSc2FQc3NQYXJhbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzYwODI0RjIwMTE4RDhEMDAxMTY2NzggLyogSlNCYXNpY0NyZWRlbnRpYWxD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNpY0NyZWRlbnRpYWxDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzYwODI1NjIwMTFCRTAyMDAxMTY2Nzgg
LyogSlNBdXRoZW50aWNhdG9yUmVzcG9uc2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBdXRoZW50aWNhdG9yUmVzcG9uc2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQ3JlZGVudGlhbHNNZXNzZW5nZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbHNNZXNzZW5nZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTc2MDgyNzgyMDI0NERBQjAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFs
c01lc3Nlbmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyNzkyMDI0NERBQzAwMTE2Njc4IC8q
IE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQ3Jl
ZGVudGlhbHNNZXNzZW5nZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYw
ODI4MDIwMjU1NkY0MDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1NzYwODI4MTIwMjU2Nzk2MDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2NrQ3JlZGVu
dGlhbHNNZXNzZW5nZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI4
MjIwMjU2Nzk3MDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOTMyMDJCQTk1MzAwMTE2Njc4IC8q
IENyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyZWRlbnRpYWxz
TWVzc2VuZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyNzAyMDIx
NTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTc2MDgyNzgyMDI0NERBQjAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzYwODI3OTIwMjQ0REFDMDAx
MTY2NzggLyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc2MDgyODAyMDI1NTZGNDAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzYwODI5MzIwMkJBOTUzMDAxMTY2NzggLyog
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3NjgxNDI4MUU2Rjk4QUQwMEU3Nzc1NCAvKiBFY2RoS2V5RGVyaXZlUGFyYW1zLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBFY2RoS2V5RGVyaXZlUGFyYW1zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTc2ODE0MjkxRTZGOTlDMTAwRTc3NzU0IC8qIENyeXB0b0FsZ29yaXRobUVjZGhLZXlE
ZXJpdmVQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxn
b3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzY4MTQzNDFFNkZFM0U4MDBFNzc3NTQgLyogQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1FQ0RI
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1NzIsNiArODU2OCw5IEBA
CiAJCTU3RDg0NjJEMUZFQUY2OEYwMENBMzY4MiAvKiBQdWJsaWNLZXlDcmVkZW50aWFsLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBQdWJsaWNLZXlDcmVkZW50aWFsLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTdEODQ2MzAxRkVBRkMyRjAwQ0EzNjgyIC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1B1YmxpY0tleUNyZWRlbnRpYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEODQ2MzExRkVBRkMyRjAwQ0EzNjgyIC8q
IEpTUHVibGljS2V5Q3JlZGVudGlhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1N0RDRUQ2MjIxNDA3NjNDMDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9ja0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0RD
RUQ2MzIxNDA3NjNDMDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9ja0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RENFRDcy
MjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1N0UxRTVBMDFFOEM5MUI1MDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1B
RVNfQ1RSLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdFMUU1QTExRThDOTFC
NTAwRUUzN0M5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DVFIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0UxRTVBNjFFOERCRDNFMDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGht
QWVzQ3RyUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0Fs
Z29yaXRobUFlc0N0clBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY5
MTksNiArMTY5MTgsOSBAQAogCQkJCUE3QkU3RURFMTRDOTE3NUEwMDE0NDg5RCAvKiBNYWxsb2NT
dGF0aXN0aWNzLmlkbCAqLywKIAkJCQlDRDUzOTNDQjE3NURDQ0U2MDBDMDcxMjMgLyogTWVtb3J5
SW5mby5oICovLAogCQkJCUNENTM5M0NDMTc1RENDRTYwMEMwNzEyMyAvKiBNZW1vcnlJbmZvLmlk
bCAqLywKKwkJCQk1NzYwODI3OTIwMjQ0REFDMDAxMTY2NzggLyogTW9ja0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5jcHAgKi8sCisJCQkJNTc2MDgyNzgyMDI0NERBQjAwMTE2Njc4IC8qIE1vY2tB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLywKKwkJCQk1NzYwODI4MDIwMjU1NkY0MDAxMTY2
NzggLyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5pZGwgKi8sCiAJCQkJQ0RGNEI3MjEx
RTAzQkY4MTAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmNwcCAqLywKIAkJCQlDREY0QjcyMjFF
MDNCRjgxMDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuaCAqLywKIAkJCQlDREY0QjcxRjFFMDNC
RjZGMDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuaWRsICovLApAQCAtMTY5MjcsOSArMTY5Mjks
NiBAQAogCQkJCUExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmNwcCAqLywKIAkJCQlBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5oICovLAogCQkJCUExOUFFQTFDMUFBQTdDNDkwMEI1MkIyNSAvKiBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbCAqLywKLQkJCQk1NzYwODI3OTIwMjQ0REFDMDAx
MTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCAqLywKLQkJCQk1NzYwODI3ODIw
MjQ0REFCMDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmggKi8sCi0JCQkJNTc2
MDgyODAyMDI1NTZGNDAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5pZGwgKi8s
CiAJCQkJNTEwNThBRDcxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCAqLywKIAkJ
CQk1MTA1OEFEODFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCAqLywKIAkJCQk1MTA1
OEFEOTFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgKi8sCkBAIC0x
Njk3NiwxMiArMTY5NzUsMTIgQEAKIAkJCQlBN0I0RUE2OTE0QzkzNDg0MDBDOEY1QkYgLyogSlNN
YWxsb2NTdGF0aXN0aWNzLmggKi8sCiAJCQkJQ0Q1MzkzRDExNzVFMDE4NjAwQzA3MTIzIC8qIEpT
TWVtb3J5SW5mby5jcHAgKi8sCiAJCQkJQ0Q1MzkzRDIxNzVFMDE4NjAwQzA3MTIzIC8qIEpTTWVt
b3J5SW5mby5oICovLAorCQkJCTU3RENFRDYzMjE0MDc2M0MwMDE2Qjg0NyAvKiBKU01vY2tBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwICovLAorCQkJCTU3RENFRDYyMjE0MDc2M0MwMDE2Qjg0
NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLywKIAkJCQlDREY0QjcyRDFF
MDNDQTRBMDBFMjM1QTIgLyogSlNNb2NrQ0RNRmFjdG9yeS5jcHAgKi8sCiAJCQkJQ0RGNEI3MkUx
RTAzQ0E0QTAwRTIzNUEyIC8qIEpTTW9ja0NETUZhY3RvcnkuaCAqLywKIAkJCQlBMTlBRUExRDFB
QUE4MDZFMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLywKIAkJ
CQlBMTlBRUExRTFBQUE4MDZFMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggKi8sCi0JCQkJNTc2MDgyODEyMDI1Njc5NjAwMTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRpYWxz
TWVzc2VuZ2VyLmNwcCAqLywKLQkJCQk1NzYwODI4MjIwMjU2Nzk3MDAxMTY2NzggLyogSlNNb2Nr
Q3JlZGVudGlhbHNNZXNzZW5nZXIuaCAqLywKIAkJCQkyRDZGM0U5MjFDMUY4NTU1MDA2MURCRDQg
LyogSlNNb2NrUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENkYzRTkzMUMxRjg1NTUwMDYxREJE
NCAvKiBKU01vY2tQYWdlT3ZlcmxheS5oICovLAogCQkJCUExNDZEMzIwMUY5OUNBM0UwMEQyOTE5
NiAvKiBKU01vY2tQYXltZW50QWRkcmVzcy5jcHAgKi8sCkBAIC0xODcxMCw4ICsxODcwOSw2IEBA
CiAJCQkJNzdENTEwMTgxRUQ3MTU5OTAwREE0Qzg3IC8qIENyZWRlbnRpYWxzQ29udGFpbmVyLmNw
cCAqLywKIAkJCQk3N0Q1MTAxNjFFRDYwMjFCMDBEQTRDODcgLyogQ3JlZGVudGlhbHNDb250YWlu
ZXIuaCAqLywKIAkJCQk1N0Q4NDYyOTFGRTk5RjYzMDBDQTM2ODIgLyogQ3JlZGVudGlhbHNDb250
YWluZXIuaWRsICovLAotCQkJCTU3NjA4MjkzMjAyQkE5NTMwMDExNjY3OCAvKiBDcmVkZW50aWFs
c01lc3Nlbmdlci5jcHAgKi8sCi0JCQkJNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIENyZWRl
bnRpYWxzTWVzc2VuZ2VyLmggKi8sCiAJCQkJNTdEODQ2MjQxRkU4OTVGNTAwQ0EzNjgyIC8qIE5h
dmlnYXRvckNyZWRlbnRpYWxzLmNwcCAqLywKIAkJCQk1N0Q4NDYyNjFGRTg5NUY4MDBDQTM2ODIg
LyogTmF2aWdhdG9yQ3JlZGVudGlhbHMuaCAqLywKIAkJCQk1N0Q4NDYyNTFGRTg5NUY2MDBDQTM2
ODIgLyogTmF2aWdhdG9yQ3JlZGVudGlhbHMuaWRsICovLApAQCAtMTg3NDEsMTUgKzE4NzM4LDE0
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1NzMwM0JCMzIwMDZDNkVEMDAzNTU5NjUgLyogY2Jv
ciAqLywKIAkJCQk1NzRGNTVERDIwNEYzNzQ0MDAyOTQ4QzYgLyogY29jb2EgKi8sCi0JCQkJNTcz
MDNDMjgyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5j
cHAgKi8sCiAJCQkJNTczMDNDMjcyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oICovLAogCQkJCTU3MzAzQzI5MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaWRsICovLAotCQkJCTU3MzAzQzFDMjAwOUE5ODYw
MDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAgKi8sCiAJCQkJ
NTczMDNDMUIyMDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlLmggKi8sCiAJCQkJNTczMDNDMUQyMDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlLmlkbCAqLywKLQkJCQk1NzMwM0M0NDIwMTA1QjNEMDAzNTU5NjUg
LyogQXV0aGVudGljYXRvck1hbmFnZXIuY3BwICovLAotCQkJCTU3MzAzQzQzMjAxMDVCM0QwMDM1
NTk2NSAvKiBBdXRoZW50aWNhdG9yTWFuYWdlci5oICovLAotCQkJCTU3MzAzQkQwMjAwODdBODMw
MDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwICovLAorCQkJCTU3MzAzQzQ0MjAx
MDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwICovLAorCQkJCTU3
MzAzQzQzMjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLywK
KwkJCQk1NzYwODI5MzIwMkJBOTUzMDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Q2xpZW50LmNwcCAqLywKKwkJCQk1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yQ2xpZW50LmggKi8sCiAJCQkJNTczMDNCQ0YyMDA4N0E4MzAwMzU1OTY1
IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5oICovLAogCQkJCTU3MzAzQkQxMjAwODdBODMwMDM1
NTk2NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaWRsICovLAogCQkJCTU3NEY1NURDMjA0RjM3
MzIwMDI5NDhDNiAvKiBDT1NFQ29uc3RhbnRzLmggKi8sCkBAIC0xODc1OCw2ICsxODc1NCw3IEBA
CiAJCQkJNTdEODQ2MkQxRkVBRjY4RjAwQ0EzNjgyIC8qIFB1YmxpY0tleUNyZWRlbnRpYWwuaWRs
ICovLAogCQkJCTU3MzAzQkU2MjAwOTc0N0EwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zLmggKi8sCiAJCQkJNTczMDNCRTgyMDA5NzQ3QTAwMzU1OTY1IC8qIFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaWRsICovLAorCQkJCTU3RENFRDcyMjE0
MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oICovLAogCQkJCTU3MzAz
QkVDMjAwOTgwQkYwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oICov
LAogCQkJCTU3MzAzQkVFMjAwOTgwQkYwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVz
Y3JpcHRvci5pZGwgKi8sCiAJCQkJNTczMDNDMDYyMDA5OThGODAwMzU1OTY1IC8qIFB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovLApAQCAtMjY5OTgsMTggKzI2OTk1LDE4IEBA
CiAJCQkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVy
YXRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0MEI1OTUxNEM5MzVBQjAwQTc3RkE0IC8qIEpT
TWFsbG9jU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q1MzkzRDQxNzVFMDE4NjAw
QzA3MTIzIC8qIEpTTWVtb3J5SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdEQ0VENjcyMTQw
Nzc1QjAwMTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTM4RUM5MzMxRjk5QjlGNzAwNEQyMkE4IC8qIEpTTW9ja0NETUZhY3Rvcnku
aCBpbiBIZWFkZXJzICovLAogCQkJCUExOUFFQTIxMUFBQTgwODYwMEI1MkIyNSAvKiBKU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3NjA4Mjg2MjAyNTZB
RkEwMDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTM4RUM5MzQxRjk5QjlGNzAwNEQyMkE4IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTQ2RDMyMzFGOTlEMEVGMDBEMjkxOTYgLyogSlNNb2NrUGF5bWVu
dEFkZHJlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNDZEMzFCMUY5OUJDRkIwMEQyOTE5NiAv
KiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQyN0RBNzFF
MTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUVCRjUxMjFEMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIExlZ2FjeU1v
Y2tDRE0uaCBpbiBIZWFkZXJzICovLAorCQkJCTU3NjA4MjdBMjAyNEVBNUMwMDExNjY3OCAvKiBN
b2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUJGNkI4
MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1NzYwODI3QTIwMjRFQTVDMDAxMTY2NzggLyogTW9ja0Ny
ZWRlbnRpYWxzTWVzc2VuZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFEQzFENjc5MkMx
MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QURFMUQ2
NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKQEAgLTI3MTk5LDcgKzI3MTk2LDggQEAKIAkJCQk1MTRDNzY0QzBD
RTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3MzAzQzJDMjAwOUI0QTgwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzFGMjAwOUFCNDIwMDM1NTk2NSAvKiBBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTczMDND
NDYyMDEwNUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1NzMwM0M0NjIwMTA1RDJGMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzYwODI3MjIwMjE1QTU1MDAxMTY2NzggLyogQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JE
MjIwMDg3QTgzMDAzNTU5NjUgLyogQXV0aGVudGljYXRvclJlc3BvbnNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTAxOTIwRTEzMkVCRjJFMDA4QkZFNTUgLyogQXV0b2NhcGl0YWxpemUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1QTdBQTQzMTMyRjBFQ0MwMEQzQTNDMiAvKiBBdXRvY2FwaXRhbGl6
ZVR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDY0LDcgKzI3NDYyLDYgQEAKIAkJCQk3N0Q1
MTAwRDFFRDVFMjk1MDBEQTRDODcgLyogQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzdENTEwMEIxRUQ1RTI4ODAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzdENTEwMTcxRUQ2MDIyMjAwREE0Qzg3
IC8qIENyZWRlbnRpYWxzQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1NzYwODI3MjIw
MjE1QTU1MDAxMTY2NzggLyogQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxQTA1MjMzMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDIxNDZCNUM1NTAwQUE3ODM0IC8qIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUM0MTYxMjBGNjU2MkZEMDA5MkQyRkIg
LyogQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmggaW4gSGVhZGVycyAqLywKQEAgLTI5Nzk1LDYg
KzI5NzkyLDcgQEAKIAkJCQlGRjk0NUVDQzE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEODQ2MkUxRkVBRjY5OTAwQ0EzNjgyIC8qIFB1Ymxp
Y0tleUNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkU5MjAwOTc0OEQwMDM1
NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1N0RDRUQ3NDIxNDMwNUYwMDAxNkI4NDcgLyogUHVibGljS2V5Q3JlZGVudGlhbERh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkVGMjAwOTgwQzYwMDM1NTk2NSAvKiBQdWJs
aWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNDMEEy
MDA5OUJBRDAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCRUIyMDA5N0Y0MDAwMzU1OTY1IC8qIFB1YmxpY0tleUNy
ZWRlbnRpYWxUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxNDA4LDE5ICszMTQwNiwxOSBAQAog
CQkJCTUzRUQzRkRFMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM5MzIxRjk5QjlGNzAwNEQyMkE4IC8qIEpT
TWFsbG9jU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDUzOTNEMzE3NUUwMTg2
MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU3RENFRDY5
MjE0MDc3NjQwMDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MzIxRTAzRDA2MDAwRTIzNUEyIC8qIEpTTW9ja0NETUZh
Y3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE5QUVBMjIxQUFBODA4QTAwQjUyQjI1IC8q
IEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzYw
ODI4ODIwMjU2QUZEMDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkQ0MTUwREUxQzFGODY4QzAwMEEzQkEyIC8qIEpTTW9ja1BhZ2VP
dmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDZEMzIyMUY5OUQwRUMwMEQyOTE5NiAv
KiBKU01vY2tQYXltZW50QWRkcmVzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQ2RDMxQTFG
OTlCQ0Y4MDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQyN0RBNzFEMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRUJGNTEyMUMxNjk2NDk2QzAwNTZCRDI1IC8q
IEpTVHlwZUNvbnZlcnNpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzI2QjQwMTYwQThD
QzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU3NjA4
MjdCMjAyNEVEMjkwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFj
dG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyog
TW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCNUIyOUUxQUFBODQ2
RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNTc2MDgyN0IyMDI0RUQyOTAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBREQxRDY3OTJDMTAwOUE1MzhD
IC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0VCRkEx
RTNBQjY3OTAwQUM5RkU5IC8qIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDM0NDYwN2I3MjZhYzNhMGZiMTNhZDJlZDZm
OGQ1NmFkMmNhMzIyOGYuLjlmMDM0NzJiNGE2MGNlYTMzOGFhZGQ0NzgxZGM5N2RhMDMwZDFmODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkFsdGVybmF0
aXZlVGV4dENsaWVudC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAj
aW5jbHVkZSAiQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyLmgiCisjaW5jbHVkZSAiQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIK
ICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDU1NBbmltYXRp
b25Db250cm9sbGVyLmgiCkBAIC0yNTUsNiArMjU2LDkgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmln
dXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAgICAg
LCBtX3BheW1lbnRDb29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRDb29yZGluYXRv
cj4oKnBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVudCkpCiAjZW5kaWYK
KyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgICwgbV9hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Io
c3RkOjptYWtlX3VuaXF1ZTxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KSkpCisjZW5kaWYKICNp
ZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgLCBtX2FwcGxpY2F0aW9uTWFuaWZl
c3QocGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25NYW5pZmVzdCkKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAppbmRleCBkYmE0ZjBmMDgyNzFlYjc1YjlmMzZiNWM0ZDAzMWY4ZThkNmYzOTQ2Li42YjFj
OGJiODRiZDYxMDQzZjcxMmRhZDI3MjNmMzg1NzZhNmRjNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAt
NzYsNiArNzYsNyBAQCBjbGFzcyBJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CiAKIGNsYXNzIEFsdGVy
bmF0aXZlVGV4dENsaWVudDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3Mg
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyOwog
Y2xhc3MgQmFja0ZvcndhcmRDbGllbnQ7CiBjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKQEAg
LTQxMCw2ICs0MTEsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF5
bWVudENvb3JkaW5hdG9yKHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50Q29vcmRpbmF0b3I+JiYpOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvciYgYXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gKm1fYXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBh
cHBsaWNhdGlvbk1hbmlmZXN0KCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0
OyB9CiAjZW5kaWYKQEAgLTkwMSw2ICs5MDYsMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGF5bWVudENvb3JkaW5hdG9yPiBtX3BheW1lbnRDb29yZGluYXRvcjsKICNlbmRpZgog
CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yPiBtX2F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjsKKyNlbmRpZgorCiAjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRp
b25NYW5pZmVzdD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGNkNDAwNWI1NjM3M2M4ODQzY2U5NzEy
NmJiM2ZlMzAxMjcxODk0ZmYuLjE0Yzk5MTU5ZGRkNzMwOTc3OTc3ZTE2YWM0MWQ0YjYxNmIzM2Mw
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC00Miw2
ICs0MiwxMCBAQAogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKICNpbmNsdWRlICJXZWJH
TFN0YXRlVHJhY2tlci5oIgogCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbihVbmlxdWVSZWY8RWRp
dG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCwgUmVmPFNvY2tldFByb3ZpZGVyPiYmIHNvY2tldFBy
b3ZpZGVyLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYgbGliV2ViUlRDUHJvdmlkZXIs
IFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCAzYTczNDU3NmQ0MGEyY2Q0YmRh
MTRjNGViZTAzMzJhYTM1NmUyMWU0Li42MGJkZWM3ZDNmYzE4MTc2NWJlYTIxYmExNDY1NmU1ZGYw
OTBmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCkBAIC0zOCw2
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBCYWNrRm9yd2FyZENsaWVudDsKIGNsYXNzIENhY2hl
U3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgQ2hyb21lQ2xpZW50OwpAQCAtODAsNiArODEsMTAgQEAg
cHVibGljOgogICAgIFBheW1lbnRDb29yZGluYXRvckNsaWVudCogcGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50IHsgbnVsbHB0ciB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ+IGF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQogICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gYXBwbGlj
YXRpb25NYW5pZmVzdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IGY3NWFiMjQ1YWU3MDA5YTQzODEzODg0ZGM0ZmMyNTc0MTYzOWJjMGIuLjgwZDViZDg3YWJm
ZmZkNDQxOGM2MjE1NTAwMjM4ZmQ0MzQ2YjNjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTI2Nyw4ICsyNjcsOCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FV
VEhOKQotI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiTW9ja0Ny
ZWRlbnRpYWxzTWVzc2VuZ2VyLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmgiCisjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIgogI2VuZGlmCiAK
IHVzaW5nIEpTQzo6Q2FsbERhdGE7CkBAIC01NDksOCArNTQ5LDExIEBAIEludGVybmFsczo6SW50
ZXJuYWxzKERvY3VtZW50JiBkb2N1bWVudCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKLSAgICBtX21vY2tDcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8TW9j
a0NyZWRlbnRpYWxzTWVzc2VuZ2VyPigqdGhpcyk7Ci0gICAgQXV0aGVudGljYXRvck1hbmFnZXI6
OnNpbmdsZXRvbigpLnNldE1lc3NlbmdlcigqbV9tb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIpOwor
ICAgIGlmIChkb2N1bWVudC5wYWdlKCkpIHsKKyAgICAgICAgYXV0byBtb2NrQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yPigpOworICAgICAgICBtX21vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgPSBtYWtlV2Vh
a1B0cihtb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmdldCgpKTsKKyAgICAgICAgZG9jdW1l
bnQucGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5zZXRDbGllbnQoV1RGTW92ZSht
b2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKSk7CisgICAgfQogI2VuZGlmCiB9CiAKQEAgLTQ2
MjAsOSArNDYyMyw5IEBAIE1vY2tQYXltZW50Q29vcmRpbmF0b3ImIEludGVybmFsczo6bW9ja1Bh
eW1lbnRDb29yZGluYXRvcigpIGNvbnN0CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4p
Ci1Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXImIEludGVybmFsczo6bW9ja0NyZWRlbnRpYWxzTWVz
c2VuZ2VyKCkgY29uc3QKK01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3ImIEludGVybmFsczo6
bW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICptX21v
Y2tDcmVkZW50aWFsc01lc3NlbmdlcjsKKyAgICByZXR1cm4gKm1fbW9ja0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvcjsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCBiNGE1MGJhN2QxMTBiN2EyNTdiMDlhMWIxMjI0MjIyZGQwMGIzMjcwLi4yNDE3ZWU4NTIxOTc1
MjY4ZWZlYzJhOGY4OTI1MzM4YjBjNjExNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIGNsYXNzIE1lbW9y
eUluZm87CiBjbGFzcyBNb2NrQ0RNRmFjdG9yeTsKIGNsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M7Ci1jbGFzcyBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI7CitjbGFzcyBNb2NrQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOwogY2xhc3MgTW9ja1BhZ2VPdmVybGF5OwogY2xhc3MgTW9ja1Bh
eW1lbnRDb29yZGluYXRvcjsKIGNsYXNzIE5vZGVMaXN0OwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHRlc3RJbmNvbWluZ1N5bmNJUENNZXNzYWdlV2hpbGVXYWl0aW5nRm9y
U3luY1JlcGx5KCk7CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIE1vY2tDcmVkZW50aWFs
c01lc3NlbmdlciYgbW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyKCkgY29uc3Q7CisgICAgTW9ja0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvciYgbW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpIGNv
bnN0OwogI2VuZGlmCiAKICAgICBib29sIGlzU3lzdGVtUHJldmlld0xpbmsoRWxlbWVudCYpIGNv
bnN0OwpAQCAtNzYzLDcgKzc2Myw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
RUJfQVVUSE4pCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcj4g
bV9tb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI7CisgICAgV2Vha1B0cjxNb2NrQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yPiBtX21vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I7CiAjZW5kaWYKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAwNzg4NDZlZThiMmVhN2Zk
YjUwNzJiMjQ0YzZhNjc2YWNmZDVjZjU0Li4yMTg0ZmQyMWRkMWFjMTg4ZGJmMDQxODg1ODA1Yzg3
M2UxYjYxZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC02NDYsNyAr
NjQ2LDcgQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9
V2ViQW5pbWF0aW9uc10gdm9pZCBwYXVzZVRpbWVsaW5lKEFuaW1hdGlvblRpbWVsaW5lIHRpbWVs
aW5lKTsKICAgICBbRW5hYmxlZEF0UnVudGltZT1XZWJBbmltYXRpb25zXSB2b2lkIHNldFRpbWVs
aW5lQ3VycmVudFRpbWUoQW5pbWF0aW9uVGltZWxpbmUgdGltZWxpbmUsIGRvdWJsZSBjdXJyZW50
VGltZSk7CiAgICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV0gcmVhZG9ubHkgYXR0cmlidXRlIE1v
Y2tQYXltZW50Q29vcmRpbmF0b3IgbW9ja1BheW1lbnRDb29yZGluYXRvcjsKLSAgICBbQ29uZGl0
aW9uYWw9V0VCX0FVVEhOXSByZWFkb25seSBhdHRyaWJ1dGUgTW9ja0NyZWRlbnRpYWxzTWVzc2Vu
Z2VyIG1vY2tDcmVkZW50aWFsc01lc3NlbmdlcjsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX0FVVEhO
XSByZWFkb25seSBhdHRyaWJ1dGUgTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvciBtb2NrQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yOwogCiAgICAgYm9vbGVhbiBpc1N5c3RlbVByZXZpZXdMaW5r
KEVsZW1lbnQgZWxlbWVudCk7CiAgICAgYm9vbGVhbiBpc1N5c3RlbVByZXZpZXdJbWFnZShFbGVt
ZW50IGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q3ZDY5YTYyZDYwYWQ5ODY0
NzdhZDZhMzJkNDg2YjA0YjU0Y2Y5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTAsMCArMSwxMTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1
ZGUgIkludGVybmFscy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbERh
dGEuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dm9pZCBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpzZXRDcmVhdGlvblJldHVybkJ1bmRs
ZShjb25zdCBCdWZmZXJTb3VyY2UmIGNyZWRlbnRpYWxJZCwgY29uc3QgQnVmZmVyU291cmNlJiBh
dHRlc3RhdGlvbk9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW1fY3JlZGVudGlhbElkICYmICFtX2F0
dGVzdGF0aW9uT2JqZWN0KTsKKyAgICBtX2NyZWRlbnRpYWxJZCA9IEFycmF5QnVmZmVyOjpjcmVh
dGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLmxlbmd0aCgpKTsKKyAgICBtX2F0
dGVzdGF0aW9uT2JqZWN0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5k
YXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0Lmxlbmd0aCgpKTsKK30KKwordm9pZCBNb2NrQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpzZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoY29uc3QgQnVmZmVy
U291cmNlJiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYXV0aGVudGljYXRvckRh
dGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2UmIHVz
ZXJIYW5kbGUpCit7CisgICAgQVNTRVJUKCFtX2NyZWRlbnRpYWxJZCAmJiAhbV9hdXRoZW50aWNh
dG9yRGF0YSAmJiAhbV9zaWduYXR1cmUgJiYgIW1fdXNlckhhbmRsZSk7CisgICAgbV9jcmVkZW50
aWFsSWQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRp
YWxJZC5sZW5ndGgoKSk7CisgICAgbV9hdXRoZW50aWNhdG9yRGF0YSA9IEFycmF5QnVmZmVyOjpj
cmVhdGUoYXV0aGVudGljYXRvckRhdGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5sZW5ndGgo
KSk7CisgICAgbV9zaWduYXR1cmUgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5kYXRh
KCksIHNpZ25hdHVyZS5sZW5ndGgoKSk7CisgICAgbV91c2VySGFuZGxlID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZSh1c2VySGFuZGxlLmRhdGEoKSwgdXNlckhhbmRsZS5sZW5ndGgoKSk7Cit9CisKK3Zv
aWQgTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYs
IFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit7CisgICAgaWYgKCFzZXRSZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX2RpZFRpbWVPdXQpIHsKKyAgICAgICAgbV9kaWRUaW1lT3V0ID0gZmFsc2U7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fZGlkVXNlckNhbmNlbCkgeworICAg
ICAgICBtX2RpZFVzZXJDYW5jZWwgPSBmYWxzZTsKKyAgICAgICAgcmVxdWVzdFJlcGx5KHsgfSwg
eyBOb3RBbGxvd2VkRXJyb3IsICJVc2VyIGNhbmNlbGxlZC4iX3MgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKG1fY3JlZGVudGlhbElkKSB7CisgICAgICAgIEFTU0VSVChtX2F0
dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgcmVxdWVzdFJlcGx5KFB1YmxpY0tleUNyZWRlbnRp
YWxEYXRhIHsgV1RGTW92ZShtX2NyZWRlbnRpYWxJZCksIHRydWUsIG51bGxwdHIsIFdURk1vdmUo
bV9hdHRlc3RhdGlvbk9iamVjdCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfSwgeyB9KTsK
KyAgICAgICAgbV9jcmVkZW50aWFsSWQgPSBudWxscHRyOworICAgICAgICBtX2F0dGVzdGF0aW9u
T2JqZWN0ID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwordm9pZCBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRB
c3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sK
KyAgICBpZiAoIXNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGlkVGltZU91dCkgeworICAgICAgICBtX2Rp
ZFRpbWVPdXQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9kaWRV
c2VyQ2FuY2VsKSB7CisgICAgICAgIG1fZGlkVXNlckNhbmNlbCA9IGZhbHNlOworICAgICAgICBy
ZXF1ZXN0UmVwbHkoeyB9LCB7IE5vdEFsbG93ZWRFcnJvciwgIlVzZXIgY2FuY2VsbGVkLiJfcyB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9jcmVkZW50aWFsSWQpIHsKKyAg
ICAgICAgQVNTRVJUKG1fYXV0aGVudGljYXRvckRhdGEgJiYgbV9zaWduYXR1cmUgJiYgbV91c2Vy
SGFuZGxlKTsKKyAgICAgICAgcmVxdWVzdFJlcGx5KFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsg
V1RGTW92ZShtX2NyZWRlbnRpYWxJZCksIGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3Zl
KG1fYXV0aGVudGljYXRvckRhdGEpLCBXVEZNb3ZlKG1fc2lnbmF0dXJlKSwgV1RGTW92ZShtX3Vz
ZXJIYW5kbGUpIH0sIHsgfSk7CisgICAgICAgIG1fY3JlZGVudGlhbElkID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9hdXRoZW50aWNhdG9yRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fc2lnbmF0dXJl
ID0gbnVsbHB0cjsKKyAgICAgICAgbV91c2VySGFuZGxlID0gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBNb2NrQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0
b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit7CisgICAgYXV0
byBtZXNzYWdlSWQgPSBhZGRRdWVyeUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikp
OworICAgIGlmIChtX2RpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50
KSB7CisgICAgICAgIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJs
ZVJlcGx5KG1lc3NhZ2VJZCwgdHJ1ZSk7CisgICAgICAgIG1fZGlkVXNlclZlcmlmeWluZ1BsYXRm
b3JtQXV0aGVudGljYXRvclByZXNlbnQgPSBmYWxzZTsKKyAgICB9IGVsc2UKKyAgICAgICAgaXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2FnZUlk
LCBmYWxzZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0YWM0NWVhMmZmMzQ1NzVlYTQ2NGI5
NTFiY2QxMzZhNDUxMmJhYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtMCwwICsxLDY4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVk
ZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiQnVmZmVyU291
cmNlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBJbnRlcm5hbHM7CisKK2NsYXNzIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ig
ZmluYWwgOiBwdWJsaWMgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2b2lkIHNldERpZFRpbWVPdXQoKSB7IG1fZGlkVGltZU91dCA9IHRydWU7IH0KKyAgICB2
b2lkIHNldERpZFVzZXJDYW5jZWwoKSB7IG1fZGlkVXNlckNhbmNlbCA9IHRydWU7IH0KKyAgICB2
b2lkIHNldERpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50KCkgeyBt
X2RpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50ID0gdHJ1ZTsgfQor
ICAgIHZvaWQgc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNlJiBjcmVk
ZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYXR0ZXN0YXRpb25PYmplY3QpOworICAgIHZv
aWQgc2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgY3JlZGVudGlh
bElkLCBjb25zdCBCdWZmZXJTb3VyY2UmIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBCdWZmZXJT
b3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiB1c2VySGFuZGxlKTsKKworICAg
IC8vIFJlZkNvdW50ZWQgaXMgcmVxdWlyZWQgZm9yIEpTIHdyYXBwZXIuIFRoZXJlZm9yZSwgZmFr
ZSB0aGVtIHRvIGNvbXBpbGUuCisgICAgdm9pZCByZWYoKSBjb25zdCB7IH0KKyAgICB2b2lkIGRl
cmVmKCkgY29uc3QgeyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBn
ZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CisgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKworICAgIC8vIEFsbCBmb2xsb3dp
bmcgZmllbGRzIGFyZSBkaXNwb3NhYmxlLgorICAgIGJvb2wgbV9kaWRUaW1lT3V0IHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fZGlkVXNlckNhbmNlbCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RpZFVz
ZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50IHsgZmFsc2UgfTsKKyAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IG1fY3JlZGVudGlhbElkOworICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gbV9hdHRlc3RhdGlvbk9iamVjdDsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXV0aGVu
dGljYXRvckRhdGE7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX3NpZ25hdHVyZTsKKyAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IG1fdXNlckhhbmRsZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaWRsIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYWM1Y2IyZWY4MjBiNTAyNmEyNTk4Y2ZkMmZjY2I2NTc1MzNlZDkyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmlkbApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PVdFQl9BVVRITiwKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIE1vY2tBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IgeworICAgIHZvaWQgc2V0RGlkVGltZU91dCgpOworICAgIHZv
aWQgc2V0RGlkVXNlckNhbmNlbCgpOworICAgIHZvaWQgc2V0RGlkVXNlclZlcmlmeWluZ1BsYXRm
b3JtQXV0aGVudGljYXRvclByZXNlbnQoKTsKKyAgICB2b2lkIHNldENyZWF0aW9uUmV0dXJuQnVu
ZGxlKEJ1ZmZlclNvdXJjZSBjcmVkZW50aWFsSWQsIEJ1ZmZlclNvdXJjZSBhdHRlc3RhdGlvbk9i
amVjdCk7CisgICAgdm9pZCBzZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoQnVmZmVyU291cmNlIGNy
ZWRlbnRpYWxJZCwgQnVmZmVyU291cmNlIGF1dGhlbnRpY2F0b3JEYXRhLCBCdWZmZXJTb3VyY2Ug
c2lnbmF0dXJlLCBCdWZmZXJTb3VyY2UgdXNlckhhbmRsZSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxMDJlMzNiNWM1Yjg4YTgxZjFlMmE2NGI3Y2UwZmUzZjU1MDE0
YTNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDE1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIk1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oIgotCi0jaWYgRU5BQkxFKFdFQl9B
VVRITikKLQotI2luY2x1ZGUgIkludGVybmFscy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6Ok1vY2tD
cmVkZW50aWFsc01lc3NlbmdlcihJbnRlcm5hbHMmIGludGVybmFscykKLSAgICA6IG1faW50ZXJu
YWxzKGludGVybmFscykKLXsKLX0KLQotTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjp+TW9ja0Ny
ZWRlbnRpYWxzTWVzc2VuZ2VyKCkKLXsKLSAgICAvLyBIYXZlIG5vIGVmZmVjdHMgdG8gb3JpZ2lu
YWwgcHJvbWlzZXMuIEp1c3QgdG8gY2FsbCBoYW5kbGVycyB0byBhdm9pZCBhbnkgYXNzZXJ0aW9u
IGZhaWx1cmVzLgotICAgIGZvciAoYXV0byBtZXNzYWdlSWQgOiBtX3RpbWVPdXRNZXNzYWdlSWRz
KQotICAgICAgICBleGNlcHRpb25SZXBseShtZXNzYWdlSWQsIEV4Y2VwdGlvbkRhdGEgeyBOb3RB
bGxvd2VkRXJyb3IsICJPcGVyYXRpb24gdGltZWQgb3V0LiJfcyB9KTsKLX0KLQotdm9pZCBNb2Nr
Q3JlZGVudGlhbHNNZXNzZW5nZXI6OnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGNvbnN0IEJ1ZmZl
clNvdXJjZSYgY3JlZGVudGlhbElkLCBjb25zdCBCdWZmZXJTb3VyY2UmIGF0dGVzdGF0aW9uT2Jq
ZWN0KQotewotICAgIEFTU0VSVChtX2NyZWRlbnRpYWxJZC5pc0VtcHR5KCkgJiYgbV9hdHRlc3Rh
dGlvbk9iamVjdC5pc0VtcHR5KCkpOwotICAgIG1fY3JlZGVudGlhbElkLmFwcGVuZChjcmVkZW50
aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQubGVuZ3RoKCkpOwotICAgIG1fYXR0ZXN0YXRpb25P
YmplY3QuYXBwZW5kKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3Qu
bGVuZ3RoKCkpOwotfQotCi12b2lkIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6c2V0QXNzZXJ0
aW9uUmV0dXJuQnVuZGxlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgY3JlZGVudGlhbElkLCBjb25zdCBC
dWZmZXJTb3VyY2UmIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25h
dHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiB1c2VySGFuZGxlKQotewotICAgIEFTU0VSVChtX2Ny
ZWRlbnRpYWxJZC5pc0VtcHR5KCkgJiYgbV9hdXRoZW50aWNhdG9yRGF0YS5pc0VtcHR5KCkgJiYg
bV9zaWduYXR1cmUuaXNFbXB0eSgpICYmIG1fdXNlckhhbmRsZS5pc0VtcHR5KCkpOwotICAgIG1f
Y3JlZGVudGlhbElkLmFwcGVuZChjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQubGVu
Z3RoKCkpOwotICAgIG1fYXV0aGVudGljYXRvckRhdGEuYXBwZW5kKGF1dGhlbnRpY2F0b3JEYXRh
LmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEubGVuZ3RoKCkpOwotICAgIG1fc2lnbmF0dXJlLmFw
cGVuZChzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUubGVuZ3RoKCkpOwotICAgIG1fdXNlckhh
bmRsZS5hcHBlbmQodXNlckhhbmRsZS5kYXRhKCksIHVzZXJIYW5kbGUubGVuZ3RoKCkpOwotfQot
Ci12b2lkIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6cmVmKCkKLXsKLSAgICBtX2ludGVybmFs
cy5yZWYoKTsKLX0KLQotdm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6OmRlcmVmKCkKLXsK
LSAgICBtX2ludGVybmFscy5kZXJlZigpOwotfQotCi12b2lkIE1vY2tDcmVkZW50aWFsc01lc3Nl
bmdlcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIm
JiBoYW5kbGVyKQotewotICAgIGF1dG8gbWVzc2FnZUlkID0gYWRkQ3JlYXRpb25Db21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBpZiAobV9kaWRUaW1lT3V0KSB7Ci0gICAg
ICAgIG1fZGlkVGltZU91dCA9IGZhbHNlOwotICAgICAgICBtX3RpbWVPdXRNZXNzYWdlSWRzLmFw
cGVuZChtZXNzYWdlSWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2RpZFVz
ZXJDYW5jZWwpIHsKLSAgICAgICAgbV9kaWRVc2VyQ2FuY2VsID0gZmFsc2U7Ci0gICAgICAgIGV4
Y2VwdGlvblJlcGx5KG1lc3NhZ2VJZCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwg
IlVzZXIgY2FuY2VsbGVkLiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
IW1fY3JlZGVudGlhbElkLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoIW1fYXR0ZXN0YXRp
b25PYmplY3QuaXNFbXB0eSgpKTsKLSAgICAgICAgbWFrZUNyZWRlbnRpYWxSZXBseShtZXNzYWdl
SWQsIG1fY3JlZGVudGlhbElkLCBtX2F0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICAgICAgbV9jcmVk
ZW50aWFsSWQuY2xlYXIoKTsKLSAgICAgICAgbV9hdHRlc3RhdGlvbk9iamVjdC5jbGVhcigpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12
b2lkIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVl
c3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgYXV0byBtZXNzYWdlSWQgPSBh
ZGRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgaWYgKG1f
ZGlkVGltZU91dCkgewotICAgICAgICBtX2RpZFRpbWVPdXQgPSBmYWxzZTsKLSAgICAgICAgbV90
aW1lT3V0TWVzc2FnZUlkcy5hcHBlbmQobWVzc2FnZUlkKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBpZiAobV9kaWRVc2VyQ2FuY2VsKSB7Ci0gICAgICAgIG1fZGlkVXNlckNhbmNlbCA9
IGZhbHNlOwotICAgICAgICBleGNlcHRpb25SZXBseShtZXNzYWdlSWQsIEV4Y2VwdGlvbkRhdGEg
eyBOb3RBbGxvd2VkRXJyb3IsICJVc2VyIGNhbmNlbGxlZC4iX3MgfSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKCFtX2NyZWRlbnRpYWxJZC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
QVNTRVJUKCFtX2F1dGhlbnRpY2F0b3JEYXRhLmlzRW1wdHkoKSAmJiAhbV9zaWduYXR1cmUuaXNF
bXB0eSgpICYmICFtX3VzZXJIYW5kbGUuaXNFbXB0eSgpKTsKLSAgICAgICAgZ2V0QXNzZXJ0aW9u
UmVwbHkobWVzc2FnZUlkLCBtX2NyZWRlbnRpYWxJZCwgbV9hdXRoZW50aWNhdG9yRGF0YSwgbV9z
aWduYXR1cmUsIG1fdXNlckhhbmRsZSk7Ci0gICAgICAgIG1fY3JlZGVudGlhbElkLmNsZWFyKCk7
Ci0gICAgICAgIG1fYXV0aGVudGljYXRvckRhdGEuY2xlYXIoKTsKLSAgICAgICAgbV9zaWduYXR1
cmUuY2xlYXIoKTsKLSAgICAgICAgbV91c2VySGFuZGxlLmNsZWFyKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgTW9ja0NyZWRl
bnRpYWxzTWVzc2VuZ2VyOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFp
bGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgYXV0byBtZXNz
YWdlSWQgPSBhZGRRdWVyeUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpOwotICAg
IGlmIChtX2RpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50KSB7Ci0g
ICAgICAgIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5
KG1lc3NhZ2VJZCwgdHJ1ZSk7Ci0gICAgICAgIG1fZGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvclByZXNlbnQgPSBmYWxzZTsKLSAgICB9IGVsc2UKLSAgICAgICAgaXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2FnZUlkLCBmYWxz
ZSk7Ci19Ci0KLXZvaWQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjptYWtlQ3JlZGVudGlhbFJl
cGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFs
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpCi17Ci0gICAgYXV0
byBoYW5kbGVyID0gdGFrZUNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIobWVzc2FnZUlkKTsKLSAg
ICBoYW5kbGVyKENyZWF0aW9uUmV0dXJuQnVuZGxlKEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVu
dGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUo
YXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5zaXplKCkpKSk7Ci19
Ci0KLXZvaWQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjpnZXRBc3NlcnRpb25SZXBseSh1aW50
NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKQotewotICAg
IGF1dG8gaGFuZGxlciA9IHRha2VSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIobWVzc2FnZUlkKTsK
LSAgICBoYW5kbGVyKEFzc2VydGlvblJldHVybkJ1bmRsZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNy
ZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKGF1dGhlbnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwg
QXJyYXlCdWZmZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwg
QXJyYXlCdWZmZXI6OmNyZWF0ZSh1c2VySGFuZGxlLmRhdGEoKSwgdXNlckhhbmRsZS5zaXplKCkp
KSk7Ci19Ci0KLXZvaWQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjppc1VzZXJWZXJpZnlpbmdQ
bGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJv
b2wgcmVzdWx0KQotewotICAgIGF1dG8gaGFuZGxlciA9IHRha2VRdWVyeUNvbXBsZXRpb25IYW5k
bGVyKG1lc3NhZ2VJZCk7Ci0gICAgaGFuZGxlcihyZXN1bHQpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGI0YjA4ZGY0ZWFhMDg0OGUxMTE5MWU5YTg2ZTQwNGEyYmM1MTE4MmYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaAorKysgL2Rldi9udWxsCkBA
IC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJfQVVUSE4pCi0KLSNpbmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKLSNpbmNsdWRlICJDcmVkZW50
aWFsc01lc3Nlbmdlci5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgSW50ZXJuYWxzOwotCi1jbGFzcyBNb2NrQ3JlZGVudGlhbHNNZXNz
ZW5nZXIgZmluYWwgOiBwdWJsaWMgQ3JlZGVudGlhbHNNZXNzZW5nZXIgewotcHVibGljOgotICAg
IGV4cGxpY2l0IE1vY2tDcmVkZW50aWFsc01lc3NlbmdlcihJbnRlcm5hbHMmKTsKLSAgICB+TW9j
a0NyZWRlbnRpYWxzTWVzc2VuZ2VyKCk7Ci0KLSAgICB2b2lkIHNldERpZFRpbWVPdXQoKSB7IG1f
ZGlkVGltZU91dCA9IHRydWU7IH0KLSAgICB2b2lkIHNldERpZFVzZXJDYW5jZWwoKSB7IG1fZGlk
VXNlckNhbmNlbCA9IHRydWU7IH0KLSAgICB2b2lkIHNldERpZFVzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JQcmVzZW50KCkgeyBtX2RpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JQcmVzZW50ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0Q3JlYXRpb25SZXR1cm5CdW5k
bGUoY29uc3QgQnVmZmVyU291cmNlJiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYg
YXR0ZXN0YXRpb25PYmplY3QpOwotICAgIHZvaWQgc2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKGNv
bnN0IEJ1ZmZlclNvdXJjZSYgY3JlZGVudGlhbElkLCBjb25zdCBCdWZmZXJTb3VyY2UmIGF1dGhl
bnRpY2F0b3JEYXRhLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVy
U291cmNlJiB1c2VySGFuZGxlKTsKLQotICAgIHZvaWQgcmVmKCk7Ci0gICAgdm9pZCBkZXJlZigp
OwotCi1wcml2YXRlOgotICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIENyZWF0aW9u
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb24oY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBpc1Vz
ZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIG1ha2VDcmVkZW50aWFsUmVwbHkodWludDY0X3Qg
bWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCkgZmluYWw7Ci0gICAgdm9pZCBnZXRBc3Nl
cnRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3Jl
ZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2Vy
SGFuZGxlKSBmaW5hbDsKLSAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCkgZmluYWw7Ci0KLSAg
ICBJbnRlcm5hbHMmIG1faW50ZXJuYWxzOwotICAgIC8vIEFsbCBmb2xsb3dpbmcgZmllbGRzIGFy
ZSBkaXNwb3NhYmxlLgotICAgIGJvb2wgbV9kaWRUaW1lT3V0IHsgZmFsc2UgfTsKLSAgICBib29s
IG1fZGlkVXNlckNhbmNlbCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2RpZFVzZXJWZXJpZnlpbmdQ
bGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50IHsgZmFsc2UgfTsKLSAgICBWZWN0b3I8dWludDhf
dD4gbV9hdHRlc3RhdGlvbk9iamVjdDsKLSAgICBWZWN0b3I8dWludDhfdD4gbV9jcmVkZW50aWFs
SWQ7IC8vIE92ZXJsYXBwZWQgYmV0d2VlbiBDcmVhdGlvblJldHVybkJ1bmRsZSBhbmQgQXNzZXJ0
aW9uUmV0dXJuQnVuZGxlLgotICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1dGhlbnRpY2F0b3JEYXRh
OwotICAgIFZlY3Rvcjx1aW50OF90PiBtX3NpZ25hdHVyZTsKLSAgICBWZWN0b3I8dWludDhfdD4g
bV91c2VySGFuZGxlOwotCi0gICAgLy8gVG8gY2xlYW4gdXAgY29tcGxldGlvbiBoYW5kbGVycy4K
LSAgICBWZWN0b3I8dWludDY0X3Q+IG1fdGltZU91dE1lc3NhZ2VJZHM7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaWRsCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWUxMjZhOTJiZjExOWEzYzQ1ZmFlNWViMjhhOGI5
YWI5NThkOTgwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9u
YWw9V0VCX0FVVEhOLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotXSBpbnRlcmZhY2UgTW9ja0Ny
ZWRlbnRpYWxzTWVzc2VuZ2VyIHsKLSAgICB2b2lkIHNldERpZFRpbWVPdXQoKTsKLSAgICB2b2lk
IHNldERpZFVzZXJDYW5jZWwoKTsKLSAgICB2b2lkIHNldERpZFVzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JQcmVzZW50KCk7Ci0gICAgdm9pZCBzZXRDcmVhdGlvblJldHVybkJ1bmRs
ZShCdWZmZXJTb3VyY2UgY3JlZGVudGlhbElkLCBCdWZmZXJTb3VyY2UgYXR0ZXN0YXRpb25PYmpl
Y3QpOwotICAgIHZvaWQgc2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKEJ1ZmZlclNvdXJjZSBjcmVk
ZW50aWFsSWQsIEJ1ZmZlclNvdXJjZSBhdXRoZW50aWNhdG9yRGF0YSwgQnVmZmVyU291cmNlIHNp
Z25hdHVyZSwgQnVmZmVyU291cmNlIHVzZXJIYW5kbGUpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCAxZTRjYzUxZDhmOTBmNGMzM2UzYjhjODQwZjY1MzUzM2JhY2NiZTQ1Li5i
ZGVjMjgzMWI2NTEwYTc4MGZlZDZiYjQyNjExYmM5MmY0Nzg3M2EwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC00Myw3ICs0Myw2IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
QXV0b21hdGlvbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0NhY2hlIFwKLSAgICAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQgXAogICAgICQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nl
c3MvRnVsbFNjcmVlbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uIFwK
QEAgLTU4LDYgKzU3LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1Jl
c291cmNlQ2FjaGUgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9TdG9yYWdlIFwKICAgICAk
KFdlYktpdDIpL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQgXAorICAgICQoV2ViS2l0MikvV2ViUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViUGFnZSBcCiAgICAgJChX
ZWJLaXQyKS9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlIFwKQEAgLTY5LDcgKzY5
LDYgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvQXBwbGVQYXkgXAogICAg
ICQoV2ViS2l0MikvVUlQcm9jZXNzL0F1dG9tYXRpb24gXAogICAgICQoV2ViS2l0MikvVUlQcm9j
ZXNzL0NvY29hIFwKLSAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVu
dCBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvRGF0YWJhc2VzIFwKICAgICAkKFdlYktpdDIp
L1VJUHJvY2Vzcy9Eb3dubG9hZHMgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL01lZGlhU3Ry
ZWFtIFwKQEAgLTgwLDYgKzc5LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9TdG9yYWdlIFwK
ICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9Vc2VyQ29udGVudCBcCisgICAgJChXZWJLaXQyKS9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24gXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL1dl
YlN0b3JhZ2UgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL21hYyBcCiAgICAgJChXZWJLaXQy
KS9VSVByb2Nlc3MvaW9zIFwKQEAgLTE0OSw4ICsxNDksOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9
IFwKICAgICBXZWJDb25uZWN0aW9uIFwKICAgICBXZWJDb29raWVNYW5hZ2VyIFwKICAgICBXZWJD
b29raWVNYW5hZ2VyUHJveHkgXAotICAgIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyIFwKLSAgICBX
ZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5IFwKKyAgICBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IgXAorICAgIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IFwKICAgICBXZWJG
dWxsU2NyZWVuTWFuYWdlciBcCiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBcCiAgICAg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAwMjZkYTUy
ZTllZDgzYzRhOGRiZDRhOGNlMjE3ZjM4OGQzMTI5OThiLi4xNmQwN2JhMDMzY2U4N2NmZTM3Njlh
YjNkZThmODI5NjBiYTcyOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNDQsOCArMzQ0
LDYgQEAgVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCiBVSVByb2Nlc3MvQ29jb2EvV0tS
ZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW0KIFVJUHJvY2Vzcy9Db2NvYS9XS1dl
YlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQogCi1VSVByb2Nlc3MvQ3JlZGVudGlhbE1h
bmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHAKLQogVUlQcm9jZXNzL0dh
bWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbQogVUlQcm9jZXNzL0dhbWVwYWQv
aW9zL1VJR2FtZXBhZFByb3ZpZGVySU9TLm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1l
cGFkUHJvdmlkZXJNYWMubW0KQEAgLTQ1Niw2ICs0NTQsOCBAQCBVSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5tbQogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcAog
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAogCitVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
Y3BwCisKIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KIAogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC00NjQsOCAr
NDY0LDYgQEAgVUlQcm9jZXNzL1dlYlN0b3JhZ2UvaW9zL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcklPUy5tbQogCiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5j
cHAKIAotV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nl
bmdlci5jcHAKLQogV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCiBX
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC01MTAsNiArNTA4LDggQEAgV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KIAorV2ViUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisKIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcAogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcAogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1h
bmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDljYmNmYmYyY2Q5MDQxYWY0OGQwOWMyZDBlNmYwZTRkZTIwMjA1Njgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXJQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJDcmVkZW50aWFsc01lc3NlbmdlclBy
b3h5LmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi0jaW5jbHVkZSAiV2ViQ3JlZGVudGlh
bHNNZXNzZW5nZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
UHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvTG9jYWxBdXRoZW50aWNhdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5OjpXZWJDcmVkZW50aWFsc01lc3Nlbmdl
clByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQotICAgIDogbV93ZWJQYWdlUHJveHko
d2ViUGFnZVByb3h5KQotewotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCksICp0aGlzKTsKLSAgICBtX2F1
dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRv
cj4oKTsKLX0KLQotV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6fldlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyUHJveHkoKQotewotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwotfQotCi12b2lk
IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6Om1ha2VDcmVkZW50aWFsKHVpbnQ2NF90IG1l
c3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKQotewotICAgIC8vIEZJWE1F
KDE4Mjc2NykKLSAgICBpZiAoIW1fYXV0aGVudGljYXRvcikgewotICAgICAgICBleGNlcHRpb25S
ZXBseShtZXNzYWdlSWQsIHsgV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCAiTm8gYXZhbGlhYmxl
IGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBG
SVhNRSgxODM1MzQpOiBXZWFrIHBvaW50ZXJzIGRvZXNuJ3Qgd29yayBpbiBhbm90aGVyIHRocmVh
ZCBiZWNhdXNlIG9mIHJhY2UgY29uZGl0aW9uLgotICAgIC8vIEZJWE1FKDE4MzUzNCk6IFVuaWZ5
IGNhbGxiYWNrcy4KLSAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwotICAg
IGF1dG8gY2FsbGJhY2sgPSBbd2Vha1RoaXMsIG1lc3NhZ2VJZF0gKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2Jq
ZWN0KSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIHdlYWtUaGlzLT5tYWtlQ3JlZGVudGlhbFJlcGx5KG1lc3NhZ2VJZCwgY3JlZGVudGlhbElk
LCBhdHRlc3RhdGlvbk9iamVjdCk7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNr
ID0gW3dlYWtUaGlzLCBtZXNzYWdlSWRdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBl
eGNlcHRpb24pIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgd2Vha1RoaXMtPmV4Y2VwdGlvblJlcGx5KG1lc3NhZ2VJZCwgZXhjZXB0aW9uKTsK
LSAgICB9OwotICAgIG1fYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoaGFzaCwgb3B0aW9u
cywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsKLX0KLQot
dm9pZCBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5OjpnZXRBc3NlcnRpb24odWludDY0X3Qg
bWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICAvLyBGSVhN
RSgxODI3NjcpCi0gICAgaWYgKCFtX2F1dGhlbnRpY2F0b3IpCi0gICAgICAgIGV4Y2VwdGlvblJl
cGx5KG1lc3NhZ2VJZCwgeyBXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUg
YXV0aGVudGljYXRvcnMuIl9zIH0pOwotICAgIC8vIEZJWE1FKDE4MzUzNCk6IFdlYWsgcG9pbnRl
cnMgZG9lc24ndCB3b3JrIGluIGFub3RoZXIgdGhyZWFkIGJlY2F1c2Ugb2YgcmFjZSBjb25kaXRp
b24uCi0gICAgLy8gRklYTUUoMTgzNTM0KTogVW5pZnkgY2FsbGJhY2tzLgotICAgIGF1dG8gd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFt3ZWFrVGhp
cywgbWVzc2FnZUlkXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpIHsKLSAgICAg
ICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPmdldEFzc2VydGlvblJlcGx5
KG1lc3NhZ2VJZCwgY3JlZGVudGlhbElkLCBhdXRoZW50aWNhdG9yRGF0YSwgc2lnbmF0dXJlLCB1
c2VySGFuZGxlKTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbd2Vha1Ro
aXMsIG1lc3NhZ2VJZF0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikg
ewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+ZXhjZXB0aW9u
UmVwbHkobWVzc2FnZUlkLCBleGNlcHRpb24pOwotICAgIH07Ci0gICAgbV9hdXRoZW50aWNhdG9y
LT5nZXRBc3NlcnRpb24oaGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3NlbmdlclBy
b3h5Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUodWludDY0
X3QgbWVzc2FnZUlkKQotewotICAgIGlmICghbV9hdXRoZW50aWNhdG9yKSB7Ci0gICAgICAgIGlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJ
ZCwgZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJZCwgbV9hdXRoZW50aWNh
dG9yLT5pc0F2YWlsYWJsZSgpKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3NlbmdlclBy
b3h5OjpleGNlcHRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3Nh
Z2VzOjpXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6RXhjZXB0aW9uUmVwbHkobWVzc2FnZUlkLCBl
eGNlcHRpb24pKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5OjptYWtl
Q3JlZGVudGlhbFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3Qp
Ci17Ci0gICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6V2ViQ3JlZGVudGlhbHNNZXNz
ZW5nZXI6Ok1ha2VDcmVkZW50aWFsUmVwbHkobWVzc2FnZUlkLCBjcmVkZW50aWFsSWQsIGF0dGVz
dGF0aW9uT2JqZWN0KSk7Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6
Z2V0QXNzZXJ0aW9uUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0
YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgdXNlckhhbmRsZSkKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJD
cmVkZW50aWFsc01lc3Nlbmdlcjo6R2V0QXNzZXJ0aW9uUmVwbHkobWVzc2FnZUlkLCBjcmVkZW50
aWFsSWQsIGF1dGhlbnRpY2F0b3JEYXRhLCBzaWduYXR1cmUsIHVzZXJIYW5kbGUpKTsKLX0KLQot
dm9pZCBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wgcmVz
dWx0KQotewotICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyOjpJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVS
ZXBseShtZXNzYWdlSWQsIHJlc3VsdCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVk
ZW50aWFsc01lc3NlbmdlclByb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlk
NzRjOTcyNzBiNzgzZTg3ZTRmOGU1MmYyOGRhMGVhMjkwYzcwYzAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3Jl
ZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQl9BVVRITikKLQotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgTG9jYWxBdXRo
ZW50aWNhdG9yOwotCi1zdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKLXN0cnVjdCBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zOwotc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9uczsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsK
LQotY2xhc3MgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJDcmVkZW50aWFsc01lc3Nlbmdl
clByb3h5PiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXJQcm94eSk7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQ
cm94eShXZWJQYWdlUHJveHkmKTsKLSAgICB+V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eSgp
OwotCi1wcml2YXRlOgotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgotICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7
Ci0KLSAgICAvLyBSZWNlaXZlcnMuCi0gICAgdm9pZCBtYWtlQ3JlZGVudGlhbCh1aW50NjRfdCBt
ZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYpOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9u
KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmKTsKLSAgICB2b2lkIGlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSh1aW50NjRfdCBtZXNz
YWdlSWQpOwotCi0gICAgLy8gU2VuZGVycy4KLSAgICB2b2lkIGV4Y2VwdGlvblJlcGx5KHVpbnQ2
NF90IG1lc3NhZ2VJZCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpOwotICAgIHZvaWQg
bWFrZUNyZWRlbnRpYWxSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2Jq
ZWN0KTsKLSAgICB2b2lkIGdldEFzc2VydGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpOwotICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBi
b29sKTsKLQotICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRvcj4gbV9hdXRoZW50aWNhdG9yOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQv
V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJv
eHkubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1OGJiYWU2ZjAx
NGIwYmJiNmNlOTc4YTg0OWFmZjUzOGYzMzI2MGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1h
bmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5tZXNzYWdlcy5pbgorKysgL2Rl
di9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0jLwotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotbWVzc2FnZXMgLT4gV2ViQ3JlZGVu
dGlhbHNNZXNzZW5nZXJQcm94eSB7Ci0KLSAgICBNYWtlQ3JlZGVudGlhbCh1aW50NjRfdCBtZXNz
YWdlSWQsIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zKTsKLSAgICBHZXRBc3NlcnRpb24odWludDY0
X3QgbWVzc2FnZUlkLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKTsKLSAgICBJc1VzZXJWZXJpZnlp
bmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUodWludDY0X3QgbWVzc2FnZUlkKTsKLX0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTIyMzk0OGVlMTgwMDE4Y2QyZDA1OTFhZDYyMGNiZmQ4
ZTdiOTZjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAtMCww
ICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRI
TikKKworI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxB
dXRoZW50aWNhdG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0
YS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYgd2Vi
UGFnZVByb3h5KQorICAgIDogbV93ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5KQoreworICAgIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2Vi
UGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9hdXRoZW50aWNhdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDb3JlOjpMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Cit9CisKK1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkoKQoreworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zJiBvcHRpb25zKQoreworICAgIC8vIEZJWE1FKDE4Mjc2NykKKyAgICBpZiAoIW1fYXV0
aGVudGljYXRvcikgeworICAgICAgICByZXF1ZXN0UmVwbHkoeyB9LCB7IFdlYkNvcmU6Ok5vdEFs
bG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUUoMTgzNTM0KTogV2VhayBwb2ludGVycyBkb2Vz
bid0IHdvcmsgaW4gYW5vdGhlciB0aHJlYWQgYmVjYXVzZSBvZiByYWNlIGNvbmRpdGlvbi4KKyAg
ICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoVmFyaWFu
dDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YT4mJiByZXN1bHQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhKSB7CisgICAgICAgICAgICB3ZWFrVGhpcy0+cmVx
dWVzdFJlcGx5KGRhdGEsIHsgfSk7CisgICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CisgICAgICAgICAgICB3ZWFrVGhpcy0+cmVxdWVzdFJl
cGx5KHsgfSwgZXhjZXB0aW9uKTsKKyAgICAgICAgfSk7CisgICAgfTsKKyAgICBtX2F1dGhlbnRp
Y2F0b3ItPm1ha2VDcmVkZW50aWFsKGhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsK
K30KKwordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9u
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zKQoreworICAgIC8vIEZJWE1FKDE4Mjc2NykK
KyAgICBpZiAoIW1fYXV0aGVudGljYXRvcikKKyAgICAgICAgcmVxdWVzdFJlcGx5KHsgfSwgeyBX
ZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9z
IH0pOworICAgIC8vIEZJWE1FKDE4MzUzNCk6IFdlYWsgcG9pbnRlcnMgZG9lc24ndCB3b3JrIGlu
IGFub3RoZXIgdGhyZWFkIGJlY2F1c2Ugb2YgcmFjZSBjb25kaXRpb24uCisgICAgYXV0byBjYWxs
YmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKFZhcmlhbnQ8V2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0
KSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSYgZGF0YSkgeworICAgICAgICAgICAgd2Vha1RoaXMtPnJlcXVlc3RSZXBseShk
YXRhLCB7IH0pOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEm
IGV4Y2VwdGlvbikgeworICAgICAgICAgICAgd2Vha1RoaXMtPnJlcXVlc3RSZXBseSh7IH0sIGV4
Y2VwdGlvbik7CisgICAgICAgIH0pOworICAgIH07CisgICAgbV9hdXRoZW50aWNhdG9yLT5nZXRB
c3NlcnRpb24oaGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGUodWludDY0X3QgbWVzc2FnZUlkKQoreworICAgIGlmICghbV9h
dXRoZW50aWNhdG9yKSB7CisgICAgICAgIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJZCwgZmFsc2UpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJl
cGx5KG1lc3NhZ2VJZCwgbV9hdXRoZW50aWNhdG9yLT5pc0F2YWlsYWJsZSgpKTsKK30KKwordm9p
ZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6cmVxdWVzdFJlcGx5KGNvbnN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhJiBleGNlcHRpb24pCit7CisgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdl
czo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpSZXF1ZXN0UmVwbHkoZGF0YSwgZXhjZXB0
aW9uKSk7Cit9CisKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzVXNl
clZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1l
c3NhZ2VJZCwgYm9vbCByZXN1bHQpCit7CisgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdl
czo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseShtZXNzYWdlSWQsIHJlc3VsdCkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMTc1YWFjZTAzMDZiNmJkNWJjZDEyMzgzZWZiMmFhMDk0NWY1ZDk1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBMb2NhbEF1dGhlbnRpY2F0b3I7CisKK3N0cnVjdCBFeGNlcHRpb25EYXRhOwor
c3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CitzdHJ1Y3QgUHVibGlj
S2V5Q3JlZGVudGlhbERhdGE7CitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitj
bGFzcyBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5KTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eShXZWJQYWdlUHJveHkmKTsKKyAgICB+V2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkoKTsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ci4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOworCisgICAgLy8gUmVjZWl2ZXJzLgorICAgIHZvaWQgbWFrZUNyZWRl
bnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJik7CisgICAgdm9pZCBnZXRBc3NlcnRpb24oY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMmKTsKKyAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZSh1aW50NjRfdCBtZXNzYWdlSWQpOworCisgICAgLy8gU2VuZGVy
cy4KKyAgICB2b2lkIHJlcXVlc3RSZXBseShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKTsKKyAgICB2b2lkIGlzVXNl
clZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1l
c3NhZ2VJZCwgYm9vbCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMb2NhbEF1dGhlbnRpY2F0b3I+IG1fYXV0aGVudGlj
YXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdjNjY3NzZlNjFhMDViMWJh
ZDUyOTJkZDExNTIxM2FhZmEzYWJlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisjLworCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworbWVzc2FnZXMgLT4g
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgeworCisgICAgTWFrZUNyZWRlbnRpYWwo
VmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zIG9wdGlvbnMpOworICAgIEdldEFzc2VydGlvbihWZWN0b3I8dWludDhf
dD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9u
cyBvcHRpb25zKTsKKyAgICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFp
bGFibGUodWludDY0X3QgbWVzc2FnZUlkKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlMjgzMTBiYTYwYTkyODMzN2EwOGY3NjkzZDhl
ZGM5MTU2ZWJhNDM2Li4wMWIxYmJiYmVlZGY3ZTQzNWE5ZTc4NTgxYmYwNDM2N2M5Y2E4YWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIxMSw3ICsyMTEs
NyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotI2luY2x1ZGUgIldlYkNyZWRl
bnRpYWxzTWVzc2VuZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5oIgogI2VuZGlmCiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJ
VElPTklORykKQEAgLTQ2MSw3ICs0NjEsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk+KCp0aGlzKTsK
KyAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICAgICBtX3Byb2Nlc3Mt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CkBAIC03NzksNyArNzc5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcywgQVBJOjpOYXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBtX2Ny
ZWRlbnRpYWxzTWVzc2VuZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDcmVkZW50aWFsc01lc3Nl
bmdlclByb3h5PigqdGhpcyk7CisgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRp
ZgogCiAgICAgaW5pdGlhbGl6ZVdlYlBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYTk4ZmQ3MmVlZTRiZjdhMDUwODZiNTg1YWJiZTczYTFkNjYzNTVlYi4u
NDE5MzNhMTQ5Y2NkNWM5ZDNmZWI3ZTU4MzFiYTI0MDgzODFiOWJiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIzNiw3ICsyMzYsNyBAQCBjbGFzcyBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5OwogY2xhc3MgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Owog
Y2xhc3MgV2ViTmF2aWdhdGlvblN0YXRlOwogY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OwotY2xhc3MgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTsKK2NsYXNzIFdlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNz
IFdlYlVSTFNjaGVtZUhhbmRsZXI7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwpAQCAtMTkxNyw3ICsx
OTE3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eT4gbV9jcmVkZW50aWFs
c01lc3NlbmdlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHk+IG1fY3JlZGVudGlhbHNNZXNzZW5nZXI7CiAjZW5kaWYKIAogICAgIENhbGxiYWNr
TWFwIG1fY2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggN2JkYWM2MGZjMzJiNjA3MzdlNmVkMTFmNjE3Nzk0MTA1MGY3NTcw
YS4uM2Y5ZGE2OGVlNjY1OTYyYjBhNjhlMjMwZjU4OWU5Mzk3OTk5MmIxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDI4LDExICsx
MDI4LDExIEBACiAJCTUzQkE0N0QxMURDMkVGNUUwMDRERjRBRCAvKiBOZXR3b3JrRGF0YVRhc2tC
bG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlF
QjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5oICovOyB9OwogCQk1
M0RFQTM2NjFEREU0MjMxMDBFODI2NDggLyoganNvbi5ocHAgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0RFQTM2NTFEREU0MjJFMDBFODI2NDggLyoganNv
bi5ocHAgKi87IH07CiAJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBB
QjhGMjIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oICovOyB9OwotCQk1NzYw
ODI5QzIwMkQyQzNDMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTc2MDgyOTAyMDI5OEZCRDAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKLQkJNTc2MDgyOUQyMDJEMkM0MDAwMTE2Njc4IC8qIFdlYkNy
ZWRlbnRpYWxzTWVzc2VuZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4MjhGMjAyOThGQkQwMDExNjY3OCAvKiBXZWJDcmVkZW50
aWFsc01lc3Nlbmdlck1lc3NhZ2VzLmggKi87IH07Ci0JCTU3NjA4MjlFMjAyRDJDNDMwMDExNjY3
OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4MjlBMjAyQkVF
NUEwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKLQkJNTc2MDgyOUYyMDJEMkM0NjAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc2MDgyOUIyMDJCRUU1QTAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQk1N0I0QjQ2MDIwQjUwNEFDMDBENEFE
NzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNEI0NUUyMEI1MDRB
QjAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMu
aCAqLzsgfTsKKwkJNTdEQ0VENkUyMTQyRUU1RTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2QjIxNDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNTdEQ0VENkYy
MTQyRUU2MzAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2QTIx
NDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCAq
LzsgfTsKKwkJNTdEQ0VENzAyMTQyRUU2ODAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZDMjE0MkVBRjkwMDE2Qjg0NyAvKiBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTU3
RENFRDcxMjE0MkVFNkMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1N0RDRUQ2RDIxNDJFQUZBMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHlNZXNzYWdlcy5oICovOyB9OwogCQk1QzBCMTc3ODFFN0M4ODBFMDBFOTEyM0MgLyogTmV0
d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBCMTc3NDFFN0M4NzlDMDBFOTEyM0MgLyogTmV0
d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTVDMEIxNzc5MUU3
Qzg4MjEwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwQjE3NzYxRTdDODc5
QzAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJ
CTVDMTQyNkVEMUMyM0Y4MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMx
NDI2RTMxQzIzRjgwNTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmggKi87IH07CkBAIC0zMzY4LDE4ICszMzY4LDE4IEBACiAJCTU3MEFCOTAzMjBCMjU0MUMwMEI4
QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU2VjS2V5UHJveHlTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTc1MDc1QTcyMEFCNzYzNjAwNjkzRUE5IC8qIFdlYkNyZWRlbnRpYWxNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDcmVkZW50aWFsTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50aWNh
dGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IExvY2FsQXV0aGVudGljYXRpb24uZnJh
bWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Mb2NhbEF1dGhlbnRpY2F0
aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07Ci0JCTU3NjA4MjhCMjAyOTg1
NDIwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJDcmVkZW50aWFsc01lc3Nlbmdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
NzYwODI4QzIwMjk4NTQyMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI4RDIwMjk4N0U2MDAxMTY2NzggLyogV2ViQ3JlZGVu
dGlhbHNNZXNzZW5nZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjhGMjAyOThG
QkQwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOTAyMDI5OEZCRDAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyZWRl
bnRpYWxzTWVzc2VuZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTc2MDgyOTUyMDJCRDhCQTAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2Vu
Z2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI5NjIwMkJEOEJBMDAxMTY2Nzgg
LyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTc2MDgyOTkyMDJCREFFMjAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOUEyMDJCRUU1QTAw
MTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjlCMjAyQkVF
NUEwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NjA4MjhCMjAyOTg1NDIwMDExNjY3OCAvKiBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NjA4MjhDMjAy
OTg1NDIwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyOEQyMDI5ODdFNjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NjA4Mjk1
MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1NzYwODI5NjIwMkJEOEJBMDAxMTY2NzggLyogV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1NzYwODI5OTIwMkJEQUUyMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjRCNDVEMjBC
NTA0QUIwMEQ0QUQ3OSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29h
Lm1tOyBwYXRoID0gQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjRCNDVFMjBCNTA0QUIwMEQ0
QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENsaWVudENlcnRpZmljYXRlQXV0aGVudGlj
YXRpb25YUENDb25zdGFudHMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uL2NvY29hL0NsaWVudENl
cnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTdEQ0VENkEyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU3RENFRDZCMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdEQ0VENkMyMTQyRUFGOTAwMTZCODQ3IC8q
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTdEQ0VENkQyMTQyRUFGQTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzBCMTc3NDFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVh
bU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUMwQjE3NzUxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRT
dHJlYW1NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3Jr
U29ja2V0U3RyZWFtTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMw
QjE3NzYxRTdDODc5QzAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjcyMSwy
NCArNjcyMSwyNCBAQAogCQkJbmFtZSA9IEZyYW1ld29ya3M7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OwotCQk1NzYwODI4QTIwMjk4NEM5MDAxMTY2NzggLyogQ3JlZGVudGlhbE1h
bmFnZW1lbnQgKi8gPSB7CisJCTU3NjA4MjhBMjAyOTg0QzkwMDExNjY3OCAvKiBXZWJBdXRoZW50
aWNhdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
NTc2MDgyOEMyMDI5ODU0MjAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCAq
LywKLQkJCQk1NzYwODI4QjIwMjk4NTQyMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuaCAqLywKLQkJCQk1NzYwODI4RDIwMjk4N0U2MDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNN
ZXNzZW5nZXIubWVzc2FnZXMuaW4gKi8sCisJCQkJNTc2MDgyOEMyMDI5ODU0MjAwMTE2Njc4IC8q
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi8sCisJCQkJNTc2MDgyOEIyMDI5ODU0
MjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovLAorCQkJCTU3NjA4
MjhEMjAyOTg3RTYwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2Fn
ZXMuaW4gKi8sCiAJCQkpOwotCQkJcGF0aCA9IENyZWRlbnRpYWxNYW5hZ2VtZW50OworCQkJcGF0
aCA9IFdlYkF1dGhlbnRpY2F0aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
LQkJNTc2MDgyOTQyMDJCRDg0OTAwMTE2Njc4IC8qIENyZWRlbnRpYWxNYW5hZ2VtZW50ICovID0g
eworCQk1NzYwODI5NDIwMkJEODQ5MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRpb24gKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTU3NjA4Mjk2MjAyQkQ4
QkEwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmNwcCAqLywKLQkJCQk1
NzYwODI5NTIwMkJEOEJBMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5o
ICovLAotCQkJCTU3NjA4Mjk5MjAyQkRBRTIwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nl
bmdlclByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTU3NjA4Mjk2MjAyQkQ4QkEwMDExNjY3OCAv
KiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgKi8sCisJCQkJNTc2MDgyOTUy
MDJCRDhCQTAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggKi8s
CisJCQkJNTc2MDgyOTkyMDJCREFFMjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJKTsKLQkJCXBhdGggPSBDcmVkZW50aWFsTWFu
YWdlbWVudDsKKwkJCXBhdGggPSBXZWJBdXRoZW50aWNhdGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CiAJCX07CiAJCTU3QjRCNDVDMjBCNTA0OEIwMEQ0QUQ3OSAvKiBjb2NvYSAqLyA9
IHsKQEAgLTcwMzMsNyArNzAzMyw2IEBACiAJCQkJMUMwQTE5NDMxQzhGRjFBODAwRkUwRUJCIC8q
IEF1dG9tYXRpb24gKi8sCiAJCQkJNDFEMTI5RDgxRjNEMTAxNDAwRDE1RTQ3IC8qIENhY2hlICov
LAogCQkJCTdDNkU3MEY4MThCMkQ0N0UwMEYyNEUyRSAvKiBjb2NvYSAqLywKLQkJCQk1NzYwODI4
QTIwMjk4NEM5MDAxMTY2NzggLyogQ3JlZGVudGlhbE1hbmFnZW1lbnQgKi8sCiAJCQkJNTEyQTk3
NTQxODBERjkyNzAwMzlBMTQ5IC8qIERhdGFiYXNlcyAqLywKIAkJCQlCQ0FDQzQzQjE2QjI0QzVE
MDBCNkUwOTIgLyogRW50cnlQb2ludCAqLywKIAkJCQlFMTcwODc2RDE2RDZDQTcyMDBGOTkyMjYg
LyogRmlsZUFQSSAqLywKQEAgLTcwNDgsNiArNzA0Nyw3IEBACiAJCQkJMUE2RkI3QUExMUU2NEI0
OTAwREIxMzcxIC8qIFBsdWdpbnMgKi8sCiAJCQkJNTExOEU5OTgxRjI5NTI1OTAwM0VGOUY1IC8q
IFN0b3JhZ2UgKi8sCiAJCQkJMUFBRjA4QUExOTI2OTMwQjAwQjYzOTBDIC8qIFVzZXJDb250ZW50
ICovLAorCQkJCTU3NjA4MjhBMjAyOTg0QzkwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdGlvbiAq
LywKIAkJCQlCQzAzMkQ1RDEwRjQzNzIyMDA1OEMxNUEgLyogV2ViQ29yZVN1cHBvcnQgKi8sCiAJ
CQkJQkMwMzJENUUxMEY0MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2UgKi8sCiAJCQkJMUFBQzREREUx
NkIxQ0JGNjAwOTQyNUUzIC8qIFdlYlN0b3JhZ2UgKi8sCkBAIC03MTkzLDcgKzcxOTMsNiBAQAog
CQkJCTUxMkY1ODhEMTJBODgzNkYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbiAqLywKIAkJCQk5
OTU1QTZFODFDNzk4MDkwMDBFQjZBOTMgLyogQXV0b21hdGlvbiAqLywKIAkJCQkxQUJDM0RGMjE4
OTlFNDE1MDA0RjA2MjYgLyogQ29jb2EgKi8sCi0JCQkJNTc2MDgyOTQyMDJCRDg0OTAwMTE2Njc4
IC8qIENyZWRlbnRpYWxNYW5hZ2VtZW50ICovLAogCQkJCTFBQjdENEM3MTI4OEFBOUEwMENGRDA4
QyAvKiBEb3dubG9hZHMgKi8sCiAJCQkJNTE1QkUxN0IxRDU0RUY1QTAwREQ3QzY4IC8qIEdhbWVw
YWQgKi8sCiAJCQkJMkRBOTQ0QTgxODg0RTlBQjAwRUQ4NkRCIC8qIGlvcyAqLywKQEAgLTcyMDUs
NiArNzIwNCw3IEBACiAJCQkJMkQxNTUxQTkxRjVBOUI0MjAwMDZFM0ZFIC8qIFJlbW90ZUxheWVy
VHJlZSAqLywKIAkJCQk1MTdERDVCQjE4MERBN0M0MDA4MTY2MEIgLyogU3RvcmFnZSAqLywKIAkJ
CQkxQUFGMDg5RTE5MjY4MUFDMDBCNjM5MEMgLyogVXNlckNvbnRlbnQgKi8sCisJCQkJNTc2MDgy
OTQyMDJCRDg0OTAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0aW9uICovLAogCQkJCTFBNTNDMkEz
MUEzMjU2OTEwMDRFOEM3MCAvKiBXZWJzaXRlRGF0YSAqLywKIAkJCQkxQTQ0Qjk1ODE2QjczRjhD
MDBCN0JCRDggLyogV2ViU3RvcmFnZSAqLywKIAkJCQk3Q0QxMDJEOTE4NjY3NzA2MDBFRDQyOUQg
LyogQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oICovLApAQCAtODM0NCw2ICs4MzQ0LDEwIEBACiAJ
CQkJMUE2MDIyNEIxOEMxNkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmVNZXNzYWdlcy5o
ICovLAogCQkJCTFBOEU3RDNBMThDMTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlua1RhYmxlQ29u
dHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUE4RTdEM0IxOEMxNTE0OTAwNUE3
MDJBIC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZXMuaCAqLywKKwkJCQk1N0RD
RUQ2QjIxNDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk1N0RDRUQ2QTIxNDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLywKKwkJCQk1N0RDRUQ2QzIxNDJFQUY5
MDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAorCQkJCTU3RENFRDZEMjE0MkVBRkEwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUMwQTE5NTUxQzkwMDY4RjAw
RkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJ
CQkxQzBBMTk1NjFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdl
cy5oICovLAogCQkJCTFDMEExOTUxMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTgzNTYsMTAgKzgzNjAsNiBAQAog
CQkJCTMzMDkzNDQ0MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyTWVzc2FnZXMu
aCAqLywKIAkJCQkzMzA5MzQ0NTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkzMzA5MzQ0NjEzMTVCOTIyMDA5N0E3QkMg
LyogV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLywKLQkJCQk1NzYwODI5MDIwMjk4
RkJEMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAotCQkJCTU3NjA4MjhGMjAyOThGQkQwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nl
bmdlck1lc3NhZ2VzLmggKi8sCi0JCQkJNTc2MDgyOUEyMDJCRUU1QTAwMTE2Njc4IC8qIFdlYkNy
ZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAotCQkJCTU3NjA4
MjlCMjAyQkVFNUEwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2Fn
ZXMuaCAqLywKIAkJCQlDRDczQkE0ODEzMUFDRDhFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUNENzNCQTQ5MTMxQUNEOEUwMEVFREVE
MiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJQ0Q3M0JBNDUxMzFB
Q0M4ODAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLApAQCAtOTIyMyw2ICs5MjIzLDggQEAKIAkJCQkxQUY0Q0VGMDE4QkM0ODE4MDBCQzJE
MzQgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
OEU3RDNEMThDMTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRURBMTJFMzE1MkNEMUIzMDBEOUUwOEQgLyogV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0RDRUQ2RjIxNDJF
RTYzMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTU3RENFRDcxMjE0MkVFNkMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU1QTZF
QzFDNzk4MEMyMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTk5QzNBRTJEMURBREE2QUQwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1h
Y3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwQTE5NTgxQzkwMDY4RjAwRkUwRUJCIC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTI2Myw4ICs5
MjY1LDYgQEAKIAkJCQkzMzA5MzQ0QTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdl
clByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUREN0IyMTE0REMzOTYwMDVB
REFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1
ODlCMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk1NzYwODI5RDIwMkQyQzQwMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTc2MDgyOUYyMDJEMkM0NjAwMTE2Njc4IC8qIFdl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFBODNGNkQxQTVCNjNGRjAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU1MkNGNTUyMjBBMzVDM0EwMERBREEyNyAvKiBXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1NjhCOTFGMjBBM0FCMkYwMEUzQzg1
NiAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uaCBpbiBIZWFkZXJzICovLApAQCAt
MTA5MDAsNiArMTA5MDAsOCBAQAogCQkJCTI2ODQwNTUyMThCODZFRDYwMDIyQzM4QiAvKiBWaWV3
VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTYwMjI0QzE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThFN0QzQzE4QzE1MTQ5MDA1QTcwMkEgLyogVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTdEQ0VENkUyMTQyRUU1RTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1N0RDRUQ3MDIxNDJF
RTY4MDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMwQTE5NTcxQzkwMDY4RjAwRkUwRUJCIC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFDMEExOTUzMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMw
MEMyOTUwRCAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMTA5MDcsOCArMTA5MDksNiBAQAogCQkJCTMzMDkzNDQ3MTMxNUI5
MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMzMDkzNDQ5MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2Vy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODgyMTJC
NkFCMTAwRjQ5M0ZEIC8qIFdlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk1NzYwODI5QzIwMkQyQzNDMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTc2MDgyOUUyMDJEMkM0MzAw
MTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODkyMTJCNkFCMTAwRjQ5M0ZEIC8qIFdlYkV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENzNCQTRFMTMxQUNEQjcwMEVFREVEMiAvKiBXZWJG
dWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RDczQkE0NzEzMUFDQzlBMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3Jl
ZGVudGlhbHNNZXNzZW5nZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjc5
ZDdlZmUxZWJhMzE2MGRiZmM4ZDAxZGUzMjBlZTRkMWUxYTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVk
ZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhO
KQotCi0jaW5jbHVkZSAiV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlcy5oIgotI2luY2x1
ZGUgIldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldl
YlBhZ2UuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjpXZWJDcmVkZW50aWFsc01lc3NlbmdlcihXZWJQYWdl
JiB3ZWJQYWdlKQotICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCi17Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDcmVkZW50aWFsc01l
c3Nlbmdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlz
KTsKLX0KLQotV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6On5XZWJDcmVkZW50aWFsc01lc3Nlbmdl
cigpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KCp0aGlzKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6bWFrZUNyZWRlbnRp
YWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBXZWJDb3JlOjpDcmVhdGlvbkNvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICBhdXRvIG1lc3NhZ2VJZCA9IGFkZENyZWF0
aW9uQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgbV93ZWJQYWdlLnNl
bmQoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6Ok1ha2VDcmVkZW50aWFs
KG1lc3NhZ2VJZCwgaGFzaCwgb3B0aW9ucykpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVz
c2VuZ2VyOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFdlYkNv
cmU6OlJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgYXV0byBtZXNz
YWdlSWQgPSBhZGRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0g
ICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6
OkdldEFzc2VydGlvbihtZXNzYWdlSWQsIGhhc2gsIG9wdGlvbnMpKTsKLX0KLQotdm9pZCBXZWJD
cmVkZW50aWFsc01lc3Nlbmdlcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
QXZhaWxhYmxlKFdlYkNvcmU6OlF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQotewot
ICAgIGF1dG8gbWVzc2FnZUlkID0gYWRkUXVlcnlDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhh
bmRsZXIpKTsKLSAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViQ3JlZGVudGlhbHNNZXNz
ZW5nZXJQcm94eTo6SXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxl
KG1lc3NhZ2VJZCkpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjptYWtlQ3Jl
ZGVudGlhbFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBj
cmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpCi17
Ci0gICAgYXV0byBoYW5kbGVyID0gdGFrZUNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIobWVzc2Fn
ZUlkKTsKLSAgICBoYW5kbGVyKFdlYkNvcmU6OkNyZWF0aW9uUmV0dXJuQnVuZGxlKEFycmF5QnVm
ZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIEFy
cmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9i
amVjdC5zaXplKCkpKSk7Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6OmdldEFz
c2VydGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBj
cmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVz
ZXJIYW5kbGUpCi17Ci0gICAgYXV0byBoYW5kbGVyID0gdGFrZVJlcXVlc3RDb21wbGV0aW9uSGFu
ZGxlcihtZXNzYWdlSWQpOwotICAgIGhhbmRsZXIoV2ViQ29yZTo6QXNzZXJ0aW9uUmV0dXJuQnVu
ZGxlKEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElk
LnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRhdGEuZGF0YSgpLCBh
dXRoZW50aWNhdG9yRGF0YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5k
YXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUu
ZGF0YSgpLCB1c2VySGFuZGxlLnNpemUoKSkpKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01l
c3Nlbmdlcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVw
bHkodWludDY0X3QgbWVzc2FnZUlkLCBib29sIHJlc3VsdCkKLXsKLSAgICBhdXRvIGhhbmRsZXIg
PSB0YWtlUXVlcnlDb21wbGV0aW9uSGFuZGxlcihtZXNzYWdlSWQpOwotICAgIGhhbmRsZXIocmVz
dWx0KTsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ3JlZGVudGlh
bE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGNhN2U1MmU1NDE1YzNlM2NiZjVmM2Y0ZDU4
NGI0OTFjODJjMmZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVk
ZW50aWFsc01lc3Nlbmdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFdl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNyZWRlbnRpYWxz
TWVzc2VuZ2VyLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLXB1YmxpYzoKLSAgICBl
eHBsaWNpdCBXZWJDcmVkZW50aWFsc01lc3NlbmdlcihXZWJQYWdlJik7Ci0gICAgfldlYkNyZWRl
bnRpYWxzTWVzc2VuZ2VyKCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gV2ViQ29yZTo6Q3JlZGVudGlh
bHNNZXNzZW5nZXIKLSAgICAvLyBTZW5kZXJzLgotICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyYsIFdlYkNvcmU6OkNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBj
b25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJDb3Jl
OjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBpc1VzZXJWZXJp
ZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKLQotICAgIC8vIFJlY2VpdmVycy4KLSAgICB2b2lkIG1ha2VD
cmVkZW50aWFsUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKSBmaW5hbDsKLSAgICB2b2lkIGlzVXNlclZl
cmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1lc3Nh
Z2VJZCwgYm9vbCkgZmluYWw7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KLSAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOwotCi0gICAgV2ViUGFnZSYgbV93ZWJQYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVz
c2VuZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxN
YW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhNmM4ZWVjYTdjNDczNDQwMTg0ZmYxOTkxOTA5ZjMyNWJjNmU3
ZDFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01l
c3Nlbmdlci5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0jLwotCi0jaWYgRU5BQkxFKFdFQl9BVVRI
TikKLQotbWVzc2FnZXMgLT4gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIgewotCi0gICAgRXhjZXB0
aW9uUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YSBleGNlcHRpb24pOwotICAgIE1ha2VDcmVkZW50aWFsUmVwbHkodWludDY0X3QgbWVzc2FnZUlk
LCBWZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkLCBWZWN0b3I8dWludDhfdD4gYXR0ZXN0YXRp
b25PYmplY3QpOwotICAgIEdldEFzc2VydGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgVmVj
dG9yPHVpbnQ4X3Q+IGNyZWRlbnRpYWxJZCwgVmVjdG9yPHVpbnQ4X3Q+IGF1dGhlbnRpY2F0b3JE
YXRhLCBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4gdXNlckhhbmRs
ZSk7Ci0gICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVw
bHkodWludDY0X3QgbWVzc2FnZUlkLCBib29sIHJlc3VsdCk7Ci19Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MGJhNGM1N2M2NDE0YTg3OGFmMjdiZGI1ODNhMDdlNWE0MjRhOGYyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIK
KworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcihXZWJQYWdlJiB3ZWJQYWdlKQorICAgIDog
bV93ZWJQYWdlKHdlYlBhZ2UpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlLnBhZ2VJRCgpLCAqdGhpcyk7Cit9CisKK1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6fldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpCit7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlz
KTsKK30KKwordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFs
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRp
b25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBpZiAoIXNldFJlcXVlc3RDb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGhhbmRsZXIpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJQYWdl
LnNlbmQoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpNYWtlQ3Jl
ZGVudGlhbChoYXNoLCBvcHRpb25zKSk7Cit9CisKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFdlYkNv
cmU6OlJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit7CisgICAgaWYgKCFzZXRS
ZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eTo6R2V0QXNzZXJ0aW9uKGhhc2gsIG9wdGlvbnMpKTsKK30KKwordm9pZCBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZShXZWJDb3JlOjpRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikK
K3sKKyAgICBhdXRvIG1lc3NhZ2VJZCA9IGFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShoYW5kbGVyKSk7CisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5OjpJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JB
dmFpbGFibGUobWVzc2FnZUlkKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmJjNmI2NmFjNTc4NDY5Y2UzODVhOTk3YmE3NjUw
NTQyMzc3ZjRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCkBAIC0wLDAgKzEs
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4p
CisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViUGFnZTsKKworY2xhc3MgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yKFdlYlBhZ2UmKTsKKyAgICB+V2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yKCk7CisKK3ByaXZhdGU6CisgICAgLy8gV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50CisgICAgLy8gU2VuZGVycy4KKyAgICB2b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CisgICAgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25z
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpS
ZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBpc1VzZXJWZXJpZnlp
bmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgorICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7CisKKyAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41M2VjMTkzNTE5OWZmYmQ5M2U2YzViOWYzOTY2MjUyMjc1ZmFmZWUxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisjIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIy8KKworI2lmIEVOQUJMRShXRUJfQVVUSE4p
CisKK21lc3NhZ2VzIC0+IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvciB7CisKKyAgICBSZXF1
ZXN0UmVwbHkoc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0
cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbik7CisgICAgSXNVc2VyVmVyaWZ5
aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlk
LCBib29sIHJlc3VsdCk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0NGRlZmYxMzQwZjU5YWQ5NzAxZTkzYjMyYTk0ZDRm
NmQ3NjFhNjQwLi5lYjk2NTg4ZWMwY2YwZDM1MDc0ZmQ1YWYzZmUxZDJhMjM3Yjk0MGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjc4LDgg
KzI3OCw4IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0jaW5jbHVkZSAiV2Vi
Q3JlZGVudGlhbHNNZXNzZW5nZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmg+CisjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaD4KICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTM5Miw5ICszOTIsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAg
LCBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24ocGFyYW1ldGVycy51c2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKQogICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7
IHBhcmFtZXRlcnMub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfQogICAgICwgbV9jcHVM
aW1pdChwYXJhbWV0ZXJzLmNwdUxpbWl0KQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgLCBt
X2NyZWRlbnRpYWxzTWVzc2VuZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ3JlZGVudGlhbHNNZXNz
ZW5nZXI+KCp0aGlzKSkKLSNlbmRpZgogewogICAgIEFTU0VSVChtX3BhZ2VJRCk7CiAKQEAgLTQ0
OCw2ICs0NDUsMTAgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBh
eW1lbnRDb29yZGluYXRvckNsaWVudCA9IG5ldyBXZWJQYXltZW50Q29vcmRpbmF0b3IoKnRoaXMp
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHBhZ2VDb25maWd1cmF0aW9u
LmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yPigqdGhpcyk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBM
SUNBVElPTl9NQU5JRkVTVCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbk1hbmlm
ZXN0ID0gcGFyYW1ldGVycy5hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCkBAIC02MDUsMTAg
KzYwNiw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
V0VCX0FVVEhOKQotICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzaW5nbGV0b24o
KS5zZXRNZXNzZW5nZXIoKm1fY3JlZGVudGlhbHNNZXNzZW5nZXIpOwotI2VuZGlmCi0KICAgICBm
b3IgKGF1dG8gaXRlcmF0b3IgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzKQogICAgICAg
ICByZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoaXRlcmF0b3IudmFsdWUsIGl0ZXJhdG9yLmtleSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNDQ5
OTQ4MDI5M2M1ZTQyZWFlZTg3Yjc1YTQzNWVlOGQxZmU1MDhlLi4xZWJiNmQ5ZTI0NjI0MDNjMDc3
YzU5YjgyOTE0NTdhZmUyY2UzMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC0yMjYsNyArMjI2LDYgQEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOwogY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKIGNsYXNzIFdlYldoZWVsRXZl
bnQ7CiBjbGFzcyBXZWJUb3VjaEV2ZW50OwotY2xhc3MgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI7
CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIAogZW51bSBjbGFzcyBEZXZpY2VB
Y2Nlc3NTdGF0ZTsKQEAgLTE3MzUsMTAgKzE3MzQsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
dWludDY0X3QsIHVpbnQ2NF90PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFw
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDcmVkZW50aWFsc01lc3Nlbmdlcj4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsKLSNlbmRpZgot
CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZGViYzI5NzljNjYzNGI3NjYx
YTQ4NThjMTVhMmI2NDc1M2RhN2Y4Li4wYjUxNGRjYzUyZjMxYzk2Y2VmMTk4N2ExNTc0Mzg5NTVm
MjhmZTM1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDktMDggIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIFBvbGlzaCBBdXRoZW50aWNhdG9yTWFuYWdl
ciBhbmQgcmVuYW1lIGl0IHRvIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5Mjc3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80NDExNTkzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0xvY2FsQXV0aGVudGljYXRv
ci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTA5LTAyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFR1cm4gb24gQVJD
IGZvciBXZWJLaXRUZXN0UnVubmVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2lvcy9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggODU1YjE0ZmNjZGM3NGUzOTU5ZjVkMTJk
MTQ0MjE0OWUzMzEzZjJkNy4uY2Q2M2Q3MzlmNjRlNDJjNmRhMTZiZTdlN2ExNjhlNjg5MmJkN2Qz
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvTG9jYWxBdXRoZW50
aWNhdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0xvY2FsQXV0aGVu
dGljYXRvci5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9FeGNlcHRpb25E
YXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsQXV0aGVudGljYXRvci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1B1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KQEAgLTI2NiwxNiArMjY3LDE3IEBAIFRFU1Qo
TG9jYWxBdXRoZW50aWNhdG9yLCBNYWtlQ3JlZGVudGlhbE5vdFN1cHBvcnRlZFB1YktleUNyZWRQ
YXJhbXMpCiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVz
dExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVz
dExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBF
WFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0
byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RT
dXBwb3J0ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIlRo
ZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJv
dmlkZWQgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMuIiwgZXhjZXB0aW9uLm1lc3NhZ2Uu
YXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNr
ID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihy
ZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikg
eworICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdFN1cHBvcnRlZEVycm9yLCBleGNl
cHRpb24uY29kZSk7CisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoIlRoZSBwbGF0Zm9ybSBhdHRh
Y2hlZCBhdXRoZW50aWNhdG9yIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5
Q3JlZGVudGlhbFBhcmFtZXRlcnMuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkp
OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0
aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUo
Y2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRv
ci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2sp
KTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC0yOTQsMTgg
KzI5NiwxOSBAQCBURVNUKExvY2FsQXV0aGVudGljYXRvciwgTWFrZUNyZWRlbnRpYWxFeGNsdWRl
Q3JlZGVudGlhbHNNYXRjaCkKIAogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZXN0TG9jYWxBdXRoZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxUZXN0TG9jYWxBdXRoZW50aWNhdG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBb
JmRvbmVdIChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKSB7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7
Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFj
ayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0
YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2Vw
dGlvbi5jb2RlKTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJBdCBsZWFzdCBvbmUgY3JlZGVudGlh
bCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUg
cGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iLCBleGNlcHRpb24ubWVzc2FnZS5hc2Np
aSgpLmRhdGEoKSk7Ci0gICAgICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsK
KyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAg
ICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7
CisgICAgICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRp
b24uY29kZSk7CisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoIkF0IGxlYXN0IG9uZSBjcmVkZW50
aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRo
ZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFz
Y2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0aGVudGljYXRvci0+
bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRl
bnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC0zMTksMTYgKzMyMiwxNyBAQCBU
RVNUKExvY2FsQXV0aGVudGljYXRvciwgTWFrZUNyZWRlbnRpYWxCaW9tZXRyaWNzTm90RW5yb2xs
ZWQpCiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExv
Y2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExv
Y2FsQXV0aGVudGljYXRvcj4oKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBFWFBF
Q1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0byBl
eGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEm
IGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxv
d2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJObyBhdmFs
aWFibGUgYXV0aGVudGljYXRvcnMuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkp
OwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFy
aWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25z
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0o
Y29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAg
RVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAg
ICAgICAgICAgRVhQRUNUX1NUUkVRKCJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIiwgZXhj
ZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwo
eyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVh
dGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC0zNDMsMTYgKzM0NywxNyBAQCBURVNUKExvY2FsQXV0aGVu
dGljYXRvciwgTWFrZUNyZWRlbnRpYWxCaW9tZXRyaWNzTm90QXV0aGVudGljYXRlZCkKIAogICAg
IGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxBdXRoZW50
aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxBdXRoZW50
aWNhdG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0
cnVlKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNh
bGxiYWNrID0gWyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwg
ZXhjZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIkNvdWxkbid0IGdldCB1c2Vy
IGNvbnNlbnQuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1
bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVl
KTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdl
YkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQ
RUNUX1NUUkVRKCJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiIsIGV4Y2VwdGlvbi5tZXNzYWdl
LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsK
ICAgICB9OwotICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25P
cHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOwor
ICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OwogfQpAQCAtMzY4LDE2ICszNzMsMTcgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VD
cmVkZW50aWFsTm90QXR0ZXN0YXRlZCkKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKICAgICBhdXRoZW50aWNhdG9y
LT5zZXRGYWlsdXJlRmxhZygpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBW
ZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVD
VF9GQUxTRSh0cnVlKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4
Y2VwdGlvbkNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYg
ZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6OlVua25vd25F
cnJvciwgZXhjZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIlVua25vd24gaW50
ZXJuYWwgZXJyb3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwotICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJD
b3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiBy
ZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0
cnVlKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0VR
KFdlYkNvcmU6OlVua25vd25FcnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQ
RUNUX1NUUkVRKCJVbmtub3duIGludGVybmFsIGVycm9yLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFz
Y2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKICAg
ICB9OwotICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRp
b25zLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOworICAg
IGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwog
fQpAQCAtMzk5LDIyICs0MDUsMjMgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVk
ZW50aWFsRGVsZXRlT2xkZXJDcmVkZW5pdGFsKQogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxBdXRoZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxBdXRoZW50aWNhdG9yPigpOwogICAgIGF1dGhlbnRp
Y2F0b3ItPnNldEZhaWx1cmVGbGFnKCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpIHsKLSAgICAgICAg
RVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1
dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhJikgbXV0YWJsZSB7Ci0gICAgICAgIE5TRGljdGlvbmFyeSAqcXVlcnkgPSBAewotICAgICAg
ICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgICAgIChpZClr
U2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgICAg
ICAoaWQpa1NlY0F0dHJMYWJlbDogdGVzdFJwSWQsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJB
cHBsaWNhdGlvblRhZzogW05TRGF0YSBkYXRhV2l0aEJ5dGVzOnRlc3RVc2VyaGFuZGxlIGxlbmd0
aDpzaXplb2YodGVzdFVzZXJoYW5kbGUpXSwKLSAgICAgICAgfTsKLSAgICAgICAgT1NTdGF0dXMg
c3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1
ZXJ5LCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0VRKGVyclNlY0l0ZW1Ob3RGb3VuZCwgc3RhdHVz
KTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZh
cmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29u
c3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgICAgICBFWFBF
Q1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZd
KGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAg
IE5TRGljdGlvbmFyeSAqcXVlcnkgPSBAeworICAgICAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6
IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6
IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKKyAgICAgICAgICAgICAgICAoaWQpa1NlY0F0
dHJMYWJlbDogdGVzdFJwSWQsCisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRp
b25UYWc6IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp0ZXN0VXNlcmhhbmRsZSBsZW5ndGg6c2l6ZW9m
KHRlc3RVc2VyaGFuZGxlKV0sCisgICAgICAgICAgICB9OworICAgICAgICAgICAgT1NTdGF0dXMg
c3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1
ZXJ5LCBOVUxMKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJTZWNJdGVtTm90Rm91bmQsIHN0
YXR1cyk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKLSAg
ICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbCh7IH0sIGNyZWF0aW9uT3B0aW9ucywgV1RG
TW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsKKyAgICBhdXRoZW50
aWNhdG9yLT5tYWtlQ3JlZGVudGlhbCh7IH0sIGNyZWF0aW9uT3B0aW9ucywgV1RGTW92ZShjYWxs
YmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KQEAgLTQz
MiwxMDMgKzQzOSwxMDkgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFs
UGFzc2VkV2l0aFNlbGZBdHRlc3RhdGlvbikKIAogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxBdXRoZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxBdXRoZW50aWNhdG9yPigpOwotICAgIGF1dG8gY2Fs
bGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamV0KSB7Ci0gICAgICAgIC8vIENoZWNr
IEtleWNoYWluCi0gICAgICAgIE5TRGljdGlvbmFyeSAqcXVlcnkgPSBAewotICAgICAgICAgICAg
KGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0
cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgICAgICAoaWQp
a1NlY0F0dHJMYWJlbDogdGVzdFJwSWQsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNh
dGlvbkxhYmVsOiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRT
dHJpbmc6dGVzdENyZWRlbnRpYWxJZEJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5n
SWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0
ckFwcGxpY2F0aW9uVGFnOiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6dGVzdFVzZXJoYW5kbGUgbGVu
Z3RoOnNpemVvZih0ZXN0VXNlcmhhbmRsZSldLAotICAgICAgICB9OwotICAgICAgICBPU1N0YXR1
cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
cXVlcnksIE5VTEwpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdHVzKTsKLQotICAgICAgICAv
LyBDaGVjayBDcmVkZW50aWFsIElECi0gICAgICAgIEVYUEVDVF9UUlVFKFdURjo6YmFzZTY0RW5j
b2RlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpID09IHRlc3RDcmVk
ZW50aWFsSWRCYXNlNjQpOwotCi0gICAgICAgIC8vIENoZWNrIEF0dGVzdGF0aW9uIE9iamVjdAot
ICAgICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0TWFwID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVh
ZChhdHRlc3RhdGlvbk9iamV0KTsKLSAgICAgICAgQVNTRVJUX1RSVUUoISFhdHRlc3RhdGlvbk9i
amVjdE1hcCk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgQXV0aGVudGljYXRvciBEYXRhLgotICAgICAg
ICBhdXRvJiBhdXRoRGF0YSA9IGF0dGVzdGF0aW9uT2JqZWN0TWFwLT5nZXRNYXAoKS5maW5kKGNi
b3I6OkNCT1JWYWx1ZSgiYXV0aERhdGEiKSktPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7Ci0gICAg
ICAgIHNpemVfdCBwb3MgPSAwOwotICAgICAgICB1aW50OF90IGV4cGVjdGVkUnBJZEhhc2hbXSA9
IHsKLSAgICAgICAgICAgIDB4NDksIDB4OTYsIDB4MGQsIDB4ZTUsIDB4ODgsIDB4MGUsIDB4OGMs
IDB4NjgsCi0gICAgICAgICAgICAweDc0LCAweDM0LCAweDE3LCAweDBmLCAweDY0LCAweDc2LCAw
eDYwLCAweDViLAotICAgICAgICAgICAgMHg4ZiwgMHhlNCwgMHhhZSwgMHhiOSwgMHhhMiwgMHg4
NiwgMHgzMiwgMHhjNywKLSAgICAgICAgICAgIDB4OTksIDB4NWMsIDB4ZjMsIDB4YmEsIDB4ODMs
IDB4MWQsIDB4OTcsIDB4NjMKLSAgICAgICAgfTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNt
cChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkUnBJZEhhc2gsIHNpemVvZihleHBlY3Rl
ZFJwSWRIYXNoKSkpOwotICAgICAgICBwb3MgKz0gc2l6ZW9mKGV4cGVjdGVkUnBJZEhhc2gpOwot
Ci0gICAgICAgIC8vIEZMQUdTCi0gICAgICAgIEVYUEVDVF9FUSg2OSwgYXV0aERhdGFbcG9zXSk7
Ci0gICAgICAgIHBvcysrOwotCi0gICAgICAgIHVpbnQzMl90IGNvdW50ZXIgPSAtMTsKLSAgICAg
ICAgbWVtY3B5KCZjb3VudGVyLCBhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIHNpemVvZih1aW50MzJf
dCkpOwotICAgICAgICBFWFBFQ1RfRVEoMHUsIGNvdW50ZXIpOwotICAgICAgICBwb3MgKz0gc2l6
ZW9mKHVpbnQzMl90KTsKLQotICAgICAgICB1aW50OF90IGV4cGVjdGVkQUFHVUlEW10gPSB7Ci0g
ICAgICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LAotICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMAotICAgICAgICB9OwotICAgICAgICBFWFBFQ1RfRkFMU0UobWVtY21wKGF1dGhEYXRhLmRh
dGEoKSArIHBvcywgZXhwZWN0ZWRBQUdVSUQsIHNpemVvZihleHBlY3RlZEFBR1VJRCkpKTsKLSAg
ICAgICAgcG9zICs9IHNpemVvZihleHBlY3RlZEFBR1VJRCk7Ci0KLSAgICAgICAgdWludDE2X3Qg
bCA9IC0xOwotICAgICAgICBtZW1jcHkoJmwsIGF1dGhEYXRhLmRhdGEoKSArIHBvcywgc2l6ZW9m
KHVpbnQxNl90KSk7Ci0gICAgICAgIEVYUEVDVF9FUSgyMHUsIGwpOwotICAgICAgICBwb3MgKz0g
c2l6ZW9mKHVpbnQxNl90KTsKLQotICAgICAgICBFWFBFQ1RfRkFMU0UobWVtY21wKGF1dGhEYXRh
LmRhdGEoKSArIHBvcywgY3JlZGVudGlhbElkLmRhdGEoKSwgbCkpOwotICAgICAgICBwb3MgKz0g
bDsKLQotICAgICAgICAvLyBDcmVkZW50aWFsIFB1YmxpYyBLZXkKLSAgICAgICAgLy8gRklYTUUo
MTgzNTM2KTogVGhlIENCT1IgcmVhZGVyIGRvZXNuJ3Qgc3VwcG9ydCBuZWdhdGl2ZSBpbnRlZ2Vy
IGFzIG1hcCBrZXkuIFRodXMgd2UgY291bGRuJ3QgdXRpbHppZSBpdC4KLSAgICAgICAgRVhQRUNU
X1NUUkVRKCJwUUVDQXlZZ0FTRllJRGovenhTa3pLZ2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pG
L1FtMTc0OUlsZ2dWQkpQZ3FVSXdmaFdISjkxbmI3VVBINzZjMCtXRk96WktzbFB5eUZzZTRnPSIs
IFdURjo6YmFzZTY0RW5jb2RlKGF1dGhEYXRhLmRhdGEoKSArIHBvcywgYXV0aERhdGEuc2l6ZSgp
IC0gcG9zKS5hc2NpaSgpLmRhdGEoKSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgU2VsZiBBdHRlc3Rh
dGlvbgotICAgICAgICBFWFBFQ1RfU1RSRVEoIkFwcGxlIiwgYXR0ZXN0YXRpb25PYmplY3RNYXAt
PmdldE1hcCgpLmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJmbXQiKSktPnNlY29uZC5nZXRTdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSk7Ci0KLSAgICAgICAgYXV0byYgYXR0U3RtdCA9IGF0dGVzdGF0aW9u
T2JqZWN0TWFwLT5nZXRNYXAoKS5maW5kKGNib3I6OkNCT1JWYWx1ZSgiYXR0U3RtdCIpKS0+c2Vj
b25kLmdldE1hcCgpOwotICAgICAgICBFWFBFQ1RfRVEoQ09TRTo6RVMyNTYsIGF0dFN0bXQuZmlu
ZChjYm9yOjpDQk9SVmFsdWUoImFsZyIpKS0+c2Vjb25kLmdldE5lZ2F0aXZlKCkpOwotCi0gICAg
ICAgIGF1dG8mIHNpZyA9IGF0dFN0bXQuZmluZChjYm9yOjpDQk9SVmFsdWUoInNpZyIpKS0+c2Vj
b25kLmdldEJ5dGVTdHJpbmcoKTsKLSAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gZ2V0VGVzdEtl
eSgpOwotICAgICAgICBFWFBFQ1RfVFJVRShTZWNLZXlWZXJpZnlTaWduYXR1cmUoU2VjS2V5Q29w
eVB1YmxpY0tleShwcml2YXRlS2V5LmdldCgpKSwga1NlY0tleUFsZ29yaXRobUVDRFNBU2lnbmF0
dXJlTWVzc2FnZVg5NjJTSEEyNTYsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmF1dGhEYXRhLmRhdGEoKSBsZW5ndGg6YXV0aERhdGEuc2l6ZSgpXSwgKF9fYnJpZGdl
IENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6c2lnLmRhdGEoKSBsZW5ndGg6c2lnLnNp
emUoKV0sIE5VTEwpKTsKLQotICAgICAgICAvLyBDaGVjayBjZXJ0aWZpY2F0ZXMKLSAgICAgICAg
YXV0byYgeDVjID0gYXR0U3RtdC5maW5kKGNib3I6OkNCT1JWYWx1ZSgieDVjIikpLT5zZWNvbmQu
Z2V0QXJyYXkoKTsKLSAgICAgICAgYXV0byYgYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZURhdGEgPSB4
NWNbMF0uZ2V0Qnl0ZVN0cmluZygpOwotICAgICAgICBhdXRvIGF0dGVzdGF0aW9uQ2VydGlmaWNh
dGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoTlVMTCwgKF9fYnJpZGdl
IENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZURh
dGEuZGF0YSgpIGxlbmd0aDphdHRlc3RhdGlvbkNlcnRpZmljYXRlRGF0YS5zaXplKCldKSk7Ci0g
ICAgICAgIENGU3RyaW5nUmVmIGNvbW1vbk5hbWUgPSBudWxscHRyOwotICAgICAgICBzdGF0dXMg
PSBTZWNDZXJ0aWZpY2F0ZUNvcHlDb21tb25OYW1lKGF0dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0
KCksICZjb21tb25OYW1lKTsKLSAgICAgICAgYXV0byByZXRhaW5Db21tb25OYW1lID0gYWRvcHRD
Rihjb21tb25OYW1lKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMpOwotICAgICAgICBFWFBFQ1Rf
U1RSRVEoIjAwMDA4MDEwLTAwMEE0OUEyMzBBMDIxM0EiLCBbKE5TU3RyaW5nICopY29tbW9uTmFt
ZSBjU3RyaW5nVXNpbmdFbmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXSk7Ci0KLSAgICAg
ICAgYXV0byYgYXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZURhdGEgPSB4NWNbMV0uZ2V0
Qnl0ZVN0cmluZygpOwotICAgICAgICBhdXRvIGF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNh
dGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoTlVMTCwgKF9fYnJpZGdl
IENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0
aWZpY2F0ZURhdGEuZGF0YSgpIGxlbmd0aDphdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRl
RGF0YS5zaXplKCldKSk7Ci0gICAgICAgIGNvbW1vbk5hbWUgPSBudWxscHRyOwotICAgICAgICBz
dGF0dXMgPSBTZWNDZXJ0aWZpY2F0ZUNvcHlDb21tb25OYW1lKGF0dGVzdGF0aW9uSXNzdWluZ0NB
Q2VydGlmaWNhdGUuZ2V0KCksICZjb21tb25OYW1lKTsKLSAgICAgICAgcmV0YWluQ29tbW9uTmFt
ZSA9IGFkb3B0Q0YoY29tbW9uTmFtZSk7Ci0gICAgICAgIEFTU0VSVCghc3RhdHVzKTsKLSAgICAg
ICAgRVhQRUNUX1NUUkVRKCJCYXNpYyBBdHRlc3RhdGlvbiBVc2VyIFN1YiBDQTEiLCBbKE5TU3Ry
aW5nICopY29tbW9uTmFtZSBjU3RyaW5nVXNpbmdFbmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29k
aW5nXSk7Ci0KLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVl
OwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRy
dWUpOwotICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAg
IFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbERhdGEmIGRhdGEpIHsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjcmVkZW50aWFs
SWQ7CisgICAgICAgICAgICBjcmVkZW50aWFsSWQuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KGRhdGEucmF3SWQtPmRhdGEoKSksIGRhdGEucmF3SWQtPmJ5dGVMZW5ndGgoKSk7Cisg
ICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYXR0ZXN0YXRpb25PYmplY3Q7CisgICAgICAgICAg
ICBhdHRlc3RhdGlvbk9iamVjdC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0
YS5hdHRlc3RhdGlvbk9iamVjdC0+ZGF0YSgpKSwgZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+Ynl0
ZUxlbmd0aCgpKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgS2V5Y2hhaW4KKyAgICAgICAgICAg
IE5TRGljdGlvbmFyeSAqcXVlcnkgPSBAeworICAgICAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6
IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6
IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKKyAgICAgICAgICAgICAgICAoaWQpa1NlY0F0
dHJMYWJlbDogdGVzdFJwSWQsCisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRp
b25MYWJlbDogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3Ry
aW5nOnRlc3RDcmVkZW50aWFsSWRCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0ln
bm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0KCksCisgICAgICAgICAgICAgICAgKGlkKWtTZWNB
dHRyQXBwbGljYXRpb25UYWc6IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp0ZXN0VXNlcmhhbmRsZSBs
ZW5ndGg6c2l6ZW9mKHRlc3RVc2VyaGFuZGxlKV0sCisgICAgICAgICAgICB9OworICAgICAgICAg
ICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKXF1ZXJ5LCBOVUxMKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0dXMp
OworCisgICAgICAgICAgICAvLyBDaGVjayBDcmVkZW50aWFsIElECisgICAgICAgICAgICBFWFBF
Q1RfVFJVRShXVEY6OmJhc2U2NEVuY29kZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFs
SWQuc2l6ZSgpKSA9PSB0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KTsKKworICAgICAgICAgICAgLy8g
Q2hlY2sgQXR0ZXN0YXRpb24gT2JqZWN0CisgICAgICAgICAgICBhdXRvIGF0dGVzdGF0aW9uT2Jq
ZWN0TWFwID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChhdHRlc3RhdGlvbk9iamVjdCk7CisgICAg
ICAgICAgICBBU1NFUlRfVFJVRSghIWF0dGVzdGF0aW9uT2JqZWN0TWFwKTsKKworICAgICAgICAg
ICAgLy8gQ2hlY2sgQXV0aGVudGljYXRvciBEYXRhLgorICAgICAgICAgICAgYXV0byYgYXV0aERh
dGEgPSBhdHRlc3RhdGlvbk9iamVjdE1hcC0+Z2V0TWFwKCkuZmluZChjYm9yOjpDQk9SVmFsdWUo
ImF1dGhEYXRhIikpLT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOworICAgICAgICAgICAgc2l6ZV90
IHBvcyA9IDA7CisgICAgICAgICAgICB1aW50OF90IGV4cGVjdGVkUnBJZEhhc2hbXSA9IHsKKyAg
ICAgICAgICAgICAgICAweDQ5LCAweDk2LCAweDBkLCAweGU1LCAweDg4LCAweDBlLCAweDhjLCAw
eDY4LAorICAgICAgICAgICAgICAgIDB4NzQsIDB4MzQsIDB4MTcsIDB4MGYsIDB4NjQsIDB4NzYs
IDB4NjAsIDB4NWIsCisgICAgICAgICAgICAgICAgMHg4ZiwgMHhlNCwgMHhhZSwgMHhiOSwgMHhh
MiwgMHg4NiwgMHgzMiwgMHhjNywKKyAgICAgICAgICAgICAgICAweDk5LCAweDVjLCAweGYzLCAw
eGJhLCAweDgzLCAweDFkLCAweDk3LCAweDYzCisgICAgICAgICAgICB9OworICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkUnBJZEhh
c2gsIHNpemVvZihleHBlY3RlZFJwSWRIYXNoKSkpOworICAgICAgICAgICAgcG9zICs9IHNpemVv
ZihleHBlY3RlZFJwSWRIYXNoKTsKKworICAgICAgICAgICAgLy8gRkxBR1MKKyAgICAgICAgICAg
IEVYUEVDVF9FUSg2OSwgYXV0aERhdGFbcG9zXSk7CisgICAgICAgICAgICBwb3MrKzsKKworICAg
ICAgICAgICAgdWludDMyX3QgY291bnRlciA9IC0xOworICAgICAgICAgICAgbWVtY3B5KCZjb3Vu
dGVyLCBhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAg
ICAgRVhQRUNUX0VRKDB1LCBjb3VudGVyKTsKKyAgICAgICAgICAgIHBvcyArPSBzaXplb2YodWlu
dDMyX3QpOworCisgICAgICAgICAgICB1aW50OF90IGV4cGVjdGVkQUFHVUlEW10gPSB7CisgICAg
ICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwKKyAgICAgICAgICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwCisgICAgICAgICAgICB9OworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNt
cChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkQUFHVUlELCBzaXplb2YoZXhwZWN0ZWRB
QUdVSUQpKSk7CisgICAgICAgICAgICBwb3MgKz0gc2l6ZW9mKGV4cGVjdGVkQUFHVUlEKTsKKwor
ICAgICAgICAgICAgdWludDE2X3QgbCA9IC0xOworICAgICAgICAgICAgbWVtY3B5KCZsLCBhdXRo
RGF0YS5kYXRhKCkgKyBwb3MsIHNpemVvZih1aW50MTZfdCkpOworICAgICAgICAgICAgRVhQRUNU
X0VRKDIwdSwgbCk7CisgICAgICAgICAgICBwb3MgKz0gc2l6ZW9mKHVpbnQxNl90KTsKKworICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGNyZWRl
bnRpYWxJZC5kYXRhKCksIGwpKTsKKyAgICAgICAgICAgIHBvcyArPSBsOworCisgICAgICAgICAg
ICAvLyBDcmVkZW50aWFsIFB1YmxpYyBLZXkKKyAgICAgICAgICAgIC8vIEZJWE1FKDE4MzUzNik6
IFRoZSBDQk9SIHJlYWRlciBkb2Vzbid0IHN1cHBvcnQgbmVnYXRpdmUgaW50ZWdlciBhcyBtYXAg
a2V5LiBUaHVzIHdlIGNvdWxkbid0IHV0aWx6aWUgaXQuCisgICAgICAgICAgICBFWFBFQ1RfU1RS
RVEoInBRRUNBeVlnQVNGWUlEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBnRnBzakYvUW0x
NzQ5SWxnZ1ZCSlBncVVJd2ZoV0hKOTFuYjdVUEg3NmMwK1dGT3paS3NsUHl5RnNlNGc9IiwgV1RG
OjpiYXNlNjRFbmNvZGUoYXV0aERhdGEuZGF0YSgpICsgcG9zLCBhdXRoRGF0YS5zaXplKCkgLSBw
b3MpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgU2VsZiBBdHRlc3Rh
dGlvbgorICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJBcHBsZSIsIGF0dGVzdGF0aW9uT2JqZWN0
TWFwLT5nZXRNYXAoKS5maW5kKGNib3I6OkNCT1JWYWx1ZSgiZm10IikpLT5zZWNvbmQuZ2V0U3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgICAgICBhdXRvJiBhdHRTdG10ID0gYXR0
ZXN0YXRpb25PYmplY3RNYXAtPmdldE1hcCgpLmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJhdHRTdG10
IikpLT5zZWNvbmQuZ2V0TWFwKCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoQ09TRTo6RVMyNTYs
IGF0dFN0bXQuZmluZChjYm9yOjpDQk9SVmFsdWUoImFsZyIpKS0+c2Vjb25kLmdldE5lZ2F0aXZl
KCkpOworCisgICAgICAgICAgICBhdXRvJiBzaWcgPSBhdHRTdG10LmZpbmQoY2Jvcjo6Q0JPUlZh
bHVlKCJzaWciKSktPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7CisgICAgICAgICAgICBhdXRvIHBy
aXZhdGVLZXkgPSBnZXRUZXN0S2V5KCk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShTZWNLZXlW
ZXJpZnlTaWduYXR1cmUoU2VjS2V5Q29weVB1YmxpY0tleShwcml2YXRlS2V5LmdldCgpKSwga1Nl
Y0tleUFsZ29yaXRobUVDRFNBU2lnbmF0dXJlTWVzc2FnZVg5NjJTSEEyNTYsIChfX2JyaWRnZSBD
RkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmF1dGhEYXRhLmRhdGEoKSBsZW5ndGg6YXV0
aERhdGEuc2l6ZSgpXSwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
c2lnLmRhdGEoKSBsZW5ndGg6c2lnLnNpemUoKV0sIE5VTEwpKTsKKworICAgICAgICAgICAgLy8g
Q2hlY2sgY2VydGlmaWNhdGVzCisgICAgICAgICAgICBhdXRvJiB4NWMgPSBhdHRTdG10LmZpbmQo
Y2Jvcjo6Q0JPUlZhbHVlKCJ4NWMiKSktPnNlY29uZC5nZXRBcnJheSgpOworICAgICAgICAgICAg
YXV0byYgYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZURhdGEgPSB4NWNbMF0uZ2V0Qnl0ZVN0cmluZygp
OworICAgICAgICAgICAgYXV0byBhdHRlc3RhdGlvbkNlcnRpZmljYXRlID0gYWRvcHRDRihTZWND
ZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKE5VTEwsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmF0dGVzdGF0aW9uQ2VydGlmaWNhdGVEYXRhLmRhdGEoKSBsZW5ndGg6
YXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZURhdGEuc2l6ZSgpXSkpOworICAgICAgICAgICAgQ0ZTdHJp
bmdSZWYgY29tbW9uTmFtZSA9IG51bGxwdHI7CisgICAgICAgICAgICBzdGF0dXMgPSBTZWNDZXJ0
aWZpY2F0ZUNvcHlDb21tb25OYW1lKGF0dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCksICZjb21t
b25OYW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmV0YWluQ29tbW9uTmFtZSA9IGFkb3B0Q0YoY29t
bW9uTmFtZSk7CisgICAgICAgICAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgICAgICAgICBFWFBF
Q1RfU1RSRVEoIjAwMDA4MDEwLTAwMEE0OUEyMzBBMDIxM0EiLCBbKE5TU3RyaW5nICopY29tbW9u
TmFtZSBjU3RyaW5nVXNpbmdFbmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXSk7CisKKyAg
ICAgICAgICAgIGF1dG8mIGF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVEYXRhID0geDVj
WzFdLmdldEJ5dGVTdHJpbmcoKTsKKyAgICAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25Jc3N1aW5n
Q0FDZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShOVUxM
LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczphdHRlc3RhdGlvbklz
c3VpbmdDQUNlcnRpZmljYXRlRGF0YS5kYXRhKCkgbGVuZ3RoOmF0dGVzdGF0aW9uSXNzdWluZ0NB
Q2VydGlmaWNhdGVEYXRhLnNpemUoKV0pKTsKKyAgICAgICAgICAgIGNvbW1vbk5hbWUgPSBudWxs
cHRyOworICAgICAgICAgICAgc3RhdHVzID0gU2VjQ2VydGlmaWNhdGVDb3B5Q29tbW9uTmFtZShh
dHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlLmdldCgpLCAmY29tbW9uTmFtZSk7CisgICAg
ICAgICAgICByZXRhaW5Db21tb25OYW1lID0gYWRvcHRDRihjb21tb25OYW1lKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghc3RhdHVzKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiQmFzaWMgQXR0
ZXN0YXRpb24gVXNlciBTdWIgQ0ExIiwgWyhOU1N0cmluZyAqKWNvbW1vbk5hbWUgY1N0cmluZ1Vz
aW5nRW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdFbmNvZGluZ10pOworCisgICAgICAgICAgICBjbGVh
blVwS2V5Y2hhaW4oKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0o
Y29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKHRydWUpOworICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gaGFzaCgzMik7Ci0gICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoaGFzaCwg
Y3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjaykpOworICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKGhhc2gsIGNyZWF0aW9u
T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKIH0KQEAgLTU0NCwxNiArNTU3LDE3IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNh
dG9yLCBHZXRBc3NlcnRpb25BbGxvd0NyZWRlbnRpYWxzTWlzbWF0Y2gxKQogCiAgICAgYm9vbCBk
b25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+
IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+
KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBk
b25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVd
IChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAg
ICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7
Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQg
aW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1lc3Nh
Z2UuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxi
YWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hP
bihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVl
OworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlv
bikgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhj
ZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJObyBtYXRjaGVkIGNyZWRl
bnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4i
LCBleGNlcHRpb24ubWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRp
b24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1
ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKIH0KQEAgLTU2NiwxNiArNTgwLDE3IEBAIFRFU1QoTG9jYWxBdXRoZW50
aWNhdG9yLCBHZXRBc3NlcnRpb25BbGxvd0NyZWRlbnRpYWxzTWlzbWF0Y2gyKQogCiAgICAgYm9v
bCBkb25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0
b3I+IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0
b3I+KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAg
ICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRv
bmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewot
ICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29k
ZSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91
bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1l
c3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNh
bGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0
YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0
Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYp
IHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRvbmUgPSB0
cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2Vw
dGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwg
ZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJObyBtYXRjaGVkIGNy
ZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRv
ci4iLCBleGNlcHRpb24ubWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3Nl
cnRpb24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCBy
ZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKIH0KQEAgLTU5NSwxOCArNjEwLDE5IEBAIFRFU1QoTG9jYWxBdXRo
ZW50aWNhdG9yLCBHZXRBc3NlcnRpb25BbGxvd0NyZWRlbnRpYWxzTWlzbWF0Y2gzKQogCiAgICAg
Ym9vbCBkb25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRp
Y2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRp
Y2F0b3I+KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAg
ICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAg
ICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6
Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEo
Ik5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hl
ZCBhdXRoZW50aWNhdG9yLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAg
ICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOworICAgIGF1dG8g
Y2FsbGJhY2sgPSBbJmRvbmVdIChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxE
YXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgeworICAgICAgICBXVEY6OnN3
aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
JikgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOworICAgICAgICAgICAgY2xlYW5V
cEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNv
bnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4g
dGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2Uu
YXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAgICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9y
LT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRp
b24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KQEAgLTYyMiwxOCArNjM4LDE5IEBAIFRFU1Qo
TG9jYWxBdXRoZW50aWNhdG9yLCBHZXRBc3NlcnRpb25CaW9tZXRyaWNzTm90RW5yb2xsZWQpCiAK
ICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0
aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0
aGVudGljYXRvcj4oKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7
Ci0gICAgICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9
OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2Vi
Q29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVDVF9T
VFJFUSgiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFz
Y2lpKCkuZGF0YSgpKTsKLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUg
PSB0cnVlOworICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChWYXJpYW50PFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkg
eworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxEYXRhJikgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwor
ICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24p
IHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2Vw
dGlvbi5jb2RlKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gYXZhbGlhYmxlIGF1dGhl
bnRpY2F0b3JzLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAg
IH0pOwogICAgIH07Ci0gICAgYXV0aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVz
dE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7
CisgICAgYXV0aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CiB9CkBAIC02NTAsMTggKzY2NywxOSBAQCBURVNUKExvY2FsQXV0aGVudGljYXRvciwgR2V0QXNz
ZXJ0aW9uQmlvbWV0cmljc05vdEF1dGhlbnRpY2F0ZWQpCiAKICAgICBib29sIGRvbmUgPSBmYWxz
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGlj
YXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAgICBh
dXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JikgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGNsZWFuVXBLZXlj
aGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9u
Q2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRp
b24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9y
LCBleGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiQ291bGRuJ3QgZ2V0IHVz
ZXIgY29uc2VudC4iLCBleGNlcHRpb24ubWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAg
IGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxi
YWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hP
bihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXlj
aGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0sIFsmXShjb25zdCAg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7CisgICAgICAgICAg
ICBFWFBFQ1RfU1RSRVEoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIiwgZXhjZXB0aW9uLm1l
c3NhZ2UuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Cisg
ICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50
aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFj
ayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5nZXRB
c3NlcnRpb24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KQEAgLTY4MCw0OCArNjk4LDU4IEBA
IFRFU1QoTG9jYWxBdXRoZW50aWNhdG9yLCBHZXRBc3NlcnRpb25QYXNzZWQpCiAKICAgICBib29s
IGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRv
cj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRv
cj4oKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lLCBoYXNoXSAoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aERhdGEsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVz
ZXJoYW5kbGUpIHsKLSAgICAgICAgLy8gQ2hlY2sgQ3JlZGVudGlhbCBJRAotICAgICAgICBFWFBF
Q1RfVFJVRShXVEY6OmJhc2U2NEVuY29kZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFs
SWQuc2l6ZSgpKSA9PSB0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KTsKLQotICAgICAgICAvLyBDaGVj
ayBBdXRoZW50aWNhdG9yIERhdGEuCi0gICAgICAgIHNpemVfdCBwb3MgPSAwOwotICAgICAgICB1
aW50OF90IGV4cGVjdGVkUnBJZEhhc2hbXSA9IHsKLSAgICAgICAgICAgIDB4NDksIDB4OTYsIDB4
MGQsIDB4ZTUsIDB4ODgsIDB4MGUsIDB4OGMsIDB4NjgsCi0gICAgICAgICAgICAweDc0LCAweDM0
LCAweDE3LCAweDBmLCAweDY0LCAweDc2LCAweDYwLCAweDViLAotICAgICAgICAgICAgMHg4Ziwg
MHhlNCwgMHhhZSwgMHhiOSwgMHhhMiwgMHg4NiwgMHgzMiwgMHhjNywKLSAgICAgICAgICAgIDB4
OTksIDB4NWMsIDB4ZjMsIDB4YmEsIDB4ODMsIDB4MWQsIDB4OTcsIDB4NjMKLSAgICAgICAgfTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGV4cGVj
dGVkUnBJZEhhc2gsIHNpemVvZihleHBlY3RlZFJwSWRIYXNoKSkpOwotICAgICAgICBwb3MgKz0g
c2l6ZW9mKGV4cGVjdGVkUnBJZEhhc2gpOwotCi0gICAgICAgIC8vIEZMQUdTCi0gICAgICAgIEVY
UEVDVF9FUSg1LCBhdXRoRGF0YVtwb3NdKTsKLSAgICAgICAgcG9zKys7Ci0KLSAgICAgICAgdWlu
dDMyX3QgY291bnRlciA9IC0xOwotICAgICAgICBtZW1jcHkoJmNvdW50ZXIsIGF1dGhEYXRhLmRh
dGEoKSArIHBvcywgc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgY291
bnRlcik7Ci0KLSAgICAgICAgLy8gQ2hlY2sgc2lnbmF0dXJlCi0gICAgICAgIGF1dG8gcHJpdmF0
ZUtleSA9IGdldFRlc3RLZXkoKTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFUb1NpZ24o
YXV0aERhdGEpOwotICAgICAgICBkYXRhVG9TaWduLmFwcGVuZFZlY3RvcihoYXNoKTsKLSAgICAg
ICAgRVhQRUNUX1RSVUUoU2VjS2V5VmVyaWZ5U2lnbmF0dXJlKFNlY0tleUNvcHlQdWJsaWNLZXko
cHJpdmF0ZUtleS5nZXQoKSksIGtTZWNLZXlBbGdvcml0aG1FQ0RTQVNpZ25hdHVyZU1lc3NhZ2VY
OTYyU0hBMjU2LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRh
VG9TaWduLmRhdGEoKSBsZW5ndGg6ZGF0YVRvU2lnbi5zaXplKCldLCAoX19icmlkZ2UgQ0ZEYXRh
UmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczpzaWduYXR1cmUuZGF0YSgpIGxlbmd0aDpzaWduYXR1
cmUuc2l6ZSgpXSwgTlVMTCkpOwotCi0gICAgICAgIC8vIENoZWNrIFVzZXIgSGFuZGxlCi0gICAg
ICAgIEVYUEVDVF9FUSh1c2VyaGFuZGxlLnNpemUoKSwgc2l6ZW9mKHRlc3RVc2VyaGFuZGxlKSk7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShtZW1jbXAodXNlcmhhbmRsZS5kYXRhKCksIHRlc3RVc2Vy
aGFuZGxlLCBzaXplb2YodGVzdFVzZXJoYW5kbGUpKSk7Ci0KLSAgICAgICAgY2xlYW5VcEtleWNo
YWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25D
YWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlv
bikgbXV0YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAgICAgICAgY2xlYW5V
cEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOworICAgIGF1dG8gY2FsbGJhY2sgPSBb
JmRvbmUsIGhhc2hdIChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgeworICAgICAgICBXVEY6OnN3aXRjaE9u
KHJlc3VsdCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRh
KSB7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkOworICAgICAgICAg
ICAgY3JlZGVudGlhbElkLmFwcGVuZChyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLnJh
d0lkLT5kYXRhKCkpLCBkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGF1dGhEYXRhOworICAgICAgICAgICAgYXV0aERhdGEuYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSksIGRh
dGEuYXV0aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBWZWN0b3I8
dWludDhfdD4gc2lnbmF0dXJlOworICAgICAgICAgICAgc2lnbmF0dXJlLmFwcGVuZChyZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLnNpZ25hdHVyZS0+ZGF0YSgpKSwgZGF0YS5zaWduYXR1
cmUtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdXNlcmhhbmRs
ZTsKKyAgICAgICAgICAgIHVzZXJoYW5kbGUuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRhdGEudXNlckhhbmRsZS0+ZGF0YSgpKSwgZGF0YS51c2VySGFuZGxlLT5ieXRlTGVuZ3Ro
KCkpOworCisgICAgICAgICAgICAvLyBDaGVjayBDcmVkZW50aWFsIElECisgICAgICAgICAgICBF
WFBFQ1RfVFJVRShXVEY6OmJhc2U2NEVuY29kZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50
aWFsSWQuc2l6ZSgpKSA9PSB0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KTsKKworICAgICAgICAgICAg
Ly8gQ2hlY2sgQXV0aGVudGljYXRvciBEYXRhLgorICAgICAgICAgICAgc2l6ZV90IHBvcyA9IDA7
CisgICAgICAgICAgICB1aW50OF90IGV4cGVjdGVkUnBJZEhhc2hbXSA9IHsKKyAgICAgICAgICAg
ICAgICAweDQ5LCAweDk2LCAweDBkLCAweGU1LCAweDg4LCAweDBlLCAweDhjLCAweDY4LAorICAg
ICAgICAgICAgICAgIDB4NzQsIDB4MzQsIDB4MTcsIDB4MGYsIDB4NjQsIDB4NzYsIDB4NjAsIDB4
NWIsCisgICAgICAgICAgICAgICAgMHg4ZiwgMHhlNCwgMHhhZSwgMHhiOSwgMHhhMiwgMHg4Niwg
MHgzMiwgMHhjNywKKyAgICAgICAgICAgICAgICAweDk5LCAweDVjLCAweGYzLCAweGJhLCAweDgz
LCAweDFkLCAweDk3LCAweDYzCisgICAgICAgICAgICB9OworICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkUnBJZEhhc2gsIHNpemVv
ZihleHBlY3RlZFJwSWRIYXNoKSkpOworICAgICAgICAgICAgcG9zICs9IHNpemVvZihleHBlY3Rl
ZFJwSWRIYXNoKTsKKworICAgICAgICAgICAgLy8gRkxBR1MKKyAgICAgICAgICAgIEVYUEVDVF9F
USg1LCBhdXRoRGF0YVtwb3NdKTsKKyAgICAgICAgICAgIHBvcysrOworCisgICAgICAgICAgICB1
aW50MzJfdCBjb3VudGVyID0gLTE7CisgICAgICAgICAgICBtZW1jcHkoJmNvdW50ZXIsIGF1dGhE
YXRhLmRhdGEoKSArIHBvcywgc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEoMHUsIGNvdW50ZXIpOworCisgICAgICAgICAgICAvLyBDaGVjayBzaWduYXR1cmUKKyAgICAg
ICAgICAgIGF1dG8gcHJpdmF0ZUtleSA9IGdldFRlc3RLZXkoKTsKKyAgICAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhVG9TaWduKGF1dGhEYXRhKTsKKyAgICAgICAgICAgIGRhdGFUb1NpZ24u
YXBwZW5kVmVjdG9yKGhhc2gpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoU2VjS2V5VmVyaWZ5
U2lnbmF0dXJlKFNlY0tleUNvcHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSksIGtTZWNLZXlB
bGdvcml0aG1FQ0RTQVNpZ25hdHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAoX19icmlkZ2UgQ0ZEYXRh
UmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhVG9TaWduLmRhdGEoKSBsZW5ndGg6ZGF0YVRv
U2lnbi5zaXplKCldLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczpz
aWduYXR1cmUuZGF0YSgpIGxlbmd0aDpzaWduYXR1cmUuc2l6ZSgpXSwgTlVMTCkpOworCisgICAg
ICAgICAgICAvLyBDaGVjayBVc2VyIEhhbmRsZQorICAgICAgICAgICAgRVhQRUNUX0VRKHVzZXJo
YW5kbGUuc2l6ZSgpLCBzaXplb2YodGVzdFVzZXJoYW5kbGUpKTsKKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShtZW1jbXAodXNlcmhhbmRsZS5kYXRhKCksIHRlc3RVc2VyaGFuZGxlLCBzaXplb2Yo
dGVzdFVzZXJoYW5kbGUpKSk7CisKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAg
ICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7
CisgICAgICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVl
OworICAgICAgICB9KTsKICAgICB9OwotICAgIGF1dGhlbnRpY2F0b3ItPmdldEFzc2VydGlvbiho
YXNoLCByZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oaGFzaCwgcmVxdWVz
dE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWNhZjA3MmJjMGM4NWJhZjFhZTQ2M2I3NjA1MGE3YWE2
NzM4YTNjZC4uODJmYWU2NzRhYTJkZDFjMDY2NzRkMTU5MDZiOGI4MjQ4NGUwZTUyMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDE4LTA5LTA4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBQb2xpc2ggQXV0aGVudGljYXRvck1hbmFnZXIg
YW5kIHJlbmFtZSBpdCB0byBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTI3NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDQxMTU5MzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBodHRwL3dwdC9jcmVkZW50aWFsLW1hbmFnZW1lbnQvY3JlZGVudGlhbHNj
b250YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vaWRsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLmh0dHBz
Lmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1mYWlsdXJlLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1pcy11c2VyLXZlcmlmeWluZy1wbGF0Zm9ybS1hdXRo
ZW50aWNhdG9yLWF2YWlsYWJsZS5odG1sOgorCiAyMDE4LTA5LTA4ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBEaXNwYXRjaCBhIHBheW1lbnRt
ZXRob2RjaGFuZ2UgZXZlbnQgd2hlbiB0aGUgcGF5bWVudCBtZXRob2QgY2hhbmdlcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2NyZWRlbnRp
YWxzY29udGFpbmVyLXN0b3JlLWJhc2ljcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2NyZWRlbnRpYWxzY29udGFpbmVyLXN0b3JlLWJhc2lj
cy5odHRwcy5odG1sCmluZGV4IDE5ODg4MjU0NzMwZjE2ODMyYTAyNTk5Y2M5ZDA1YmU0NTg2MDQx
MjEuLjIzNjkxMzUwYzA1ZWNlMDA4N2U1MmVjZGM4MTg0ZTBkZGZkZTc5ZTUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L2NyZWRlbnRpYWwtbWFuYWdlbWVudC9jcmVkZW50aWFsc2Nv
bnRhaW5lci1zdG9yZS1iYXNpY3MuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9jcmVkZW50aWFsLW1hbmFnZW1lbnQvY3JlZGVudGlhbHNjb250YWluZXItc3RvcmUtYmFzaWNz
Lmh0dHBzLmh0bWwKQEAgLTQyLDcgKzQyLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsK
ICAgICAgICAgLy8gQSBtb2NrIGF0dGVzdGF0aW9uIG9iamVjdAotICAgICAgICBpbnRlcm5hbHMu
bW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGhleFN0cmlu
Z1RvVWludDhBcnJheSgnMDAnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMScpKTsKKyAgICAg
ICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0Q3JlYXRpb25SZXR1
cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJy
YXkoJzAxJykpOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsID0gYXdhaXQgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKTsKIAogICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKHQsICJOb3RTdXBwb3J0ZWRFcnJvciIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9pZGwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL2lkbC5odHRwcy5odG1sCmluZGV4IDljMmM3ZjMxMzY0ODFhNzk2MzI1MmY1ZDliM2U3NmY4
M2I5MjUxNzYuLmNlNzE4ODU5MTJlMTI3ZGYxMzI3OWM2ZjQ1MzRiZjJjYzEyYWE3ZmEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCkBAIC01Miw3ICs1
Miw3IEBAIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CiAgICAgICAgIH0KICAgICB9OwogICAg
IC8vIEEgbW9jayBhdHRlc3RhdGlvbiBvYmplY3QKLSAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRp
YWxzTWVzc2VuZ2VyLnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJh
eSgnMDAnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMScpKTsKKyAgICBpbnRlcm5hbHMubW9j
a0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXRDcmVhdGlvblJldHVybkJ1bmRsZShoZXhTdHJp
bmdUb1VpbnQ4QXJyYXkoJzAwJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDEnKSk7CiAgICAg
Y3JlYXRlZENyZWRlbnRpYWwgPSBhd2FpdCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGNy
ZWF0aW9uT3B0aW9ucyk7CiAKIApAQCAtNjIsNyArNjIsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMg
KCkgPT4gewogICAgICAgICB9CiAgICAgfTsKICAgICAvLyBBIG1vY2sgYXNzZXJ0aW9uIHJldHVy
biBidW5kbGUuCi0gICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5zZXRBc3Nl
cnRpb25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdU
b1VpbnQ4QXJyYXkoJzAxJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDInKSwgaGV4U3RyaW5n
VG9VaW50OEFycmF5KCcwMycpKTsKKyAgICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5zZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5KCcw
MCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgn
MDInKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMycpKTsKICAgICByZXF1ZXN0ZWRDcmVkZW50
aWFsID0gYXdhaXQgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChyZXF1ZXN0T3B0aW9ucyk7CiAK
ICAgICBpZGxBcnJheS5hZGRfb2JqZWN0cyh7IlB1YmxpY0tleUNyZWRlbnRpYWwiOiBbImNyZWF0
ZWRDcmVkZW50aWFsIl0sICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSI6IFsiY3Jl
YXRlZENyZWRlbnRpYWwucmVzcG9uc2UiXSwgIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZSI6IFsicmVxdWVzdGVkQ3JlZGVudGlhbC5yZXNwb25zZSJdfSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IGJiNTU0OGM5MGQw
YmNkMDU3MWI0NjNjZWVkYzk4N2M1MzU1NDFmYjMuLjQ1MDc3YTNjZjlkMzM3MWZlYzZmZjZiOGJk
YTViMjdkMmQ4NDE2ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS5odHRwcy5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgICAgICAgICAgdGlt
ZW91dDogMCwKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgaW50ZXJuYWxzLm1v
Y2tDcmVkZW50aWFsc01lc3Nlbmdlci5zZXREaWRUaW1lT3V0KCk7CisgICAgICAgIGludGVybmFs
cy5tb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLnNldERpZFRpbWVPdXQoKTsKIAogICAgICAg
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLAogICAgICAgICAg
ICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSk7CkBAIC04Miw3ICs4Miw3
IEBACiAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC03IH1dLAogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBpbnRl
cm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldERpZFVzZXJDYW5jZWwoKTsKKyAgICAg
ICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0RGlkVXNlckNhbmNl
bCgpOwogCiAgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsCiAgICAgICAgICAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLmh0dHBzLmh0bWwK
aW5kZXggYWI0ZmNjMDgyZDFhMGJjZGZiYTgyYjBhYmNlYzNmZjZkYTE3MDY4MC4uNjk5NjhjM2Y0
ZWRjMWYxZDYyMTViZjJlOWFlYmQ5NTZkYjM1ODUxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLmh0
dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLmh0dHBzLmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKICAgICAgICAgLy8gQSBtb2NrIGF0dGVzdGF0aW9uIG9i
amVjdAotICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldENyZWF0
aW9uUmV0dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJheSgnMDAnKSwgaGV4U3RyaW5nVG9V
aW50OEFycmF5KCcwMScpKTsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3Iuc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5KCcw
MCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJykpOwogCiAgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24oY3JlZGVudGlh
bCkgewogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC5pZCwgJ0FBJyk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCmluZGV4
IDUxMmJiMmRhZDE2NGNkMjM4ZGIxNDJlZjMzMzQ4OGQwNzAzNjdlNTIuLjBkNGMwNDUyNTY3MDM1
MmVmMzdjODdmNjBkZjIzMzIxYzNkZTcyYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCkBAIC0xMSw3ICsxMSw3IEBACiAgICAgICAgICAgICAg
ICAgdGltZW91dDogMCwKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgaW50ZXJu
YWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5zZXREaWRUaW1lT3V0KCk7CisgICAgICAgIGlu
dGVybmFscy5tb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLnNldERpZFRpbWVPdXQoKTsKIAog
ICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLAogICAg
ICAgICAgICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSk7CkBAIC0zNSw3ICsz
NSw3IEBACiAgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1Ymxp
Yy1rZXkiLCBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpIH1dLAogICAgICAgICAgICAg
fQogICAgICAgICB9OwotICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
LnNldERpZFVzZXJDYW5jZWwoKTsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3Iuc2V0RGlkVXNlckNhbmNlbCgpOwogCiAgICAgICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsCiAgICAgICAgICAgICBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLmh0dHBzLmh0bWwKaW5kZXggMmU1ZWM4ODIxM2M2ZTY0ZTczZjZjMjVlMjhiZmEwZGQ3
M2ZkMWNmNC4uZjNmZDE1NjRhZWQ0ZWU1NTExMzFjYzY4NTI3MzFmYzgyODczN2E0YSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1zdWNjZXNzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLmh0dHBzLmh0bWwKQEAgLTEyLDcg
KzEyLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKICAgICAgICAgLy8gQSBtb2NrIGFz
c2VydGlvbiByZXR1cm4gYnVuZGxlLgotICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxz
TWVzc2VuZ2VyLnNldEFzc2VydGlvblJldHVybkJ1bmRsZShoZXhTdHJpbmdUb1VpbnQ4QXJyYXko
JzAwJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDEnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5
KCcwMicpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAzJykpOworICAgICAgICBpbnRlcm5hbHMu
bW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoaGV4
U3RyaW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJyksIGhl
eFN0cmluZ1RvVWludDhBcnJheSgnMDInKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMycpKTsK
IAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVu
KGZ1bmN0aW9uKGNyZWRlbnRpYWwpIHsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVu
dGlhbC5pZCwgJ0FBJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWlzLXVzZXItdmVyaWZ5aW5nLXBsYXRmb3JtLWF1dGhlbnRpY2F0b3ItYXZh
aWxhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWlz
LXVzZXItdmVyaWZ5aW5nLXBsYXRmb3JtLWF1dGhlbnRpY2F0b3ItYXZhaWxhYmxlLmh0bWwKaW5k
ZXggZGE4ZTUzNDU5NjBmOWQ0YzYyNjRlZGFjMzk5MWQyMjA1NTRlZmU5Ny4uMTgxZDMzYTRmOGY5
ODQzYWZkOGEyODM4NWM5ZTg5OGNlODZjMDllYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1pcy11c2VyLXZlcmlmeWluZy1wbGF0Zm9ybS1hdXRo
ZW50aWNhdG9yLWF2YWlsYWJsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktaXMtdXNlci12ZXJpZnlpbmctcGxhdGZvcm0tYXV0aGVudGljYXRvci1h
dmFpbGFibGUuaHRtbApAQCAtNCw3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdl
cjsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I7CiAKICAg
ICAgICAgcmV0dXJuIFB1YmxpY0tleUNyZWRlbnRpYWwuaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlKCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSk7CkBAIC0xMiw3ICsxMiw3IEBACiAgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwuaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yQXZhaWxhYmxlKCkgd2l0aG91dCBhbnkgYXZhaWxhYmxlIGF1dGhlbnRpY2F0b3JzLiIpOwog
CiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tD
cmVkZW50aWFsc01lc3Nlbmdlci5zZXREaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yUHJlc2VudCgpOworICAgICAgICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5zZXREaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCgpOwog
CiAgICAgICAgIHJldHVybiBQdWJsaWNLZXlDcmVkZW50aWFsLmlzVXNlclZlcmlmeWluZ1BsYXRm
b3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSk7Cg==
</data>
<flag name="review"
          id="366885"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349336</attachid>
            <date>2018-09-10 15:29:20 -0700</date>
            <delta_ts>2018-09-10 15:59:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189277-20180910152919.patch</filename>
            <type>text/plain</type>
            <size>277799</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1ODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM3NTIxN2Y4Njg2ZTI1
MGJiM2EyMzQyOWYwMjAwZmI1NzNmZmU3ZS4uNzM5YTIyMTAxMTZiY2ZhNmIyNDNlZGZkYWQ0MWU5
MTVkOWU3N2NmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxOC0wOS0wOCAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gUG9s
aXNoIEF1dGhlbnRpY2F0b3JNYW5hZ2VyIGFuZCByZW5hbWUgaXQgdG8gQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODkyNzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTE1OTM2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWltcyB0byBwb2xp
c2ggQXV0aGVudGljYXRvck1hbmFnZXIgc3VjaCB0aGF0OgorICAgICAgICAxKSBJdCBpcyBubyBs
b25nZXIgYSBzaW5nbGV0b24uIEluc3RlYWQsIGl0IHdpbGwgbGl2ZSB3aXRoIFBhZ2UuIEl0IHdh
cyBhIHNpbmdsZXRvbiBzaW1wbHkgYmVjYXVzZSBzdGF0aWMKKyAgICAgICAgUHVibGljS2V5Q3Jl
ZGVudGlhbDo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCkg
aGF2ZSB0byBhY2Nlc3MgaXQuIEhvd2V2ZXIsIHRoaXMgcmVxdWVzdAorICAgICAgICBjYW4gYmUg
ZnVsZmlsbGVkIGJ5IGFkZGluZyBhbiBhdHRyaWJ1dGUgW0NhbGxXaXRoPURvY3VtZW50XSB0byB0
aGUgSURMIGRlZmluYXRpb24uIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KKyAgICAgICAgc3VjaCBu
ZWVkLiBBbHNvLCB0aGUgc2luZ2xldG9uIGlzIGlsbHkgaW1wbGVtZW50ZWQgYXMgaXQgb3ducyBh
IHNpbmdsZSBJUEMgcHJveHkgdG8gVUkgUHJvY2VzcyB3aGljaCBtZWFucworICAgICAgICBkaWZm
ZXJlbnQgd2ViIHBhZ2VzIHdpbGwgdGFsayB0byB0aGUgc2FtZSB3ZWIgcGFnZSBwcm94eS4gQW55
d2F5LCBtYWtpbmcgaXQgbGl2ZSB3aXRoIFBhZ2Ugc2hvdWxkIGZpeCBldmVyeXRoaW5nLgorICAg
ICAgICAyKSBTaW5jZSB3ZSBhcmUgbm93IHBsYW5uaW5nIHRvIHN1cHBvcnQgZXh0ZXJuYWwgYXV0
aGVudGljYXRvcnMsIHRoZSBtYW5hZ2VyIG9mIGFsbCBhdXRoZW50aWNhdG9ycyB3aWxsIHRoZW4K
KyAgICAgICAgaGF2ZSB0byBsaXZlIGluIFVJIFByb2Nlc3Mgd2hpY2ggbWFrZXMgdGhpcyBBdXRo
ZW50aWNhdG9yTWFuYWdlciBvYnNvbGV0ZS4gSW5zdGVhZCwgcmVuYW1lIGl0IHRvIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci4KKyAgICAgICAgMykgUmVuYW1lIENyZWRlbnRpYWxzTWVzc2VuZ2Vy
IHRvIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCB0byB0aWdodCBpdCB0byBXZWJBdXRo
Ti4gQWxzbywgc2ltcGxpZnkgdGhlCisgICAgICAgIG1lc3NhZ2UgcmVwbHkgbW9kZWwgYXMgUHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMgPT4KKyAgICAgICAgRXhjZXB0aW9uRGF0YS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0
YSBmb3IgbWFrZUNyZWRlbnRpYWwvZ2V0QXNzZXJ0aW9uIG9wZXJhdGlvbnMuCisgICAgICAgIDQp
IFJlc3RyaWN0IG9uZSByZXF1ZXN0IHBlciB0aW1lLCBpLmUuIG1ha2VDcmVkZW50aWFsL2dldEFz
c2VydGlvbiBmb3IgYSBzaW5nbGUgcGFnZS4KKyAgICAgICAgNSkgVW5pZnlpbmcgbWFrZUNyZWRl
bnRpYWxSZXBseS9nZXRBc3NlcnRpb25SZXBseS9leGNlcHRpb25SZXBseSBpbnRvIHJlcXVlc3RS
ZXBseSBmb3IgSVBDLiBDb3JyZXNwb25kaW5nbHksCisgICAgICAgIHVuaWZ5IGNhbGxiYWNrIGFu
ZCBleGNlcHRpb25DYWxsYmFjayBpbnRvIGNhbGxiYWNrIGFzIHdlbGwgZm9yIExvY2FsQXV0aGVu
dGljYXRvci4KKyAgICAgICAgNikgRW5oYW5jZSBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zIGVuY29kaW5nL2RlY29kaW5nIHdpdGggZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEvZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAg
ICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyZWRlbnRpYWxzQ29udGFpbmVyOjppc0NyZWF0ZSk6CisgICAgICAgICogTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oOgorICAgICAg
ICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVu
dGlhbHNNZXNzZW5nZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGljYXRv
ckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlOjp1c2VySGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjphdHRlc3RhdGlvbk9iamVjdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwLgorICAgICAg
ICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw6OnByb2R1Y2VDbGll
bnREYXRhSnNvbik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJ
bnRlcm5hbDo6cHJvZHVjZUNsaWVudERhdGFKc29uSGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6aW5pdFRpbWVvdXRUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6ZGlkVGltZW91
dFRpbWVyRmlyZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I6OmNyZWF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5oLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6
On5BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OjpyZXF1ZXN0UmVwbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ojppc1VzZXJWZXJpZnlpbmdQbGF0
Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OnNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OmFkZFF1
ZXJ5Q29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHku
aC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9u
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXV0aGVudGlj
YXRvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6
Y2xpZW50RGF0YUpTT04gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vUHVibGlj
S2V5Q3JlZGVudGlhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbDo6dHJ5Q3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWw6OlB1YmxpY0tleUNy
ZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbDo6aXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OmRlY29k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGE6OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2NvY29hL0xvY2FsQXV0aGVudGljYXRv
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRp
YWwpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24p
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YXV0aGVudGljYXRvckNvb3JkaW5hdG9y
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAg
KiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjptb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OnNldEFzc2VydGlvblJldHVybkJ1
bmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpt
YWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxh
YmxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2Vu
Z2VyLmguCisgICAgICAgICogdGVzdGluZy9Nb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmlk
bDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVz
c2VuZ2VyLmlkbC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5j
cHA6IFJlbW92ZWQuCisKIDIwMTgtMDktMDggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtBcHBsZSBQYXldIERpc3BhdGNoIGEgcGF5bWVudG1ldGhvZGNoYW5nZSBl
dmVudCB3aGVuIHRoZSBwYXltZW50IG1ldGhvZCBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVlOWUxODg5
ODNhNzYzMmJkMTU2ZTg3Y2FiNDdjMWQ4MWRkY2ZiOGIuLjdjNmM4NmJlNjBlNmY1YjRjMTQ4YjQy
YThmNDZmNjdkMGU0OTFkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTgtMDktMDgg
IEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5d
IFBvbGlzaCBBdXRoZW50aWNhdG9yTWFuYWdlciBhbmQgcmVuYW1lIGl0IHRvIEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg5Mjc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDExNTkzNj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ3Jl
ZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojp+
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzVXNl
clZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpyZXF1ZXN0UmVwbHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFn
ZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNz
YWdlcy5pbjogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRlbnRpYWxN
YW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkubWVzc2FnZXMuaW4uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fcmVz
ZXRSZWNlbnRDcmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlYXR0YWNoVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdl
ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ip
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6On5XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5o
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLm1lc3Nh
Z2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6bV9jcHVMaW1pdCk6CisgICAgICAgIChXZWJLaXQ6Om1fY3JlZGVudGlhbHNN
ZXNzZW5nZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisKIDIwMTgtMDktMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5pZnkgbW9zdCBvZiB0aGUgV2ViS2l0IE9iamVjdGl2ZS1DIEFQSSBzb3Vy
Y2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMjM2NDhjNTAwYzc5NGQ3YzM5
M2UzOGI3MWVkYTI4YzlkNGQzYjVkLi41ZGIzMDE0NWFhNzI2ZjViM2IwYWQzYWNjZjc0NzIwYzRh
MjEyNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTk2Miw5ICs5NjIsOSBA
QCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbCBcCiAgICAg
JChXZWJDb3JlKS90ZXN0aW5nL01lbW9yeUluZm8uaWRsIFwKKyAgICAkKFdlYkNvcmUpL3Rlc3Rp
bmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmlkbCBcCi0gICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tDcmVk
ZW50aWFsc01lc3Nlbmdlci5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGFnZU92
ZXJsYXkuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1lbnRBZGRyZXNzLmlk
bCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRsIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
Q3JlZGVudGlhbHNDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKaW5kZXggMTQ3MDdhZTExYWVk
YWE2NGYwZWJjNzJkOGIyM2IyMTY5Zjg5MjhlMy4uY2IyNzYwYzFhYTc0ZTkxNDc0NTM1MGUwMGYx
ZjcxNjNmMDNiM2ExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNjMsNyArNjQsNyBAQCB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zJiYgb3B0aW9ucywgQ3JlZGVudGlhbFBybwogewogICAgIC8vIFRo
ZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvY3JlZGVudGlhbC1t
YW5hZ2VtZW50LTEvI2FsZ29yaXRobS1yZXF1ZXN0IGFzIG9mIDQgQXVndXN0IDIwMTcKICAgICAv
LyB3aXRoIGVuaGFuY2VtZW50IGZyb20gMTQgTm92ZW1iZXIgMjAxNyBFZGl0b3IncyBEcmFmdC4K
LSAgICBpZiAoIW1fZG9jdW1lbnQpIHsKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1fZG9jdW1l
bnQtPnBhZ2UoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgyLDggKzgzLDcgQEAg
dm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYm
IG9wdGlvbnMsIENyZWRlbnRpYWxQcm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8v
IEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQvaGFuZGxlZCBpbiAoV2ViKUNyZWRlbnRp
YWxNZXNzZW5nZXIsIHdoaWNoIGV4Y2hhbmdlcyBtZXNzYWdlcyBiZXR3ZWVuIFdlYlByb2Nlc3Mg
YW5kIFVJUHJvY2Vzcy4KLSAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlz
Y292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgb3B0
aW9ucy5wdWJsaWNLZXkudmFsdWUoKSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMo
KSwgV1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fZG9j
dW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuZGlzY292ZXJGcm9tRXh0
ZXJuYWxTb3VyY2UobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgb3B0aW9ucy5wdWJsaWNL
ZXkudmFsdWUoKSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RGTW92ZShv
cHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRpYWxz
Q29udGFpbmVyOjpzdG9yZShjb25zdCBCYXNpY0NyZWRlbnRpYWwmLCBDcmVkZW50aWFsUHJvbWlz
ZSYmIHByb21pc2UpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6
OmlzQ3JlYXRlKENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiBvcHRpb25zLCBDcmVkZW50CiB7
CiAgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9j
cmVkZW50aWFsLW1hbmFnZW1lbnQtMS8jYWxnb3JpdGhtLWNyZWF0ZSBhcyBvZiA0IEF1Z3VzdCAy
MDE3CiAgICAgLy8gd2l0aCBlbmhhbmNlbWVudCBmcm9tIDE0IE5vdmVtYmVyIDIwMTcgRWRpdG9y
J3MgRHJhZnQuCi0gICAgaWYgKCFtX2RvY3VtZW50KSB7CisgICAgaWYgKCFtX2RvY3VtZW50IHx8
ICFtX2RvY3VtZW50LT5wYWdlKCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9u
IHsgTm90U3VwcG9ydGVkRXJyb3IgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTIs
OCArMTEyLDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6aXNDcmVhdGUoQ3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyYmIG9wdGlvbnMsIENyZWRlbnQKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQvaGFuZGxlZCBpbiAo
V2ViKUNyZWRlbnRpYWxNZXNzZW5nZXIsIHdoaWNoIGV4Y2hhbmdlcyBtZXNzYWdlcyBiZXR3ZWVu
IFdlYlByb2Nlc3MgYW5kIFVJUHJvY2Vzcy4KLSAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2lu
Z2xldG9uKCkuY3JlYXRlKG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIG9wdGlvbnMucHVi
bGljS2V5LnZhbHVlKCksIGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCksIFdURk1v
dmUob3B0aW9ucy5zaWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2RvY3VtZW50LT5w
YWdlKCktPmF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpLmNyZWF0ZShtX2RvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpLCBkb2VzSGF2ZVNhbWVPcmln
aW5Bc0l0c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9wdGlvbnMuc2lnbmFsKSwgV1RGTW92ZShwcm9t
aXNlKSk7CiB9CiAKIHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6OnByZXZlbnRTaWxlbnRBY2Nl
c3MoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHND
b250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
Q3JlZGVudGlhbHNDb250YWluZXIuaAppbmRleCAyZDViMzhiNTY3MTdmM2RlOGI5MDE0MWM3ODU2
NjFmZWUwNmZlMTc0Li40ZTFiYjRlNWJlNWU1MjU1YTM3Nzg2ZjhlZjY5YjhhNzdkYWY1M2M3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Ny
ZWRlbnRpYWxzQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIu
aCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNz
ZW5nZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9D
cmVkZW50aWFsc01lc3Nlbmdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0
NmJkMDc0YWY0N2U4OWNjOWNjNzViNDFlYWM2MmRhMjY0NjJiZmMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVk
ZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJDcmVkZW50aWFsc01lc3Nlbmdlci5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgQ3JlZGVudGlhbHNNZXNzZW5nZXJJbnRl
cm5hbCB7Ci0KLWNvbnN0IHVpbnQ2NF90IG1heE1lc3NhZ2VJZCA9IDB4RkZGRkZGRkZGRkZGRkY7
IC8vIDU2IGJpdHMKLWNvbnN0IHNpemVfdCBjYWxsQmFja0NsYXNzaWZpZXJPZmZzZXQgPSA1NjsK
LQotfQotCi12b2lkIENyZWRlbnRpYWxzTWVzc2VuZ2VyOjpleGNlcHRpb25SZXBseSh1aW50NjRf
dCBtZXNzYWdlSWQsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikKLXsKLSAgICB1c2lu
ZyBuYW1lc3BhY2UgQ3JlZGVudGlhbHNNZXNzZW5nZXJJbnRlcm5hbDsKLQotICAgIGlmICghKG1l
c3NhZ2VJZCA+PiBjYWxsQmFja0NsYXNzaWZpZXJPZmZzZXQgXiBDYWxsQmFja0NsYXNzaWZpZXI6
OkNyZWF0aW9uKSkgewotICAgICAgICBhdXRvIGhhbmRsZXIgPSB0YWtlQ3JlYXRpb25Db21wbGV0
aW9uSGFuZGxlcihtZXNzYWdlSWQpOwotICAgICAgICBoYW5kbGVyKGV4Y2VwdGlvbi50b0V4Y2Vw
dGlvbigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIShtZXNzYWdlSWQgPj4g
Y2FsbEJhY2tDbGFzc2lmaWVyT2Zmc2V0IF4gQ2FsbEJhY2tDbGFzc2lmaWVyOjpSZXF1ZXN0KSkg
ewotICAgICAgICBhdXRvIGhhbmRsZXIgPSB0YWtlUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKG1l
c3NhZ2VJZCk7Ci0gICAgICAgIGhhbmRsZXIoZXhjZXB0aW9uLnRvRXhjZXB0aW9uKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotfQotCi11aW50NjRfdCBDcmVkZW50aWFsc01lc3Nlbmdlcjo6
YWRkQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcihDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYg
aGFuZGxlcikKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgQ3JlZGVudGlhbHNNZXNzZW5nZXJJbnRl
cm5hbDsKLQotICAgIHVpbnQ2NF90IG1lc3NhZ2VJZCA9IG1fYWNjdW11bGF0ZWRNZXNzYWdlSWQr
KzsKLSAgICBBU1NFUlQobWVzc2FnZUlkIDw9IG1heE1lc3NhZ2VJZCk7Ci0gICAgbWVzc2FnZUlk
ID0gbWVzc2FnZUlkIHwgQ2FsbEJhY2tDbGFzc2lmaWVyOjpDcmVhdGlvbiA8PCBjYWxsQmFja0Ns
YXNzaWZpZXJPZmZzZXQ7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdDcmVhdGlvbkNv
bXBsZXRpb25IYW5kbGVycy5hZGQobWVzc2FnZUlkLCBXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJldHVy
biBtZXNzYWdlSWQ7Ci19Ci0KLUNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgQ3JlZGVudGlhbHNN
ZXNzZW5nZXI6OnRha2VDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IG1lc3NhZ2VJ
ZCkKLXsKLSAgICByZXR1cm4gbV9wZW5kaW5nQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcnMudGFr
ZShtZXNzYWdlSWQpOwotfQotCi11aW50NjRfdCBDcmVkZW50aWFsc01lc3Nlbmdlcjo6YWRkUmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyKFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIp
Ci17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIENyZWRlbnRpYWxzTWVzc2VuZ2VySW50ZXJuYWw7Ci0K
LSAgICB1aW50NjRfdCBtZXNzYWdlSWQgPSBtX2FjY3VtdWxhdGVkTWVzc2FnZUlkKys7Ci0gICAg
QVNTRVJUKG1lc3NhZ2VJZCA8PSBtYXhNZXNzYWdlSWQpOwotICAgIG1lc3NhZ2VJZCA9IG1lc3Nh
Z2VJZCB8IENhbGxCYWNrQ2xhc3NpZmllcjo6UmVxdWVzdCA8PCBjYWxsQmFja0NsYXNzaWZpZXJP
ZmZzZXQ7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXJzLmFkZChtZXNzYWdlSWQsIFdURk1vdmUoaGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmV0dXJuIG1lc3NhZ2VJ
ZDsKLX0KLQotUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyIENyZWRlbnRpYWxzTWVzc2VuZ2VyOjp0
YWtlUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IG1lc3NhZ2VJZCkKLXsKLSAgICBy
ZXR1cm4gbV9wZW5kaW5nUmVxdWVzdENvbXBsZXRpb25IYW5kbGVycy50YWtlKG1lc3NhZ2VJZCk7
Ci19Ci0KLXVpbnQ2NF90IENyZWRlbnRpYWxzTWVzc2VuZ2VyOjphZGRRdWVyeUNvbXBsZXRpb25I
YW5kbGVyKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQotewotICAgIHVzaW5nIG5h
bWVzcGFjZSBDcmVkZW50aWFsc01lc3NlbmdlckludGVybmFsOwotCi0gICAgdWludDY0X3QgbWVz
c2FnZUlkID0gbV9hY2N1bXVsYXRlZE1lc3NhZ2VJZCsrOwotICAgIEFTU0VSVChtZXNzYWdlSWQg
PCBtYXhNZXNzYWdlSWQpOwotICAgIG1lc3NhZ2VJZCA9IG1lc3NhZ2VJZCB8IENhbGxCYWNrQ2xh
c3NpZmllcjo6UXVlcnkgPDwgY2FsbEJhY2tDbGFzc2lmaWVyT2Zmc2V0OwotICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMuYWRkKG1lc3NhZ2VJZCwg
V1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKLSAgICByZXR1cm4gbWVzc2FnZUlkOwotfQotCi1RdWVyeUNvbXBsZXRp
b25IYW5kbGVyIENyZWRlbnRpYWxzTWVzc2VuZ2VyOjp0YWtlUXVlcnlDb21wbGV0aW9uSGFuZGxl
cih1aW50NjRfdCBtZXNzYWdlSWQpCi17Ci0gICAgcmV0dXJuIG1fcGVuZGluZ1F1ZXJ5Q29tcGxl
dGlvbkhhbmRsZXJzLnRha2UobWVzc2FnZUlkKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNN
ZXNzZW5nZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI4YWY5NWMxNmFiZmY5
Y2JlZWExNTgzNjY2YjA1OTU5YWJiZThlYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2Vt
ZW50L0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQot
I2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERlZmVycmVkUHJvbWlz
ZTsKLQotc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7Ci1zdHJ1Y3Qg
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwotCi1zdHJ1Y3QgQ3JlYXRpb25SZXR1
cm5CdW5kbGUgewotICAgIENyZWF0aW9uUmV0dXJuQnVuZGxlKFJlZjxBcnJheUJ1ZmZlcj4mJiBj
cmVkZW50aWFsSWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkKLSAgICAg
ICAgOiBjcmVkZW50aWFsSWQoV1RGTW92ZShjcmVkZW50aWFsSWQpKQotICAgICAgICAsIGF0dGVz
dGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3QpKQotICAgIHsKLSAgICB9Ci0K
LSAgICBSZWY8QXJyYXlCdWZmZXI+IGNyZWRlbnRpYWxJZDsKLSAgICBSZWY8QXJyYXlCdWZmZXI+
IGF0dGVzdGF0aW9uT2JqZWN0OwotfTsKLXN0cnVjdCBBc3NlcnRpb25SZXR1cm5CdW5kbGUgewot
ICAgIEFzc2VydGlvblJldHVybkJ1bmRsZShSZWY8QXJyYXlCdWZmZXI+JiYgY3JlZGVudGlhbElk
LCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4m
JiBzaWduYXR1cmUsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQotICAgICAgICA6IGNy
ZWRlbnRpYWxJZChXVEZNb3ZlKGNyZWRlbnRpYWxJZCkpCi0gICAgICAgICwgYXV0aGVudGljYXRv
ckRhdGEoV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCi0gICAgICAgICwgc2lnbmF0dXJlKFdU
Rk1vdmUoc2lnbmF0dXJlKSkKLSAgICAgICAgLCB1c2VySGFuZGxlKFdURk1vdmUodXNlckhhbmRs
ZSkpCi0gICAgewotICAgIH0KLQotICAgIFJlZjxBcnJheUJ1ZmZlcj4gY3JlZGVudGlhbElkOwot
ICAgIFJlZjxBcnJheUJ1ZmZlcj4gYXV0aGVudGljYXRvckRhdGE7Ci0gICAgUmVmPEFycmF5QnVm
ZmVyPiBzaWduYXR1cmU7Ci0gICAgUmVmPEFycmF5QnVmZmVyPiB1c2VySGFuZGxlOwotfTsKLQot
dXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8Q3JlYXRpb25SZXR1cm5CdW5kbGU+JiYpPjsKLXVzaW5nIFJlcXVlc3RDb21w
bGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8QXNzZXJ0
aW9uUmV0dXJuQnVuZGxlPiYmKT47Ci11c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47Ci0KLWNsYXNzIENyZWRlbnRpYWxzTWVzc2VuZ2Vy
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENyZWRlbnRpYWxzTWVzc2VuZ2VyPiB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3JlZGVudGlh
bHNNZXNzZW5nZXIpOwotcHVibGljOgotICAgIENyZWRlbnRpYWxzTWVzc2VuZ2VyKCkgPSBkZWZh
dWx0OwotCi0gICAgLy8gU2VuZGVycy4KLSAgICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRlbnRpYWwo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiwgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFu
ZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLQotICAg
IC8vIFJlY2VpdmVycy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4Y2VwdGlvblJlcGx5KHVp
bnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBtYWtlQ3JlZGVudGlhbFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25P
YmplY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXNzZXJ0aW9uUmVwbHkodWludDY0X3Qg
bWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBz
aWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRsZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVS
ZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgfkNyZWRlbnRpYWxzTWVzc2VuZ2VyKCkgPSBkZWZhdWx0OwotCi0gICAgV0VCQ09SRV9F
WFBPUlQgdWludDY0X3QgYWRkQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcihDcmVhdGlvbkNvbXBs
ZXRpb25IYW5kbGVyJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIENyZWF0aW9uQ29tcGxldGlvbkhh
bmRsZXIgdGFrZUNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIodWludDY0X3QpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHVpbnQ2NF90IGFkZFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVxdWVzdENvbXBsZXRpb25I
YW5kbGVyIHRha2VSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIodWludDY0X3QpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHVpbnQ2NF90IGFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoUXVlcnlDb21wbGV0
aW9uSGFuZGxlciYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBRdWVyeUNvbXBsZXRpb25IYW5kbGVy
IHRha2VRdWVyeUNvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90KTsKLQotcHJpdmF0ZToKLSAgICBl
bnVtIENhbGxCYWNrQ2xhc3NpZmllciA6IHVpbnQ2NF90IHsKLSAgICAgICAgQ3JlYXRpb24gPSAw
eDAxLAotICAgICAgICBSZXF1ZXN0ID0gMHgwMiwKLSAgICAgICAgUXVlcnkgPSAweDAzLAotICAg
IH07Ci0gICAgLy8gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBpcyByZXNlcnZlZCBhcyBjYWxs
YmFjayBjbGFzc2lmaWVyLgotICAgIHVpbnQ2NF90IG1fYWNjdW11bGF0ZWRNZXNzYWdlSWQgeyAx
IH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcj4gbV9w
ZW5kaW5nQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcnM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyPiBtX3BlbmRpbmdSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXJzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXI+IG1fcGVu
ZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMyYTJjYjIzN2QyMGJh
NGJlYzk4MGIxNDQ4ZjRkOWZlNmI1YjZkNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZS5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpT
T04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUpCi0g
ICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShjbGllbnREYXRhSlNPTikpCi0gICAg
LCBtX2F1dGhlbnRpY2F0b3JEYXRhKFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpKQotICAgICwg
bV9zaWduYXR1cmUoV1RGTW92ZShzaWduYXR1cmUpKQotICAgICwgbV91c2VySGFuZGxlKFdURk1v
dmUodXNlckhhbmRsZSkpCi17Ci19Ci0KLUFycmF5QnVmZmVyKiBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OmF1dGhlbnRpY2F0b3JEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9h
dXRoZW50aWNhdG9yRGF0YS5nZXQoKTsKLX0KLQotQXJyYXlCdWZmZXIqIEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZTo6c2lnbmF0dXJlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaWdu
YXR1cmUuZ2V0KCk7Ci19Ci0KLUFycmF5QnVmZmVyKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U6OnVzZXJIYW5kbGUoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXJIYW5kbGUuZ2V0
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaAppbmRleCA0NDUxZjI1MzFhNDM5
M2UxODk4ZWQ2Y2YzMGEyZGU4ZDk5NGE1ZTUwLi5jZjI4YzFhY2FlMTljY2VlMzcyMmY0ZjAyOTIy
MjkxMTk4MTRkMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKQEAgLTMzLDI1
ICszMywzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YXV0aGVudGljYXRvckRhdGEsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQorICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFK
U09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZl
cj4mJiBzaWduYXR1cmUsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
KFdURk1vdmUoY2xpZW50RGF0YUpTT04pLCBXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSwgV1RG
TW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKHVzZXJIYW5kbGUpKSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB+QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCi0gICAg
QXJyYXlCdWZmZXIqIGF1dGhlbnRpY2F0b3JEYXRhKCkgY29uc3Q7Ci0gICAgQXJyYXlCdWZmZXIq
IHNpZ25hdHVyZSgpIGNvbnN0OwotICAgIEFycmF5QnVmZmVyKiB1c2VySGFuZGxlKCkgY29uc3Q7
CisgICAgQXJyYXlCdWZmZXIqIGF1dGhlbnRpY2F0b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9h
dXRoZW50aWNhdG9yRGF0YS5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVyKiBzaWduYXR1cmUoKSBj
b25zdCB7IHJldHVybiBtX3NpZ25hdHVyZS5wdHIoKTsgfQorICAgIEFycmF5QnVmZmVyKiB1c2Vy
SGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV91c2VySGFuZGxlLnB0cigpOyB9CiAKIHByaXZhdGU6
Ci0gICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBjbGllbnREYXRhSlNPTiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRh
LCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
dXNlckhhbmRsZSk7CisgICAgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJh
eUJ1ZmZlcj4mJiBjbGllbnREYXRhSlNPTiwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0
b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWY8QXJyYXlCdWZmZXI+JiYg
dXNlckhhbmRsZSkKKyAgICAgICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShjbGll
bnREYXRhSlNPTikpCisgICAgICAgICwgbV9hdXRoZW50aWNhdG9yRGF0YShXVEZNb3ZlKGF1dGhl
bnRpY2F0b3JEYXRhKSkKKyAgICAgICAgLCBtX3NpZ25hdHVyZShXVEZNb3ZlKHNpZ25hdHVyZSkp
CisgICAgICAgICwgbV91c2VySGFuZGxlKFdURk1vdmUodXNlckhhbmRsZSkpCisgICAgeworICAg
IH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OkFzc2VydGlv
bjsgfQogCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2F1dGhlbnRpY2F0b3JEYXRhOwotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBtX3VzZXJIYW5kbGU7CisgICAgUmVmPEFycmF5QnVmZmVyPiBtX2F1dGhlbnRpY2F0b3JEYXRh
OworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7CisgICAgUmVmPEFycmF5QnVmZmVy
PiBtX3VzZXJIYW5kbGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4ZjA2YzQzODZmMjNmMTA5MzY2MDIyOTI5ODU5MTE3YzcxY2E1YjQyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIgotCi0jaWYgRU5BQkxF
KFdFQl9BVVRITikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0
YXRpb25PYmplY3QpCi0gICAgOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShjbGllbnRE
YXRhSlNPTikpCi0gICAgLCBtX2F0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXR0ZXN0YXRpb25P
YmplY3QpKQotewotfQotCi1BcnJheUJ1ZmZlciogQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2U6OmF0dGVzdGF0aW9uT2JqZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9hdHRlc3Rh
dGlvbk9iamVjdC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaApp
bmRleCA0ODA3MDdiNmY3MWYyNTgzMjhkOTY4NzIwYjM4ZDBkZmUzODE3YWRjLi4wNTM3ZDk3YzNi
ZDIwNmY5ZmJkMjcxNmVkMzU0MDliNjdlM2VlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZS5oCkBAIC0zMywyMSArMzMsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50aWNh
dG9yUmVzcG9uc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpT
T04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkKKyAgICBzdGF0aWMg
UmVmPEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVm
ZmVyPiYmIGNsaWVudERhdGFKU09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmpl
Y3QpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZShXVEZNb3ZlKGNsaWVudERhdGFKU09OKSwgV1RGTW92ZShhdHRlc3Rh
dGlvbk9iamVjdCkpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAotICAgIEFycmF5QnVmZmVyKiBhdHRlc3RhdGlv
bk9iamVjdCgpIGNvbnN0OworICAgIEFycmF5QnVmZmVyKiBhdHRlc3RhdGlvbk9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0ZXN0YXRpb25PYmplY3QucHRyKCk7IH0KIAogcHJpdmF0ZToKLSAg
ICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
Y2xpZW50RGF0YUpTT04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCk7
CisgICAgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYm
IGNsaWVudERhdGFKU09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXR0ZXN0YXRpb25PYmplY3QpCisg
ICAgICAgIDogQXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUoY2xpZW50RGF0YUpTT04pKQor
ICAgICAgICAsIG1fYXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdCkp
CisgICAgeworICAgIH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5
cGU6OkF0dGVzdGF0aW9uOyB9CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXR0ZXN0YXRp
b25PYmplY3Q7CisgICAgUmVmPEFycmF5QnVmZmVyPiBtX2F0dGVzdGF0aW9uT2JqZWN0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNkNGE1MWZkMmFlOWRmZmU3ZDIwMTM3ODU4MDJkMGZlNmVmZmU1ZjMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHAKQEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisKKyNpZiBFTkFC
TEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiQWJvcnRTaWduYWwuaCIKKyNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNs
aWVudC5oIgorI2luY2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiUHVibGlj
S2V5Q3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgorI2luY2x1ZGUg
IlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIgorI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckludGVybmFs
IHsKKworZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSB7CisgICAgQ3JlYXRlLAorICAgIEdldAor
fTsKKworLy8gRklYTUUoMTgxOTQ4KTogQWRkIHRva2VuIGJpbmRpbmcgSUQgYW5kIGV4dGVuc2lv
bnMuCitzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBwcm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50
RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBjaGFsbGVuZ2UsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4pCit7CisgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNy
ZWF0ZSgpOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQ2xpZW50RGF0YVR5cGU6OkNy
ZWF0ZToKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInR5cGUiX3MsICJ3ZWJhdXRobi5jcmVh
dGUiX3MpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENsaWVudERhdGFUeXBlOjpHZXQ6Cisg
ICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJ0eXBlIl9zLCAid2ViYXV0aG4uZ2V0Il9zKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIG9iamVjdC0+c2V0U3RyaW5nKCJjaGFsbGVuZ2UiX3Ms
IFdURjo6YmFzZTY0VVJMRW5jb2RlKGNoYWxsZW5nZS5kYXRhKCksIGNoYWxsZW5nZS5sZW5ndGgo
KSkpOworICAgIG9iamVjdC0+c2V0U3RyaW5nKCJvcmlnaW4iX3MsIG9yaWdpbi50b1Jhd1N0cmlu
ZygpKTsKKyAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCisg
ICAgb2JqZWN0LT5zZXRTdHJpbmcoImhhc2hBbGdvcml0aG0iX3MsICJTSEEtMjU2Il9zKTsKKwor
ICAgIGF1dG8gdXRmOEpTT05TdHJpbmcgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsK
KyAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1dGY4SlNPTlN0cmluZy5kYXRhKCksIHV0
ZjhKU09OU3RyaW5nLmxlbmd0aCgpKTsKK30KKworc3RhdGljIFZlY3Rvcjx1aW50OF90PiBwcm9k
dWNlQ2xpZW50RGF0YUpzb25IYXNoKGNvbnN0IEFycmF5QnVmZmVyJiBjbGllbnREYXRhSnNvbikK
K3sKKyAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCisgICAg
YXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIGNyeXB0by0+YWRkQnl0ZXMoY2xpZW50RGF0YUpz
b24uZGF0YSgpLCBjbGllbnREYXRhSnNvbi5ieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiBjcnlw
dG8tPmNvbXB1dGVIYXNoKCk7Cit9CisKKy8vIEZJWE1FKDE4MTk0Nyk6IFdlIHNob3VsZCBwcm9i
YWJseSB0cmltIHRpbWVPdXRJbk1zIHRvIHNvbWUgbWF4IGFsbG93YWJsZSBudW1iZXIuCitzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBpbml0VGltZW91dFRpbWVyKHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQgbG9uZz4gdGltZU91dEluTXMsIGNvbnN0IENyZWRlbnRpYWxQcm9taXNlJiBwcm9t
aXNlKQoreworICAgIGlmICghdGltZU91dEluTXMpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtwcm9taXNlID0gcHJv
bWlzZV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5v
dEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl9zIH0pOworICAgIH0pOworICAg
IHRpbWVyLT5zdGFydE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqdGltZU91dElu
TXMpKTsKKyAgICByZXR1cm4gdGltZXI7Cit9CisKK3N0YXRpYyBib29sIGRpZFRpbWVvdXRUaW1l
ckZpcmUoVGltZXIqIHRpbWVyKQoreworICAgIGlmICghdGltZXIpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIXRpbWVyLT5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB0aW1lci0+c3RvcCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWwKKworQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudD4mJiBjbGllbnQpCisgICAgOiBtX2NsaWVudChXVEZNb3Zl
KGNsaWVudCkpCit7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpzZXRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJiBjbGll
bnQpCit7CisgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7Cit9CisKK3ZvaWQgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNhbGxlck9y
aWdpbiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywg
Ym9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmIGFib3J0
U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0Cit7CisgICAgdXNpbmcg
bmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckludGVybmFsOworCisgICAgLy8gVGhl
IGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3Jl
YXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCisgICAgLy8gRklYTUU6IEV4dGVu
c2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBTa2lwIFN0ZXAgMTEtMTIuCisgICAgLy8gU3Rl
cCAxLCAzLCAxNiBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgorICAgIC8vIFN0ZXAgMi4KKyAg
ICBpZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50
IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiJfcyB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIFN0ZXAgNCAmIDE3LgorICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1l
cj4gdGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRUaW1lcihvcHRpb25zLnRpbWVvdXQsIHByb21p
c2UpOworCisgICAgLy8gU3RlcCA1LTcuCisgICAgLy8gRklYTUUoMTgxOTUwKTogV2UgbGFjayBm
dW5kYW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gZGV0ZXJtaW5lIGlmIGEg
aG9zdCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3QuCisgICAgLy8gU3RlcCA2IGlzIHRoZXJlZm9y
ZSBza2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBzdXBwb3J0IHRvIGRldGVybWluZSB3aGV0aGVy
IGEgZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKKyAgICAvLyBkb21haW4gc3VmZml4IG9mIGFub3Ro
ZXIgZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUgY29tcGFyaXNvbiB0byBlcXVhbCBpbiBTdGVw
IDcuCisgICAgaWYgKCFvcHRpb25zLnJwLmlkLmlzRW1wdHkoKSAmJiBjYWxsZXJPcmlnaW4uaG9z
dCgpICE9IG9wdGlvbnMucnAuaWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9u
IHsgU2VjdXJpdHlFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCBhIHJl
Z2lzdHJhYmxlIGRvbWFpbiBzdWZmaXggb2YgdGhlIHByb3ZpZGVkIFJQIElELiJfcyB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAob3B0aW9ucy5ycC5pZC5pc0VtcHR5KCkpCisg
ICAgICAgIG9wdGlvbnMucnAuaWQgPSBjYWxsZXJPcmlnaW4uaG9zdCgpOworCisgICAgLy8gU3Rl
cCA4LTEwLgorICAgIC8vIE1vc3Qgb2YgdGhlIGpvYnMgYXJlIGRvbmUgYnkgYmluZGluZ3MuIEhv
d2V2ZXIsIHdlIGNhbid0IGtub3cgaWYgdGhlIEpTVmFsdWUgb2Ygb3B0aW9ucy5wdWJLZXlDcmVk
UGFyYW1zCisgICAgLy8gaXMgZW1wdHkgb3Igbm90LiBSZXR1cm4gTm90U3VwcG9ydGVkRXJyb3Ig
YXMgbG9uZyBhcyBpdCBpcyBlbXB0eS4KKyAgICBpZiAob3B0aW9ucy5wdWJLZXlDcmVkUGFyYW1z
LmlzRW1wdHkoKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciwgIk5vIGRlc2lyZWQgcHJvcGVydGllcyBvZiB0aGUgdG8gYmUgY3JlYXRlZCBj
cmVkZW50aWFsIGFyZSBwcm92aWRlZC4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBTdGVwIDEzLTE1LgorICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBwcm9kdWNlQ2xp
ZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZSwgb3B0aW9ucy5jaGFsbGVuZ2UsIGNh
bGxlck9yaWdpbik7CisgICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBwcm9kdWNlQ2xpZW50
RGF0YUpzb25IYXNoKGNsaWVudERhdGFKc29uKTsKKworICAgIC8vIFN0ZXAgMTgtMjEuCisgICAg
Ly8gT25seSBwbGF0Zm9ybSBhdHRhY2htZW50cyB3aWxsIGJlIHN1cHBvcnRlZCBhdCB0aGlzIHN0
YWdlLiBBc3N1bWluZyBvbmUgYXV0aGVudGljYXRvciBwZXIgZGV2aWNlLgorICAgIC8vIEFsc28s
IHJlc2lkZW50IGtleXMsIHVzZXIgdmVyaWZpY2F0aW9ucyBhbmQgZGlyZWN0IGF0dGVzdGF0aW9u
IGFyZSBlbmZvcmNlZCBhdCB0aGlzIHRhZ2UuCisgICAgLy8gRm9yIGJldHRlciBwZXJmb3JtYW5j
ZSwgdHJhbnNwb3J0cyBvZiBvcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFscyBhcmUgY2hlY2tlZCBp
biBMb2NhbEF1dGhlbnRpY2F0b3IuCisgICAgaWYgKCFtX2NsaWVudCkgIHsKKyAgICAgICAgcHJv
bWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBl
cnJvci4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aW1lb3V0VGltZXIgPSBXVEZNb3ZlKHRpbWVvdXRU
aW1lciksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChjb25zdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGRpZFRpbWVvdXRUaW1lckZp
cmUodGltZW91dFRpbWVyLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KGFib3J0U2lnbmFsICYmIGFib3J0U2lnbmFsLT5hYm9ydGVkKCkpIHsKKyAgICAgICAgICAgIHBy
b21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydGVkIGJ5IEFib3J0U2ln
bmFsLiJfcyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRh
dGEuY2xpZW50RGF0YUpTT04gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKTsKKyAgICAgICAgaWYg
KGF1dG8gcHVibGljS2V5Q3JlZGVudGlhbCA9IFB1YmxpY0tleUNyZWRlbnRpYWw6OnRyeUNyZWF0
ZShkYXRhKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHB1YmxpY0tleUNyZWRlbnRp
YWwuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VS
VCghZXhjZXB0aW9uLm1lc3NhZ2UuaXNOdWxsKCkpOworICAgICAgICBwcm9taXNlLnJlamVjdChl
eGNlcHRpb24udG9FeGNlcHRpb24oKSk7CisgICAgfTsKKyAgICAvLyBBc3luYyBvcGVyYXRpb25z
IGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCisgICAgbV9jbGll
bnQtPm1ha2VDcmVkZW50aWFsKGNsaWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6
ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNhbGxlck9y
aWdpbiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBi
b29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRT
aWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKK3sKKyAgICB1c2luZyBu
YW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CisKKyAgICAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNjcmVh
dGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KKyAgICAvLyBGSVhNRTogRXh0ZW5z
aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIFNraXAgU3RlcCA4LTkuCisgICAgLy8gU3RlcCAx
LCAzLCAxMyBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgorICAgIC8vIFN0ZXAgMi4KKyAgICBp
ZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4
Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlz
IG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIFN0ZXAgNCAmIDE2LgorICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4g
dGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRUaW1lcihvcHRpb25zLnRpbWVvdXQsIHByb21pc2Up
OworCisgICAgLy8gU3RlcCA1LTcuCisgICAgLy8gRklYTUUoMTgxOTUwKTogV2UgbGFjayBmdW5k
YW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gZGV0ZXJtaW5lIGlmIGEgaG9z
dCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3QuCisgICAgLy8gU3RlcCA2IGlzIHRoZXJlZm9yZSBz
a2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBzdXBwb3J0IHRvIGRldGVybWluZSB3aGV0aGVyIGEg
ZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKKyAgICAvLyBkb21haW4gc3VmZml4IG9mIGFub3RoZXIg
ZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUgY29tcGFyaXNvbiB0byBlcXVhbCBpbiBTdGVwIDcu
CisgICAgaWYgKCFvcHRpb25zLnJwSWQuaXNFbXB0eSgpICYmIGNhbGxlck9yaWdpbi5ob3N0KCkg
IT0gb3B0aW9ucy5ycElkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFNl
Y3VyaXR5RXJyb3IsICJUaGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBpcyBub3QgYSByZWdpc3Ry
YWJsZSBkb21haW4gc3VmZml4IG9mIHRoZSBwcm92aWRlZCBSUCBJRC4iX3MgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKG9wdGlvbnMucnBJZC5pc0VtcHR5KCkpCisgICAgICAg
IG9wdGlvbnMucnBJZCA9IGNhbGxlck9yaWdpbi5ob3N0KCk7CisKKyAgICAvLyBTdGVwIDEwLTEy
LgorICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBwcm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50
RGF0YVR5cGU6OkdldCwgb3B0aW9ucy5jaGFsbGVuZ2UsIGNhbGxlck9yaWdpbik7CisgICAgYXV0
byBjbGllbnREYXRhSnNvbkhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERh
dGFKc29uKTsKKworICAgIC8vIFN0ZXAgMTQtMTUsIDE3LTE5LgorICAgIC8vIE9ubHkgcGxhdGZv
cm0gYXR0YWNobWVudHMgd2lsbCBiZSBzdXBwb3J0ZWQgYXQgdGhpcyBzdGFnZS4gQXNzdW1pbmcg
b25lIGF1dGhlbnRpY2F0b3IgcGVyIGRldmljZS4KKyAgICAvLyBBbHNvLCByZXNpZGVudCBrZXlz
LCB1c2VyIHZlcmlmaWNhdGlvbnMgYW5kIGRpcmVjdCBhdHRlc3RhdGlvbiBhcmUgZW5mb3JjZWQg
YXQgdGhpcyB0YWdlLgorICAgIC8vIEZvciBiZXR0ZXIgcGVyZm9ybWFuY2UsIGZpbHRlcmluZyBv
ZiBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgaXMgZG9uZSBpbiBMb2NhbEF1dGhlbnRpY2F0b3Iu
CisgICAgaWYgKCFtX2NsaWVudCkgIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9u
IHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2NsaWVudERh
dGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCB0aW1lb3V0VGltZXIgPSBXVEZNb3ZlKHRpbWVvdXRUaW1lciksIGFib3J0U2lnbmFsID0g
V1RGTW92ZShhYm9ydFNpZ25hbCldIChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSYgZGF0YSwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKGRpZFRpbWVvdXRUaW1lckZpcmUodGltZW91dFRpbWVyLmdldCgp
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGFib3J0U2lnbmFsICYmIGFib3J0
U2lnbmFsLT5hYm9ydGVkKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IEFib3J0RXJyb3IsICJBYm9ydGVkIGJ5IEFib3J0U2lnbmFsLiJfcyB9KTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGEuY2xpZW50RGF0YUpTT04gPSBX
VEZNb3ZlKGNsaWVudERhdGFKc29uKTsKKyAgICAgICAgaWYgKGF1dG8gcHVibGljS2V5Q3JlZGVu
dGlhbCA9IFB1YmxpY0tleUNyZWRlbnRpYWw6OnRyeUNyZWF0ZShkYXRhKSkgeworICAgICAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKHB1YmxpY0tleUNyZWRlbnRpYWwuZ2V0KCkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCghZXhjZXB0aW9uLm1lc3NhZ2Uu
aXNOdWxsKCkpOworICAgICAgICBwcm9taXNlLnJlamVjdChleGNlcHRpb24udG9FeGNlcHRpb24o
KSk7CisgICAgfTsKKyAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBo
YW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCisgICAgbV9jbGllbnQtPmdldEFzc2VydGlvbihjbGll
bnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3Jt
QXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBw
cm9taXNlKSBjb25zdAoreworICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczov
L3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2lzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZQorICAgIC8vIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KKyAgICBpZiAoIW1f
Y2xpZW50KSAgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBVbmtub3duRXJy
b3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIEZJWE1FKDE4Mjc2Nyk6IFdlIHNob3VsZCBjb25zaWRlciBtb3JlIG9uIHRo
ZSBhc3Nlc3NtZW50IG9mIHRoZSByZXR1cm4gdmFsdWUuIFJpZ2h0IG5vdywgd2UgcmV0dXJuIHRy
dWUvZmFsc2UKKyAgICAvLyBpbW1lZGlhdGVseSBhY2NvcmRpbmcgdG8gcGxhdGZvcm0gc3BlY2lm
aWMgcHJvY2VkdXJlcy4KKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBwcm9taXNl
LnJlc29sdmUocmVzdWx0KTsKKyAgICB9OworICAgIC8vIEFzeW5jIG9wZXJhdGlvbiBhcmUgZGlz
cGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgorICAgIG1fY2xpZW50LT5pc1Vz
ZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFjNDlkYjUy
M2I5MzZiMGE0ZWMyMjEwNDFiNzdkYTdjYzE0NzhmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAg
LTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKworI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBBYm9ydFNpZ25hbDsKK2NsYXNzIEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudDsKK2NsYXNzIEJhc2ljQ3JlZGVudGlhbDsKK2NsYXNzIFNlY3VyaXR5T3Jp
Z2luOworCitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKK3N0cnVj
dCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CisKK3VzaW5nIENyZWRlbnRpYWxQ
cm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFjZTxCYXNp
Y0NyZWRlbnRpYWw+Pj47CisKK2NsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKTsKK3B1YmxpYzoK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3Rk
Ojp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudD4mJik7CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1w
bGVtZW50IHN0YXRpYyBtZXRob2RzIG9mIFB1YmxpY0tleUNyZWRlbnRpYWwuCisgICAgdm9pZCBj
cmVhdGUoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiwgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0
U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2b2lkIGRpc2NvdmVy
RnJvbUV4dGVybmFsU291cmNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywg
UmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2
b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9t
aXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzgwY2E3N2NmNzIxZTA4M2I2NDYw
ZDBiOTZlMWZkYjgxZjQ2ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAKQEAgLTAsMCAr
MSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisK
KyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDo6fkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudCgpCit7CisgICAgLy8gSnVzdCB0byBjYWxsIGhhbmRsZXJzIHRvIGF2b2lk
IGFueSBhc3NlcnRpb24gZmFpbHVyZXMuCisgICAgaWYgKG1fcGVuZGluZ0NvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgTm90QWxsb3dl
ZEVycm9yLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iX3MgfSk7CisgICAgZm9yIChhdXRvIGl0ciA9
IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzLmJlZ2luKCk7IGl0ciAhPSAgbV9wZW5k
aW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMuZW5kKCk7ICsraXRyKQorICAgICAgICBpdHItPnZh
bHVlKGZhbHNlKTsKK30KKwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OnJl
cXVlc3RSZXBseShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSwg
Y29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKQoreworICAgIG1fcGVuZGlu
Z0NvbXBsZXRpb25IYW5kbGVyKGRhdGEsIGV4Y2VwdGlvbik7Cit9CisKK3ZvaWQgQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yQ2xpZW50Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0
b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wgcmVzdWx0KQoreworICAg
IGF1dG8gaGFuZGxlciA9IG1fcGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzLnRha2UobWVz
c2FnZUlkKTsKKyAgICBoYW5kbGVyKHJlc3VsdCk7Cit9CisKK2Jvb2wgQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50OjpzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBpZiAobV9wZW5kaW5nQ29tcGxldGlvbkhh
bmRsZXIpIHsKKyAgICAgICAgaGFuZGxlcih7IH0sIHsgTm90QWxsb3dlZEVycm9yLCAiQSByZXF1
ZXN0IGlzIHBlbmRpbmcuIl9zIH0pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOworICAgIHJl
dHVybiB0cnVlOworfQorCit1aW50NjRfdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6
OmFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRs
ZXIpCit7CisgICAgdWludDY0X3QgbWVzc2FnZUlkID0gbV9hY2N1bXVsYXRlZE1lc3NhZ2VJZCsr
OworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMu
YWRkKG1lc3NhZ2VJZCwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICByZXR1cm4gbWVzc2FnZUlkOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJhM2Q5MWQ2NTBmNDBk
NjQ2YjMxZjYxYTA2ODFlZTU1NWViYTE0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAg
LTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVmZXJyZWRQcm9t
aXNlOworCitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKK3N0cnVj
dCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTsKK3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnM7CisKK3VzaW5nIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmLCBj
b25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+OwordXNpbmcgUXVlcnlDb21wbGV0aW9uSGFu
ZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OworCitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50KTsKK3B1YmxpYzoKKyAgICBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQo
KSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50
KCk7CisKKyAgICAvLyBTZW5kZXJzLgorICAgIHZpcnR1YWwgdm9pZCBtYWtlQ3JlZGVudGlhbChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisKKyAgICAv
LyBSZWNlaXZlcnMuCisgICAgdm9pZCByZXF1ZXN0UmVwbHkoY29uc3QgV2ViQ29yZTo6UHVibGlj
S2V5Q3JlZGVudGlhbERhdGEmLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik7CisgICAg
dm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1
aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpOworCitwcm90ZWN0ZWQ6CisgICAgLy8gT25seSBvbmUg
cmVxdWVzdCBpcyBhbGxvd2VkIGF0IG9uZSB0aW1lLiBJdCByZXR1cm5zIGZhbHNlIHdoZW5ldmVy
IHRoZXJlIGlzIGFuIGV4aXN0aW5nIHBlbmRpbmcgcmVxdWVzdC4KKyAgICAvLyBBbmQgaW52b2tl
cyB0aGUgcHJvdmlkZWQgaGFuZGxlciB3aXRoIE5vdEFsbG93ZWRFcnJvci4KKyAgICBib29sIHNl
dFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7Cisg
ICAgdWludDY0X3QgYWRkUXVlcnlDb21wbGV0aW9uSGFuZGxlcihRdWVyeUNvbXBsZXRpb25IYW5k
bGVyJiYpOworCitwcml2YXRlOgorICAgIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciBtX3BlbmRp
bmdDb21wbGV0aW9uSGFuZGxlcjsKKyAgICB1aW50NjRfdCBtX2FjY3VtdWxhdGVkTWVzc2FnZUlk
IHsgMSB9OworICAgIEhhc2hNYXA8dWludDY0X3QsIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXI+IG1f
cGVuZGluZ1F1ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZDYwMTYyMWYxOTExNzk1YjE3ZTRkZTc2NmZkNjM5
Njk2ZjYxNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgotCi0jaWYgRU5BQkxF
KFdFQl9BVVRITikKLQotI2luY2x1ZGUgIkFib3J0U2lnbmFsLmgiCi0jaW5jbHVkZSAiQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJDcmVkZW50aWFsc01lc3Nlbmdlci5oIgotI2lu
Y2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgiCi0jaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlh
bC5oIgotI2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCIKLSNp
bmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCIKLSNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8cGFsL2NyeXB0
by9DcnlwdG9EaWdlc3QuaD4KLSNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgotI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBBdXRoZW50aWNhdG9yTWFuYWdlckludGVy
bmFsIHsKLQotZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSB7Ci0gICAgQ3JlYXRlLAotICAgIEdl
dAotfTsKLQotLy8gRklYTUUoMTgxOTQ4KTogQWRkIHRva2VuIGJpbmRpbmcgSUQgYW5kIGV4dGVu
c2lvbnMuCi1zdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBwcm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xp
ZW50RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBjaGFsbGVuZ2UsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4pCi17Ci0gICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQ2xpZW50RGF0YVR5cGU6
OkNyZWF0ZToKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInR5cGUiX3MsICJ3ZWJhdXRobi5j
cmVhdGUiX3MpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENsaWVudERhdGFUeXBlOjpHZXQ6
Ci0gICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJ0eXBlIl9zLCAid2ViYXV0aG4uZ2V0Il9zKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIG9iamVjdC0+c2V0U3RyaW5nKCJjaGFsbGVuZ2Ui
X3MsIFdURjo6YmFzZTY0VVJMRW5jb2RlKGNoYWxsZW5nZS5kYXRhKCksIGNoYWxsZW5nZS5sZW5n
dGgoKSkpOwotICAgIG9iamVjdC0+c2V0U3RyaW5nKCJvcmlnaW4iX3MsIG9yaWdpbi50b1Jhd1N0
cmluZygpKTsKLSAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQu
Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImhhc2hBbGdvcml0aG0iX3MsICJTSEEtMjU2Il9zKTsK
LQotICAgIGF1dG8gdXRmOEpTT05TdHJpbmcgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0Zjgo
KTsKLSAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1dGY4SlNPTlN0cmluZy5kYXRhKCks
IHV0ZjhKU09OU3RyaW5nLmxlbmd0aCgpKTsKLX0KLQotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBw
cm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNvbnN0IEFycmF5QnVmZmVyJiBjbGllbnREYXRhSnNv
bikKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQuCi0g
ICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwotICAgIGNyeXB0by0+YWRkQnl0ZXMoY2xpZW50RGF0
YUpzb24uZGF0YSgpLCBjbGllbnREYXRhSnNvbi5ieXRlTGVuZ3RoKCkpOwotICAgIHJldHVybiBj
cnlwdG8tPmNvbXB1dGVIYXNoKCk7Ci19Ci0KLS8vIEZJWE1FKDE4MTk0Nyk6IFdlIHNob3VsZCBw
cm9iYWJseSB0cmltIHRpbWVPdXRJbk1zIHRvIHNvbWUgbWF4IGFsbG93YWJsZSBudW1iZXIuCi1z
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBpbml0VGltZW91dFRpbWVyKHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQgbG9uZz4gdGltZU91dEluTXMsIGNvbnN0IENyZWRlbnRpYWxQcm9taXNlJiBw
cm9taXNlKQotewotICAgIGlmICghdGltZU91dEluTXMpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtwcm9taXNlID0g
cHJvbWlzZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIl9zIH0pOwotICAgIH0pOwot
ICAgIHRpbWVyLT5zdGFydE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqdGltZU91
dEluTXMpKTsKLSAgICByZXR1cm4gdGltZXI7Ci19Ci0KLXN0YXRpYyBib29sIGRpZFRpbWVvdXRU
aW1lckZpcmUoVGltZXIqIHRpbWVyKQotewotICAgIGlmICghdGltZXIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoIXRpbWVyLT5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB0aW1lci0+c3RvcCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgQXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbAotCi1BdXRoZW50aWNhdG9yTWFuYWdl
ciYgQXV0aGVudGljYXRvck1hbmFnZXI6OnNpbmdsZXRvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXV0aGVudGljYXRvck1hbmFn
ZXI+IGF1dGhlbnRpY2F0b3I7Ci0gICAgcmV0dXJuIGF1dGhlbnRpY2F0b3I7Ci19Ci0KLXZvaWQg
QXV0aGVudGljYXRvck1hbmFnZXI6OnNldE1lc3NlbmdlcihDcmVkZW50aWFsc01lc3NlbmdlciYg
bWVzc2VuZ2VyKQotewotICAgIG1fbWVzc2VuZ2VyID0gbWFrZVdlYWtQdHIobWVzc2VuZ2VyKTsK
LX0KLQotdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBjYWxsZXJPcmlnaW4sIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNp
Z25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBjb25zdAot
ewotICAgIHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNhdG9yTWFuYWdlckludGVybmFsOwotCi0g
ICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJh
dXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCi0gICAgLy8gRklY
TUU6IEV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBTa2lwIFN0ZXAgMTEtMTIuCi0g
ICAgLy8gU3RlcCAxLCAzLCAxNiBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgotICAgIC8vIFN0
ZXAgMi4KLSAgICBpZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzKSB7Ci0gICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhl
IGRvY3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiJfcyB9KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN0ZXAgNCAmIDE3LgotICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaW1lcj4gdGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRUaW1lcihvcHRpb25zLnRpbWVv
dXQsIHByb21pc2UpOwotCi0gICAgLy8gU3RlcCA1LTcuCi0gICAgLy8gRklYTUUoMTgxOTUwKTog
V2UgbGFjayBmdW5kYW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gZGV0ZXJt
aW5lIGlmIGEgaG9zdCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3QuCi0gICAgLy8gU3RlcCA2IGlz
IHRoZXJlZm9yZSBza2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBzdXBwb3J0IHRvIGRldGVybWlu
ZSB3aGV0aGVyIGEgZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKLSAgICAvLyBkb21haW4gc3VmZml4
IG9mIGFub3RoZXIgZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUgY29tcGFyaXNvbiB0byBlcXVh
bCBpbiBTdGVwIDcuCi0gICAgaWYgKCFvcHRpb25zLnJwLmlkLmlzRW1wdHkoKSAmJiBjYWxsZXJP
cmlnaW4uaG9zdCgpICE9IG9wdGlvbnMucnAuaWQpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlz
IG5vdCBhIHJlZ2lzdHJhYmxlIGRvbWFpbiBzdWZmaXggb2YgdGhlIHByb3ZpZGVkIFJQIElELiJf
cyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob3B0aW9ucy5ycC5pZC5pc0Vt
cHR5KCkpCi0gICAgICAgIG9wdGlvbnMucnAuaWQgPSBjYWxsZXJPcmlnaW4uaG9zdCgpOwotCi0g
ICAgLy8gU3RlcCA4LTEwLgotICAgIC8vIE1vc3Qgb2YgdGhlIGpvYnMgYXJlIGRvbmUgYnkgYmlu
ZGluZ3MuIEhvd2V2ZXIsIHdlIGNhbid0IGtub3cgaWYgdGhlIEpTVmFsdWUgb2Ygb3B0aW9ucy5w
dWJLZXlDcmVkUGFyYW1zCi0gICAgLy8gaXMgZW1wdHkgb3Igbm90LiBSZXR1cm4gTm90U3VwcG9y
dGVkRXJyb3IgYXMgbG9uZyBhcyBpdCBpcyBlbXB0eS4KLSAgICBpZiAob3B0aW9ucy5wdWJLZXlD
cmVkUGFyYW1zLmlzRW1wdHkoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vIGRlc2lyZWQgcHJvcGVydGllcyBvZiB0aGUgdG8gYmUg
Y3JlYXRlZCBjcmVkZW50aWFsIGFyZSBwcm92aWRlZC4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBTdGVwIDEzLTE1LgotICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBw
cm9kdWNlQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZSwgb3B0aW9ucy5jaGFs
bGVuZ2UsIGNhbGxlck9yaWdpbik7Ci0gICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBwcm9k
dWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKc29uKTsKLQotICAgIC8vIFN0ZXAgMTgt
MjEuCi0gICAgLy8gT25seSBwbGF0Zm9ybSBhdHRhY2htZW50cyB3aWxsIGJlIHN1cHBvcnRlZCBh
dCB0aGlzIHN0YWdlLiBBc3N1bWluZyBvbmUgYXV0aGVudGljYXRvciBwZXIgZGV2aWNlLgotICAg
IC8vIEFsc28sIHJlc2lkZW50IGtleXMsIHVzZXIgdmVyaWZpY2F0aW9ucyBhbmQgZGlyZWN0IGF0
dGVzdGF0aW9uIGFyZSBlbmZvcmNlZCBhdCB0aGlzIHRhZ2UuCi0gICAgLy8gRm9yIGJldHRlciBw
ZXJmb3JtYW5jZSwgdHJhbnNwb3J0cyBvZiBvcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFscyBhcmUg
Y2hlY2tlZCBpbiBMb2NhbEF1dGhlbnRpY2F0b3IuCi0gICAgaWYgKCFtX21lc3NlbmdlcikgIHsK
LSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiVW5rbm93
biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnRE
YXRhSnNvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aW1lb3V0VGltZXIgPSBXVEZN
b3ZlKHRpbWVvdXRUaW1lciksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChF
eGNlcHRpb25PcjxDcmVhdGlvblJldHVybkJ1bmRsZT4mJiByZXN1bHQpIG11dGFibGUgewotICAg
ICAgICBpZiAoZGlkVGltZW91dFRpbWVyRmlyZSh0aW1lb3V0VGltZXIuZ2V0KCkpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoYWJvcnRTaWduYWwgJiYgYWJvcnRTaWduYWwtPmFi
b3J0ZWQoKSkgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRF
cnJvciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwuIl9zIH0pOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KHJlc3VsdC5leGNlcHRpb24oKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGJ1bmRsZSA9IHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFB1YmxpY0tleUNyZWRlbnRp
YWw6OmNyZWF0ZShXVEZNb3ZlKGJ1bmRsZS5jcmVkZW50aWFsSWQpLCBBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVuZGxlLmF0dGVzdGF0aW9uT2JqZWN0KSkpKS5wdHIoKSk7
Ci0gICAgfTsKLSAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5k
bGVkIGluIHRoZSBtZXNzZW5nZXIuCi0gICAgbV9tZXNzZW5nZXItPm1ha2VDcmVkZW50aWFsKGNs
aWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
fQotCi12b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJj
ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3JpZ2luLCBjb25zdCBQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3Rv
cnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2Um
JiBwcm9taXNlKSBjb25zdAotewotICAgIHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNhdG9yTWFu
YWdlckludGVybmFsOwotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3JlZGVudGlhbCBhcyBvZiA1IERlY2VtYmVy
IDIwMTcuCi0gICAgLy8gRklYTUU6IEV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBT
a2lwIFN0ZXAgOC05LgotICAgIC8vIFN0ZXAgMSwgMywgMTMgYXJlIGhhbmRsZWQgYnkgdGhlIGNh
bGxlci4KLSAgICAvLyBTdGVwIDIuCi0gICAgaWYgKCFzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycykg
ewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RBbGxvd2VkRXJyb3IsICJU
aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBpcyBub3QgdGhlIHNhbWUgYXMgaXRzIGFuY2VzdG9y
cy4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBTdGVwIDQgJiAxNi4K
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IHRpbWVvdXRUaW1lciA9IGluaXRUaW1lb3V0VGlt
ZXIob3B0aW9ucy50aW1lb3V0LCBwcm9taXNlKTsKLQotICAgIC8vIFN0ZXAgNS03LgotICAgIC8v
IEZJWE1FKDE4MTk1MCk6IFdlIGxhY2sgZnVuZGFtZW50YWwgc3VwcG9ydCBmcm9tIFNlY3VyaXR5
T3JpZ2luIHRvIGRldGVybWluZSBpZiBhIGhvc3QgaXMgYSB2YWxpZCBkb21haW4gb3Igbm90Lgot
ICAgIC8vIFN0ZXAgNiBpcyB0aGVyZWZvcmUgc2tpcHBlZC4gQWxzbywgd2UgbGFjayB0aGUgc3Vw
cG9ydCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGRvbWFpbiBpcyBhIHJlZ2lzdHJhYmxlCi0gICAg
Ly8gZG9tYWluIHN1ZmZpeCBvZiBhbm90aGVyIGRvbWFpbi4gSGVuY2UgcmVzdHJpY3QgdGhlIGNv
bXBhcmlzb24gdG8gZXF1YWwgaW4gU3RlcCA3LgotICAgIGlmICghb3B0aW9ucy5ycElkLmlzRW1w
dHkoKSAmJiBjYWxsZXJPcmlnaW4uaG9zdCgpICE9IG9wdGlvbnMucnBJZCkgewotICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiVGhlIG9yaWdpbiBvZiB0
aGUgZG9jdW1lbnQgaXMgbm90IGEgcmVnaXN0cmFibGUgZG9tYWluIHN1ZmZpeCBvZiB0aGUgcHJv
dmlkZWQgUlAgSUQuIl9zIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChvcHRp
b25zLnJwSWQuaXNFbXB0eSgpKQotICAgICAgICBvcHRpb25zLnJwSWQgPSBjYWxsZXJPcmlnaW4u
aG9zdCgpOwotCi0gICAgLy8gU3RlcCAxMC0xMi4KLSAgICBhdXRvIGNsaWVudERhdGFKc29uID0g
cHJvZHVjZUNsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlOjpHZXQsIG9wdGlvbnMuY2hhbGxl
bmdlLCBjYWxsZXJPcmlnaW4pOwotICAgIGF1dG8gY2xpZW50RGF0YUpzb25IYXNoID0gcHJvZHVj
ZUNsaWVudERhdGFKc29uSGFzaChjbGllbnREYXRhSnNvbik7Ci0KLSAgICAvLyBTdGVwIDE0LTE1
LCAxNy0xOS4KLSAgICAvLyBPbmx5IHBsYXRmb3JtIGF0dGFjaG1lbnRzIHdpbGwgYmUgc3VwcG9y
dGVkIGF0IHRoaXMgc3RhZ2UuIEFzc3VtaW5nIG9uZSBhdXRoZW50aWNhdG9yIHBlciBkZXZpY2Uu
Ci0gICAgLy8gQWxzbywgcmVzaWRlbnQga2V5cywgdXNlciB2ZXJpZmljYXRpb25zIGFuZCBkaXJl
Y3QgYXR0ZXN0YXRpb24gYXJlIGVuZm9yY2VkIGF0IHRoaXMgdGFnZS4KLSAgICAvLyBGb3IgYmV0
dGVyIHBlcmZvcm1hbmNlLCBmaWx0ZXJpbmcgb2Ygb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzIGlz
IGRvbmUgaW4gTG9jYWxBdXRoZW50aWNhdG9yLgotICAgIGlmICghbV9tZXNzZW5nZXIpICB7Ci0g
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlVua25vd24g
aW50ZXJuYWwgZXJyb3IuIl9zIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFtjbGllbnREYXRhSnNvbiA9IFdURk1vdmUoY2xpZW50RGF0
YUpzb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgdGltZW91dFRpbWVyID0gV1RGTW92
ZSh0aW1lb3V0VGltZXIpLCBhYm9ydFNpZ25hbCA9IFdURk1vdmUoYWJvcnRTaWduYWwpXSAoRXhj
ZXB0aW9uT3I8QXNzZXJ0aW9uUmV0dXJuQnVuZGxlPiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGlmIChkaWRUaW1lb3V0VGltZXJGaXJlKHRpbWVvdXRUaW1lci5nZXQoKSkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJv
cnRlZCgpKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVy
cm9yLCAiQWJvcnRlZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAg
ICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LmV4Y2VwdGlvbigpKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gYnVuZGxlID0gcmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpOwotICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5Q3JlZGVudGlh
bDo6Y3JlYXRlKFdURk1vdmUoYnVuZGxlLmNyZWRlbnRpYWxJZCksIEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZTo6Y3JlYXRlKFdURk1vdmUoY2xpZW50RGF0YUpzb24pLCBXVEZNb3ZlKGJ1
bmRsZS5hdXRoZW50aWNhdG9yRGF0YSksIFdURk1vdmUoYnVuZGxlLnNpZ25hdHVyZSksIFdURk1v
dmUoYnVuZGxlLnVzZXJIYW5kbGUpKSkucHRyKCkpOwotICAgIH07Ci0gICAgLy8gQXN5bmMgb3Bl
cmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUgbWVzc2VuZ2VyLgotICAg
IG1fbWVzc2VuZ2VyLT5nZXRBc3NlcnRpb24oY2xpZW50RGF0YUpzb25IYXNoLCBvcHRpb25zLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRvck1hbmFn
ZXI6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9t
aXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKSBjb25zdAotewotICAgIC8vIFRoZSBm
b2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2lzVXNl
clZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZQotICAgIC8vIGFzIG9mIDUg
RGVjZW1iZXIgMjAxNy4KLSAgICBpZiAoIW1fbWVzc2VuZ2VyKSAgewotICAgICAgICBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9y
LiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FKDE4Mjc2Nyk6
IFdlIHNob3VsZCBjb25zaWRlciBtb3JlIG9uIHRoZSBhc3Nlc3NtZW50IG9mIHRoZSByZXR1cm4g
dmFsdWUuIFJpZ2h0IG5vdywgd2UgcmV0dXJuIHRydWUvZmFsc2UKLSAgICAvLyBpbW1lZGlhdGVs
eSBhY2NvcmRpbmcgdG8gcGxhdGZvcm0gc3BlY2lmaWMgcHJvY2VkdXJlcy4KLSAgICBhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCByZXN1
bHQpIG11dGFibGUgewotICAgICAgICBwcm9taXNlLnJlc29sdmUocmVzdWx0KTsKLSAgICB9Owot
ICAgIC8vIEFzeW5jIG9wZXJhdGlvbiBhcmUgZGlzcGF0Y2hlZCBhbmQgaGFuZGxlZCBpbiB0aGUg
bWVzc2VuZ2VyLgotICAgIG1fbWVzc2VuZ2VyLT5pc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzcyNzZkZGU2NzhjMjNiMGM5MjE5
OGQxZmY3OWRhYjM1ZjZjYTVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1h
bmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBBYm9ydFNpZ25hbDsKLWNsYXNzIEJhc2ljQ3JlZGVudGlhbDsKLWNsYXNz
IENyZWRlbnRpYWxzTWVzc2VuZ2VyOwotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0KLXN0cnVjdCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOwotc3RydWN0IFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9uczsKLQotdXNpbmcgQ3JlZGVudGlhbFByb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEJhc2ljQ3JlZGVudGlhbD4+PjsK
LQotY2xhc3MgQXV0aGVudGljYXRvck1hbmFnZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEF1dGhlbnRpY2F0b3JNYW5hZ2VyKTsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8
QXV0aGVudGljYXRvck1hbmFnZXI+OwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBBdXRoZW50aWNhdG9yTWFuYWdlciYgc2luZ2xldG9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNZXNzZW5nZXIoQ3JlZGVudGlhbHNNZXNzZW5nZXImKTsKLQotICAgIC8vIFRoZSBm
b2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgc3RhdGljIG1ldGhvZHMgb2YgUHVibGljS2V5Q3Jl
ZGVudGlhbC4KLSAgICB2b2lkIGNyZWF0ZShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBib29sIHNhbWVPcmlnaW5XaXRoQW5j
ZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0
OwotICAgIHZvaWQgZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgU2VjdXJpdHlPcmln
aW4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBib29sIHNhbWVP
cmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9t
aXNlJiYpIGNvbnN0OwotICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKSBjb25zdDsKLQot
cHJpdmF0ZToKLSAgICBBdXRoZW50aWNhdG9yTWFuYWdlcigpID0gZGVmYXVsdDsKLQotICAgIFdl
YWtQdHI8Q3JlZGVudGlhbHNNZXNzZW5nZXI+IG1fbWVzc2VuZ2VyOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI4ZjA5NDZkYzNlMDBkNGUzODQ5
OTI1NmNjMWQ5MjMyNzJkMDc1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JS
ZXNwb25zZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JSZXNwb25zZS5oIgot
Ci0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdXRoZW50
aWNhdG9yUmVzcG9uc2U6OkF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgY2xpZW50RGF0YUpTT04pCi0gICAgOiBtX2NsaWVudERhdGFKU09OKFdURk1vdmUoY2xpZW50
RGF0YUpTT04pKQotewotfQotCi1BcnJheUJ1ZmZlciogQXV0aGVudGljYXRvclJlc3BvbnNlOjpj
bGllbnREYXRhSlNPTigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50RGF0YUpTT04uZ2V0
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yUmVzcG9uc2UuaAppbmRleCA1NTI4YzAzMDM0ZjUyMWM1NGMzMTQxMmQ1ZTYzYjc2
ZWE3ZThmYWFjLi5jYjdlMDdlNTJlYzk0ZDRlMTQyMDRlMTY2MzM1OTZiOTViMTAwZTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNw
b25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
clJlc3BvbnNlLmgKQEAgLTQwLDE1ICs0MCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIEF0dGVzdGF0
aW9uCiAgICAgfTsKIAotICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYpOworICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0b3JSZXNwb25zZShSZWY8
QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04pCisgICAgICAgIDogbV9jbGllbnREYXRhSlNP
TihXVEZNb3ZlKGNsaWVudERhdGFKU09OKSkKKyAgICB7CisgICAgfQogICAgIHZpcnR1YWwgfkF1
dGhlbnRpY2F0b3JSZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBl
KCkgY29uc3QgPSAwOwogCi0gICAgQXJyYXlCdWZmZXIqIGNsaWVudERhdGFKU09OKCkgY29uc3Q7
CisgICAgQXJyYXlCdWZmZXIqIGNsaWVudERhdGFKU09OKCkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnREYXRhSlNPTi5wdHIoKTsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
bV9jbGllbnREYXRhSlNPTjsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IG1fY2xpZW50RGF0YUpTT047
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmNwcAppbmRleCAxMTJmNDBh
NjM0MmY2MmM3NmM1NDY1YmZlYWU4YzdiYzU2NWU3YTEwLi4yMWY3MDBjZjBmMzZjZWE3Nzk2Mzhm
NDQwYmUwY2RhNTg3MjE0ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5jcHAKQEAgLTI4LDEzICsyOCwzOSBAQAog
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIlBh
Z2UuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVB1YmxpY0tleUNyZWRl
bnRpYWw6OlB1YmxpY0tleUNyZWRlbnRpYWwoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGlkLCBSZWZQ
dHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiYmIHJlc3BvbnNlKQorUmVmPFB1YmxpY0tleUNyZWRl
bnRpYWw+IFB1YmxpY0tleUNyZWRlbnRpYWw6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgaWQs
IFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYgcmVzcG9uc2UpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUHVibGljS2V5Q3JlZGVudGlhbChXVEZNb3ZlKGlkKSwgV1RGTW92ZShyZXNw
b25zZSkpKTsKK30KKworUmVmUHRyPFB1YmxpY0tleUNyZWRlbnRpYWw+IFB1YmxpY0tleUNyZWRl
bnRpYWw6OnRyeUNyZWF0ZShjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSkKK3sK
KyAgICBpZiAoIWRhdGEucmF3SWQgfHwgIWRhdGEuY2xpZW50RGF0YUpTT04pCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgaWYgKGRhdGEuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZSkgeworICAgICAgICBpZiAoIWRhdGEuYXR0ZXN0YXRpb25PYmplY3QpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdWJs
aWNLZXlDcmVkZW50aWFsKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShkYXRhLmNsaWVudERhdGFKU09OLnJlbGVhc2VO
b25OdWxsKCksIGRhdGEuYXR0ZXN0YXRpb25PYmplY3QucmVsZWFzZU5vbk51bGwoKSkpKTsKKyAg
ICB9CisKKyAgICBpZiAoIWRhdGEuYXV0aGVudGljYXRvckRhdGEgfHwgIWRhdGEuc2lnbmF0dXJl
IHx8ICFkYXRhLnVzZXJIYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUHVibGljS2V5Q3JlZGVudGlhbChkYXRhLnJhd0lkLnJlbGVhc2VO
b25OdWxsKCksIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGRhdGEuY2xp
ZW50RGF0YUpTT04ucmVsZWFzZU5vbk51bGwoKSwgZGF0YS5hdXRoZW50aWNhdG9yRGF0YS5yZWxl
YXNlTm9uTnVsbCgpLCBkYXRhLnNpZ25hdHVyZS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhLnVzZXJI
YW5kbGUucmVsZWFzZU5vbk51bGwoKSkpKTsKK30KKworUHVibGljS2V5Q3JlZGVudGlhbDo6UHVi
bGljS2V5Q3JlZGVudGlhbChSZWY8QXJyYXlCdWZmZXI+JiYgaWQsIFJlZjxBdXRoZW50aWNhdG9y
UmVzcG9uc2U+JiYgcmVzcG9uc2UpCiAgICAgOiBCYXNpY0NyZWRlbnRpYWwoV1RGOjpiYXNlNjRV
UkxFbmNvZGUoaWQtPmRhdGEoKSwgaWQtPmJ5dGVMZW5ndGgoKSksIFR5cGU6OlB1YmxpY0tleSwg
RGlzY292ZXJ5OjpSZW1vdGUpCiAgICAgLCBtX3Jhd0lkKFdURk1vdmUoaWQpKQogICAgICwgbV9y
ZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKQEAgLTQ2LDkgKzcyLDkgQEAgRXhjZXB0aW9uT3I8
Ym9vbD4gUHVibGljS2V5Q3JlZGVudGlhbDo6Z2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpIGNv
bnN0CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiB9CiAKLXZv
aWQgUHVibGljS2V5Q3JlZGVudGlhbDo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCit2
b2lkIFB1YmxpY0tleUNyZWRlbnRpYWw6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZShEb2N1bWVudCYgZG9jdW1lbnQsIERPTVByb21pc2VEZWZlcnJlZDxJRExC
b29sZWFuPiYmIHByb21pc2UpCiB7Ci0gICAgQXV0aGVudGljYXRvck1hbmFnZXI6OnNpbmdsZXRv
bigpLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXVEZNb3Zl
KHByb21pc2UpKTsKKyAgICBkb2N1bWVudC5wYWdlKCktPmF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cigpLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaAppbmRleCBm
ZGVkYzU4OWIzMDM0MTE1N2RhZTNiYjdiYWE0Mjc0ZmI2ZmE5YmE0Li4zMGZjZTQyMDJiZWJhZjBh
OTgyZWNhOGZmM2U5ZWMzYjg5YmQ3MjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaApAQCAtMzYsMjggKzM2LDI5IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JSZXNwb25zZTsKK2Ns
YXNzIERvY3VtZW50OworCitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERhdGE7CiAKIGNsYXNz
IFB1YmxpY0tleUNyZWRlbnRpYWwgZmluYWwgOiBwdWJsaWMgQmFzaWNDcmVkZW50aWFsIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFB1YmxpY0tleUNyZWRlbnRpYWw+IGNyZWF0ZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgaWQsIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYgcmVzcG9u
c2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdWJsaWNLZXlDcmVkZW50
aWFsKFdURk1vdmUoaWQpLCBXVEZNb3ZlKHJlc3BvbnNlKSkpOwotICAgIH0KKyAgICBzdGF0aWMg
UmVmPFB1YmxpY0tleUNyZWRlbnRpYWw+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgaWQsIFJl
ZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8UHVibGljS2V5
Q3JlZGVudGlhbD4gdHJ5Q3JlYXRlKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJik7CiAK
LSAgICBBcnJheUJ1ZmZlciogcmF3SWQoKSBjb25zdCB7IHJldHVybiBtX3Jhd0lkLmdldCgpOyB9
Ci0gICAgQXV0aGVudGljYXRvclJlc3BvbnNlKiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzcG9uc2UuZ2V0KCk7IH0KKyAgICBBcnJheUJ1ZmZlciogcmF3SWQoKSBjb25zdCB7IHJldHVy
biBtX3Jhd0lkLnB0cigpOyB9CisgICAgQXV0aGVudGljYXRvclJlc3BvbnNlKiByZXNwb25zZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UucHRyKCk7IH0KICAgICAvLyBOb3Qgc3VwcG9ydCB5
ZXQuIEFsd2F5cyB0aHJvd3MuCiAgICAgRXhjZXB0aW9uT3I8Ym9vbD4gZ2V0Q2xpZW50RXh0ZW5z
aW9uUmVzdWx0cygpIGNvbnN0OwogCi0gICAgc3RhdGljIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxh
dGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFu
PiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0
b3JBdmFpbGFibGUoRG9jdW1lbnQmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7
CiAKIHByaXZhdGU6Ci0gICAgUHVibGljS2V5Q3JlZGVudGlhbChSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgaWQsIFJlZlB0cjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYpOworICAgIFB1YmxpY0tleUNy
ZWRlbnRpYWwoUmVmPEFycmF5QnVmZmVyPiYmIGlkLCBSZWY8QXV0aGVudGljYXRvclJlc3BvbnNl
PiYmKTsKIAogICAgIFR5cGUgY3JlZGVudGlhbFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBU
eXBlOjpQdWJsaWNLZXk7IH0KIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9yYXdJZDsKLSAg
ICBSZWZQdHI8QXV0aGVudGljYXRvclJlc3BvbnNlPiBtX3Jlc3BvbnNlOworICAgIFJlZjxBcnJh
eUJ1ZmZlcj4gbV9yYXdJZDsKKyAgICBSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiBtX3Jlc3Bv
bnNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5pZGwKaW5kZXggNzdi
MWI3MjQwYjU5MWIyNDNkZWE5ODc5MjBkNDc0MjBlZmJjNTZhZC4uZDUxZjA2ZDQwZGQ5ZTRlYzNj
NmEyODk3NjcyNjIwZmUyYjg1Zjk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsCkBAIC0zNSw1ICszNSw1IEBA
IHR5cGVkZWYgYm9vbGVhbiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnM7CiAgICAgW1NhbWVPYmpl
Y3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdXRoZW50aWNhdG9yUmVzcG9uc2UgcmVzcG9uc2U7CiAg
ICAgW01heVRocm93RXhjZXB0aW9uXSBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnMgZ2V0Q2xpZW50
RXh0ZW5zaW9uUmVzdWx0cygpOwogCi0gICAgc3RhdGljIFByb21pc2U8Ym9vbGVhbj4gaXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCk7CisgICAgW0NhbGxXaXRo
PURvY3VtZW50XSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucy5oCmluZGV4IDc2MGU4ZmRhNWYxZTc1MTc3Y2VmZWY3NTE1ODZlYWI0OTQwNDMz
YzguLjM0MTM5N2NiMmM2NmUxZGVlMmIwMzY5MTUwNGRhMmIyMmUyNWM2ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCkBAIC05NCw5ICs5NCw5IEBAIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgcnAuaWQg
PDwgcnAubmFtZSA8PCBycC5pY29uOwotICAgIFZlY3Rvcjx1aW50OF90PiBpZFZlY3RvcjsKLSAg
ICBpZFZlY3Rvci5hcHBlbmQodXNlci5pZC5kYXRhKCksIHVzZXIuaWQubGVuZ3RoKCkpOwotICAg
IGVuY29kZXIgPDwgaWRWZWN0b3IgPDwgdXNlci5kaXNwbGF5TmFtZSA8PCB1c2VyLm5hbWUgPDwg
dXNlci5pY29uIDw8IHB1YktleUNyZWRQYXJhbXMgPDwgZXhjbHVkZUNyZWRlbnRpYWxzOworICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVzZXIuaWQubGVuZ3RoKCkpOworICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHVzZXIuaWQuZGF0YSgpLCB1c2VyLmlkLmxl
bmd0aCgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IHVzZXIuZGlzcGxheU5hbWUgPDwgdXNlci5uYW1l
IDw8IHVzZXIuaWNvbiA8PCBwdWJLZXlDcmVkUGFyYW1zIDw8IGV4Y2x1ZGVDcmVkZW50aWFsczsK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTEwOSw4ICsxMDksMTUgQEAgc3RkOjpv
cHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPiBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHQKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ycC5pY29uKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51c2VyLmlkVmVjdG9yKSkKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHVzZXJJZExlbmd0aDsKKyAgICBkZWNvZGVyID4+
IHVzZXJJZExlbmd0aDsKKyAgICBpZiAoIXVzZXJJZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICByZXN1bHQudXNlci5pZFZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkodXNl
cklkTGVuZ3RoLnZhbHVlKCkpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERh
dGEocmVzdWx0LnVzZXIuaWRWZWN0b3IuZGF0YSgpLCB1c2VySWRMZW5ndGgudmFsdWUoKSwgMSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC51c2VyLmRpc3BsYXlOYW1lKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51c2VyLm5hbWUpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0
YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIyOWZiODdmNzgwYTViZjUyYzAyYjAyYzU2OWMwN2RhYzUwMzU4NzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1Ymxp
Y0tleUNyZWRlbnRpYWxEYXRhLmgKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQXV0aGVudGljYXRvclJlc3BvbnNlOworCitzdHJ1Y3QgUHVi
bGljS2V5Q3JlZGVudGlhbERhdGEgeworICAgIG11dGFibGUgUmVmUHRyPEFycmF5QnVmZmVyPiBy
YXdJZDsKKworICAgIC8vIEF1dGhlbnRpY2F0b3JSZXNwb25zZQorICAgIGJvb2wgaXNBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTsKKyAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gY2xpZW50RGF0YUpTT047CisKKyAgICAvLyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZQorICAgIG11dGFibGUgUmVmUHRyPEFycmF5QnVmZmVyPiBhdHRlc3RhdGlvbk9iamVjdDsK
KworICAgIC8vIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZQorICAgIG11dGFibGUgUmVm
UHRyPEFycmF5QnVmZmVyPiBhdXRoZW50aWNhdG9yRGF0YTsKKyAgICBtdXRhYmxlIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gc2lnbmF0dXJlOworICAgIG11dGFibGUgUmVmUHRyPEFycmF5QnVmZmVyPiB1
c2VySGFuZGxlOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwor
Ly8gTm90ZWQ6IGNsaWVudERhdGFKU09OIGlzIG5ldmVyIGVuY29kZWQgb3IgZGVjb2RlZCBhcyBp
dCBpcyBuZXZlciBzZW50IGFjcm9zcyBkaWZmZXJlbnQgcHJvY2Vzc2VzLgordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgUHVibGljS2V5Q3JlZGVudGlhbERhdGE6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHJhd0lkLT5ieXRlTGVuZ3RoKCkpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJhd0lkLT5kYXRhKCkpLCByYXdJZC0+
Ynl0ZUxlbmd0aCgpLCAxKTsKKworICAgIGVuY29kZXIgPDwgaXNBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZTsKKworICAgIGlmIChpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlKSB7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGF0dGVzdGF0
aW9uT2JqZWN0LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhdHRlc3RhdGlvbk9iamVj
dC0+ZGF0YSgpKSwgYXR0ZXN0YXRpb25PYmplY3QtPmJ5dGVMZW5ndGgoKSwgMSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihh
dXRoZW50aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhdXRoZW50aWNhdG9y
RGF0YS0+ZGF0YSgpKSwgYXV0aGVudGljYXRvckRhdGEtPmJ5dGVMZW5ndGgoKSwgMSk7CisgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2lnbmF0dXJlLT5ieXRlTGVuZ3RoKCkp
OworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHNpZ25hdHVyZS0+ZGF0YSgpKSwgc2lnbmF0dXJlLT5ieXRlTGVuZ3RoKCks
IDEpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVzZXJIYW5kbGUtPmJ5
dGVMZW5ndGgoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXNlckhhbmRsZS0+ZGF0YSgpKSwgdXNlckhhbmRsZS0+
Ynl0ZUxlbmd0aCgpLCAxKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0
aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSBy
ZXN1bHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByYXdJZExlbmd0aDsKKyAgICBk
ZWNvZGVyID4+IHJhd0lkTGVuZ3RoOworICAgIGlmICghcmF3SWRMZW5ndGgpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXN1bHQucmF3SWQgPSBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKHJhd0lkTGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90KSk7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1
bHQucmF3SWQtPmRhdGEoKSksIHJhd0lkTGVuZ3RoLnZhbHVlKCksIDEpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlOworICAgIGRlY29kZXIgPj4gaXNBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZTsKKyAgICBpZiAoIWlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0LmlzQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgPSBpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlLnZhbHVlKCk7CisKKyAgICBpZiAocmVzdWx0LmlzQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UpIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYXR0ZXN0YXRp
b25PYmplY3RMZW5ndGg7CisgICAgICAgIGRlY29kZXIgPj4gYXR0ZXN0YXRpb25PYmplY3RMZW5n
dGg7CisgICAgICAgIGlmICghYXR0ZXN0YXRpb25PYmplY3RMZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdCA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3RMZW5ndGgudmFsdWUoKSwgc2l6
ZW9mKHVpbnQ4X3QpKTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQuYXR0ZXN0YXRpb25PYmplY3QtPmRh
dGEoKSksIGF0dGVzdGF0aW9uT2JqZWN0TGVuZ3RoLnZhbHVlKCksIDEpKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGF1dGhlbnRpY2F0b3JEYXRhTGVuZ3RoOworICAg
IGRlY29kZXIgPj4gYXV0aGVudGljYXRvckRhdGFMZW5ndGg7CisgICAgaWYgKCFhdXRoZW50aWNh
dG9yRGF0YUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJlc3Vs
dC5hdXRoZW50aWNhdG9yRGF0YSA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRh
dGFMZW5ndGgudmFsdWUoKSwgc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHJlc3VsdC5hdXRo
ZW50aWNhdG9yRGF0YS0+ZGF0YSgpKSwgYXV0aGVudGljYXRvckRhdGFMZW5ndGgudmFsdWUoKSwg
MSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBzaWduYXR1cmVMZW5ndGg7CisgICAgZGVjb2RlciA+PiBzaWduYXR1cmVMZW5ndGg7
CisgICAgaWYgKCFzaWduYXR1cmVMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXN1bHQuc2lnbmF0dXJlID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWduYXR1cmVM
ZW5ndGgudmFsdWUoKSwgc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHJlc3VsdC5zaWduYXR1
cmUtPmRhdGEoKSksIHNpZ25hdHVyZUxlbmd0aC52YWx1ZSgpLCAxKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHVzZXJIYW5kbGVM
ZW5ndGg7CisgICAgZGVjb2RlciA+PiB1c2VySGFuZGxlTGVuZ3RoOworICAgIGlmICghdXNlckhh
bmRsZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJlc3VsdC51
c2VySGFuZGxlID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1c2VySGFuZGxlTGVuZ3RoLnZhbHVlKCks
IHNpemVvZih1aW50OF90KSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZXN1bHQudXNlckhhbmRsZS0+ZGF0YSgpKSwg
dXNlckhhbmRsZUxlbmd0aC52YWx1ZSgpLCAxKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKaW5kZXgg
MmFlNDAzNWU5ODJlMmI2ZmQ4MzA1ODk5MTIwMTc2MWFjMmUxMjI1ZC4uMjVjNDZiY2VhMTYwOTI1
MDlkZTk5ZDMxMWEzZDhhNzBhNWMwOGM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCkBAIC0zNSwx
MSArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsK
IHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOworc3RydWN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxEYXRhOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9uczsKIAotdXNpbmcgQ3JlYXRpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik+OwotdXNpbmcgUmVxdWVzdENh
bGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mKT47Ci11c2luZyBFeGNlcHRpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKK3VzaW5nIENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChW
YXJpYW50PFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBFeGNlcHRpb25EYXRhPiYmKT47CiAKIHR5
cGVkZWYgdm9pZCAoXkNvbXBsZXRpb25CbG9jaykoU2VjS2V5UmVmIF9OdWxsYWJsZSByZWZlcmVu
Y2VLZXksIE5TQXJyYXkgKiBfTnVsbGFibGUgY2VydGlmaWNhdGVzLCBOU0Vycm9yICogX051bGxh
YmxlIGVycm9yKTsKIApAQCAtNTAsOCArNDksOCBAQCBwdWJsaWM6CiAgICAgTG9jYWxBdXRoZW50
aWNhdG9yKCk7CiAgICAgdmlydHVhbCB+TG9jYWxBdXRoZW50aWNhdG9yKCkgPSBkZWZhdWx0Owog
Ci0gICAgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBDcmVhdGlvbkNhbGxiYWNr
JiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiwgUmVxdWVzdENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpOworICAgIHZvaWQg
bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQ2FsbGJhY2smJik7CisgICAgdm9pZCBnZXRB
c3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBDYWxsYmFjayYmKTsKICAgICBib29sIGlzQXZhaWxhYmxl
KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vY29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggNDBjODYz
MWVmMDAyYjYwMGQ3ZDNkYTc5YjlhOTNiNDE0YjUzOTIzYy4uOTY1ZDFmMjhhNzMyOTY4ZmFjNTE2
YmY3MDRiMzU0YTIzM2ZhMzVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTMyLDYgKzMy
LDcgQEAKICNpbXBvcnQgIkNPU0VDb25zdGFudHMuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkRhdGEu
aCIKICNpbXBvcnQgIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCIKKyNpbXBv
cnQgIlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgiCiAjaW1wb3J0ICJQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMuaCIKICNpbXBvcnQgPFNlY3VyaXR5L1NlY0l0ZW0uaD4KICNpbXBv
cnQgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CkBAIC0xMTUsNyArMTE2LDcgQEAgTG9jYWxB
dXRoZW50aWNhdG9yOjpMb2NhbEF1dGhlbnRpY2F0b3IoKQogICAgIFJFTEVBU0VfQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzQ3JlZGVudGlhbHMp
KTsKIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYgb3B0aW9ucywgQ3JlYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrKQordm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VD
cmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywgQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7CiAKQEAgLTEy
NCw3ICsxMjUsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgIEFTU0VSVF9VTlVTRUQo
aGFzaCwgaGFzaCA9PSBoYXNoKTsKICAgICBBU1NFUlRfVU5VU0VEKG9wdGlvbnMsICFvcHRpb25z
LnJwLmlkLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjYWxsYmFjaywgY2FsbGJhY2sp
OwotICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgTm90QWxsb3dlZEVycm9yLCAiTm8gYXZhbGlhYmxl
IGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsKKyAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgTm90
QWxsb3dlZEVycm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsKICNlbHNl
CiAgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93
ZWJhdXRobi8jb3AtbWFrZS1jcmVkIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTa2lw
IFN0ZXAgNC01IGFzIHJlcXVpcmVSZXNpZGVudEtleSBhbmQgcmVxdWlyZVVzZXJWZXJpZmljYXRp
b24gYXJlIGVuZm9yY2VkLgpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1
YmxpCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFjYW5GdWxsZmlsbFB1YktleUNyZWRQYXJh
bXMpIHsKLSAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBOb3RTdXBwb3J0ZWRFcnJvciwgIlRo
ZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJv
dmlkZWQgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMuIl9zIH0pOworICAgICAgICBjYWxs
YmFjayhFeGNlcHRpb25EYXRhIHsgTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgcGxhdGZvcm0gYXR0
YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55IHByb3ZpZGVkIFB1YmxpY0tl
eUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTU4LDcgKzE1OSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlh
bChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAgICAgIE9TU3Rh
dHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJl
ZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJlZik7CiAgICAgICAgIGlmIChzdGF0dXMgJiYgc3Rh
dHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZG4ndCBxdWVyeSBLZXljaGFpbjogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsK
KyAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJVbmtu
b3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9IGFkb3B0Q0YoYXR0cmlidXRl
c0FycmF5UmVmKTsKQEAgLTE2Niw3ICsxNjcsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6
bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQog
ICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqbnNBdHRyaWJ1dGVzIGluIChOU0FycmF5ICopYXR0
cmlidXRlc0FycmF5UmVmKSB7CiAgICAgICAgICAgICBOU0RhdGEgKm5zQ3JlZGVudGlhbElkID0g
bnNBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdOwogICAgICAgICAgICAg
aWYgKGV4Y2x1ZGVDcmVkZW50aWFsSWRzLmNvbnRhaW5zKFN0cmluZyhyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihuc0NyZWRlbnRpYWxJZC5ieXRlcyksIG5zQ3JlZGVudGlhbElkLmxlbmd0
aCkpKSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBOb3RBbGxvd2VkRXJy
b3IsICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNs
dWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRv
ci4iX3MgfSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFs
bG93ZWRFcnJvciwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2Yg
dGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRo
ZW50aWNhdG9yLiJfcyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTE4MCwxNyArMTgxLDE3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9y
OjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1Ymxp
CiAgICAgaWYgKCFbY29udGV4dCBjYW5FdmFsdWF0ZVBvbGljeTpMQVBvbGljeURldmljZU93bmVy
QXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBlcnJvcjomZXJyb3JdKSB7CiAgICAgICAgIExP
R19FUlJPUigiQ291bGRuJ3QgZXZhbHVhdGUgYXV0aGVudGljYXRpb24gd2l0aCBiaW9tZXRyaWNz
IHBvbGljeTogJUAiLCBlcnJvcik7CiAgICAgICAgIC8vIEZJWE1FKDE4Mjc2NykKLSAgICAgICAg
ZXhjZXB0aW9uQ2FsbGJhY2soeyBOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVu
dGljYXRvcnMuIl9zIH0pOworICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgTm90QWxs
b3dlZEVycm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIE5TU3RyaW5nICpyZWFzb24gPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIkFsbG93ICVAIHRvIGNyZWF0ZSBhIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBm
b3IgJUAiLCAoaWQpb3B0aW9ucy5ycC5pZCwgKGlkKW9wdGlvbnMudXNlci5uYW1lXTsKICAgICAv
LyBGSVhNRSgxODM1MzQpOiBPcHRpbWl6ZSB0aGUgZm9sbG93aW5nIG5lc3RlZCBjYWxsYmFja3Mg
YW5kIHRocmVhZGluZy4KLSAgICBbY29udGV4dCBldmFsdWF0ZVBvbGljeTpMQVBvbGljeURldmlj
ZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBsb2NhbGl6ZWRSZWFzb246cmVhc29u
IHJlcGx5OkJsb2NrUHRyPHZvaWQoQk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIG9wdGlvbnMg
PSBjcm9zc1RocmVhZENvcHkob3B0aW9ucyksIGhhc2hdIChCT09MIHN1Y2Nlc3MsIE5TRXJyb3Ig
KmVycm9yKSBtdXRhYmxlIHsKKyAgICBbY29udGV4dCBldmFsdWF0ZVBvbGljeTpMQVBvbGljeURl
dmljZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBsb2NhbGl6ZWRSZWFzb246cmVh
c29uIHJlcGx5OkJsb2NrUHRyPHZvaWQoQk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIG9wdGlvbnMgPSBjcm9zc1RocmVhZENvcHkob3B0aW9ucyksIGhhc2hdIChCT09MIHN1Y2Nl
c3MsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIGlmICghc3VjY2VzcyB8fCBlcnJvcikgewogICAgICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZG4ndCBhdXRoZW50aWNhdGUgd2l0aCBiaW9tZXRyaWNzOiAlQCIsIGVycm9y
KTsKLSAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgTm90QWxsb3dlZEVycm9yLCAiQ291
bGRuJ3QgZ2V0IHVzZXIgY29uc2VudC4iX3MgfSk7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNl
cHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2VudC4i
X3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjA1LDcgKzIwNiw3
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNl
Y0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkZWxldGVRdWVyeSk7CiAgICAg
ICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBkZXRlbGUgb2xkZXIgY3JlZGVudGlhbDogJWQiLCBz
dGF0dXMpOwotICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBVbmtub3duRXJyb3IsICJV
bmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2Vw
dGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMTMsMTEgKzIxNCwxMSBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgICAgICAvLyBGSVhNRSgxODM1MzQpCiAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHdlYWtUaGlzLT5p
c3N1ZUNsaWVudENlcnRpZmljYXRlKG9wdGlvbnMucnAuaWQsIG9wdGlvbnMudXNlci5uYW1lLCBo
YXNoLCBCbG9ja1B0cjx2b2lkKFNlY0tleVJlZiwgTlNBcnJheSAqLCBOU0Vycm9yICopPjo6ZnJv
bUNhbGxhYmxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBvcHRpb25zID0gY3Jvc3NUaHJlYWRDb3B5
KG9wdGlvbnMpXSAoX051bGxhYmxlIFNlY0tleVJlZiBwcml2YXRlS2V5LCBOU0FycmF5ICogX051
bGxhYmxlIGNlcnRpZmljYXRlcywgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAg
ICB3ZWFrVGhpcy0+aXNzdWVDbGllbnRDZXJ0aWZpY2F0ZShvcHRpb25zLnJwLmlkLCBvcHRpb25z
LnVzZXIubmFtZSwgaGFzaCwgQmxvY2tQdHI8dm9pZChTZWNLZXlSZWYsIE5TQXJyYXkgKiwgTlNF
cnJvciAqKT46OmZyb21DYWxsYWJsZShbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgb3B0
aW9ucyA9IGNyb3NzVGhyZWFkQ29weShvcHRpb25zKV0gKF9OdWxsYWJsZSBTZWNLZXlSZWYgcHJp
dmF0ZUtleSwgTlNBcnJheSAqIF9OdWxsYWJsZSBjZXJ0aWZpY2F0ZXMsIE5TRXJyb3IgKiBfTnVs
bGFibGUgZXJyb3IpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
ICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4n
dCBhdHRlc3Q6ICVAIiwgZXJyb3IpOwotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAg
ICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24g
aW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIC8vIEF0dGVzdGF0aW9uIENlcnRpZmljYXRlIGFuZCBBdHRlc3Rh
dGlvbiBJc3N1aW5nIENBCkBAIC0yNTAsNyArMjUxLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0
b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVi
bGkKICAgICAgICAgICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5n
KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpY3JlZGVudGlhbElkUXVlcnksICZhdHRyaWJ1dGVz
UmVmKTsKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGRuJ3QgZ2V0IENyZWRlbnRpYWwgSUQ6ICVkIiwgc3RhdHVzKTsKLSAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBVbmtub3duRXJyb3IsICJVbmtu
b3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
RXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9z
IH0pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGF1dG8gcmV0YWluQXR0cmlidXRlcyA9IGFkb3B0Q0YoYXR0cmlidXRlc1Jl
Zik7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVk
ZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICAgICAg
ICAgICAgICBzdGF0dXMgPSBTZWNJdGVtVXBkYXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
dXBkYXRlUXVlcnksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpdXBkYXRlUGFyYW1zKTsKICAg
ICAgICAgICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19FUlJP
UigiQ291bGRuJ3QgdXBkYXRlIHRoZSBLZXljaGFpbiBpdGVtOiAlZCIsIHN0YXR1cyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93
biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEV4
Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KQEAgLTMwNCw3ICszMDUsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFr
ZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAg
ICAgICAgICAgICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJvclJlZik7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChlcnJvclJlZikgewogICAgICAgICAgICAgICAgICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBleHBvcnQgdGhlIHB1YmxpYyBrZXk6ICVAIiwgKE5TRXJy
b3IqKWVycm9yUmVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAi
VW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCgoTlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSkubGVuZ3RoID09ICgxICsgMiAqIEVT
MjU2S2V5U2l6ZUluQnl0ZXMpKTsgLy8gMDQgfCBYIHwgWQpAQCAtMzI1LDcgKzMyNiw3IEBAIHZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAgICAgICAgICAgICAgYXV0byBjb3NlUHVibGljS2V5
ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUocHVibGlj
S2V5TWFwKSkpOwogICAgICAgICAgICAgICAgIGlmICghY29zZVB1YmxpY0tleSkgewogICAgICAg
ICAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGVuY29kZSB0aGUgcHVibGljIGtleSBp
bnRvIENPU0UgYmluYXJpZXMuIik7Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJV
bmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhdHRlc3RlZENyZWRlbnRpYWxE
YXRhLmFwcGVuZFZlY3Rvcihjb3NlUHVibGljS2V5LnZhbHVlKCkpOwpAQCAtMzQ3LDcgKzM0OCw3
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmV0
YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVy
cm9yUmVmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdl
bmVyYXRlIHRoZSBzaWduYXR1cmU6ICVAIiwgKE5TRXJyb3IqKWVycm9yUmVmKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93
biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4i
X3MgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgYXV0byBuc1NpZ25hdHVyZSA9IChOU0RhdGEgKilz
aWduYXR1cmVSZWYuZ2V0KCk7CkBAIC0zNzQsMTcgKzM3NSwxNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25z
dCBQdWJsaQogICAgICAgICAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGNib3I6OkNCT1JX
cml0ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0TWFw
KSkpOwogICAgICAgICAgICAgaWYgKCFhdHRlc3RhdGlvbk9iamVjdCkgewogICAgICAgICAgICAg
ICAgIExPR19FUlJPUigiQ291bGRuJ3QgZW5jb2RlIHRoZSBhdHRlc3RhdGlvbiBvYmplY3QuIik7
Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBVbmtub3duRXJyb3IsICJVbmtu
b3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhFeGNl
cHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBj
YWxsYmFjayhjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0LnZhbHVlKCkpOworICAgICAg
ICAgICAgY2FsbGJhY2soUHVibGljS2V5Q3JlZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpLCB0cnVlLCBudWxs
cHRyLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LnZhbHVlKCkuZGF0YSgp
LCBhdHRlc3RhdGlvbk9iamVjdC52YWx1ZSgpLnNpemUoKSksIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIgfSk7CiAgICAgICAgIH0pLmdldCgpKTsKICAgICB9KS5nZXQoKV07CiAjZW5kaWYgLy8g
IVBMQVRGT1JNKElPUykKIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlv
bihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVxdWVzdENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2spCit2b2lkIExvY2FsQXV0aGVudGljYXRv
cjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGlj
S2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKIApA
QCAtMzkzLDcgKzM5NCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24o
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAgICAgQVNTRVJUX1VO
VVNFRChoYXNoLCBoYXNoID09IGhhc2gpOwogICAgIEFTU0VSVF9VTlVTRUQob3B0aW9ucywgIW9w
dGlvbnMucnBJZC5pc0VtcHR5KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FsbGJhY2ssIGNhbGxi
YWNrKTsKLSAgICBleGNlcHRpb25DYWxsYmFjayh7IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxp
YWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CisgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7
IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CiAj
ZWxzZQogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcv
VFIvd2ViYXV0aG4vI29wLWdldC1hc3NlcnRpb24gYXMgb2YgNSBEZWNlbWJlciAyMDE3LgogICAg
IC8vIFNraXAgU3RlcCAyIGFzIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uIGlzIGVuZm9yY2VkLgpA
QCAtNDAyLDcgKzQwMyw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24o
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAgICAgLy8gU3RlcCAz
LTUuIFVubGlrZSB0aGUgc3BlYywgaWYgYW4gYWxsb3cgbGlzdCBpcyBwcm92aWRlZCBhbmQgdGhl
cmUgaXMgbm8gaW50ZXJzZWN0aW9uIGJldHdlZW4gZXhpc3Rpbmcgb25lcyBhbmQgdGhlIGFsbG93
IGxpc3QsIHdlIGFsd2F5cyByZXR1cm4gTm90QWxsb3dlZEVycm9yLgogICAgIEhhc2hTZXQ8U3Ry
aW5nPiBhbGxvd0NyZWRlbnRpYWxJZHMgPSBwcm9kdWNlSGFzaFNldChvcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHMpOwogICAgIGlmICghb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzLmlzRW1wdHkoKSAm
JiBhbGxvd0NyZWRlbnRpYWxJZHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKHsgTm90QWxsb3dlZEVycm9yLCAiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQg
aW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0pOworICAgICAgICBj
YWxsYmFjayhFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiTm8gbWF0Y2hlZCBjcmVk
ZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3Iu
Il9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MTgsNyArNDE5LDcgQEAgdm9p
ZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4m
IGhhc2gsIGNvbnN0IFB1YmxpY0sKICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1h
dGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZhdHRyaWJ1dGVzQXJyYXlS
ZWYpOwogICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHF1ZXJ5IEtleWNoYWluOiAlZCIsIHN0YXR1cyk7
Ci0gICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRl
cm5hbCBlcnJvci4iX3MgfSk7CisgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9IGFkb3B0Q0YoYXR0cmli
dXRlc0FycmF5UmVmKTsKQEAgLTQzNiw3ICs0MzcsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRv
cjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGlj
SwogICAgICAgICBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcyA9IHJlc3VsdDsKICAg
ICB9CiAgICAgaWYgKCFpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcy5jb3VudCkgewot
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IE5vdEFsbG93ZWRFcnJvciwgIk5vIG1hdGNoZWQg
Y3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNh
dG9yLiJfcyB9KTsKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRF
cnJvciwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBh
dHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNDUyLDcgKzQ1Myw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24o
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAgICAgICAgIGF1dG8g
cmV0YWluQ29udGV4dCA9IGFkb3B0TlMoY29udGV4dCk7CiAgICAgICAgIExPR19FUlJPUigiQ291
bGRuJ3QgZXZhbHVhdGUgYXV0aGVudGljYXRpb24gd2l0aCBiaW9tZXRyaWNzIHBvbGljeTogJUAi
LCBlcnJvcik7CiAgICAgICAgIC8vIEZJWE1FKDE4Mjc2NykKLSAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soeyBOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9z
IH0pOworICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAi
Tm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNDYyLDExICs0NjMsMTEgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFz
c2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0sKICAgICBW
ZWN0b3I8dWludDhfdD4gdXNlcmhhbmRsZTsKICAgICBOU0RhdGEgKm5zVXNlcmhhbmRsZSA9IHNl
bGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWddOwog
ICAgIHVzZXJoYW5kbGUuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5z
VXNlcmhhbmRsZS5ieXRlcyksIG5zVXNlcmhhbmRsZS5sZW5ndGgpOwotICAgIGF1dG8gcmVwbHkg
PSBCbG9ja1B0cjx2b2lkKEJPT0wsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksIHJwSWQgPSBvcHRpb25zLnJwSWQuaXNvbGF0ZWRDb3B5KCksIGhhc2gsIGNy
ZWRlbnRpYWxJZCA9IFdURk1vdmUoY3JlZGVudGlhbElkKSwgdXNlcmhhbmRsZSA9IFdURk1vdmUo
dXNlcmhhbmRsZSksIGNvbnRleHQgPSBhZG9wdE5TKGNvbnRleHQpXSAoQk9PTCBzdWNjZXNzLCBO
U0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgYXV0byByZXBseSA9IEJsb2NrUHRyPHZvaWQo
Qk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgcnBJZCA9IG9wdGlvbnMucnBJZC5pc29sYXRlZENvcHkoKSwgaGFzaCwgY3JlZGVudGlh
bElkID0gV1RGTW92ZShjcmVkZW50aWFsSWQpLCB1c2VyaGFuZGxlID0gV1RGTW92ZSh1c2VyaGFu
ZGxlKSwgY29udGV4dCA9IGFkb3B0TlMoY29udGV4dCldIChCT09MIHN1Y2Nlc3MsIE5TRXJyb3Ig
KmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAg
ICAgIGlmICghc3VjY2VzcyB8fCBlcnJvcikgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZG4ndCBhdXRoZW50aWNhdGUgd2l0aCBiaW9tZXRyaWNzOiAlQCIsIGVycm9yKTsKLSAgICAgICAg
ICAgIGV4Y2VwdGlvbkNhbGxiYWNrKHsgTm90QWxsb3dlZEVycm9yLCAiQ291bGRuJ3QgZ2V0IHVz
ZXIgY29uc2VudC4iX3MgfSk7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsg
Tm90QWxsb3dlZEVycm9yLCAiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2VudC4iX3MgfSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDkwLDcgKzQ5MSw3IEBAIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNo
LCBjb25zdCBQdWJsaWNLCiAgICAgICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29w
eU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZwcml2YXRlS2V5UmVm
KTsKICAgICAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1Io
IkNvdWxkbid0IGdldCB0aGUgcHJpdmF0ZSBrZXkgcmVmZXJlbmNlOiAlZCIsIHN0YXR1cyk7Ci0g
ICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBVbmtub3duRXJyb3IsICJVbmtub3du
IGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRp
b25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byBw
cml2YXRlS2V5ID0gYWRvcHRDRihwcml2YXRlS2V5UmVmKTsKQEAgLTUwNCw3ICs1MDUsNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaGFzaCwgY29uc3QgUHVibGljSwogICAgICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFk
b3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICAgICAgaWYgKGVycm9yUmVmKSB7CiAgICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUgc2lnbmF0dXJlOiAlQCIsIChO
U0Vycm9yKillcnJvclJlZik7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBV
bmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgICAg
ICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRl
cm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYXV0byBuc1NpZ25hdHVyZSA9IChOU0RhdGEgKilzaWduYXR1cmVSZWYu
Z2V0KCk7CkBAIC01MTIsNyArNTEzLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFz
c2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0sKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIFN0ZXAgMTMuCi0gICAgICAgIGNhbGxiYWNrKGNyZWRlbnRpYWxJ
ZCwgYXV0aERhdGEsIHNpZ25hdHVyZSwgdXNlcmhhbmRsZSk7CisgICAgICAgIGNhbGxiYWNrKFB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgQXJyYXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQu
ZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwgZmFsc2UsIG51bGxwdHIsIG51bGxwdHIsIEFy
cmF5QnVmZmVyOjpjcmVhdGUoYXV0aERhdGEuZGF0YSgpLCBhdXRoRGF0YS5zaXplKCkpLCBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKHVzZXJoYW5kbGUuZGF0YSgpLCB1c2VyaGFuZGxlLnNpemUoKSkgfSk7
CiAgICAgfSk7CiAKICAgICAvLyBGSVhNRSgxODM1MzMpOiBVc2UgdXNlcmhhbmRsZSBpbnN0ZWFk
IG9mIHVzZXJuYW1lIGR1ZSB0byB0aGUgc3RhdGVkIEtleWNoYWluIGxpbWl0YXRpb25zLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBiMDY1ZmY4NWYyNzk4ZDFiMWZiNjQxNDBmZTNkMzcxODgwYzVjNjRjLi42
ZTU5ZjBlNzMxNTllZjJmOTY2Njk5MDM3ZWZhY2RiZTNlYzExMzRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtNDUsNyArNDUsNiBAQCBNb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNw
cAogCiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5jcHAKIE1v
ZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuY3BwCi1Nb2R1
bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcAogTW9kdWxl
cy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAKIAogTW9kdWxl
cy9lbnRyaWVzYXBpL0Vycm9yQ2FsbGJhY2suY3BwCkBAIC0yNDcsMTAgKzI0Niw4IEBAIE1vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3Bw
CiAKLU1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcAot
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAKLU1v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCi1Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAKK01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcAorTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwCiBN
b2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlJlYWRlci5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vY2Jv
ci9DQk9SVmFsdWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOTljNmI2YjlkMDVhM2NjNDRmYjk3OTM4M2ExNWNkYTZhYzQz
ZWNkOC4uYTU4OTQwZmI4Y2VlM2U0NGE4YTQ1OWVkZjIwODc3NTU1ZWYyZmQ2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc1
NCw3ICsxNzU0LDcgQEAKIAkJNTczMDNDMjIyMDA5QUYwMzAwMzU1OTY1IC8qIEpTQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3MzAzQzIxMjAwOUFFRjYwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggKi87IH07CiAJCTU3MzAzQzJDMjAwOUI0QTgwMDM1NTk2
NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAzQzI3MjAwOUIyRkMwMDM1NTk2NSAvKiBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLzsgfTsKIAkJNTczMDNDMkYyMDA5QjdF
MTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0MyRDIwMDlCN0Q5MDAz
NTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLzsgfTsKLQkJNTcz
MDNDNDYyMDEwNUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0M0MzIwMTA1QjNEMDAz
NTU5NjUgLyogQXV0aGVudGljYXRvck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NzMwM0M0NjIwMTA1RDJGMDAzNTU5NjUgLyogQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzMwM0M0MzIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTczNDg5MzkxREFDNkI2RTAwREMwNjY3IC8qIENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzQ4
OTM4MURBQzZCNkQwMERDMDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggKi87IH07
CiAJCTU3MzlFMTJGMURBQzdGNzgwMEUxNDM4MyAvKiBKU0NyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzlF
MTJFMURBQzdGNzgwMEUxNDM4MyAvKiBKU0NyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLzsg
fTsKIAkJNTc0RjU1RTAyMDRGM0FDRTAwMjk0OEM2IC8qIExvY2FsQXV0aGVudGljYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0RjU1REUyMDRG
Mzc0NDAwMjk0OEM2IC8qIExvY2FsQXV0aGVudGljYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzY0LDExICsxNzY0LDkgQEAKIAkJNTc1
MEE5ODIxRTZBMTUwODAwNzA1QzRBIC8qIEpTRWNLZXlQYXJhbXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTgwMUU2QTE1MDgwMDcwNUM0QSAv
KiBKU0VjS2V5UGFyYW1zLmggKi87IH07CiAJCTU3NTBBOTg3MUU2QTIxNjgwMDcwNUM0QSAvKiBD
cnlwdG9BbGdvcml0aG1FQ0RILmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzUwQTk4NTFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3JpdGhtRUNE
SC5oICovOyB9OwogCQk1NzU0NzE5RjFFQ0U2MjgzMDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTQ3MTk5
MUVDRTVEMkEwMERENjNCMiAvKiBKU1JzYVBzc1BhcmFtcy5oICovOyB9OwotCQk1NzYwODI3MjIw
MjE1QTU1MDAxMTY2NzggLyogQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4MjcwMjAyMTUxM0YwMDExNjY3OCAv
KiBDcmVkZW50aWFsc01lc3Nlbmdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTU3NjA4MjdBMjAyNEVBNUMwMDExNjY3OCAvKiBNb2NrQ3JlZGVu
dGlhbHNNZXNzZW5nZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3NjA4Mjc4MjAyNDREQUIwMDExNjY3OCAvKiBNb2NrQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuaCAqLzsgfTsKLQkJNTc2MDgyN0IyMDI0RUQyOTAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFs
c01lc3Nlbmdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzYwODI3OTIwMjQ0REFDMDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
LmNwcCAqLzsgfTsKLQkJNTc2MDgyODYyMDI1NkFGQTAwMTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRp
YWxzTWVzc2VuZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzYwODI4MjIwMjU2Nzk3MDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuaCAqLzsgfTsKLQkJNTc2MDgyODgyMDI1NkFGRDAwMTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRp
YWxzTWVzc2VuZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3NjA4MjgxMjAyNTY3OTYwMDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01lc3Nl
bmdlci5jcHAgKi87IH07CisJCTU3NjA4MjcyMjAyMTVBNTUwMDExNjY3OCAvKiBBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3NjA4MjcwMjAyMTUxM0YwMDExNjY3OCAvKiBBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1NzYwODI3QTIwMjRFQTVDMDAxMTY2NzggLyogTW9ja0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc2MDgyNzgyMDI0NERBQjAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaCAqLzsgfTsKKwkJNTc2MDgyN0IyMDI0RUQyOTAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc2MDgyNzkyMDI0NERBQzAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IuY3BwICovOyB9OwogCQk1NzY4MTQyQTFFNkY5OUMxMDBFNzc3NTQgLyogQ3J5cHRv
QWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2ODE0MjkxRTZGOTlDMTAwRTc3NzU0IC8qIENyeXB0b0Fs
Z29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXMuaCAqLzsgfTsKIAkJNTc2ODE0NDExRTcwOUZBNDAw
RTc3NzU0IC8qIEpTRWNkaEtleURlcml2ZVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2ODE0M0UxRTcwOUMzNjAwRTc3NzU0IC8qIEpTRWNk
aEtleURlcml2ZVBhcmFtcy5oICovOyB9OwogCQk1NzY4MTQ0NTFFNzBDQjFGMDBFNzc3NTQgLyog
SlNBZXNLZXlQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3NjgxNDQzMUU3MENCMTAwMEU3Nzc1NCAvKiBKU0Flc0tleVBhcmFtcy5oICovOyB9
OwpAQCAtMTc4NCwxMiArMTc4MiwxNSBAQAogCQk1N0I1RjdGOTFFNUJFODQwMDBGMzRGOTAgLyog
Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTdCNUY3RjcxRTVCRTg0MDAwRjM0RjkwIC8qIENyeXB0b0FsZ29yaXRo
bUFFU19HQ00uaCAqLzsgfTsKIAkJNTdCNUY4MDkxRTVEMUE5ODAwRjM0RjkwIC8qIENyeXB0b0Fs
Z29yaXRobUFlc0djbVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdCNUY4MDgxRTVEMUE5ODAwRjM0RjkwIC8qIENyeXB0b0FsZ29yaXRobUFl
c0djbVBhcmFtcy5oICovOyB9OwogCQk1N0I1RjgxMDFFNUUyQTRFMDBGMzRGOTAgLyogSlNBZXNH
Y21QYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3QjVGODBCMUU1RDIyREEwMEYzNEY5MCAvKiBKU0Flc0djbVBhcmFtcy5oICovOyB9OwotCQk1
N0M3QTY4QzFFNTY5Njc1MDBDNjdENzEgLyogQmFzaWNDcmVkZW50aWFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0M3QTY4QjFFNTY5Njc1MDBDNjdE
NzEgLyogQmFzaWNDcmVkZW50aWFsLmggKi87IH07CisJCTU3QzdBNjhDMUU1Njk2NzUwMEM2N0Q3
MSAvKiBCYXNpY0NyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3QzdBNjhCMUU1Njk2NzUwMEM2N0Q3MSAvKiBCYXNpY0NyZWRlbnRpYWwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1N0M3
QTY5RjFFNTc5MTc4MDBDNjdENzEgLyogSlNCYXNpY0NyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QzdBNjlEMUU1NzkxMEQwMEM2N0Q3
MSAvKiBKU0Jhc2ljQ3JlZGVudGlhbC5oICovOyB9OwogCQk1N0QwMDE4RDFERDU0MTMyMDBFRDE5
RDkgLyogSlNDcnlwdG9LZXlVc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTdEMDAxOEMxREQ1NDEzMjAwRUQxOUQ5IC8qIEpTQ3J5cHRvS2V5VXNh
Z2UuaCAqLzsgfTsKIAkJNTdEODQ2MjgxRkU4OTYwNTAwQ0EzNjgyIC8qIE5hdmlnYXRvckNyZWRl
bnRpYWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
N0Q4NDYyNjFGRTg5NUY4MDBDQTM2ODIgLyogTmF2aWdhdG9yQ3JlZGVudGlhbHMuaCAqLzsgfTsK
LQkJNTdEODQ2MkUxRkVBRjY5OTAwQ0EzNjgyIC8qIFB1YmxpY0tleUNyZWRlbnRpYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RDg0NjJCMUZFQUY2
OEYwMENBMzY4MiAvKiBQdWJsaWNLZXlDcmVkZW50aWFsLmggKi87IH07CisJCTU3RDg0NjJFMUZF
QUY2OTkwMENBMzY4MiAvKiBQdWJsaWNLZXlDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Q4NDYyQjFGRUFGNjhGMDBDQTM2ODIgLyog
UHVibGljS2V5Q3JlZGVudGlhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTU3RDg0NjM1MUZFQUZDRDMwMENBMzY4MiAvKiBKU1B1YmxpY0tleUNy
ZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3RDg0NjMwMUZFQUZDMkYwMENBMzY4MiAvKiBKU1B1YmxpY0tleUNyZWRlbnRpYWwuaCAqLzsg
fTsKKwkJNTdEQ0VENjcyMTQwNzc1QjAwMTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdEQ0VENjIyMTQwNzYzQzAwMTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5oICovOyB9OworCQk1N0RDRUQ2OTIxNDA3NzY0MDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3RENFRDYzMjE0MDc2M0MwMDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuY3BwICovOyB9OworCQk1N0RDRUQ3NDIxNDMwNUYwMDAxNkI4NDcgLyogUHVi
bGljS2V5Q3JlZGVudGlhbERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RENFRDcyMjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTU3RTFFNUEzMUU4QzkxQjUwMEVFMzdDOSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0UxRTVBMTFF
OEM5MUI1MDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5oICovOyB9OwogCQk1N0Ux
RTVBNzFFOERCRDNFMDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0UxRTVBNjFFOERC
RDNFMDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zLmggKi87IH07CiAJCTU3
RTFFNUFEMUU4REQwOUIwMEVFMzdDOSAvKiBKU0Flc0N0clBhcmFtcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMUU1QUIxRThERDA5QjAwRUUzN0M5
IC8qIEpTQWVzQ3RyUGFyYW1zLmggKi87IH07CkBAIC04NDU4LDcgKzg0NTksNiBAQAogCQk1NzMw
M0JCRTIwMDZFMDA0MDAzNTU5NjUgLyogQ0JPUlJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDQk9SUmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTczMDNCQkYyMDA2RTAwQzAwMzU1OTY1IC8qIENCT1JSZWFkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0JPUlJlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzMwM0JDRjIwMDg3QTgzMDAzNTU5NjUgLyogQXV0aGVudGljYXRvclJl
c3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JSZXNwb25zZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1NzMwM0JEMDIwMDg3QTgzMDAzNTU5NjUgLyogQXV0aGVu
dGljYXRvclJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JSZXNw
b25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAzQkQxMjAwODdBODMw
MDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JS
ZXNwb25zZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAzQkREMjAwOTVC
MjYwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NzMwM0JERTIwMDk1QjI3MDAzNTU5NjUgLyogSlNBdXRoZW50aWNh
dG9yUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNB
dXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODQ3OSwxNyArODQ3OSwxNSBAQAogCQk1NzMwM0MxMzIwMDlBMjU3MDAzNTU5NjUgLyogSlNQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0MxNDIwMDlBMjU3MDAzNTU5NjUgLyogSlNQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAzQzFCMjAwOUE5ODYwMDM1NTk2NSAv
KiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1NzMwM0MxQzIwMDlBOTg2MDAzNTU5NjUgLyogQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0MxRDIwMDlB
OTg2MDAzNTU5NjUgLyogQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTczMDNDMjAyMDA5QUVGNTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MzAzQzIxMjAwOUFFRjYwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTczMDNDMjcyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTczMDNDMjgyMDA5QjJGQzAw
MzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NzMwM0MyOTIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0MyRDIwMDlCN0Q5MDAz
NTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNDMkUyMDA5QjdEQTAwMzU1OTY1IC8q
IEpTQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTczMDNDNDMyMDEwNUIzRDAwMzU1OTY1IC8q
IEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3MzAzQzQ0MjAxMDVCM0QwMDM1
NTk2NSAvKiBBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRo
ZW50aWNhdG9yTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MzAz
QzQzMjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU3MzAzQzQ0MjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczNDg5MzgxREFDNkI2RDAwREMwNjY3
IC8qIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzM5RTEyRTFEQUM3Rjc4MDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzM5RTEz
MDFEQUM3RkQxMDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTEyLDEzICs4NTEwLDEx
IEBACiAJCTU3NTQ3MTlBMUVDRTVEMkEwMERENjNCMiAvKiBKU1JzYVBzc1BhcmFtcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JzYVBzc1BhcmFtcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NjA4MjRGMjAxMThEOEQwMDExNjY3OCAvKiBK
U0Jhc2ljQ3JlZGVudGlhbEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jhc2ljQ3Jl
ZGVudGlhbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NjA4MjU2
MjAxMUJFMDIwMDExNjY3OCAvKiBKU0F1dGhlbnRpY2F0b3JSZXNwb25zZUN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0F1dGhlbnRpY2F0b3JSZXNwb25zZUN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjcwMjAyMTUxM0YwMDExNjY3OCAvKiBDcmVk
ZW50aWFsc01lc3Nlbmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFsc01lc3Nlbmdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI3ODIwMjQ0REFCMDAxMTY2Nzgg
LyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tDcmVkZW50
aWFsc01lc3Nlbmdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI3OTIw
MjQ0REFDMDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTU3NjA4MjgwMjAyNTU2RjQwMDExNjY3OCAvKiBNb2NrQ3JlZGVudGlhbHNN
ZXNzZW5nZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjgxMjAyNTY3OTYwMDExNjY3OCAvKiBKU01vY2tD
cmVkZW50aWFsc01lc3Nlbmdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTU3NjA4MjgyMjAyNTY3OTcwMDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01l
c3Nlbmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vY2tDcmVkZW50
aWFsc01lc3Nlbmdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI5MzIw
MkJBOTUzMDAxMTY2NzggLyogQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1NzYwODI3MDIwMjE1MTNGMDAxMTY2NzggLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzYwODI3ODIwMjQ0REFCMDAxMTY2Nzgg
LyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3
NjA4Mjc5MjAyNDREQUMwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzYwODI4MDIwMjU1NkY0MDAxMTY2NzggLyog
TW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTW9ja0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NjA4MjkzMjAy
QkE5NTMwMDExNjY3OCAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2ODE0MjgxRTZGOThBRDAwRTc3NzU0IC8qIEVjZGhL
ZXlEZXJpdmVQYXJhbXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVjZGhLZXlEZXJpdmVQYXJhbXMuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzY4MTQyOTFFNkY5OUMxMDBFNzc3NTQgLyogQ3J5cHRv
QWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3NjgxNDM0MUU2RkUzRTgwMEU3Nzc1NCAvKiBDcnlwdG9BbGdv
cml0aG1FQ0RITWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENy
eXB0b0FsZ29yaXRobUVDREhNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODU3Miw2ICs4NTY4LDkgQEAKIAkJNTdEODQ2MkQxRkVBRjY4RjAwQ0EzNjgyIC8qIFB1YmxpY0tl
eUNyZWRlbnRpYWwuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFB1YmxpY0tleUNyZWRlbnRpYWwuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1N0Q4NDYzMDFGRUFGQzJGMDBDQTM2ODIgLyogSlNQdWJsaWNL
ZXlDcmVkZW50aWFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHVibGlj
S2V5Q3JlZGVudGlhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0Q4NDYzMTFG
RUFGQzJGMDBDQTM2ODIgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHVibGljS2V5Q3JlZGVudGlhbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RENFRDYyMjE0MDc2M0MwMDE2Qjg0NyAvKiBKU01v
Y2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU3RENFRDYzMjE0MDc2M0MwMDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTdEQ0VENzIyMTQzMDVGMDAwMTZCODQ3IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RTFFNUEwMUU4QzkxQjUwMEVFMzdDOSAvKiBDcnlwdG9B
bGdvcml0aG1BRVNfQ1RSLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENyeXB0b0FsZ29yaXRobUFFU19DVFIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1N0UxRTVBMTFFOEM5MUI1MDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RTFFNUE2MUU4REJEM0UwMEVFMzdDOSAv
KiBDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjkxOSw2ICsxNjkxOCw5IEBACiAJCQkJQTdCRTdFREUxNEM5MTc1QTAw
MTQ0ODlEIC8qIE1hbGxvY1N0YXRpc3RpY3MuaWRsICovLAogCQkJCUNENTM5M0NCMTc1RENDRTYw
MEMwNzEyMyAvKiBNZW1vcnlJbmZvLmggKi8sCiAJCQkJQ0Q1MzkzQ0MxNzVEQ0NFNjAwQzA3MTIz
IC8qIE1lbW9yeUluZm8uaWRsICovLAorCQkJCTU3NjA4Mjc5MjAyNDREQUMwMDExNjY3OCAvKiBN
b2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLywKKwkJCQk1NzYwODI3ODIwMjQ0REFC
MDAxMTY2NzggLyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovLAorCQkJCTU3NjA4
MjgwMjAyNTU2RjQwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmlkbCAq
LywKIAkJCQlDREY0QjcyMTFFMDNCRjgxMDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuY3BwICov
LAogCQkJCUNERjRCNzIyMUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oICovLAog
CQkJCUNERjRCNzFGMUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5pZGwgKi8sCkBA
IC0xNjkyNyw5ICsxNjkyOSw2IEBACiAJCQkJQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovLAogCQkJCUExQjVCMjlEMUFBQTg0NkUwMDhC
NjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi8sCiAJCQkJQTE5QUVBMUMxQUFB
N0M0OTAwQjUyQjI1IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsICovLAotCQkJCTU3
NjA4Mjc5MjAyNDREQUMwMDExNjY3OCAvKiBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwICov
LAotCQkJCTU3NjA4Mjc4MjAyNDREQUIwMDExNjY3OCAvKiBNb2NrQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuaCAqLywKLQkJCQk1NzYwODI4MDIwMjU1NkY0MDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxz
TWVzc2VuZ2VyLmlkbCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dh
bWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBh
ZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3Zp
ZGVyLmNwcCAqLywKQEAgLTE2OTc2LDEyICsxNjk3NSwxMiBAQAogCQkJCUE3QjRFQTY5MTRDOTM0
ODQwMEM4RjVCRiAvKiBKU01hbGxvY1N0YXRpc3RpY3MuaCAqLywKIAkJCQlDRDUzOTNEMTE3NUUw
MTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmNwcCAqLywKIAkJCQlDRDUzOTNEMjE3NUUwMTg2
MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmggKi8sCisJCQkJNTdEQ0VENjMyMTQwNzYzQzAwMTZC
ODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi8sCisJCQkJNTdEQ0VE
NjIyMTQwNzYzQzAwMTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICov
LAogCQkJCUNERjRCNzJEMUUwM0NBNEEwMEUyMzVBMiAvKiBKU01vY2tDRE1GYWN0b3J5LmNwcCAq
LywKIAkJCQlDREY0QjcyRTFFMDNDQTRBMDBFMjM1QTIgLyogSlNNb2NrQ0RNRmFjdG9yeS5oICov
LAogCQkJCUExOUFFQTFEMUFBQTgwNkUwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuY3BwICovLAogCQkJCUExOUFFQTFFMUFBQTgwNkUwMEI1MkIyNSAvKiBKU01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKLQkJCQk1NzYwODI4MTIwMjU2Nzk2MDAxMTY2NzggLyog
SlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwICovLAotCQkJCTU3NjA4MjgyMjAyNTY3OTcw
MDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oICovLAogCQkJCTJENkYzRTky
MUMxRjg1NTUwMDYxREJENCAvKiBKU01vY2tQYWdlT3ZlcmxheS5jcHAgKi8sCiAJCQkJMkQ2RjNF
OTMxQzFGODU1NTAwNjFEQkQ0IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmggKi8sCiAJCQkJQTE0NkQz
MjAxRjk5Q0EzRTAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRBZGRyZXNzLmNwcCAqLywKQEAgLTE4
NzEwLDggKzE4NzA5LDYgQEAKIAkJCQk3N0Q1MTAxODFFRDcxNTk5MDBEQTRDODcgLyogQ3JlZGVu
dGlhbHNDb250YWluZXIuY3BwICovLAogCQkJCTc3RDUxMDE2MUVENjAyMUIwMERBNEM4NyAvKiBD
cmVkZW50aWFsc0NvbnRhaW5lci5oICovLAogCQkJCTU3RDg0NjI5MUZFOTlGNjMwMENBMzY4MiAv
KiBDcmVkZW50aWFsc0NvbnRhaW5lci5pZGwgKi8sCi0JCQkJNTc2MDgyOTMyMDJCQTk1MzAwMTE2
Njc4IC8qIENyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCAqLywKLQkJCQk1NzYwODI3MDIwMjE1MTNG
MDAxMTY2NzggLyogQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCAqLywKIAkJCQk1N0Q4NDYyNDFGRTg5
NUY1MDBDQTM2ODIgLyogTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwICovLAogCQkJCTU3RDg0NjI2
MUZFODk1RjgwMENBMzY4MiAvKiBOYXZpZ2F0b3JDcmVkZW50aWFscy5oICovLAogCQkJCTU3RDg0
NjI1MUZFODk1RjYwMENBMzY4MiAvKiBOYXZpZ2F0b3JDcmVkZW50aWFscy5pZGwgKi8sCkBAIC0x
ODc0MSwxNSArMTg3MzgsMTQgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU3MzAzQkIzMjAwNkM2
RUQwMDM1NTk2NSAvKiBjYm9yICovLAogCQkJCTU3NEY1NUREMjA0RjM3NDQwMDI5NDhDNiAvKiBj
b2NvYSAqLywKLQkJCQk1NzMwM0MyODIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmNwcCAqLywKIAkJCQk1NzMwM0MyNzIwMDlCMkZDMDAzNTU5NjUgLyog
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggKi8sCiAJCQkJNTczMDNDMjkyMDA5QjJG
QzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5pZGwgKi8sCi0JCQkJ
NTczMDNDMUMyMDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlLmNwcCAqLywKIAkJCQk1NzMwM0MxQjIwMDlBOTg2MDAzNTU5NjUgLyogQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2UuaCAqLywKIAkJCQk1NzMwM0MxRDIwMDlBOTg2MDAzNTU5NjUg
LyogQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaWRsICovLAotCQkJCTU3MzAzQzQ0
MjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgKi8sCi0JCQkJNTcz
MDNDNDMyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmggKi8sCi0JCQkJ
NTczMDNCRDAyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAgKi8s
CisJCQkJNTczMDNDNDQyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAgKi8sCisJCQkJNTczMDNDNDMyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5oICovLAorCQkJCTU3NjA4MjkzMjAyQkE5NTMwMDExNjY3OCAvKiBBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuY3BwICovLAorCQkJCTU3NjA4MjcwMjAyMTUxM0YwMDEx
NjY3OCAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCAqLywKIAkJCQk1NzMwM0JD
RjIwMDg3QTgzMDAzNTU5NjUgLyogQXV0aGVudGljYXRvclJlc3BvbnNlLmggKi8sCiAJCQkJNTcz
MDNCRDEyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5pZGwgKi8sCiAJ
CQkJNTc0RjU1REMyMDRGMzczMjAwMjk0OEM2IC8qIENPU0VDb25zdGFudHMuaCAqLywKQEAgLTE4
NzU4LDYgKzE4NzU0LDcgQEAKIAkJCQk1N0Q4NDYyRDFGRUFGNjhGMDBDQTM2ODIgLyogUHVibGlj
S2V5Q3JlZGVudGlhbC5pZGwgKi8sCiAJCQkJNTczMDNCRTYyMDA5NzQ3QTAwMzU1OTY1IC8qIFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCAqLywKIAkJCQk1NzMwM0JFODIwMDk3
NDdBMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5pZGwgKi8s
CisJCQkJNTdEQ0VENzIyMTQzMDVGMDAwMTZCODQ3IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
LmggKi8sCiAJCQkJNTczMDNCRUMyMDA5ODBCRjAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRp
YWxEZXNjcmlwdG9yLmggKi8sCiAJCQkJNTczMDNCRUUyMDA5ODBCRjAwMzU1OTY1IC8qIFB1Ymxp
Y0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmlkbCAqLywKIAkJCQk1NzMwM0MwNjIwMDk5OEY4MDAz
NTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggKi8sCkBAIC0yNjk5
OCwxOCArMjY5OTUsMTggQEAKIAkJCQk1M0VEM0ZERjE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQwQjU5NTE0Qzkz
NUFCMDBBNzdGQTQgLyogSlNNYWxsb2NTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDUzOTNENDE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1N0RDRUQ2NzIxNDA3NzVCMDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzhFQzkzMzFGOTlCOUY3MDA0RDIyQTggLyog
SlNNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE5QUVBMjExQUFBODA4NjAw
QjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNTc2MDgyODYyMDI1NkFGQTAwMTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzhFQzkzNDFGOTlCOUY3MDA0RDIyQTggLyogSlNNb2Nr
UGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNDZEMzIzMUY5OUQwRUYwMEQyOTE5
NiAvKiBKU01vY2tQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0NkQzMUIx
Rjk5QkNGQjAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDI3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVy
bmFscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUJGNTEyMUQxNjk2NDk2QzAwNTZCRDI1IC8qIEpT
VHlwZUNvbnZlcnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMyNkI0MTE2MEE4Q0NFMDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc2MDgyN0EyMDI0
RUE1QzAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFCNUIyOUYxQUFBODQ2RjAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3NjA4MjdBMjAyNEVBNUMw
MDExNjY3OCAvKiBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxMDU4QURDMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTEwNThBREUxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxNTdFQkZCMUUzQUI2N0YwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjcxOTksNyArMjcxOTYsOCBA
QAogCQkJCTUxNEM3NjRDMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTczMDNDMkMyMDA5QjRBODAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNDMUYyMDA5QUI0
MjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1NzMwM0M0NjIwMTA1RDJGMDAzNTU5NjUgLyogQXV0aGVudGljYXRvck1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MzAzQzQ2MjAxMDVEMkYwMDM1NTk2NSAvKiBBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3NjA4MjcyMjAyMTVB
NTUwMDExNjY3OCAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3MzAzQkQyMjAwODdBODMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9u
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDE5MjBFMTMyRUJGMkUwMDhCRkU1NSAvKiBBdXRv
Y2FwaXRhbGl6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVBN0FBNDMxMzJGMEVDQzAwRDNBM0My
IC8qIEF1dG9jYXBpdGFsaXplVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjc0NjQsNyArMjc0
NjIsNiBAQAogCQkJCTc3RDUxMDBEMUVENUUyOTUwMERBNEM4NyAvKiBDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3N0Q1MTAwQjFFRDVFMjg4MDBEQTRDODcg
LyogQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3N0Q1MTAx
NzFFRDYwMjIyMDBEQTRDODcgLyogQ3JlZGVudGlhbHNDb250YWluZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTU3NjA4MjcyMjAyMTVBNTUwMDExNjY3OCAvKiBDcmVkZW50aWFsc01lc3Nlbmdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBMDUyMzMxMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRp
YWxTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQg
LyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNjEy
MEY2NTYyRkQwMDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjk3OTUsNiArMjk3OTIsNyBAQAogCQkJCUZGOTQ1RUNDMTYxRjdGMzYwMDk3MUJD
OCAvKiBQc2V1ZG9FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0Q4NDYyRTFGRUFGNjk5
MDBDQTM2ODIgLyogUHVibGljS2V5Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcz
MDNCRTkyMDA5NzQ4RDAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3RENFRDc0MjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJs
aWNLZXlDcmVkZW50aWFsRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCRUYyMDA5ODBD
NjAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzMwM0MwQTIwMDk5QkFEMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JFQjIwMDk3RjQwMDAzNTU5
NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzE0MDgs
MTkgKzMxNDA2LDE5IEBACiAJCQkJNTNFRDNGREUxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzkzMjFGOTlC
OUY3MDA0RDIyQTggLyogSlNNYWxsb2NTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNENTM5M0QzMTc1RTAxODYwMEMwNzEyMyAvKiBKU01lbW9yeUluZm8uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTdEQ0VENjkyMTQwNzc2NDAwMTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREY0QjczMjFFMDNEMDYwMDBFMjM1
QTIgLyogSlNNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTlBRUEyMjFB
QUE4MDhBMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTU3NjA4Mjg4MjAyNTZBRkQwMDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFs
c01lc3Nlbmdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDQxNTBERTFDMUY4NjhDMDAwQTNC
QTIgLyogSlNNb2NrUGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0NkQzMjIx
Rjk5RDBFQzAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRBZGRyZXNzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExNDZEMzFBMUY5OUJDRjgwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDI3REE3MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpT
U2VydmljZVdvcmtlckludGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFQkY1MTIxQzE2
OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIExlZ2FjeU1vY2tDRE0uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTc2MDgyN0IyMDI0RUQyOTAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MzExRTAzRDAwNzAwRTIz
NUEyIC8qIE1vY2tDRE1GYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQkY2QjgyMUFB
OTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMUI1QjI5RTFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzYwODI3QjIwMjRFRDI5MDAxMTY2NzggLyogTW9ja0Ny
ZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QURCMUQ2Nzky
QzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTA1OEFE
RDFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MTU3RUJGQTFFM0FCNjc5MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMzQ0NjA3Yjcy
NmFjM2EwZmIxM2FkMmVkNmY4ZDU2YWQyY2EzMjI4Zi4uZjNhYzM0NThlZmM1MDVlYzAyZmYxNzQ5
MjdlMmM5NzViODM1ZjlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAj
aW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIu
aCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJCYWNr
Rm9yd2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIuaCIKQEAgLTI1NSw2ICsyNTYsOSBAQCBQYWdl
OjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAjaWYgRU5BQkxF
KEFQUExFX1BBWSkKICAgICAsIG1fcGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8
UGF5bWVudENvb3JkaW5hdG9yPigqcGFnZUNvbmZpZ3VyYXRpb24ucGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50KSkKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgLCBtX2F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4o
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQp
KSkKKyNlbmRpZgogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICAsIG1fYXBw
bGljYXRpb25NYW5pZmVzdChwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbk1hbmlmZXN0KQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGRiYTRmMGYwODI3MWViNzViOWYzNmI1YzRkMDMxZjhl
OGQ2ZjM5NDYuLmE3OGNjYTQ5OWJiY2JkMzBiNjBlNTI3Nzk0ODIxZjM4MGE2MDVjMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCkBAIC03Niw2ICs3Niw3IEBAIGNsYXNzIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjsK
IAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U7CitjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I7CiBjbGFzcyBCYWNrRm9yd2Fy
ZENvbnRyb2xsZXI7CiBjbGFzcyBCYWNrRm9yd2FyZENsaWVudDsKIGNsYXNzIENhY2hlU3RvcmFn
ZVByb3ZpZGVyOwpAQCAtNDEwLDYgKzQxMSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRQYXltZW50Q29vcmRpbmF0b3Ioc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRDb29y
ZGluYXRvcj4mJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yJiBhdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKSB7IHJldHVybiBt
X2F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5nZXQoKTsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUo
QVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlv
bk1hbmlmZXN0PiYgYXBwbGljYXRpb25NYW5pZmVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGlj
YXRpb25NYW5pZmVzdDsgfQogI2VuZGlmCkBAIC05MDEsNiArOTA2LDEwIEBAIHByaXZhdGU6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRDb29yZGluYXRvcj4gbV9wYXltZW50Q29vcmRpbmF0
b3I7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgVW5pcXVlUmVmPEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcj4gbV9hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBzdGQ6Om9wdGlvbmFsPEFw
cGxpY2F0aW9uTWFuaWZlc3Q+IG1fYXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAppbmRleCBjZDQwMDViNTYzNzNjODg0
M2NlOTcxMjZiYjNmZTMwMTI3MTg5NGZmLi4xNGM5OTE1OWRkZDczMDk3Nzk3N2UxNmFjNDFkNGI2
MTZiMzNjMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcApA
QCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVk
ZSAiV2ViR0xTdGF0ZVRyYWNrZXIuaCIKIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCisjaW5jbHVk
ZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oVW5pcXVl
UmVmPEVkaXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBz
b2NrZXRQcm92aWRlciwgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1By
b3ZpZGVyLCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggM2E3MzQ1NzZkNDBh
MmNkNGJkYTE0YzRlYmUwMzMyYWEzNTZlMjFlNC4uNjBiZGVjN2QzZmMxODE3NjViZWEyMWJhMTQ2
NTZlNWRmMDkwZjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaApA
QCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZl
VGV4dENsaWVudDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OwogY2xhc3MgQmFja0ZvcndhcmRDbGllbnQ7CiBjbGFz
cyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKIGNsYXNzIENocm9tZUNsaWVudDsKQEAgLTgwLDYgKzgx
LDEwIEBAIHB1YmxpYzoKICAgICBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQqIHBheW1lbnRDb29y
ZGluYXRvckNsaWVudCB7IG51bGxwdHIgfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9BVVRI
TikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiBh
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ7CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBM
SUNBVElPTl9NQU5JRkVTVCkKICAgICBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+
IGFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBmNzVhYjI0NWFlNzAwOWE0MzgxMzg4NGRjNGZjMjU3NDE2MzliYzBiLi44MGQ1
YmQ4N2FiZmZmZDQ0MThjNjIxNTUwMDIzOGZkNDM0NmIzYzg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0yNjcsOCArMjY3LDggQEAKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFdFQl9BVVRITikKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgotI2luY2x1ZGUg
Ik1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5oIgorI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKICNl
bmRpZgogCiB1c2luZyBKU0M6OkNhbGxEYXRhOwpAQCAtNTQ5LDggKzU0OSwxMSBAQCBJbnRlcm5h
bHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
RUJfQVVUSE4pCi0gICAgbV9tb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcj4oKnRoaXMpOwotICAgIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRNZXNzZW5nZXIoKm1fbW9ja0NyZWRlbnRpYWxzTWVzc2Vu
Z2VyKTsKKyAgICBpZiAoZG9jdW1lbnQucGFnZSgpKSB7CisgICAgICAgIGF1dG8gbW9ja0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvcj4oKTsKKyAgICAgICAgbV9tb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yID0g
bWFrZVdlYWtQdHIobW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5nZXQoKSk7CisgICAgICAg
IGRvY3VtZW50LnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuc2V0Q2xpZW50KFdU
Rk1vdmUobW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcikpOworICAgIH0KICNlbmRpZgogfQog
CkBAIC00NjIwLDkgKzQ2MjMsOSBAQCBNb2NrUGF5bWVudENvb3JkaW5hdG9yJiBJbnRlcm5hbHM6
Om1vY2tQYXltZW50Q29vcmRpbmF0b3IoKSBjb25zdAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQotTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyJiBJbnRlcm5hbHM6Om1vY2tDcmVkZW50
aWFsc01lc3NlbmdlcigpIGNvbnN0CitNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yJiBJbnRl
cm5hbHM6Om1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKSBjb25zdAogewotICAgIHJldHVy
biAqbV9tb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI7CisgICAgcmV0dXJuICptX21vY2tBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggYjRhNTBiYTdkMTEwYjdhMjU3YjA5YTFiMTIyNDIyMmRkMDBiMzI3MC4uMjQxN2Vl
ODUyMTk3NTI2OGVmZWMyYThmODkyNTMzOGIwYzYxMTU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBjbGFz
cyBNZW1vcnlJbmZvOwogY2xhc3MgTW9ja0NETUZhY3Rvcnk7CiBjbGFzcyBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOwotY2xhc3MgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOworY2xhc3MgTW9j
a0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjsKIGNsYXNzIE1vY2tQYWdlT3ZlcmxheTsKIGNsYXNz
IE1vY2tQYXltZW50Q29vcmRpbmF0b3I7CiBjbGFzcyBOb2RlTGlzdDsKQEAgLTY5Nyw3ICs2OTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0SW5jb21pbmdTeW5jSVBDTWVzc2FnZVdoaWxlV2Fp
dGluZ0ZvclN5bmNSZXBseSgpOwogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBNb2NrQ3Jl
ZGVudGlhbHNNZXNzZW5nZXImIG1vY2tDcmVkZW50aWFsc01lc3NlbmdlcigpIGNvbnN0OworICAg
IE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3ImIG1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IoKSBjb25zdDsKICNlbmRpZgogCiAgICAgYm9vbCBpc1N5c3RlbVByZXZpZXdMaW5rKEVsZW1l
bnQmKSBjb25zdDsKQEAgLTc2Myw3ICs3NjMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0VCX0FVVEhOKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2NrQ3JlZGVudGlhbHNNZXNz
ZW5nZXI+IG1fbW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOworICAgIFdlYWtQdHI8TW9ja0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvcj4gbV9tb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOwogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMDc4ODQ2ZWU4
YjJlYTdmZGI1MDcyYjI0NGM2YTY3NmFjZmQ1Y2Y1NC4uMjE4NGZkMjFkZDFhYzE4OGRiZjA0MTg4
NTgwNWM4NzNlMWI2MWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
NjQ2LDcgKzY0Niw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIFtFbmFibGVkQXRS
dW50aW1lPVdlYkFuaW1hdGlvbnNdIHZvaWQgcGF1c2VUaW1lbGluZShBbmltYXRpb25UaW1lbGlu
ZSB0aW1lbGluZSk7CiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9V2ViQW5pbWF0aW9uc10gdm9pZCBz
ZXRUaW1lbGluZUN1cnJlbnRUaW1lKEFuaW1hdGlvblRpbWVsaW5lIHRpbWVsaW5lLCBkb3VibGUg
Y3VycmVudFRpbWUpOwogICAgIFtDb25kaXRpb25hbD1BUFBMRV9QQVldIHJlYWRvbmx5IGF0dHJp
YnV0ZSBNb2NrUGF5bWVudENvb3JkaW5hdG9yIG1vY2tQYXltZW50Q29vcmRpbmF0b3I7Ci0gICAg
W0NvbmRpdGlvbmFsPVdFQl9BVVRITl0gcmVhZG9ubHkgYXR0cmlidXRlIE1vY2tDcmVkZW50aWFs
c01lc3NlbmdlciBtb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI7CisgICAgW0NvbmRpdGlvbmFsPVdF
Ql9BVVRITl0gcmVhZG9ubHkgYXR0cmlidXRlIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ig
bW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjsKIAogICAgIGJvb2xlYW4gaXNTeXN0ZW1QcmV2
aWV3TGluayhFbGVtZW50IGVsZW1lbnQpOwogICAgIGJvb2xlYW4gaXNTeXN0ZW1QcmV2aWV3SW1h
Z2UoRWxlbWVudCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkN2Q2OWE2MmQ2
MGFkOTg2NDc3YWQ2YTMyZDQ4NmIwNGI1NGNmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC0wLDAg
KzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1v
Y2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisK
KyNpbmNsdWRlICJJbnRlcm5hbHMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRl
bnRpYWxEYXRhLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6c2V0Q3JlYXRpb25SZXR1
cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNlJiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNv
dXJjZSYgYXR0ZXN0YXRpb25PYmplY3QpCit7CisgICAgQVNTRVJUKCFtX2NyZWRlbnRpYWxJZCAm
JiAhbV9hdHRlc3RhdGlvbk9iamVjdCk7CisgICAgbV9jcmVkZW50aWFsSWQgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5sZW5ndGgoKSk7Cisg
ICAgbV9hdHRlc3RhdGlvbk9iamVjdCA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25P
YmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5sZW5ndGgoKSk7Cit9CisKK3ZvaWQgTW9j
a0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6c2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKGNvbnN0
IEJ1ZmZlclNvdXJjZSYgY3JlZGVudGlhbElkLCBjb25zdCBCdWZmZXJTb3VyY2UmIGF1dGhlbnRp
Y2F0b3JEYXRhLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291
cmNlJiB1c2VySGFuZGxlKQoreworICAgIEFTU0VSVCghbV9jcmVkZW50aWFsSWQgJiYgIW1fYXV0
aGVudGljYXRvckRhdGEgJiYgIW1fc2lnbmF0dXJlICYmICFtX3VzZXJIYW5kbGUpOworICAgIG1f
Y3JlZGVudGlhbElkID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgpLCBj
cmVkZW50aWFsSWQubGVuZ3RoKCkpOworICAgIG1fYXV0aGVudGljYXRvckRhdGEgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEu
bGVuZ3RoKCkpOworICAgIG1fc2lnbmF0dXJlID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWduYXR1
cmUuZGF0YSgpLCBzaWduYXR1cmUubGVuZ3RoKCkpOworICAgIG1fdXNlckhhbmRsZSA9IEFycmF5
QnVmZmVyOjpjcmVhdGUodXNlckhhbmRsZS5kYXRhKCksIHVzZXJIYW5kbGUubGVuZ3RoKCkpOwor
fQorCit2b2lkIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQoreworICAgIGlmICgh
c2V0UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobV9kaWRUaW1lT3V0KSB7CisgICAgICAgIG1fZGlkVGltZU91dCA9
IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2RpZFVzZXJDYW5jZWwp
IHsKKyAgICAgICAgbV9kaWRVc2VyQ2FuY2VsID0gZmFsc2U7CisgICAgICAgIHJlcXVlc3RSZXBs
eSh7IH0sIHsgTm90QWxsb3dlZEVycm9yLCAiVXNlciBjYW5jZWxsZWQuIl9zIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2NyZWRlbnRpYWxJZCkgeworICAgICAgICBBU1NF
UlQobV9hdHRlc3RhdGlvbk9iamVjdCk7CisgICAgICAgIHJlcXVlc3RSZXBseShQdWJsaWNLZXlD
cmVkZW50aWFsRGF0YSB7IFdURk1vdmUobV9jcmVkZW50aWFsSWQpLCB0cnVlLCBudWxscHRyLCBX
VEZNb3ZlKG1fYXR0ZXN0YXRpb25PYmplY3QpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH0s
IHsgfSk7CisgICAgICAgIG1fY3JlZGVudGlhbElkID0gbnVsbHB0cjsKKyAgICAgICAgbV9hdHRl
c3RhdGlvbk9iamVjdCA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
cjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRs
ZXIpCit7CisgICAgaWYgKCFzZXRSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5k
bGVyKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2RpZFRpbWVPdXQpIHsKKyAgICAg
ICAgbV9kaWRUaW1lT3V0ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KG1fZGlkVXNlckNhbmNlbCkgeworICAgICAgICBtX2RpZFVzZXJDYW5jZWwgPSBmYWxzZTsKKyAg
ICAgICAgcmVxdWVzdFJlcGx5KHsgfSwgeyBOb3RBbGxvd2VkRXJyb3IsICJVc2VyIGNhbmNlbGxl
ZC4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fY3JlZGVudGlhbElk
KSB7CisgICAgICAgIEFTU0VSVChtX2F1dGhlbnRpY2F0b3JEYXRhICYmIG1fc2lnbmF0dXJlICYm
IG1fdXNlckhhbmRsZSk7CisgICAgICAgIHJlcXVlc3RSZXBseShQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSB7IFdURk1vdmUobV9jcmVkZW50aWFsSWQpLCBmYWxzZSwgbnVsbHB0ciwgbnVsbHB0ciwg
V1RGTW92ZShtX2F1dGhlbnRpY2F0b3JEYXRhKSwgV1RGTW92ZShtX3NpZ25hdHVyZSksIFdURk1v
dmUobV91c2VySGFuZGxlKSB9LCB7IH0pOworICAgICAgICBtX2NyZWRlbnRpYWxJZCA9IG51bGxw
dHI7CisgICAgICAgIG1fYXV0aGVudGljYXRvckRhdGEgPSBudWxscHRyOworICAgICAgICBtX3Np
Z25hdHVyZSA9IG51bGxwdHI7CisgICAgICAgIG1fdXNlckhhbmRsZSA9IG51bGxwdHI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQg
TW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRo
ZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQorewor
ICAgIGF1dG8gbWVzc2FnZUlkID0gYWRkUXVlcnlDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhh
bmRsZXIpKTsKKyAgICBpZiAobV9kaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
UHJlc2VudCkgeworICAgICAgICBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JB
dmFpbGFibGVSZXBseShtZXNzYWdlSWQsIHRydWUpOworICAgICAgICBtX2RpZFVzZXJWZXJpZnlp
bmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50ID0gZmFsc2U7CisgICAgfSBlbHNlCisgICAg
ICAgIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1l
c3NhZ2VJZCwgZmFsc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGFjNDVlYTJmZjM0NTc1
ZWE0NjRiOTUxYmNkMTM2YTQ1MTJiYWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAgLTAsMCArMSw2OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKwor
I2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkJ1
ZmZlclNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSW50ZXJuYWxzOworCitjbGFzcyBNb2NrQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yIGZpbmFsIDogcHVibGljIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCB7Citw
dWJsaWM6CisgICAgdm9pZCBzZXREaWRUaW1lT3V0KCkgeyBtX2RpZFRpbWVPdXQgPSB0cnVlOyB9
CisgICAgdm9pZCBzZXREaWRVc2VyQ2FuY2VsKCkgeyBtX2RpZFVzZXJDYW5jZWwgPSB0cnVlOyB9
CisgICAgdm9pZCBzZXREaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2Vu
dCgpIHsgbV9kaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCA9IHRy
dWU7IH0KKyAgICB2b2lkIHNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgY3JlZGVudGlhbElkLCBjb25zdCBCdWZmZXJTb3VyY2UmIGF0dGVzdGF0aW9uT2JqZWN0KTsK
KyAgICB2b2lkIHNldEFzc2VydGlvblJldHVybkJ1bmRsZShjb25zdCBCdWZmZXJTb3VyY2UmIGNy
ZWRlbnRpYWxJZCwgY29uc3QgQnVmZmVyU291cmNlJiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3Qg
QnVmZmVyU291cmNlJiBzaWduYXR1cmUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgdXNlckhhbmRsZSk7
CisKKyAgICAvLyBSZWZDb3VudGVkIGlzIHJlcXVpcmVkIGZvciBKUyB3cmFwcGVyLiBUaGVyZWZv
cmUsIGZha2UgdGhlbSB0byBjb21waWxlLgorICAgIHZvaWQgcmVmKCkgY29uc3QgeyB9CisgICAg
dm9pZCBkZXJlZigpIGNvbnN0IHsgfQorCitwcml2YXRlOgorICAgIHZvaWQgbWFrZUNyZWRlbnRp
YWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAg
IHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOworICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
QXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisKKyAgICAvLyBBbGwg
Zm9sbG93aW5nIGZpZWxkcyBhcmUgZGlzcG9zYWJsZS4KKyAgICBib29sIG1fZGlkVGltZU91dCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2RpZFVzZXJDYW5jZWwgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9kaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCB7IGZhbHNlIH07
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2NyZWRlbnRpYWxJZDsKKyAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG1fYXR0ZXN0YXRpb25PYmplY3Q7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBt
X2F1dGhlbnRpY2F0b3JEYXRhOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9zaWduYXR1cmU7
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX3VzZXJIYW5kbGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWFjNWNiMmVmODIwYjUwMjZhMjU5OGNmZDJmY2NiNjU3NTMzZWQ5MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5pZGwKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25k
aXRpb25hbD1XRUJfQVVUSE4sCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBN
b2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIHsKKyAgICB2b2lkIHNldERpZFRpbWVPdXQoKTsK
KyAgICB2b2lkIHNldERpZFVzZXJDYW5jZWwoKTsKKyAgICB2b2lkIHNldERpZFVzZXJWZXJpZnlp
bmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50KCk7CisgICAgdm9pZCBzZXRDcmVhdGlvblJl
dHVybkJ1bmRsZShCdWZmZXJTb3VyY2UgY3JlZGVudGlhbElkLCBCdWZmZXJTb3VyY2UgYXR0ZXN0
YXRpb25PYmplY3QpOworICAgIHZvaWQgc2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKEJ1ZmZlclNv
dXJjZSBjcmVkZW50aWFsSWQsIEJ1ZmZlclNvdXJjZSBhdXRoZW50aWNhdG9yRGF0YSwgQnVmZmVy
U291cmNlIHNpZ25hdHVyZSwgQnVmZmVyU291cmNlIHVzZXJIYW5kbGUpOworfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAyZTMzYjVjNWI4OGE4MWYxZTJhNjRiN2NlMGZl
M2Y1NTAxNGEzZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCIKLQotI2lmIEVOQUJM
RShXRUJfQVVUSE4pCi0KLSNpbmNsdWRlICJJbnRlcm5hbHMuaCIKLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
OjpNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIoSW50ZXJuYWxzJiBpbnRlcm5hbHMpCi0gICAgOiBt
X2ludGVybmFscyhpbnRlcm5hbHMpCi17Ci19Ci0KLU1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6
fk1vY2tDcmVkZW50aWFsc01lc3NlbmdlcigpCi17Ci0gICAgLy8gSGF2ZSBubyBlZmZlY3RzIHRv
IG9yaWdpbmFsIHByb21pc2VzLiBKdXN0IHRvIGNhbGwgaGFuZGxlcnMgdG8gYXZvaWQgYW55IGFz
c2VydGlvbiBmYWlsdXJlcy4KLSAgICBmb3IgKGF1dG8gbWVzc2FnZUlkIDogbV90aW1lT3V0TWVz
c2FnZUlkcykKLSAgICAgICAgZXhjZXB0aW9uUmVwbHkobWVzc2FnZUlkLCBFeGNlcHRpb25EYXRh
IHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iX3MgfSk7Ci19Ci0KLXZv
aWQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjpzZXRDcmVhdGlvblJldHVybkJ1bmRsZShjb25z
dCBCdWZmZXJTb3VyY2UmIGNyZWRlbnRpYWxJZCwgY29uc3QgQnVmZmVyU291cmNlJiBhdHRlc3Rh
dGlvbk9iamVjdCkKLXsKLSAgICBBU1NFUlQobV9jcmVkZW50aWFsSWQuaXNFbXB0eSgpICYmIG1f
YXR0ZXN0YXRpb25PYmplY3QuaXNFbXB0eSgpKTsKLSAgICBtX2NyZWRlbnRpYWxJZC5hcHBlbmQo
Y3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLmxlbmd0aCgpKTsKLSAgICBtX2F0dGVz
dGF0aW9uT2JqZWN0LmFwcGVuZChhdHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9u
T2JqZWN0Lmxlbmd0aCgpKTsKLX0KLQotdm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6OnNl
dEFzc2VydGlvblJldHVybkJ1bmRsZShjb25zdCBCdWZmZXJTb3VyY2UmIGNyZWRlbnRpYWxJZCwg
Y29uc3QgQnVmZmVyU291cmNlJiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgQnVmZmVyU291cmNl
JiBzaWduYXR1cmUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgdXNlckhhbmRsZSkKLXsKLSAgICBBU1NF
UlQobV9jcmVkZW50aWFsSWQuaXNFbXB0eSgpICYmIG1fYXV0aGVudGljYXRvckRhdGEuaXNFbXB0
eSgpICYmIG1fc2lnbmF0dXJlLmlzRW1wdHkoKSAmJiBtX3VzZXJIYW5kbGUuaXNFbXB0eSgpKTsK
LSAgICBtX2NyZWRlbnRpYWxJZC5hcHBlbmQoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlh
bElkLmxlbmd0aCgpKTsKLSAgICBtX2F1dGhlbnRpY2F0b3JEYXRhLmFwcGVuZChhdXRoZW50aWNh
dG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLmxlbmd0aCgpKTsKLSAgICBtX3NpZ25h
dHVyZS5hcHBlbmQoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLmxlbmd0aCgpKTsKLSAgICBt
X3VzZXJIYW5kbGUuYXBwZW5kKHVzZXJIYW5kbGUuZGF0YSgpLCB1c2VySGFuZGxlLmxlbmd0aCgp
KTsKLX0KLQotdm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6OnJlZigpCi17Ci0gICAgbV9p
bnRlcm5hbHMucmVmKCk7Ci19Ci0KLXZvaWQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjpkZXJl
ZigpCi17Ci0gICAgbV9pbnRlcm5hbHMuZGVyZWYoKTsKLX0KLQotdm9pZCBNb2NrQ3JlZGVudGlh
bHNNZXNzZW5nZXI6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0
IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBDcmVhdGlvbkNvbXBsZXRpb25I
YW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICBhdXRvIG1lc3NhZ2VJZCA9IGFkZENyZWF0aW9uQ29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgaWYgKG1fZGlkVGltZU91dCkg
ewotICAgICAgICBtX2RpZFRpbWVPdXQgPSBmYWxzZTsKLSAgICAgICAgbV90aW1lT3V0TWVzc2Fn
ZUlkcy5hcHBlbmQobWVzc2FnZUlkKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
bV9kaWRVc2VyQ2FuY2VsKSB7Ci0gICAgICAgIG1fZGlkVXNlckNhbmNlbCA9IGZhbHNlOwotICAg
ICAgICBleGNlcHRpb25SZXBseShtZXNzYWdlSWQsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2Vk
RXJyb3IsICJVc2VyIGNhbmNlbGxlZC4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKCFtX2NyZWRlbnRpYWxJZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKCFtX2F0
dGVzdGF0aW9uT2JqZWN0LmlzRW1wdHkoKSk7Ci0gICAgICAgIG1ha2VDcmVkZW50aWFsUmVwbHko
bWVzc2FnZUlkLCBtX2NyZWRlbnRpYWxJZCwgbV9hdHRlc3RhdGlvbk9iamVjdCk7Ci0gICAgICAg
IG1fY3JlZGVudGlhbElkLmNsZWFyKCk7Ci0gICAgICAgIG1fYXR0ZXN0YXRpb25PYmplY3QuY2xl
YXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotdm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6OmdldEFzc2VydGlvbihjb25zdCBW
ZWN0b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMm
LCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQotewotICAgIGF1dG8gbWVzc2Fn
ZUlkID0gYWRkUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpOwotICAg
IGlmIChtX2RpZFRpbWVPdXQpIHsKLSAgICAgICAgbV9kaWRUaW1lT3V0ID0gZmFsc2U7Ci0gICAg
ICAgIG1fdGltZU91dE1lc3NhZ2VJZHMuYXBwZW5kKG1lc3NhZ2VJZCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKG1fZGlkVXNlckNhbmNlbCkgewotICAgICAgICBtX2RpZFVzZXJD
YW5jZWwgPSBmYWxzZTsKLSAgICAgICAgZXhjZXB0aW9uUmVwbHkobWVzc2FnZUlkLCBFeGNlcHRp
b25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiVXNlciBjYW5jZWxsZWQuIl9zIH0pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9jcmVkZW50aWFsSWQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIEFTU0VSVCghbV9hdXRoZW50aWNhdG9yRGF0YS5pc0VtcHR5KCkgJiYgIW1fc2lnbmF0
dXJlLmlzRW1wdHkoKSAmJiAhbV91c2VySGFuZGxlLmlzRW1wdHkoKSk7Ci0gICAgICAgIGdldEFz
c2VydGlvblJlcGx5KG1lc3NhZ2VJZCwgbV9jcmVkZW50aWFsSWQsIG1fYXV0aGVudGljYXRvckRh
dGEsIG1fc2lnbmF0dXJlLCBtX3VzZXJIYW5kbGUpOwotICAgICAgICBtX2NyZWRlbnRpYWxJZC5j
bGVhcigpOwotICAgICAgICBtX2F1dGhlbnRpY2F0b3JEYXRhLmNsZWFyKCk7Ci0gICAgICAgIG1f
c2lnbmF0dXJlLmNsZWFyKCk7Ci0gICAgICAgIG1fdXNlckhhbmRsZS5jbGVhcigpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIE1v
Y2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yQXZhaWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQotewotICAgIGF1
dG8gbWVzc2FnZUlkID0gYWRkUXVlcnlDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIp
KTsKLSAgICBpZiAobV9kaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2Vu
dCkgewotICAgICAgICBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGVSZXBseShtZXNzYWdlSWQsIHRydWUpOwotICAgICAgICBtX2RpZFVzZXJWZXJpZnlpbmdQbGF0
Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50ID0gZmFsc2U7Ci0gICAgfSBlbHNlCi0gICAgICAgIGlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJ
ZCwgZmFsc2UpOwotfQotCi12b2lkIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6bWFrZUNyZWRl
bnRpYWxSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3Jl
ZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KQotewot
ICAgIGF1dG8gaGFuZGxlciA9IHRha2VDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyKG1lc3NhZ2VJ
ZCk7Ci0gICAgaGFuZGxlcihDcmVhdGlvblJldHVybkJ1bmRsZShBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3Quc2l6ZSgp
KSkpOwotfQotCi12b2lkIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6Z2V0QXNzZXJ0aW9uUmVw
bHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJ
ZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRsZSkK
LXsKLSAgICBhdXRvIGhhbmRsZXIgPSB0YWtlUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKG1lc3Nh
Z2VJZCk7Ci0gICAgaGFuZGxlcihBc3NlcnRpb25SZXR1cm5CdW5kbGUoQXJyYXlCdWZmZXI6OmNy
ZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNp
emUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNp
emUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUodXNlckhhbmRsZS5kYXRhKCksIHVzZXJIYW5kbGUu
c2l6ZSgpKSkpOwotfQotCi12b2lkIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6aXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2Fn
ZUlkLCBib29sIHJlc3VsdCkKLXsKLSAgICBhdXRvIGhhbmRsZXIgPSB0YWtlUXVlcnlDb21wbGV0
aW9uSGFuZGxlcihtZXNzYWdlSWQpOwotICAgIGhhbmRsZXIocmVzdWx0KTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGIwOGRmNGVhYTA4NDhlMTExOTFlOWE4NmU0MDRhMmJj
NTExODJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCX0FVVEhOKQotCi0jaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCi0jaW5jbHVkZSAi
Q3JlZGVudGlhbHNNZXNzZW5nZXIuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEludGVybmFsczsKLQotY2xhc3MgTW9ja0NyZWRlbnRp
YWxzTWVzc2VuZ2VyIGZpbmFsIDogcHVibGljIENyZWRlbnRpYWxzTWVzc2VuZ2VyIHsKLXB1Ymxp
YzoKLSAgICBleHBsaWNpdCBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIoSW50ZXJuYWxzJik7Ci0g
ICAgfk1vY2tDcmVkZW50aWFsc01lc3NlbmdlcigpOwotCi0gICAgdm9pZCBzZXREaWRUaW1lT3V0
KCkgeyBtX2RpZFRpbWVPdXQgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXREaWRVc2VyQ2FuY2VsKCkg
eyBtX2RpZFVzZXJDYW5jZWwgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXREaWRVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCgpIHsgbV9kaWRVc2VyVmVyaWZ5aW5nUGxhdGZv
cm1BdXRoZW50aWNhdG9yUHJlc2VudCA9IHRydWU7IH0KLSAgICB2b2lkIHNldENyZWF0aW9uUmV0
dXJuQnVuZGxlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgY3JlZGVudGlhbElkLCBjb25zdCBCdWZmZXJT
b3VyY2UmIGF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICB2b2lkIHNldEFzc2VydGlvblJldHVybkJ1
bmRsZShjb25zdCBCdWZmZXJTb3VyY2UmIGNyZWRlbnRpYWxJZCwgY29uc3QgQnVmZmVyU291cmNl
JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgQnVmZmVyU291cmNlJiBzaWduYXR1cmUsIGNvbnN0
IEJ1ZmZlclNvdXJjZSYgdXNlckhhbmRsZSk7Ci0KLSAgICB2b2lkIHJlZigpOwotICAgIHZvaWQg
ZGVyZWYoKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBD
cmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9u
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZv
aWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5Q29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBtYWtlQ3JlZGVudGlhbFJlcGx5KHVp
bnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpIGZpbmFsOwotICAgIHZvaWQg
Z2V0QXNzZXJ0aW9uUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0
YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgdXNlckhhbmRsZSkgZmluYWw7Ci0gICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wpIGZpbmFs
OwotCi0gICAgSW50ZXJuYWxzJiBtX2ludGVybmFsczsKLSAgICAvLyBBbGwgZm9sbG93aW5nIGZp
ZWxkcyBhcmUgZGlzcG9zYWJsZS4KLSAgICBib29sIG1fZGlkVGltZU91dCB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX2RpZFVzZXJDYW5jZWwgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9kaWRVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCB7IGZhbHNlIH07Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IG1fYXR0ZXN0YXRpb25PYmplY3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1fY3Jl
ZGVudGlhbElkOyAvLyBPdmVybGFwcGVkIGJldHdlZW4gQ3JlYXRpb25SZXR1cm5CdW5kbGUgYW5k
IEFzc2VydGlvblJldHVybkJ1bmRsZS4KLSAgICBWZWN0b3I8dWludDhfdD4gbV9hdXRoZW50aWNh
dG9yRGF0YTsKLSAgICBWZWN0b3I8dWludDhfdD4gbV9zaWduYXR1cmU7Ci0gICAgVmVjdG9yPHVp
bnQ4X3Q+IG1fdXNlckhhbmRsZTsKLQotICAgIC8vIFRvIGNsZWFuIHVwIGNvbXBsZXRpb24gaGFu
ZGxlcnMuCi0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX3RpbWVPdXRNZXNzYWdlSWRzOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFlMTI2YTkyYmYxMTlhM2M0NWZhZTVl
YjI4YThiOWFiOTU4ZDk4MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5p
ZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQl9BVVRITiwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNl
IE1vY2tDcmVkZW50aWFsc01lc3NlbmdlciB7Ci0gICAgdm9pZCBzZXREaWRUaW1lT3V0KCk7Ci0g
ICAgdm9pZCBzZXREaWRVc2VyQ2FuY2VsKCk7Ci0gICAgdm9pZCBzZXREaWRVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCgpOwotICAgIHZvaWQgc2V0Q3JlYXRpb25SZXR1
cm5CdW5kbGUoQnVmZmVyU291cmNlIGNyZWRlbnRpYWxJZCwgQnVmZmVyU291cmNlIGF0dGVzdGF0
aW9uT2JqZWN0KTsKLSAgICB2b2lkIHNldEFzc2VydGlvblJldHVybkJ1bmRsZShCdWZmZXJTb3Vy
Y2UgY3JlZGVudGlhbElkLCBCdWZmZXJTb3VyY2UgYXV0aGVudGljYXRvckRhdGEsIEJ1ZmZlclNv
dXJjZSBzaWduYXR1cmUsIEJ1ZmZlclNvdXJjZSB1c2VySGFuZGxlKTsKLX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKaW5kZXggMWU0Y2M1MWQ4ZjkwZjRjMzNlM2I4Yzg0MGY2NTM1MzNiYWNj
YmU0NS4uYmRlYzI4MzFiNjUxMGE3ODBmZWQ2YmI0MjYxMWJjOTJmNDc4NzNhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNDMsNyArNDMsNiBAQCBWUEFUSCA9IFwKICAgICAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZSBcCiAgICAgJChXZWJLaXQyKS9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9DYWNoZSBcCi0g
ICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50IFwKICAgICAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQiBcCiAgICAgJChXZWJLaXQyKS9X
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbiBcCkBAIC01OCw2ICs1Nyw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0MikvV2ViUHJv
Y2Vzcy9SZXNvdXJjZUNhY2hlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvU3RvcmFnZSBc
CiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1VzZXJDb250ZW50IFwKKyAgICAkKFdlYktpdDIp
L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydCBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYlBhZ2UgXAog
ICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZSBcCkBAIC02
OSw3ICs2OSw2IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL0FwcGxlUGF5
IFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9BdXRvbWF0aW9uIFwKICAgICAkKFdlYktpdDIp
L1VJUHJvY2Vzcy9Db2NvYSBcCi0gICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvQ3JlZGVudGlhbE1h
bmFnZW1lbnQgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL0RhdGFiYXNlcyBcCiAgICAgJChX
ZWJLaXQyKS9VSVByb2Nlc3MvRG93bmxvYWRzIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9N
ZWRpYVN0cmVhbSBcCkBAIC04MCw2ICs3OSw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0Mikv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvU3Rv
cmFnZSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvVXNlckNvbnRlbnQgXAorICAgICQoV2Vi
S2l0MikvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uIFwKICAgICAkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9XZWJTdG9yYWdlIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9tYWMgXAogICAgICQo
V2ViS2l0MikvVUlQcm9jZXNzL2lvcyBcCkBAIC0xNDksOCArMTQ5LDggQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAgICAgV2ViQ29ubmVjdGlvbiBcCiAgICAgV2ViQ29va2llTWFuYWdlciBcCiAg
ICAgV2ViQ29va2llTWFuYWdlclByb3h5IFwKLSAgICBXZWJDcmVkZW50aWFsc01lc3NlbmdlciBc
Ci0gICAgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eSBcCisgICAgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yIFwKKyAgICBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBcCiAg
ICAgV2ViRnVsbFNjcmVlbk1hbmFnZXIgXAogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkg
XAogICAgIFdlYkdlb2xvY2F0aW9uTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
MDI2ZGE1MmU5ZWQ4M2M0YThkYmQ0YThjZTIxN2YzODhkMzEyOTk4Yi4uMTZkMDdiYTAzM2NlODdj
ZmUzNzY5YWIzZGU4ZjgyOTYwYmE3Mjk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzQ0
LDggKzM0NCw2IEBAIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQogVUlQcm9jZXNzL0Nv
Y29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCiBVSVByb2Nlc3MvQ29j
b2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0KIAotVUlQcm9jZXNzL0NyZWRl
bnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuY3BwCi0KIFVJUHJv
Y2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KIFVJUHJvY2Vzcy9H
YW1lcGFkL2lvcy9VSUdhbWVwYWRQcm92aWRlcklPUy5tbQogVUlQcm9jZXNzL0dhbWVwYWQvbWFj
L1VJR2FtZXBhZFByb3ZpZGVyTWFjLm1tCkBAIC00NTYsNiArNDU0LDggQEAgVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEubW0K
IFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eS5jcHAKIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAK
IAorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5LmNwcAorCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCiAKIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAt
NDY0LDggKzQ2NCw2IEBAIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL2lvcy9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXJJT1MubW0KIAogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuY3BwCiAKLVdlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlh
bHNNZXNzZW5nZXIuY3BwCi0KIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5tbQogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKIFdlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtNTEwLDYgKzUwOCw4IEBA
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCiAKK1dlYlByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorCiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVk
ZW50aWFsc01lc3NlbmdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRl
bnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2JjZmJmMmNkOTA0MWFmNDhkMDljMmQwZTZmMGU0ZGUy
MDIwNTY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyUHJveHkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViQ3JlZGVudGlhbHNNZXNz
ZW5nZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotI2luY2x1ZGUgIldlYkNy
ZWRlbnRpYWxzTWVzc2VuZ2VyTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJDcmVkZW50aWFsc01l
c3NlbmdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsQXV0aGVudGljYXRvci5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6V2ViQ3JlZGVudGlhbHNN
ZXNzZW5nZXJQcm94eShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKLSAgICA6IG1fd2ViUGFn
ZVByb3h5KHdlYlBhZ2VQcm94eSkKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7Ci0g
ICAgbV9hdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpMb2NhbEF1dGhl
bnRpY2F0b3I+KCk7Ci19Ci0KLVdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6On5XZWJDcmVk
ZW50aWFsc01lc3NlbmdlclByb3h5KCkKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDcmVkZW50aWFsc01lc3NlbmdlclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKLX0K
LQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5OjptYWtlQ3JlZGVudGlhbCh1aW50
NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICAv
LyBGSVhNRSgxODI3NjcpCi0gICAgaWYgKCFtX2F1dGhlbnRpY2F0b3IpIHsKLSAgICAgICAgZXhj
ZXB0aW9uUmVwbHkobWVzc2FnZUlkLCB7IFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgIk5vIGF2
YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgLy8gRklYTUUoMTgzNTM0KTogV2VhayBwb2ludGVycyBkb2Vzbid0IHdvcmsgaW4gYW5vdGhl
ciB0aHJlYWQgYmVjYXVzZSBvZiByYWNlIGNvbmRpdGlvbi4KLSAgICAvLyBGSVhNRSgxODM1MzQp
OiBVbmlmeSBjYWxsYmFja3MuCi0gICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KTsKLSAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzLCBtZXNzYWdlSWRdIChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3Rh
dGlvbk9iamVjdCkgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB3ZWFrVGhpcy0+bWFrZUNyZWRlbnRpYWxSZXBseShtZXNzYWdlSWQsIGNyZWRl
bnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QpOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25D
YWxsYmFjayA9IFt3ZWFrVGhpcywgbWVzc2FnZUlkXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYgZXhjZXB0aW9uKSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHdlYWtUaGlzLT5leGNlcHRpb25SZXBseShtZXNzYWdlSWQsIGV4Y2Vw
dGlvbik7Ci0gICAgfTsKLSAgICBtX2F1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKGhhc2gs
IG9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7
Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6Z2V0QXNzZXJ0aW9uKHVp
bnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJD
b3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAg
Ly8gRklYTUUoMTgyNzY3KQotICAgIGlmICghbV9hdXRoZW50aWNhdG9yKQotICAgICAgICBleGNl
cHRpb25SZXBseShtZXNzYWdlSWQsIHsgV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCAiTm8gYXZh
bGlhYmxlIGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsKLSAgICAvLyBGSVhNRSgxODM1MzQpOiBXZWFr
IHBvaW50ZXJzIGRvZXNuJ3Qgd29yayBpbiBhbm90aGVyIHRocmVhZCBiZWNhdXNlIG9mIHJhY2Ug
Y29uZGl0aW9uLgotICAgIC8vIEZJWE1FKDE4MzUzNCk6IFVuaWZ5IGNhbGxiYWNrcy4KLSAgICBh
dXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBb
d2Vha1RoaXMsIG1lc3NhZ2VJZF0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElk
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKSB7
Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5nZXRBc3NlcnRp
b25SZXBseShtZXNzYWdlSWQsIGNyZWRlbnRpYWxJZCwgYXV0aGVudGljYXRvckRhdGEsIHNpZ25h
dHVyZSwgdXNlckhhbmRsZSk7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0g
W3dlYWtUaGlzLCBtZXNzYWdlSWRdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNl
cHRpb24pIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPmV4
Y2VwdGlvblJlcGx5KG1lc3NhZ2VJZCwgZXhjZXB0aW9uKTsKLSAgICB9OwotICAgIG1fYXV0aGVu
dGljYXRvci0+Z2V0QXNzZXJ0aW9uKGhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNz
ZW5nZXJQcm94eTo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxl
KHVpbnQ2NF90IG1lc3NhZ2VJZCkKLXsKLSAgICBpZiAoIW1fYXV0aGVudGljYXRvcikgewotICAg
ICAgICBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSht
ZXNzYWdlSWQsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpc1VzZXJWZXJp
ZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseShtZXNzYWdlSWQsIG1fYXV0
aGVudGljYXRvci0+aXNBdmFpbGFibGUoKSk7Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNz
ZW5nZXJQcm94eTo6ZXhjZXB0aW9uUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pCi17Ci0gICAgbV93ZWJQYWdlUHJveHkuc2Vu
ZChNZXNzYWdlczo6V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6OkV4Y2VwdGlvblJlcGx5KG1lc3Nh
Z2VJZCwgZXhjZXB0aW9uKSk7Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94
eTo6bWFrZUNyZWRlbnRpYWxSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9u
T2JqZWN0KQotewotICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYkNyZWRlbnRp
YWxzTWVzc2VuZ2VyOjpNYWtlQ3JlZGVudGlhbFJlcGx5KG1lc3NhZ2VJZCwgY3JlZGVudGlhbElk
LCBhdHRlc3RhdGlvbk9iamVjdCkpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
UHJveHk6OmdldEFzc2VydGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGlj
YXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHVzZXJIYW5kbGUpCi17Ci0gICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdl
czo6V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6OkdldEFzc2VydGlvblJlcGx5KG1lc3NhZ2VJZCwg
Y3JlZGVudGlhbElkLCBhdXRoZW50aWNhdG9yRGF0YSwgc2lnbmF0dXJlLCB1c2VySGFuZGxlKSk7
Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6aXNVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBi
b29sIHJlc3VsdCkKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJDcmVk
ZW50aWFsc01lc3Nlbmdlcjo6SXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlUmVwbHkobWVzc2FnZUlkLCByZXN1bHQpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQv
V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5ZDc0Yzk3MjcwYjc4M2U4N2U0ZjhlNTJmMjhkYTBlYTI5MGM3MGMwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuaAor
KysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIExv
Y2FsQXV0aGVudGljYXRvcjsKLQotc3RydWN0IEV4Y2VwdGlvbkRhdGE7Ci1zdHJ1Y3QgUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKLXN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnM7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQYWdl
UHJveHk7Ci0KLWNsYXNzIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkgOiBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViQ3JlZGVudGlhbHNN
ZXNzZW5nZXJQcm94eT4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyUHJveHkpOwotcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkNyZWRlbnRpYWxzTWVz
c2VuZ2VyUHJveHkoV2ViUGFnZVByb3h5Jik7Ci0gICAgfldlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
UHJveHkoKTsKLQotcHJpdmF0ZToKLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KLSAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOwotCi0gICAgLy8gUmVjZWl2ZXJzLgotICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwodWlu
dDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmKTsKLSAgICB2b2lkIGdldEFz
c2VydGlvbih1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwg
Y29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJik7Ci0gICAg
dm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUodWludDY0
X3QgbWVzc2FnZUlkKTsKLQotICAgIC8vIFNlbmRlcnMuCi0gICAgdm9pZCBleGNlcHRpb25SZXBs
eSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKTsKLSAg
ICB2b2lkIG1ha2VDcmVkZW50aWFsUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3Rh
dGlvbk9iamVjdCk7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdl
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVy
ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKTsKLSAgICB2b2lkIGlzVXNlclZl
cmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1lc3Nh
Z2VJZCwgYm9vbCk7Ci0KLSAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMb2NhbEF1dGhlbnRpY2F0b3I+IG1fYXV0aGVudGljYXRv
cjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRlbnRpYWxNYW5h
Z2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nl
bmdlclByb3h5Lm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNThi
YmFlNmYwMTRiMGJiYjZjZTk3OGE4NDlhZmY1MzhmMzMyNjBkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRl
bnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkubWVzc2FnZXMuaW4K
KysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0j
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotIy8KLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLW1lc3NhZ2VzIC0+IFdl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkgewotCi0gICAgTWFrZUNyZWRlbnRpYWwodWludDY0
X3QgbWVzc2FnZUlkLCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucyk7Ci0gICAgR2V0QXNzZXJ0aW9u
KHVpbnQ2NF90IG1lc3NhZ2VJZCwgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucyk7Ci0gICAgSXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKHVpbnQ2NF90IG1lc3NhZ2VJ
ZCk7Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyMjM5NDhlZTE4MDAxOGNkMmQwNTkxYWQ2
MjBjYmZkOGU3Yjk2YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAK
QEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCIKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0xvY2FsQXV0aGVudGljYXRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVu
dGlhbERhdGEuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eShXZWJQYWdlUHJv
eHkmIHdlYlBhZ2VQcm94eSkKKyAgICA6IG1fd2ViUGFnZVByb3h5KHdlYlBhZ2VQcm94eSkKK3sK
KyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fYXV0aGVudGljYXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yPigpOworfQorCitX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6fldlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5KCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cit9CisKK3ZvaWQg
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICAvLyBGSVhNRSgxODI3NjcpCisgICAgaWYg
KCFtX2F1dGhlbnRpY2F0b3IpIHsKKyAgICAgICAgcmVxdWVzdFJlcGx5KHsgfSwgeyBXZWJDb3Jl
OjpOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9zIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FKDE4MzUzNCk6IFdlYWsgcG9pbnRl
cnMgZG9lc24ndCB3b3JrIGluIGFub3RoZXIgdGhyZWFkIGJlY2F1c2Ugb2YgcmFjZSBjb25kaXRp
b24uCisgICAgYXV0byBjYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0g
KFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJD
b3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSkgeworICAgICAgICAgICAgd2Vha1Ro
aXMtPnJlcXVlc3RSZXBseShkYXRhLCB7IH0pOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgd2Vha1RoaXMtPnJl
cXVlc3RSZXBseSh7IH0sIGV4Y2VwdGlvbik7CisgICAgICAgIH0pOworICAgIH07CisgICAgbV9h
dXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbChoYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7Cit9CisKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmdldEFz
c2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICAvLyBGSVhNRSgx
ODI3NjcpCisgICAgaWYgKCFtX2F1dGhlbnRpY2F0b3IpCisgICAgICAgIHJlcXVlc3RSZXBseSh7
IH0sIHsgV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0
b3JzLiJfcyB9KTsKKyAgICAvLyBGSVhNRSgxODM1MzQpOiBXZWFrIHBvaW50ZXJzIGRvZXNuJ3Qg
d29yayBpbiBhbm90aGVyIHRocmVhZCBiZWNhdXNlIG9mIHJhY2UgY29uZGl0aW9uLgorICAgIGF1
dG8gY2FsbGJhY2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChWYXJpYW50PFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYm
IHJlc3VsdCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGlj
S2V5Q3JlZGVudGlhbERhdGEmIGRhdGEpIHsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5yZXF1ZXN0
UmVwbHkoZGF0YSwgeyB9KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5yZXF1ZXN0UmVwbHko
eyB9LCBleGNlcHRpb24pOworICAgICAgICB9KTsKKyAgICB9OworICAgIG1fYXV0aGVudGljYXRv
ci0+Z2V0QXNzZXJ0aW9uKGhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwor
dm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNVc2VyVmVyaWZ5aW5nUGxh
dGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKHVpbnQ2NF90IG1lc3NhZ2VJZCkKK3sKKyAgICBp
ZiAoIW1fYXV0aGVudGljYXRvcikgeworICAgICAgICBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseShtZXNzYWdlSWQsIGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFp
bGFibGVSZXBseShtZXNzYWdlSWQsIG1fYXV0aGVudGljYXRvci0+aXNBdmFpbGFibGUoKSk7Cit9
CisKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnJlcXVlc3RSZXBseShj
b25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKQoreworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQo
TWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6UmVxdWVzdFJlcGx5KGRhdGEs
IGV4Y2VwdGlvbikpOworfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50
NjRfdCBtZXNzYWdlSWQsIGJvb2wgcmVzdWx0KQoreworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQo
TWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6SXNVc2VyVmVyaWZ5aW5nUGxh
dGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2FnZUlkLCByZXN1bHQpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDE3NWFhY2UwMzA2YjZiZDViY2QxMjM4M2VmYjJhYTA5NDVmNWQ5NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgTG9jYWxBdXRoZW50aWNhdG9yOworCitzdHJ1Y3QgRXhjZXB0aW9u
RGF0YTsKK3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOworc3RydWN0
IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhOworc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKKworY2xhc3MgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgOiBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eSk7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CisgICAgfldlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5KCk7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKKworICAgIC8vIFJlY2VpdmVycy4KKyAgICB2b2lkIG1h
a2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYpOworICAgIHZvaWQgZ2V0QXNzZXJ0
aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJik7CisgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0
Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUodWludDY0X3QgbWVzc2FnZUlkKTsKKworICAgIC8v
IFNlbmRlcnMuCisgICAgdm9pZCByZXF1ZXN0UmVwbHkoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5
Q3JlZGVudGlhbERhdGEmLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik7CisgICAgdm9p
ZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50
NjRfdCBtZXNzYWdlSWQsIGJvb2wpOworCisgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQcm94
eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yPiBtX2F1
dGhlbnRpY2F0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3YzY2Nzc2ZTYx
YTA1YjFiYWQ1MjkyZGQxMTUyMTNhYWZhM2FiZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM0IEBACisjIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorIy8KKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKK21lc3Nh
Z2VzIC0+IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IHsKKworICAgIE1ha2VDcmVk
ZW50aWFsKFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zKTsKKyAgICBHZXRBc3NlcnRpb24oVmVjdG9y
PHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMgb3B0aW9ucyk7CisgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNh
dG9yQXZhaWxhYmxlKHVpbnQ2NF90IG1lc3NhZ2VJZCk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTI4MzEwYmE2MGE5MjgzMzdhMDhm
NzY5M2Q4ZWRjOTE1NmViYTQzNi4uMDFiMWJiYmJlZWRmN2U0MzVhOWU3ODU4MWJmMDQzNjdjOWNh
OGFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMTEs
NyArMjExLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSNpbmNsdWRlICJX
ZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkuaCIKICNlbmRpZgogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFH
RV9QQVJUSVRJT05JTkcpCkBAIC00NjEsNyArNDYxLDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1
aW4KICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBtX2NyZWRlbnRpYWxzTWVz
c2VuZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5Pigq
dGhpcyk7CisgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAgICAgbV9w
cm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwpAQCAtNzc5LDcgKzc3OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIEFQSTo6TmF2CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0g
ICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ3JlZGVudGlh
bHNNZXNzZW5nZXJQcm94eT4oKnRoaXMpOworICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PigqdGhpcyk7
CiAjZW5kaWYKIAogICAgIGluaXRpYWxpemVXZWJQYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGE5OGZkNzJlZWU0YmY3YTA1MDg2YjU4NWFiYmU3M2ExZDY2
MzU1ZWIuLjQxOTMzYTE0OWNjZDVjOWQzZmViN2U1ODMxYmEyNDA4MzgxYjliYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMzYsNyArMjM2LDcgQEAgY2xhc3Mg
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTsKIGNsYXNzIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTsKIGNsYXNzIFdlYk5hdmlnYXRpb25TdGF0ZTsKIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTsKLWNsYXNzIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk7CitjbGFzcyBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7
CiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOwogY2xhc3MgV2ViTW91c2VFdmVudDsKQEAgLTE5
MTcsNyArMTkxNyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4p
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk+IG1fY3Jl
ZGVudGlhbHNNZXNzZW5nZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5PiBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyOwogI2VuZGlmCiAKICAgICBD
YWxsYmFja01hcCBtX2NhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdiZGFjNjBmYzMyYjYwNzM3ZTZlZDExZjYxNzc5NDEw
NTBmNzU3MGEuLjNmOWRhNjhlZTY2NTk2MmIwYTY4ZTIzMGY1ODllOTM5Nzk5OTJiMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAy
OCwxMSArMTAyOCwxMSBAQAogCQk1M0JBNDdEMTFEQzJFRjVFMDA0REY0QUQgLyogTmV0d29ya0Rh
dGFUYXNrQmxvYi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM5RUI1NDcxREMyRUU0MDAwOUQ0OENGIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuaCAqLzsg
fTsKIAkJNTNERUEzNjYxRERFNDIzMTAwRTgyNjQ4IC8qIGpzb24uaHBwIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNERUEzNjUxRERFNDIyRTAwRTgyNjQ4
IC8qIGpzb24uaHBwICovOyB9OwogCQk1NzBBQjhGMzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5
UHJveHlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTcwQUI4RjIyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCAqLzsgfTsK
LQkJNTc2MDgyOUMyMDJEMkMzQzAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3NjA4MjkwMjAyOThGQkQwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07Ci0JCTU3NjA4MjlEMjAyRDJDNDAwMDExNjY3OCAv
KiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI4RjIwMjk4RkJEMDAxMTY2NzggLyogV2Vi
Q3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlcy5oICovOyB9OwotCQk1NzYwODI5RTIwMkQyQzQz
MDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI5
QTIwMkJFRTVBMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07Ci0JCTU3NjA4MjlGMjAyRDJDNDYwMDExNjY3OCAvKiBXZWJDcmVk
ZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4MjlCMjAyQkVFNUEwMDExNjY3OCAvKiBXZWJDcmVk
ZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJNTdCNEI0NjAyMEI1MDRB
QzAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjRCNDVF
MjBCNTA0QUIwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29u
c3RhbnRzLmggKi87IH07CisJCTU3RENFRDZFMjE0MkVFNUUwMDE2Qjg0NyAvKiBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VENkIyMTQyRUFFMjAwMTZCODQ3IC8qIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTU3
RENFRDZGMjE0MkVFNjMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdE
Q0VENkEyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3Nh
Z2VzLmggKi87IH07CisJCTU3RENFRDcwMjE0MkVFNjgwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2QzIxNDJFQUY5MDAxNkI4NDcgLyog
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OworCQk1N0RDRUQ3MTIxNDJFRTZDMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTdEQ0VENkQyMTQyRUFGQTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJNUMwQjE3NzgxRTdDODgwRTAwRTkxMjND
IC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwQjE3NzQxRTdDODc5QzAwRTkxMjND
IC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1QzBC
MTc3OTFFN0M4ODIxMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc2
MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwogCQk1QzE0MjZFRDFDMjNGODA5MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDMTQyNkUzMUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oICovOyB9OwpAQCAtMzM2OCwxOCArMzM2OCwxOCBAQAogCQk1NzBBQjkwMzIwQjI1
NDFDMDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFNlY0tleVByb3h5U3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3NTA3NUE3MjBBQjc2MzYwMDY5M0VBOSAvKiBXZWJDcmVkZW50aWFsTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ3JlZGVudGlhbE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0
aGVudGljYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBMb2NhbEF1dGhlbnRpY2F0
aW9uLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvTG9jYWxBdXRo
ZW50aWNhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwotCQk1NzYwODI4
QjIwMjk4NTQyMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTc2MDgyOEMyMDI5ODU0MjAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOEQyMDI5ODdFNjAwMTE2Njc4IC8qIFdl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxzTWVz
c2VuZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI4
RjIwMjk4RkJEMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjkwMjAyOThGQkQwMDExNjY3OCAvKiBXZWJDcmVk
ZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTU3NjA4Mjk1MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFs
c01lc3NlbmdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOTYyMDJCRDhCQTAw
MTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTU3NjA4Mjk5MjAyQkRBRTIwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01l
c3NlbmdlclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJv
eHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjlBMjAy
QkVFNUEwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI5
QjIwMkJFRTVBMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzYwODI4QjIwMjk4NTQyMDAxMTY2Nzgg
LyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzYw
ODI4QzIwMjk4NTQyMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NjA4MjhEMjAyOTg3RTYwMDExNjY3OCAvKiBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzYwODI5NTIwMkJEOEJBMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyOTYyMDJCRDhCQTAwMTE2Njc4IC8q
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc2MDgyOTkyMDJCREFFMjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I0
QjQ1RDIwQjUwNEFCMDBENEFENzkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBdXRoZW50aWNhdGlvbk1hbmFn
ZXJDb2NvYS5tbTsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFu
YWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I0QjQ1RTIwQjUw
NEFCMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDbGllbnRDZXJ0aWZpY2F0ZUF1
dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbi9jb2NvYS9D
bGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1N0RDRUQ2QjIxNDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RENFRDZDMjE0MkVBRjkwMDE2
Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU3RENFRDZEMjE0MkVBRkEwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2Nr
ZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEIxNzc1MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3Jr
U29ja2V0U3RyZWFtTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0
U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTY3MjEsMjQgKzY3MjEsMjQgQEAKIAkJCW5hbWUgPSBGcmFtZXdvcmtzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNTc2MDgyOEEyMDI5ODRDOTAwMTE2Njc4IC8qIENyZWRl
bnRpYWxNYW5hZ2VtZW50ICovID0geworCQk1NzYwODI4QTIwMjk4NEM5MDAxMTY2NzggLyogV2Vi
QXV0aGVudGljYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCTU3NjA4MjhDMjAyOTg1NDIwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdl
ci5jcHAgKi8sCi0JCQkJNTc2MDgyOEIyMDI5ODU0MjAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyLmggKi8sCi0JCQkJNTc2MDgyOEQyMDI5ODdFNjAwMTE2Njc4IC8qIFdlYkNyZWRl
bnRpYWxzTWVzc2VuZ2VyLm1lc3NhZ2VzLmluICovLAorCQkJCTU3NjA4MjhDMjAyOTg1NDIwMDEx
NjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwICovLAorCQkJCTU3NjA4MjhC
MjAyOTg1NDIwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLywKKwkJ
CQk1NzYwODI4RDIwMjk4N0U2MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Lm1lc3NhZ2VzLmluICovLAogCQkJKTsKLQkJCXBhdGggPSBDcmVkZW50aWFsTWFuYWdlbWVudDsK
KwkJCXBhdGggPSBXZWJBdXRoZW50aWNhdGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07Ci0JCTU3NjA4Mjk0MjAyQkQ4NDkwMDExNjY3OCAvKiBDcmVkZW50aWFsTWFuYWdlbWVu
dCAqLyA9IHsKKwkJNTc2MDgyOTQyMDJCRDg0OTAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0aW9u
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1NzYwODI5
NjIwMkJEOEJBMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHAgKi8s
Ci0JCQkJNTc2MDgyOTUyMDJCRDhCQTAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
UHJveHkuaCAqLywKLQkJCQk1NzYwODI5OTIwMkJEQUUyMDAxMTY2NzggLyogV2ViQ3JlZGVudGlh
bHNNZXNzZW5nZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk1NzYwODI5NjIwMkJEOEJBMDAx
MTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwICovLAorCQkJCTU3
NjA4Mjk1MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5oICovLAorCQkJCTU3NjA4Mjk5MjAyQkRBRTIwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCSk7Ci0JCQlwYXRoID0gQ3JlZGVu
dGlhbE1hbmFnZW1lbnQ7CisJCQlwYXRoID0gV2ViQXV0aGVudGljYXRpb247CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OwogCQk1N0I0QjQ1QzIwQjUwNDhCMDBENEFENzkgLyogY29j
b2EgKi8gPSB7CkBAIC03MDMzLDcgKzcwMzMsNiBAQAogCQkJCTFDMEExOTQzMUM4RkYxQTgwMEZF
MEVCQiAvKiBBdXRvbWF0aW9uICovLAogCQkJCTQxRDEyOUQ4MUYzRDEwMTQwMEQxNUU0NyAvKiBD
YWNoZSAqLywKIAkJCQk3QzZFNzBGODE4QjJENDdFMDBGMjRFMkUgLyogY29jb2EgKi8sCi0JCQkJ
NTc2MDgyOEEyMDI5ODRDOTAwMTE2Njc4IC8qIENyZWRlbnRpYWxNYW5hZ2VtZW50ICovLAogCQkJ
CTUxMkE5NzU0MTgwREY5MjcwMDM5QTE0OSAvKiBEYXRhYmFzZXMgKi8sCiAJCQkJQkNBQ0M0M0Ix
NkIyNEM1RDAwQjZFMDkyIC8qIEVudHJ5UG9pbnQgKi8sCiAJCQkJRTE3MDg3NkQxNkQ2Q0E3MjAw
Rjk5MjI2IC8qIEZpbGVBUEkgKi8sCkBAIC03MDQ4LDYgKzcwNDcsNyBAQAogCQkJCTFBNkZCN0FB
MTFFNjRCNDkwMERCMTM3MSAvKiBQbHVnaW5zICovLAogCQkJCTUxMThFOTk4MUYyOTUyNTkwMDNF
RjlGNSAvKiBTdG9yYWdlICovLAogCQkJCTFBQUYwOEFBMTkyNjkzMEIwMEI2MzkwQyAvKiBVc2Vy
Q29udGVudCAqLywKKwkJCQk1NzYwODI4QTIwMjk4NEM5MDAxMTY2NzggLyogV2ViQXV0aGVudGlj
YXRpb24gKi8sCiAJCQkJQkMwMzJENUQxMEY0MzcyMjAwNThDMTVBIC8qIFdlYkNvcmVTdXBwb3J0
ICovLAogCQkJCUJDMDMyRDVFMTBGNDM3MkIwMDU4QzE1QSAvKiBXZWJQYWdlICovLAogCQkJCTFB
QUM0RERFMTZCMUNCRjYwMDk0MjVFMyAvKiBXZWJTdG9yYWdlICovLApAQCAtNzE5Myw3ICs3MTkz
LDYgQEAKIAkJCQk1MTJGNTg4RDEyQTg4MzZGMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb24gKi8s
CiAJCQkJOTk1NUE2RTgxQzc5ODA5MDAwRUI2QTkzIC8qIEF1dG9tYXRpb24gKi8sCiAJCQkJMUFC
QzNERjIxODk5RTQxNTAwNEYwNjI2IC8qIENvY29hICovLAotCQkJCTU3NjA4Mjk0MjAyQkQ4NDkw
MDExNjY3OCAvKiBDcmVkZW50aWFsTWFuYWdlbWVudCAqLywKIAkJCQkxQUI3RDRDNzEyODhBQTlB
MDBDRkQwOEMgLyogRG93bmxvYWRzICovLAogCQkJCTUxNUJFMTdCMUQ1NEVGNUEwMEREN0M2OCAv
KiBHYW1lcGFkICovLAogCQkJCTJEQTk0NEE4MTg4NEU5QUIwMEVEODZEQiAvKiBpb3MgKi8sCkBA
IC03MjA1LDYgKzcyMDQsNyBAQAogCQkJCTJEMTU1MUE5MUY1QTlCNDIwMDA2RTNGRSAvKiBSZW1v
dGVMYXllclRyZWUgKi8sCiAJCQkJNTE3REQ1QkIxODBEQTdDNDAwODE2NjBCIC8qIFN0b3JhZ2Ug
Ki8sCiAJCQkJMUFBRjA4OUUxOTI2ODFBQzAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovLAorCQkJ
CTU3NjA4Mjk0MjAyQkQ4NDkwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdGlvbiAqLywKIAkJCQkx
QTUzQzJBMzFBMzI1NjkxMDA0RThDNzAgLyogV2Vic2l0ZURhdGEgKi8sCiAJCQkJMUE0NEI5NTgx
NkI3M0Y4QzAwQjdCQkQ4IC8qIFdlYlN0b3JhZ2UgKi8sCiAJCQkJN0NEMTAyRDkxODY2NzcwNjAw
RUQ0MjlEIC8qIEF1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaCAqLywKQEAgLTgzNDQsNiArODM0NCwx
MCBAQAogCQkJCTFBNjAyMjRCMThDMTZCOUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVz
c2FnZXMuaCAqLywKIAkJCQkxQThFN0QzQTE4QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtU
YWJsZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBOEU3RDNCMThDMTUx
NDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCisJ
CQkJNTdEQ0VENkIyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJNTdEQ0VENkEyMTQyRUFFMjAwMTZCODQ3IC8q
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmggKi8sCisJCQkJNTdEQ0VENkMy
MTQyRUFGOTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk1N0RDRUQ2RDIxNDJFQUZBMDAxNkI4NDcgLyogV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTFDMEExOTU1MUM5
MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCiAJCQkJMUMwQTE5NTYxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
TWVzc2FnZXMuaCAqLywKIAkJCQkxQzBBMTk1MTFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC04MzU2LDEwICs4MzYw
LDYgQEAKIAkJCQkzMzA5MzQ0NDEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1l
c3NhZ2VzLmggKi8sCiAJCQkJMzMwOTM0NDUxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMzMwOTM0NDYxMzE1QjkyMjAw
OTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8sCi0JCQkJNTc2MDgy
OTAyMDI5OEZCRDAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKLQkJCQk1NzYwODI4RjIwMjk4RkJEMDAxMTY2NzggLyogV2ViQ3JlZGVudGlh
bHNNZXNzZW5nZXJNZXNzYWdlcy5oICovLAotCQkJCTU3NjA4MjlBMjAyQkVFNUEwMDExNjY3OCAv
KiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJ
CQk1NzYwODI5QjIwMkJFRTVBMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94
eU1lc3NhZ2VzLmggKi8sCiAJCQkJQ0Q3M0JBNDgxMzFBQ0Q4RTAwRUVERUQyIC8qIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlDRDczQkE0OTEzMUFDRDhF
MDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCUNENzNC
QTQ1MTMxQUNDODgwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKQEAgLTkyMjMsNiArOTIyMyw4IEBACiAJCQkJMUFGNENFRjAxOEJDNDgx
ODAwQkMyRDM0IC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQThFN0QzRDE4QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xs
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRTMxNTJDRDFCMzAwRDlFMDhE
IC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdEQ0VE
NkYyMTQyRUU2MzAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0RDRUQ3MTIxNDJFRTZDMDAxNkI4NDcgLyogV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTk1NUE2RUMxQzc5ODBDMjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OUMzQUUyRDFEQURBNkFEMDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNl
c3Npb25NYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMEExOTU4MUM5MDA2OEYwMEZFMEVC
QiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTky
NjMsOCArOTI2NSw2IEBACiAJCQkJMzMwOTM0NEExMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFERDdCMjExNERD
Mzk2MDA1QURBRjMgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTJGNTg5QjEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNTc2MDgyOUQyMDJEMkM0MDAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2Vu
Z2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3NjA4MjlGMjAyRDJDNDYwMDExNjY3
OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQTgzRjZEMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNTJDRjU1MjIwQTM1QzNBMDBEQURBMjcgLyogV2ViRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTY4QjkxRjIwQTNBQjJG
MDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwOTAwLDYgKzEwOTAwLDggQEAKIAkJCQkyNjg0MDU1MjE4Qjg2RUQ2MDAyMkMzOEIg
LyogVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE2MDIyNEMxOEMxNkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmVNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RTdEM0MxOEMxNTE0OTAwNUE3MDJB
IC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTU3RENFRDZFMjE0MkVFNUUwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTdEQ0VE
NzAyMTQyRUU2ODAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMEExOTU3MUM5MDA2OEYwMEZF
MEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQzBBMTk1MzFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2
M0E0ODZDMDBDMjk1MEQgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwOTA3LDggKzEwOTA5LDYgQEAKIAkJCQkzMzA5MzQ0
NzEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMzA5MzQ0OTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2ll
TWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJB
Nzg4MjEyQjZBQjEwMEY0OTNGRCAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTc2MDgyOUMyMDJEMkMzQzAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVz
c2VuZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU3NjA4MjlFMjAy
RDJDNDMwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg5MjEyQjZBQjEwMEY0OTNGRCAvKiBX
ZWJFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDczQkE0RTEzMUFDREI3MDBFRURFRDIg
LyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0Q3M0JBNDcxMzFBQ0M5QTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNz
ZW5nZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50
L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjI3OWQ3ZWZlMWViYTMxNjBkYmZjOGQwMWRlMzIwZWU0ZDFlMWE0YS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXZWJDcmVkZW50aWFsc01lc3Nlbmdlci5oIgotCi0jaWYgRU5BQkxFKFdF
Ql9BVVRITikKLQotI2luY2x1ZGUgIldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyTWVzc2FnZXMuaCIK
LSNpbmNsdWRlICJXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNs
dWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1XZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIo
V2ViUGFnZSYgd2ViUGFnZSkKLSAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQotewotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQ3JlZGVu
dGlhbHNNZXNzZW5nZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlLnBhZ2VJRCgp
LCAqdGhpcyk7Ci19Ci0KLVdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjp+V2ViQ3JlZGVudGlhbHNN
ZXNzZW5nZXIoKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcigqdGhpcyk7Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6Om1ha2VD
cmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywgV2ViQ29yZTo6Q3JlYXRp
b25Db21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgYXV0byBtZXNzYWdlSWQgPSBh
ZGRDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpOwotICAgIG1fd2Vi
UGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5OjpNYWtlQ3Jl
ZGVudGlhbChtZXNzYWdlSWQsIGhhc2gsIG9wdGlvbnMpKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50
aWFsc01lc3Nlbmdlcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwg
Y29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25z
LCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQotewotICAgIGF1
dG8gbWVzc2FnZUlkID0gYWRkUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxl
cikpOwotICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJDcmVkZW50aWFsc01lc3Nlbmdl
clByb3h5OjpHZXRBc3NlcnRpb24obWVzc2FnZUlkLCBoYXNoLCBvcHRpb25zKSk7Ci19Ci0KLXZv
aWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVu
dGljYXRvckF2YWlsYWJsZShXZWJDb3JlOjpRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxl
cikKLXsKLSAgICBhdXRvIG1lc3NhZ2VJZCA9IGFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShoYW5kbGVyKSk7Ci0gICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYkNyZWRlbnRp
YWxzTWVzc2VuZ2VyUHJveHk6OklzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2
YWlsYWJsZShtZXNzYWdlSWQpKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6
bWFrZUNyZWRlbnRpYWxSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2Jq
ZWN0KQotewotICAgIGF1dG8gaGFuZGxlciA9IHRha2VDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVy
KG1lc3NhZ2VJZCk7Ci0gICAgaGFuZGxlcihXZWJDb3JlOjpDcmVhdGlvblJldHVybkJ1bmRsZShB
cnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXpl
KCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0
YXRpb25PYmplY3Quc2l6ZSgpKSkpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
OjpnZXRBc3NlcnRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JE
YXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiB1c2VySGFuZGxlKQotewotICAgIGF1dG8gaGFuZGxlciA9IHRha2VSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXIobWVzc2FnZUlkKTsKLSAgICBoYW5kbGVyKFdlYkNvcmU6OkFzc2VydGlvblJl
dHVybkJ1bmRsZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRl
bnRpYWxJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRhLmRh
dGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWdu
YXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZSh1c2Vy
SGFuZGxlLmRhdGEoKSwgdXNlckhhbmRsZS5zaXplKCkpKSk7Ci19Ci0KLXZvaWQgV2ViQ3JlZGVu
dGlhbHNNZXNzZW5nZXI6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWls
YWJsZVJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCByZXN1bHQpCi17Ci0gICAgYXV0byBo
YW5kbGVyID0gdGFrZVF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIobWVzc2FnZUlkKTsKLSAgICBoYW5k
bGVyKHJlc3VsdCk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Ny
ZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBjYTdlNTJlNTQxNWMzZTNjYmY1
ZjNmNGQ1ODRiNDkxYzgyYzJmZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQv
V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWxz
TWVzc2VuZ2VyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQYWdlOwotCi1j
bGFzcyBXZWJDcmVkZW50aWFsc01lc3NlbmdlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDcmVk
ZW50aWFsc01lc3NlbmdlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6
Ci0gICAgZXhwbGljaXQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIoV2ViUGFnZSYpOwotICAgIH5X
ZWJDcmVkZW50aWFsc01lc3NlbmdlcigpOwotCi1wcml2YXRlOgotICAgIC8vIFdlYkNvcmU6OkNy
ZWRlbnRpYWxzTWVzc2VuZ2VyCi0gICAgLy8gU2VuZGVycy4KLSAgICB2b2lkIG1ha2VDcmVkZW50
aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBXZWJDb3JlOjpDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwg
V2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgaXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFdlYkNvcmU6OlF1ZXJ5
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0KLSAgICAvLyBSZWNlaXZlcnMuCi0gICAgdm9p
ZCBtYWtlQ3JlZGVudGlhbFJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25P
YmplY3QpIGZpbmFsOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uUmVwbHkodWludDY0X3QgbWVzc2Fn
ZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1
cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRsZSkgZmluYWw7Ci0gICAgdm9pZCBp
c1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRf
dCBtZXNzYWdlSWQsIGJvb2wpIGZpbmFsOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIu
Ci0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBvdmVycmlkZTsKLQotICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50
aWFsc01lc3Nlbmdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVk
ZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5tZXNzYWdlcy5pbgpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjOGVlY2E3YzQ3MzQ0MDE4NGZmMTk5MTkwOWYz
MjViYzZlN2QxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVu
dGlhbHNNZXNzZW5nZXIubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0jIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0jIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0jIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0jIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIy8KLQotI2lmIEVOQUJMRShX
RUJfQVVUSE4pCi0KLW1lc3NhZ2VzIC0+IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyIHsKLQotICAg
IEV4Y2VwdGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgc3RydWN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEgZXhjZXB0aW9uKTsKLSAgICBNYWtlQ3JlZGVudGlhbFJlcGx5KHVpbnQ2NF90IG1l
c3NhZ2VJZCwgVmVjdG9yPHVpbnQ4X3Q+IGNyZWRlbnRpYWxJZCwgVmVjdG9yPHVpbnQ4X3Q+IGF0
dGVzdGF0aW9uT2JqZWN0KTsKLSAgICBHZXRBc3NlcnRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdl
SWQsIFZlY3Rvcjx1aW50OF90PiBjcmVkZW50aWFsSWQsIFZlY3Rvcjx1aW50OF90PiBhdXRoZW50
aWNhdG9yRGF0YSwgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+IHVz
ZXJIYW5kbGUpOwotICAgIElzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWls
YWJsZVJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCByZXN1bHQpOwotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTBiYTRjNTdjNjQxNGE4NzhhZjI3YmRiNTgzYTA3ZTVhNDI0YThmMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoV2ViUGFnZSYgd2ViUGFnZSkK
KyAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5wYWdlSUQoKSwgKnRoaXMpOworfQor
CitXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6On5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cigqdGhpcyk7Cit9CisKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjptYWtlQ3Jl
ZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFdlYkNvcmU6OlJlcXVlc3RD
b21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit7CisgICAgaWYgKCFzZXRSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
d2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
TWFrZUNyZWRlbnRpYWwoaGFzaCwgb3B0aW9ucykpOworfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwg
Y29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25z
LCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQoreworICAgIGlm
ICghc2V0UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6OkdldEFzc2VydGlvbihoYXNoLCBvcHRpb25zKSk7Cit9CisKK3Zv
aWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCit7CisgICAgYXV0byBtZXNzYWdlSWQgPSBhZGRRdWVyeUNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoaGFuZGxlcikpOworICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6SXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50
aWNhdG9yQXZhaWxhYmxlKG1lc3NhZ2VJZCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJiYzZiNjZhYzU3ODQ2OWNlMzg1YTk5
N2JhNzY1MDU0MjM3N2Y0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
X0FVVEhOKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcihXZWJQYWdlJik7CisgICAgfldlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvcigpOworCitwcml2YXRlOgorICAgIC8vIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudAorICAgIC8vIFNlbmRlcnMuCisgICAgdm9pZCBtYWtlQ3JlZGVudGlh
bChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFz
aCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgV2Vi
Q29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgaXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFdlYkNvcmU6OlF1ZXJ5Q29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4K
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOworCisgICAgV2ViUGFnZSYgbV93ZWJQYWdlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTNlYzE5MzUxOTlmZmJkOTNlNmM1YjlmMzk2NjI1MjI3NWZhZmVlMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMyBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMvCisKKyNpZiBFTkFCTEUoV0VC
X0FVVEhOKQorCittZXNzYWdlcyAtPiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgeworCisg
ICAgUmVxdWVzdFJlcGx5KHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSBk
YXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pOworICAgIElzVXNl
clZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1l
c3NhZ2VJZCwgYm9vbCByZXN1bHQpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNDRkZWZmMTM0MGY1OWFkOTcwMWU5M2Iz
MmE5NGQ0ZjZkNzYxYTY0MC4uZWI5NjU4OGVjMGNmMGQzNTA3NGZkNWFmM2ZlMWQyYTIzN2I5NDBl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTI3OCw4ICsyNzgsOCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotI2luY2x1
ZGUgIldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50
aWNhdG9yTWFuYWdlci5oPgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmg+CiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOTIsOSArMzkyLDYgQEAgV2ViUGFnZTo6V2ViUGFn
ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgICwgbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHBhcmFtZXRlcnMudXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbikKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQ
b2xpY3kgeyBwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5IH0KICAgICAs
IG1fY3B1TGltaXQocGFyYW1ldGVycy5jcHVMaW1pdCkKLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQot
ICAgICwgbV9jcmVkZW50aWFsc01lc3NlbmdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkNyZWRlbnRp
YWxzTWVzc2VuZ2VyPigqdGhpcykpCi0jZW5kaWYKIHsKICAgICBBU1NFUlQobV9wYWdlSUQpOwog
CkBAIC00NDgsNiArNDQ1LDEwIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGllbnQgPSBuZXcgV2ViUGF5bWVudENvb3JkaW5hdG9y
KCp0aGlzKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oKnRoaXMpOworI2VuZGlmCisKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRp
b25NYW5pZmVzdCA9IHBhcmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRpZgpAQCAt
NjA1LDEwICs2MDYsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjZW5kaWYKICNlbmRpZgogCi0jaWYg
RU5BQkxFKFdFQl9BVVRITikKLSAgICBXZWJDb3JlOjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2lu
Z2xldG9uKCkuc2V0TWVzc2VuZ2VyKCptX2NyZWRlbnRpYWxzTWVzc2VuZ2VyKTsKLSNlbmRpZgot
CiAgICAgZm9yIChhdXRvIGl0ZXJhdG9yIDogcGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycykK
ICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGl0ZXJhdG9yLnZhbHVlLCBpdGVyYXRv
ci5rZXkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggMTQ0OTk0ODAyOTNjNWU0MmVhZWU4N2I3NWE0MzVlZThkMWZlNTA4ZS4uMWViYjZkOWUyNDYy
NDAzYzA3N2M1OWI4MjkxNDU3YWZlMmNlMzAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjI2LDcgKzIyNiw2IEBAIGNsYXNzIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjsKIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiBjbGFzcyBXZWJX
aGVlbEV2ZW50OwogY2xhc3MgV2ViVG91Y2hFdmVudDsKLWNsYXNzIFdlYkNyZWRlbnRpYWxzTWVz
c2VuZ2VyOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiAKIGVudW0gY2xhc3Mg
RGV2aWNlQWNjZXNzU3RhdGU7CkBAIC0xNzM1LDEwICsxNzM0LDYgQEAgcHJpdmF0ZToKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCB1aW50NjRfdD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0Y2hDYWxs
YmFja01hcDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI+IG1fY3JlZGVudGlhbHNNZXNzZW5nZXI7Ci0j
ZW5kaWYKLQogICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmRlYmMyOTc5YzY2
MzRiNzY2MWE0ODU4YzE1YTJiNjQ3NTNkYTdmOC4uZTgwOTRjMzNjYTYwNzJjZDI4MjViZmM2NDJi
MmUyMmEwMmJlODhkZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA5LTA4ICBKaWV3ZW4gVGFuICA8amlld2Vu
X3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBQb2xpc2ggQXV0aGVudGljYXRv
ck1hbmFnZXIgYW5kIHJlbmFtZSBpdCB0byBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTI3NworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDQxMTU5MzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RHVtZXouCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9Mb2NhbEF1dGhlbnRp
Y2F0b3IubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0wOS0wMiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBUdXJuIG9u
IEFSQyBmb3IgV2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvTG9jYWxBdXRoZW50aWNhdG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDg1NWIxNGZjY2RjNzRlMzk1OWY1
ZDEyZDE0NDIxNDllMzMxM2YyZDcuLmNkNjNkNzM5ZjY0ZTQyYzZkYTE2YmU3ZTdhMTY4ZTY4OTJi
ZDdkM2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0xvY2FsQXV0
aGVudGljYXRvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9Mb2NhbEF1
dGhlbnRpY2F0b3IubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0
aW9uRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEF1dGhlbnRpY2F0b3IuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC0yNjYsMTYgKzI2NywxNyBAQCBU
RVNUKExvY2FsQXV0aGVudGljYXRvciwgTWFrZUNyZWRlbnRpYWxOb3RTdXBwb3J0ZWRQdWJLZXlD
cmVkUGFyYW1zKQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0g
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpIHsKLSAgICAg
ICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAg
IGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6
Tm90U3VwcG9ydGVkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKLSAgICAgICAgRVhQRUNUX1NUUkVR
KCJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55
IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiIsIGV4Y2VwdGlvbi5tZXNz
YWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBjYWxs
YmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEs
IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dpdGNo
T24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7
CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRp
b24pIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RTdXBwb3J0ZWRFcnJvciwg
ZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJUaGUgcGxhdGZvcm0g
YXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55IHByb3ZpZGVkIFB1Ymxp
Y0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKICAgICB9OwotICAg
IGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOworICAgIGF1dGhlbnRp
Y2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpAQCAtMjk0
LDE4ICsyOTYsMTkgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFsRXhj
bHVkZUNyZWRlbnRpYWxzTWF0Y2gpCiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAgICBhdXRvIGNhbGxiYWNr
ID0gWyZkb25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JikgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGNsZWFuVXBLZXljaGFp
bigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24p
IG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBl
eGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiQXQgbGVhc3Qgb25lIGNyZWRl
bnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4g
dGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2Uu
YXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKLSAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0
KSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7
CisgICAgICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVl
OworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlv
bikgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhj
ZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJBdCBsZWFzdCBvbmUgY3Jl
ZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBp
biB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iLCBleGNlcHRpb24ubWVzc2Fn
ZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKKyAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKICAgICB9OwotICAgIGF1dGhlbnRpY2F0
b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOworICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VD
cmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpAQCAtMzE5LDE2ICszMjIsMTcg
QEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFsQmlvbWV0cmljc05vdEVu
cm9sbGVkKQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRl
c3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRl
c3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpIHsKLSAgICAgICAg
RVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1
dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90
QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiTm8g
YXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0
YSgpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0g
KFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0o
Y29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgICAgICBF
WFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwg
WyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsK
KyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiIs
IGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRvbmUgPSB0
cnVlOworICAgICAgICB9KTsKICAgICB9OwotICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50
aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjaykpOworICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwg
Y3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOwogfQpAQCAtMzQzLDE2ICszNDcsMTcgQEAgVEVTVChMb2NhbEF1
dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFsQmlvbWV0cmljc05vdEF1dGhlbnRpY2F0ZWQpCiAK
ICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0
aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0
aGVudGljYXRvcj4oKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBFWFBFQ1RfRkFM
U0UodHJ1ZSk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRp
b25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2Vw
dGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJy
b3IsIGV4Y2VwdGlvbi5jb2RlKTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJDb3VsZG4ndCBnZXQg
dXNlciBjb25zZW50LiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYg
cmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
dHJ1ZSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVYUEVDVF9F
UShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAgICAgICAg
IEVYUEVDVF9TVFJFUSgiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2VudC4iLCBleGNlcHRpb24ubWVz
c2FnZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAg
fSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbCh7IH0sIGNyZWF0
aW9uT3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
KTsKKyAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbCh7IH0sIGNyZWF0aW9uT3B0aW9u
cywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKIH0KQEAgLTM2OCwxNiArMzczLDE3IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9yLCBN
YWtlQ3JlZGVudGlhbE5vdEF0dGVzdGF0ZWQpCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7CiAgICAgYXV0aGVudGlj
YXRvci0+c2V0RmFpbHVyZUZsYWcoKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBF
WFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0
byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpVbmtu
b3duRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJVbmtub3du
IGludGVybmFsIGVycm9yLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8
V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+
JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFM
U0UodHJ1ZSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0
ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShXZWJDb3JlOjpVbmtub3duRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAgICAgICAg
IEVYUEVDVF9TVFJFUSgiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iLCBleGNlcHRpb24ubWVzc2Fn
ZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7
CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbCh7IH0sIGNyZWF0aW9u
T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsK
KyAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbCh7IH0sIGNyZWF0aW9uT3B0aW9ucywg
V1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKIH0KQEAgLTM5OSwyMiArNDA1LDIzIEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9yLCBNYWtl
Q3JlZGVudGlhbERlbGV0ZU9sZGVyQ3JlZGVuaXRhbCkKICAgICBib29sIGRvbmUgPSBmYWxzZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKICAgICBhdXRo
ZW50aWNhdG9yLT5zZXRGYWlsdXJlRmxhZygpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVd
IChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAg
ICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSYpIG11dGFibGUgewotICAgICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKLSAg
ICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCi0gICAgICAgICAgICAo
aWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAotICAgICAg
ICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHRlc3RScElkLAotICAgICAgICAgICAgKGlkKWtTZWNB
dHRyQXBwbGljYXRpb25UYWc6IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp0ZXN0VXNlcmhhbmRsZSBs
ZW5ndGg6c2l6ZW9mKHRlc3RVc2VyaGFuZGxlKV0sCi0gICAgICAgIH07Ci0gICAgICAgIE9TU3Rh
dHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJl
ZilxdWVyeSwgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9FUShlcnJTZWNJdGVtTm90Rm91bmQsIHN0
YXR1cyk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOworICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVd
IChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYmIHJlc3VsdCkgeworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZd
KGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJikgeworICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKHRydWUpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0s
IFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKKyAgICAgICAgICAgICAgICAoaWQpa1NlY0Ns
YXNzOiAoaWQpa1NlY0NsYXNzS2V5LAorICAgICAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNs
YXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCisgICAgICAgICAgICAgICAgKGlkKWtT
ZWNBdHRyTGFiZWw6IHRlc3RScElkLAorICAgICAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxp
Y2F0aW9uVGFnOiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6dGVzdFVzZXJoYW5kbGUgbGVuZ3RoOnNp
emVvZih0ZXN0VXNlcmhhbmRsZSldLAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIE9TU3Rh
dHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJl
ZilxdWVyeSwgTlVMTCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyU2VjSXRlbU5vdEZvdW5k
LCBzdGF0dXMpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07
Ci0gICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlvbnMs
IFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0
aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUo
Y2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBA
IC00MzIsMTAzICs0MzksMTA5IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9yLCBNYWtlQ3JlZGVu
dGlhbFBhc3NlZFdpdGhTZWxmQXR0ZXN0YXRpb24pCiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAgICBhdXRv
IGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmpldCkgewotICAgICAgICAvLyBD
aGVjayBLZXljaGFpbgotICAgICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKLSAgICAgICAg
ICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCi0gICAgICAgICAgICAoaWQpa1Nl
Y0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAotICAgICAgICAgICAg
KGlkKWtTZWNBdHRyTGFiZWw6IHRlc3RScElkLAotICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBw
bGljYXRpb25MYWJlbDogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNv
ZGVkU3RyaW5nOnRlc3RDcmVkZW50aWFsSWRCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNv
ZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0KCksCi0gICAgICAgICAgICAoaWQpa1Nl
Y0F0dHJBcHBsaWNhdGlvblRhZzogW05TRGF0YSBkYXRhV2l0aEJ5dGVzOnRlc3RVc2VyaGFuZGxl
IGxlbmd0aDpzaXplb2YodGVzdFVzZXJoYW5kbGUpXSwKLSAgICAgICAgfTsKLSAgICAgICAgT1NT
dGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKXF1ZXJ5LCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXR1cyk7Ci0KLSAgICAg
ICAgLy8gQ2hlY2sgQ3JlZGVudGlhbCBJRAotICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmJhc2U2
NEVuY29kZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSA9PSB0ZXN0
Q3JlZGVudGlhbElkQmFzZTY0KTsKLQotICAgICAgICAvLyBDaGVjayBBdHRlc3RhdGlvbiBPYmpl
Y3QKLSAgICAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdE1hcCA9IGNib3I6OkNCT1JSZWFkZXI6
OnJlYWQoYXR0ZXN0YXRpb25PYmpldCk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKCEhYXR0ZXN0YXRp
b25PYmplY3RNYXApOwotCi0gICAgICAgIC8vIENoZWNrIEF1dGhlbnRpY2F0b3IgRGF0YS4KLSAg
ICAgICAgYXV0byYgYXV0aERhdGEgPSBhdHRlc3RhdGlvbk9iamVjdE1hcC0+Z2V0TWFwKCkuZmlu
ZChjYm9yOjpDQk9SVmFsdWUoImF1dGhEYXRhIikpLT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOwot
ICAgICAgICBzaXplX3QgcG9zID0gMDsKLSAgICAgICAgdWludDhfdCBleHBlY3RlZFJwSWRIYXNo
W10gPSB7Ci0gICAgICAgICAgICAweDQ5LCAweDk2LCAweDBkLCAweGU1LCAweDg4LCAweDBlLCAw
eDhjLCAweDY4LAotICAgICAgICAgICAgMHg3NCwgMHgzNCwgMHgxNywgMHgwZiwgMHg2NCwgMHg3
NiwgMHg2MCwgMHg1YiwKLSAgICAgICAgICAgIDB4OGYsIDB4ZTQsIDB4YWUsIDB4YjksIDB4YTIs
IDB4ODYsIDB4MzIsIDB4YzcsCi0gICAgICAgICAgICAweDk5LCAweDVjLCAweGYzLCAweGJhLCAw
eDgzLCAweDFkLCAweDk3LCAweDYzCi0gICAgICAgIH07Ci0gICAgICAgIEVYUEVDVF9GQUxTRSht
ZW1jbXAoYXV0aERhdGEuZGF0YSgpICsgcG9zLCBleHBlY3RlZFJwSWRIYXNoLCBzaXplb2YoZXhw
ZWN0ZWRScElkSGFzaCkpKTsKLSAgICAgICAgcG9zICs9IHNpemVvZihleHBlY3RlZFJwSWRIYXNo
KTsKLQotICAgICAgICAvLyBGTEFHUwotICAgICAgICBFWFBFQ1RfRVEoNjksIGF1dGhEYXRhW3Bv
c10pOwotICAgICAgICBwb3MrKzsKLQotICAgICAgICB1aW50MzJfdCBjb3VudGVyID0gLTE7Ci0g
ICAgICAgIG1lbWNweSgmY291bnRlciwgYXV0aERhdGEuZGF0YSgpICsgcG9zLCBzaXplb2YodWlu
dDMyX3QpKTsKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBjb3VudGVyKTsKLSAgICAgICAgcG9zICs9
IHNpemVvZih1aW50MzJfdCk7Ci0KLSAgICAgICAgdWludDhfdCBleHBlY3RlZEFBR1VJRFtdID0g
ewotICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMCwKLSAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAKLSAgICAgICAgfTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNtcChhdXRoRGF0
YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkQUFHVUlELCBzaXplb2YoZXhwZWN0ZWRBQUdVSUQpKSk7
Ci0gICAgICAgIHBvcyArPSBzaXplb2YoZXhwZWN0ZWRBQUdVSUQpOwotCi0gICAgICAgIHVpbnQx
Nl90IGwgPSAtMTsKLSAgICAgICAgbWVtY3B5KCZsLCBhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIHNp
emVvZih1aW50MTZfdCkpOwotICAgICAgICBFWFBFQ1RfRVEoMjB1LCBsKTsKLSAgICAgICAgcG9z
ICs9IHNpemVvZih1aW50MTZfdCk7Ci0KLSAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNtcChhdXRo
RGF0YS5kYXRhKCkgKyBwb3MsIGNyZWRlbnRpYWxJZC5kYXRhKCksIGwpKTsKLSAgICAgICAgcG9z
ICs9IGw7Ci0KLSAgICAgICAgLy8gQ3JlZGVudGlhbCBQdWJsaWMgS2V5Ci0gICAgICAgIC8vIEZJ
WE1FKDE4MzUzNik6IFRoZSBDQk9SIHJlYWRlciBkb2Vzbid0IHN1cHBvcnQgbmVnYXRpdmUgaW50
ZWdlciBhcyBtYXAga2V5LiBUaHVzIHdlIGNvdWxkbid0IHV0aWx6aWUgaXQuCi0gICAgICAgIEVY
UEVDVF9TVFJFUSgicFFFQ0F5WWdBU0ZZSURqL3p4U2t6S2dhQnVTM2NkV0RGNTU4b2Y4QWFJcGdG
cHNqRi9RbTE3NDlJbGdnVkJKUGdxVUl3ZmhXSEo5MW5iN1VQSDc2YzArV0ZPelpLc2xQeXlGc2U0
Zz0iLCBXVEY6OmJhc2U2NEVuY29kZShhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGF1dGhEYXRhLnNp
emUoKSAtIHBvcykuYXNjaWkoKS5kYXRhKCkpOwotCi0gICAgICAgIC8vIENoZWNrIFNlbGYgQXR0
ZXN0YXRpb24KLSAgICAgICAgRVhQRUNUX1NUUkVRKCJBcHBsZSIsIGF0dGVzdGF0aW9uT2JqZWN0
TWFwLT5nZXRNYXAoKS5maW5kKGNib3I6OkNCT1JWYWx1ZSgiZm10IikpLT5zZWNvbmQuZ2V0U3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotCi0gICAgICAgIGF1dG8mIGF0dFN0bXQgPSBhdHRlc3Rh
dGlvbk9iamVjdE1hcC0+Z2V0TWFwKCkuZmluZChjYm9yOjpDQk9SVmFsdWUoImF0dFN0bXQiKSkt
PnNlY29uZC5nZXRNYXAoKTsKLSAgICAgICAgRVhQRUNUX0VRKENPU0U6OkVTMjU2LCBhdHRTdG10
LmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJhbGciKSktPnNlY29uZC5nZXROZWdhdGl2ZSgpKTsKLQot
ICAgICAgICBhdXRvJiBzaWcgPSBhdHRTdG10LmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJzaWciKSkt
PnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7Ci0gICAgICAgIGF1dG8gcHJpdmF0ZUtleSA9IGdldFRl
c3RLZXkoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoU2VjS2V5VmVyaWZ5U2lnbmF0dXJlKFNlY0tl
eUNvcHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSksIGtTZWNLZXlBbGdvcml0aG1FQ0RTQVNp
Z25hdHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0
YVdpdGhCeXRlczphdXRoRGF0YS5kYXRhKCkgbGVuZ3RoOmF1dGhEYXRhLnNpemUoKV0sIChfX2Jy
aWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOnNpZy5kYXRhKCkgbGVuZ3RoOnNp
Zy5zaXplKCldLCBOVUxMKSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgY2VydGlmaWNhdGVzCi0gICAg
ICAgIGF1dG8mIHg1YyA9IGF0dFN0bXQuZmluZChjYm9yOjpDQk9SVmFsdWUoIng1YyIpKS0+c2Vj
b25kLmdldEFycmF5KCk7Ci0gICAgICAgIGF1dG8mIGF0dGVzdGF0aW9uQ2VydGlmaWNhdGVEYXRh
ID0geDVjWzBdLmdldEJ5dGVTdHJpbmcoKTsKLSAgICAgICAgYXV0byBhdHRlc3RhdGlvbkNlcnRp
ZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKE5VTEwsIChfX2Jy
aWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmF0dGVzdGF0aW9uQ2VydGlmaWNh
dGVEYXRhLmRhdGEoKSBsZW5ndGg6YXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZURhdGEuc2l6ZSgpXSkp
OwotICAgICAgICBDRlN0cmluZ1JlZiBjb21tb25OYW1lID0gbnVsbHB0cjsKLSAgICAgICAgc3Rh
dHVzID0gU2VjQ2VydGlmaWNhdGVDb3B5Q29tbW9uTmFtZShhdHRlc3RhdGlvbkNlcnRpZmljYXRl
LmdldCgpLCAmY29tbW9uTmFtZSk7Ci0gICAgICAgIGF1dG8gcmV0YWluQ29tbW9uTmFtZSA9IGFk
b3B0Q0YoY29tbW9uTmFtZSk7Ci0gICAgICAgIEFTU0VSVCghc3RhdHVzKTsKLSAgICAgICAgRVhQ
RUNUX1NUUkVRKCIwMDAwODAxMC0wMDBBNDlBMjMwQTAyMTNBIiwgWyhOU1N0cmluZyAqKWNvbW1v
bk5hbWUgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdFbmNvZGluZ10pOwotCi0g
ICAgICAgIGF1dG8mIGF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVEYXRhID0geDVjWzFd
LmdldEJ5dGVTdHJpbmcoKTsKLSAgICAgICAgYXV0byBhdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRp
ZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKE5VTEwsIChfX2Jy
aWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmF0dGVzdGF0aW9uSXNzdWluZ0NB
Q2VydGlmaWNhdGVEYXRhLmRhdGEoKSBsZW5ndGg6YXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZp
Y2F0ZURhdGEuc2l6ZSgpXSkpOwotICAgICAgICBjb21tb25OYW1lID0gbnVsbHB0cjsKLSAgICAg
ICAgc3RhdHVzID0gU2VjQ2VydGlmaWNhdGVDb3B5Q29tbW9uTmFtZShhdHRlc3RhdGlvbklzc3Vp
bmdDQUNlcnRpZmljYXRlLmdldCgpLCAmY29tbW9uTmFtZSk7Ci0gICAgICAgIHJldGFpbkNvbW1v
bk5hbWUgPSBhZG9wdENGKGNvbW1vbk5hbWUpOwotICAgICAgICBBU1NFUlQoIXN0YXR1cyk7Ci0g
ICAgICAgIEVYUEVDVF9TVFJFUSgiQmFzaWMgQXR0ZXN0YXRpb24gVXNlciBTdWIgQ0ExIiwgWyhO
U1N0cmluZyAqKWNvbW1vbk5hbWUgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdF
bmNvZGluZ10pOwotCi0gICAgICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBkb25lID0g
dHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25z
dCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgbXV0YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9GQUxT
RSh0cnVlKTsKLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVl
OworICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgeworICAg
ICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWxEYXRhJiBkYXRhKSB7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gY3JlZGVu
dGlhbElkOworICAgICAgICAgICAgY3JlZGVudGlhbElkLmFwcGVuZChyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihkYXRhLnJhd0lkLT5kYXRhKCkpLCBkYXRhLnJhd0lkLT5ieXRlTGVuZ3RoKCkp
OworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGF0dGVzdGF0aW9uT2JqZWN0OworICAgICAg
ICAgICAgYXR0ZXN0YXRpb25PYmplY3QuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KGRhdGEuYXR0ZXN0YXRpb25PYmplY3QtPmRhdGEoKSksIGRhdGEuYXR0ZXN0YXRpb25PYmplY3Qt
PmJ5dGVMZW5ndGgoKSk7CisKKyAgICAgICAgICAgIC8vIENoZWNrIEtleWNoYWluCisgICAgICAg
ICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKKyAgICAgICAgICAgICAgICAoaWQpa1NlY0Ns
YXNzOiAoaWQpa1NlY0NsYXNzS2V5LAorICAgICAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNs
YXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCisgICAgICAgICAgICAgICAgKGlkKWtT
ZWNBdHRyTGFiZWw6IHRlc3RScElkLAorICAgICAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxp
Y2F0aW9uTGFiZWw6IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2Rl
ZFN0cmluZzp0ZXN0Q3JlZGVudGlhbElkQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2Rp
bmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAgICAgICAgIChpZClr
U2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6dGVzdFVzZXJoYW5k
bGUgbGVuZ3RoOnNpemVvZih0ZXN0VXNlcmhhbmRsZSldLAorICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENG
RGljdGlvbmFyeVJlZilxdWVyeSwgTlVMTCk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Rh
dHVzKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgQ3JlZGVudGlhbCBJRAorICAgICAgICAgICAg
RVhQRUNUX1RSVUUoV1RGOjpiYXNlNjRFbmNvZGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVu
dGlhbElkLnNpemUoKSkgPT0gdGVzdENyZWRlbnRpYWxJZEJhc2U2NCk7CisKKyAgICAgICAgICAg
IC8vIENoZWNrIEF0dGVzdGF0aW9uIE9iamVjdAorICAgICAgICAgICAgYXV0byBhdHRlc3RhdGlv
bk9iamVjdE1hcCA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQoYXR0ZXN0YXRpb25PYmplY3QpOwor
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoISFhdHRlc3RhdGlvbk9iamVjdE1hcCk7CisKKyAgICAg
ICAgICAgIC8vIENoZWNrIEF1dGhlbnRpY2F0b3IgRGF0YS4KKyAgICAgICAgICAgIGF1dG8mIGF1
dGhEYXRhID0gYXR0ZXN0YXRpb25PYmplY3RNYXAtPmdldE1hcCgpLmZpbmQoY2Jvcjo6Q0JPUlZh
bHVlKCJhdXRoRGF0YSIpKS0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKKyAgICAgICAgICAgIHNp
emVfdCBwb3MgPSAwOworICAgICAgICAgICAgdWludDhfdCBleHBlY3RlZFJwSWRIYXNoW10gPSB7
CisgICAgICAgICAgICAgICAgMHg0OSwgMHg5NiwgMHgwZCwgMHhlNSwgMHg4OCwgMHgwZSwgMHg4
YywgMHg2OCwKKyAgICAgICAgICAgICAgICAweDc0LCAweDM0LCAweDE3LCAweDBmLCAweDY0LCAw
eDc2LCAweDYwLCAweDViLAorICAgICAgICAgICAgICAgIDB4OGYsIDB4ZTQsIDB4YWUsIDB4Yjks
IDB4YTIsIDB4ODYsIDB4MzIsIDB4YzcsCisgICAgICAgICAgICAgICAgMHg5OSwgMHg1YywgMHhm
MywgMHhiYSwgMHg4MywgMHgxZCwgMHg5NywgMHg2MworICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRShtZW1jbXAoYXV0aERhdGEuZGF0YSgpICsgcG9zLCBleHBlY3RlZFJw
SWRIYXNoLCBzaXplb2YoZXhwZWN0ZWRScElkSGFzaCkpKTsKKyAgICAgICAgICAgIHBvcyArPSBz
aXplb2YoZXhwZWN0ZWRScElkSGFzaCk7CisKKyAgICAgICAgICAgIC8vIEZMQUdTCisgICAgICAg
ICAgICBFWFBFQ1RfRVEoNjksIGF1dGhEYXRhW3Bvc10pOworICAgICAgICAgICAgcG9zKys7CisK
KyAgICAgICAgICAgIHVpbnQzMl90IGNvdW50ZXIgPSAtMTsKKyAgICAgICAgICAgIG1lbWNweSgm
Y291bnRlciwgYXV0aERhdGEuZGF0YSgpICsgcG9zLCBzaXplb2YodWludDMyX3QpKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUSgwdSwgY291bnRlcik7CisgICAgICAgICAgICBwb3MgKz0gc2l6ZW9m
KHVpbnQzMl90KTsKKworICAgICAgICAgICAgdWludDhfdCBleHBlY3RlZEFBR1VJRFtdID0gewor
ICAgICAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsCisgICAgICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSht
ZW1jbXAoYXV0aERhdGEuZGF0YSgpICsgcG9zLCBleHBlY3RlZEFBR1VJRCwgc2l6ZW9mKGV4cGVj
dGVkQUFHVUlEKSkpOworICAgICAgICAgICAgcG9zICs9IHNpemVvZihleHBlY3RlZEFBR1VJRCk7
CisKKyAgICAgICAgICAgIHVpbnQxNl90IGwgPSAtMTsKKyAgICAgICAgICAgIG1lbWNweSgmbCwg
YXV0aERhdGEuZGF0YSgpICsgcG9zLCBzaXplb2YodWludDE2X3QpKTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUSgyMHUsIGwpOworICAgICAgICAgICAgcG9zICs9IHNpemVvZih1aW50MTZfdCk7CisK
KyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShtZW1jbXAoYXV0aERhdGEuZGF0YSgpICsgcG9zLCBj
cmVkZW50aWFsSWQuZGF0YSgpLCBsKSk7CisgICAgICAgICAgICBwb3MgKz0gbDsKKworICAgICAg
ICAgICAgLy8gQ3JlZGVudGlhbCBQdWJsaWMgS2V5CisgICAgICAgICAgICAvLyBGSVhNRSgxODM1
MzYpOiBUaGUgQ0JPUiByZWFkZXIgZG9lc24ndCBzdXBwb3J0IG5lZ2F0aXZlIGludGVnZXIgYXMg
bWFwIGtleS4gVGh1cyB3ZSBjb3VsZG4ndCB1dGlsemllIGl0LgorICAgICAgICAgICAgRVhQRUNU
X1NUUkVRKCJwUUVDQXlZZ0FTRllJRGovenhTa3pLZ2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pG
L1FtMTc0OUlsZ2dWQkpQZ3FVSXdmaFdISjkxbmI3VVBINzZjMCtXRk96WktzbFB5eUZzZTRnPSIs
IFdURjo6YmFzZTY0RW5jb2RlKGF1dGhEYXRhLmRhdGEoKSArIHBvcywgYXV0aERhdGEuc2l6ZSgp
IC0gcG9zKS5hc2NpaSgpLmRhdGEoKSk7CisKKyAgICAgICAgICAgIC8vIENoZWNrIFNlbGYgQXR0
ZXN0YXRpb24KKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiQXBwbGUiLCBhdHRlc3RhdGlvbk9i
amVjdE1hcC0+Z2V0TWFwKCkuZmluZChjYm9yOjpDQk9SVmFsdWUoImZtdCIpKS0+c2Vjb25kLmdl
dFN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgICAgICAgICAgYXV0byYgYXR0U3RtdCA9
IGF0dGVzdGF0aW9uT2JqZWN0TWFwLT5nZXRNYXAoKS5maW5kKGNib3I6OkNCT1JWYWx1ZSgiYXR0
U3RtdCIpKS0+c2Vjb25kLmdldE1hcCgpOworICAgICAgICAgICAgRVhQRUNUX0VRKENPU0U6OkVT
MjU2LCBhdHRTdG10LmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJhbGciKSktPnNlY29uZC5nZXROZWdh
dGl2ZSgpKTsKKworICAgICAgICAgICAgYXV0byYgc2lnID0gYXR0U3RtdC5maW5kKGNib3I6OkNC
T1JWYWx1ZSgic2lnIikpLT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOworICAgICAgICAgICAgYXV0
byBwcml2YXRlS2V5ID0gZ2V0VGVzdEtleSgpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoU2Vj
S2V5VmVyaWZ5U2lnbmF0dXJlKFNlY0tleUNvcHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSks
IGtTZWNLZXlBbGdvcml0aG1FQ0RTQVNpZ25hdHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAoX19icmlk
Z2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczphdXRoRGF0YS5kYXRhKCkgbGVuZ3Ro
OmF1dGhEYXRhLnNpemUoKV0sIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOnNpZy5kYXRhKCkgbGVuZ3RoOnNpZy5zaXplKCldLCBOVUxMKSk7CisKKyAgICAgICAgICAg
IC8vIENoZWNrIGNlcnRpZmljYXRlcworICAgICAgICAgICAgYXV0byYgeDVjID0gYXR0U3RtdC5m
aW5kKGNib3I6OkNCT1JWYWx1ZSgieDVjIikpLT5zZWNvbmQuZ2V0QXJyYXkoKTsKKyAgICAgICAg
ICAgIGF1dG8mIGF0dGVzdGF0aW9uQ2VydGlmaWNhdGVEYXRhID0geDVjWzBdLmdldEJ5dGVTdHJp
bmcoKTsKKyAgICAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZSA9IGFkb3B0Q0Yo
U2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShOVUxMLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtO
U0RhdGEgZGF0YVdpdGhCeXRlczphdHRlc3RhdGlvbkNlcnRpZmljYXRlRGF0YS5kYXRhKCkgbGVu
Z3RoOmF0dGVzdGF0aW9uQ2VydGlmaWNhdGVEYXRhLnNpemUoKV0pKTsKKyAgICAgICAgICAgIENG
U3RyaW5nUmVmIGNvbW1vbk5hbWUgPSBudWxscHRyOworICAgICAgICAgICAgc3RhdHVzID0gU2Vj
Q2VydGlmaWNhdGVDb3B5Q29tbW9uTmFtZShhdHRlc3RhdGlvbkNlcnRpZmljYXRlLmdldCgpLCAm
Y29tbW9uTmFtZSk7CisgICAgICAgICAgICBhdXRvIHJldGFpbkNvbW1vbk5hbWUgPSBhZG9wdENG
KGNvbW1vbk5hbWUpOworICAgICAgICAgICAgQVNTRVJUKCFzdGF0dXMpOworICAgICAgICAgICAg
RVhQRUNUX1NUUkVRKCIwMDAwODAxMC0wMDBBNDlBMjMwQTAyMTNBIiwgWyhOU1N0cmluZyAqKWNv
bW1vbk5hbWUgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdFbmNvZGluZ10pOwor
CisgICAgICAgICAgICBhdXRvJiBhdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlRGF0YSA9
IHg1Y1sxXS5nZXRCeXRlU3RyaW5nKCk7CisgICAgICAgICAgICBhdXRvIGF0dGVzdGF0aW9uSXNz
dWluZ0NBQ2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEo
TlVMTCwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YXR0ZXN0YXRp
b25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZURhdGEuZGF0YSgpIGxlbmd0aDphdHRlc3RhdGlvbklzc3Vp
bmdDQUNlcnRpZmljYXRlRGF0YS5zaXplKCldKSk7CisgICAgICAgICAgICBjb21tb25OYW1lID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIHN0YXR1cyA9IFNlY0NlcnRpZmljYXRlQ29weUNvbW1vbk5h
bWUoYXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZS5nZXQoKSwgJmNvbW1vbk5hbWUpOwor
ICAgICAgICAgICAgcmV0YWluQ29tbW9uTmFtZSA9IGFkb3B0Q0YoY29tbW9uTmFtZSk7CisgICAg
ICAgICAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoIkJhc2lj
IEF0dGVzdGF0aW9uIFVzZXIgU3ViIENBMSIsIFsoTlNTdHJpbmcgKiljb21tb25OYW1lIGNTdHJp
bmdVc2luZ0VuY29kaW5nOiBOU0FTQ0lJU3RyaW5nRW5jb2RpbmddKTsKKworICAgICAgICAgICAg
Y2xlYW5VcEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwg
WyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOwor
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGhhc2goMzIpOwotICAgIGF1dGhlbnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKGhh
c2gsIGNyZWF0aW9uT3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVudGlhbChoYXNoLCBjcmVh
dGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC01NDQsMTYgKzU1NywxNyBAQCBURVNUKExvY2FsQXV0aGVu
dGljYXRvciwgR2V0QXNzZXJ0aW9uQWxsb3dDcmVkZW50aWFsc01pc21hdGNoMSkKIAogICAgIGJv
b2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxBdXRoZW50aWNh
dG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxBdXRoZW50aWNh
dG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0b3I8dWludDhf
dD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAgICAg
ICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0gWyZk
b25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsK
LSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNv
ZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZv
dW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIsIGV4Y2VwdGlvbi5t
ZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBj
YWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERh
dGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dp
dGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEm
KSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNl
cHRpb24pIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3Is
IGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gbWF0Y2hlZCBj
cmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0
b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0aGVudGljYXRvci0+Z2V0QXNz
ZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9uKHsgfSwg
cmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC01NjYsMTYgKzU4MCwxNyBAQCBURVNUKExvY2FsQXV0
aGVudGljYXRvciwgR2V0QXNzZXJ0aW9uQWxsb3dDcmVkZW50aWFsc01pc21hdGNoMikKIAogICAg
IGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxBdXRoZW50
aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxBdXRoZW50
aWNhdG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAg
ICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0g
WyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxl
IHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9u
LmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJl
IGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIsIGV4Y2VwdGlv
bi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0
byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6
c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERh
dGEmKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBl
eGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJy
b3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gbWF0Y2hl
ZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRp
Y2F0b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0aGVudGljYXRvci0+Z2V0
QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9uKHsg
fSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC01OTUsMTggKzYxMCwxOSBAQCBURVNUKExvY2Fs
QXV0aGVudGljYXRvciwgR2V0QXNzZXJ0aW9uQWxsb3dDcmVkZW50aWFsc01pc21hdGNoMykKIAog
ICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxBdXRo
ZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxBdXRo
ZW50aWNhdG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0b3I8
dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsK
LSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07
Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJD
b3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKLSAgICAgICAgRVhQRUNUX1NU
UkVRKCJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0
YWNoZWQgYXV0aGVudGljYXRvci4iLCBleGNlcHRpb24ubWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7
Ci0gICAgICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBh
dXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RG
Ojpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGNs
ZWFuVXBLZXljaGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0sIFsm
XShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CisgICAgICAgICAg
ICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7Cisg
ICAgICAgICAgICBFWFBFQ1RfU1RSRVEoIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5k
IGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIsIGV4Y2VwdGlvbi5tZXNz
YWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAg
ICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0aGVudGlj
YXRvci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2sp
LCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+Z2V0QXNz
ZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC02MjIsMTggKzYzOCwxOSBAQCBU
RVNUKExvY2FsQXV0aGVudGljYXRvciwgR2V0QXNzZXJ0aW9uQmlvbWV0cmljc05vdEVucm9sbGVk
KQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2Nh
bEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2Nh
bEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRy
dWUpOwotICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0g
ICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0VR
KFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBF
Q1RfU1RSRVEoIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iLCBleGNlcHRpb24ubWVzc2Fn
ZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1
bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVl
KTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBl
eGNlcHRpb24uY29kZSk7CisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoIk5vIGF2YWxpYWJsZSBh
dXRoZW50aWNhdG9ycy4iLCBleGNlcHRpb24ubWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAg
ICAgICB9KTsKICAgICB9OwotICAgIGF1dGhlbnRpY2F0b3ItPmdldEFzc2VydGlvbih7IH0sIHJl
cXVlc3RPcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
aykpOworICAgIGF1dGhlbnRpY2F0b3ItPmdldEFzc2VydGlvbih7IH0sIHJlcXVlc3RPcHRpb25z
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOwogfQpAQCAtNjUwLDE4ICs2NjcsMTkgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIEdl
dEFzc2VydGlvbkJpb21ldHJpY3NOb3RBdXRoZW50aWNhdGVkKQogCiAgICAgYm9vbCBkb25lID0g
ZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhl
bnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0g
ICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBjbGVhblVw
S2V5Y2hhaW4oKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhj
ZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRF
cnJvciwgZXhjZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIkNvdWxkbid0IGdl
dCB1c2VyIGNvbnNlbnQuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwotICAg
ICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBj
YWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERh
dGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dp
dGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEm
KSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBjbGVhblVw
S2V5Y2hhaW4oKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29u
c3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQ
RUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAgICAg
ICAgICAgRVhQRUNUX1NUUkVRKCJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiIsIGV4Y2VwdGlv
bi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigp
OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0
aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2Fs
bGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+
Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC02ODAsNDggKzY5OCw1
OCBAQCBURVNUKExvY2FsQXV0aGVudGljYXRvciwgR2V0QXNzZXJ0aW9uUGFzc2VkKQogCiAgICAg
Ym9vbCBkb25lID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRp
Y2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRp
Y2F0b3I+KCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZSwgaGFzaF0gKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhEYXRh
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB1c2VyaGFuZGxlKSB7Ci0gICAgICAgIC8vIENoZWNrIENyZWRlbnRpYWwgSUQKLSAgICAgICAg
RVhQRUNUX1RSVUUoV1RGOjpiYXNlNjRFbmNvZGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVu
dGlhbElkLnNpemUoKSkgPT0gdGVzdENyZWRlbnRpYWxJZEJhc2U2NCk7Ci0KLSAgICAgICAgLy8g
Q2hlY2sgQXV0aGVudGljYXRvciBEYXRhLgotICAgICAgICBzaXplX3QgcG9zID0gMDsKLSAgICAg
ICAgdWludDhfdCBleHBlY3RlZFJwSWRIYXNoW10gPSB7Ci0gICAgICAgICAgICAweDQ5LCAweDk2
LCAweDBkLCAweGU1LCAweDg4LCAweDBlLCAweDhjLCAweDY4LAotICAgICAgICAgICAgMHg3NCwg
MHgzNCwgMHgxNywgMHgwZiwgMHg2NCwgMHg3NiwgMHg2MCwgMHg1YiwKLSAgICAgICAgICAgIDB4
OGYsIDB4ZTQsIDB4YWUsIDB4YjksIDB4YTIsIDB4ODYsIDB4MzIsIDB4YzcsCi0gICAgICAgICAg
ICAweDk5LCAweDVjLCAweGYzLCAweGJhLCAweDgzLCAweDFkLCAweDk3LCAweDYzCi0gICAgICAg
IH07Ci0gICAgICAgIEVYUEVDVF9GQUxTRShtZW1jbXAoYXV0aERhdGEuZGF0YSgpICsgcG9zLCBl
eHBlY3RlZFJwSWRIYXNoLCBzaXplb2YoZXhwZWN0ZWRScElkSGFzaCkpKTsKLSAgICAgICAgcG9z
ICs9IHNpemVvZihleHBlY3RlZFJwSWRIYXNoKTsKLQotICAgICAgICAvLyBGTEFHUwotICAgICAg
ICBFWFBFQ1RfRVEoNSwgYXV0aERhdGFbcG9zXSk7Ci0gICAgICAgIHBvcysrOwotCi0gICAgICAg
IHVpbnQzMl90IGNvdW50ZXIgPSAtMTsKLSAgICAgICAgbWVtY3B5KCZjb3VudGVyLCBhdXRoRGF0
YS5kYXRhKCkgKyBwb3MsIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBFWFBFQ1RfRVEoMHUs
IGNvdW50ZXIpOwotCi0gICAgICAgIC8vIENoZWNrIHNpZ25hdHVyZQotICAgICAgICBhdXRvIHBy
aXZhdGVLZXkgPSBnZXRUZXN0S2V5KCk7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhVG9T
aWduKGF1dGhEYXRhKTsKLSAgICAgICAgZGF0YVRvU2lnbi5hcHBlbmRWZWN0b3IoaGFzaCk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKFNlY0tleVZlcmlmeVNpZ25hdHVyZShTZWNLZXlDb3B5UHVibGlj
S2V5KHByaXZhdGVLZXkuZ2V0KCkpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNz
YWdlWDk2MlNIQTI1NiwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ZGF0YVRvU2lnbi5kYXRhKCkgbGVuZ3RoOmRhdGFUb1NpZ24uc2l6ZSgpXSwgKF9fYnJpZGdlIENG
RGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6c2lnbmF0dXJlLmRhdGEoKSBsZW5ndGg6c2ln
bmF0dXJlLnNpemUoKV0sIE5VTEwpKTsKLQotICAgICAgICAvLyBDaGVjayBVc2VyIEhhbmRsZQot
ICAgICAgICBFWFBFQ1RfRVEodXNlcmhhbmRsZS5zaXplKCksIHNpemVvZih0ZXN0VXNlcmhhbmRs
ZSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UobWVtY21wKHVzZXJoYW5kbGUuZGF0YSgpLCB0ZXN0
VXNlcmhhbmRsZSwgc2l6ZW9mKHRlc3RVc2VyaGFuZGxlKSkpOwotCi0gICAgICAgIGNsZWFuVXBL
ZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0
aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNl
cHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGNs
ZWFuVXBLZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNr
ID0gWyZkb25lLCBoYXNoXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0
YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0
Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYg
ZGF0YSkgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNyZWRlbnRpYWxJZDsKKyAgICAg
ICAgICAgIGNyZWRlbnRpYWxJZC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0
YS5yYXdJZC0+ZGF0YSgpKSwgZGF0YS5yYXdJZC0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBhdXRoRGF0YTsKKyAgICAgICAgICAgIGF1dGhEYXRhLmFwcGVuZChy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCkp
LCBkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKKyAgICAgICAgICAgIHNpZ25hdHVyZS5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YS5zaWduYXR1cmUtPmRhdGEoKSksIGRhdGEuc2ln
bmF0dXJlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHVzZXJo
YW5kbGU7CisgICAgICAgICAgICB1c2VyaGFuZGxlLmFwcGVuZChyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihkYXRhLnVzZXJIYW5kbGUtPmRhdGEoKSksIGRhdGEudXNlckhhbmRsZS0+Ynl0ZUxl
bmd0aCgpKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgQ3JlZGVudGlhbCBJRAorICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoV1RGOjpiYXNlNjRFbmNvZGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3Jl
ZGVudGlhbElkLnNpemUoKSkgPT0gdGVzdENyZWRlbnRpYWxJZEJhc2U2NCk7CisKKyAgICAgICAg
ICAgIC8vIENoZWNrIEF1dGhlbnRpY2F0b3IgRGF0YS4KKyAgICAgICAgICAgIHNpemVfdCBwb3Mg
PSAwOworICAgICAgICAgICAgdWludDhfdCBleHBlY3RlZFJwSWRIYXNoW10gPSB7CisgICAgICAg
ICAgICAgICAgMHg0OSwgMHg5NiwgMHgwZCwgMHhlNSwgMHg4OCwgMHgwZSwgMHg4YywgMHg2OCwK
KyAgICAgICAgICAgICAgICAweDc0LCAweDM0LCAweDE3LCAweDBmLCAweDY0LCAweDc2LCAweDYw
LCAweDViLAorICAgICAgICAgICAgICAgIDB4OGYsIDB4ZTQsIDB4YWUsIDB4YjksIDB4YTIsIDB4
ODYsIDB4MzIsIDB4YzcsCisgICAgICAgICAgICAgICAgMHg5OSwgMHg1YywgMHhmMywgMHhiYSwg
MHg4MywgMHgxZCwgMHg5NywgMHg2MworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShtZW1jbXAoYXV0aERhdGEuZGF0YSgpICsgcG9zLCBleHBlY3RlZFJwSWRIYXNoLCBz
aXplb2YoZXhwZWN0ZWRScElkSGFzaCkpKTsKKyAgICAgICAgICAgIHBvcyArPSBzaXplb2YoZXhw
ZWN0ZWRScElkSGFzaCk7CisKKyAgICAgICAgICAgIC8vIEZMQUdTCisgICAgICAgICAgICBFWFBF
Q1RfRVEoNSwgYXV0aERhdGFbcG9zXSk7CisgICAgICAgICAgICBwb3MrKzsKKworICAgICAgICAg
ICAgdWludDMyX3QgY291bnRlciA9IC0xOworICAgICAgICAgICAgbWVtY3B5KCZjb3VudGVyLCBh
dXRoRGF0YS5kYXRhKCkgKyBwb3MsIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAgICAgRVhQ
RUNUX0VRKDB1LCBjb3VudGVyKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgc2lnbmF0dXJlCisg
ICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkgPSBnZXRUZXN0S2V5KCk7CisgICAgICAgICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YVRvU2lnbihhdXRoRGF0YSk7CisgICAgICAgICAgICBkYXRhVG9T
aWduLmFwcGVuZFZlY3RvcihoYXNoKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFNlY0tleVZl
cmlmeVNpZ25hdHVyZShTZWNLZXlDb3B5UHVibGljS2V5KHByaXZhdGVLZXkuZ2V0KCkpLCBrU2Vj
S2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNzYWdlWDk2MlNIQTI1NiwgKF9fYnJpZGdlIENG
RGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YVRvU2lnbi5kYXRhKCkgbGVuZ3RoOmRh
dGFUb1NpZ24uc2l6ZSgpXSwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6c2lnbmF0dXJlLmRhdGEoKSBsZW5ndGg6c2lnbmF0dXJlLnNpemUoKV0sIE5VTEwpKTsKKwor
ICAgICAgICAgICAgLy8gQ2hlY2sgVXNlciBIYW5kbGUKKyAgICAgICAgICAgIEVYUEVDVF9FUSh1
c2VyaGFuZGxlLnNpemUoKSwgc2l6ZW9mKHRlc3RVc2VyaGFuZGxlKSk7CisgICAgICAgICAgICBF
WFBFQ1RfRkFMU0UobWVtY21wKHVzZXJoYW5kbGUuZGF0YSgpLCB0ZXN0VXNlcmhhbmRsZSwgc2l6
ZW9mKHRlc3RVc2VyaGFuZGxlKSkpOworCisgICAgICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsK
KyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6
OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHRy
dWUpOworICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRp
b24oaGFzaCwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9uKGhhc2gsIHJl
cXVlc3RPcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDljYWYwNzJiYzBjODViYWYxYWU0NjNiNzYwNTBh
N2FhNjczOGEzY2QuLjY5YTlmNjY3ZTViNmI4NzhmNWVlNDFiOWY2ZWVhYzI1NTdjYmU0YzcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wOS0wOCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gUG9saXNoIEF1dGhlbnRpY2F0b3JNYW5h
Z2VyIGFuZCByZW5hbWUgaXQgdG8gQXV0aGVudGljYXRvckNvb3JkaW5hdG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyNzcKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ0MTE1OTM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6
LgorCisgICAgICAgICogaHR0cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2NyZWRlbnRpYWxz
Y29udGFpbmVyLXN0b3JlLWJhc2ljcy5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dl
YmF1dGhuL2lkbC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sOgorICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy5odHRw
cy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy5odHRwcy5odG1sOgorICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktaXMtdXNlci12ZXJpZnlpbmctcGxhdGZvcm0tYXV0
aGVudGljYXRvci1hdmFpbGFibGUuaHRtbDoKKwogMjAxOC0wOS0wOCAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0FwcGxlIFBheV0gRGlzcGF0Y2ggYSBwYXltZW50
bWV0aG9kY2hhbmdlIGV2ZW50IHdoZW4gdGhlIHBheW1lbnQgbWV0aG9kIGNoYW5nZXMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2NyZWRlbnRpYWwtbWFuYWdlbWVudC9jcmVkZW50
aWFsc2NvbnRhaW5lci1zdG9yZS1iYXNpY3MuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L2NyZWRlbnRpYWwtbWFuYWdlbWVudC9jcmVkZW50aWFsc2NvbnRhaW5lci1zdG9yZS1iYXNp
Y3MuaHR0cHMuaHRtbAppbmRleCAxOTg4ODI1NDczMGYxNjgzMmEwMjU5OWNjOWQwNWJlNDU4NjA0
MTIxLi4yMzY5MTM1MGMwNWVjZTAwODdlNTJlY2RjODE4NGUwZGRmZGU3OWU1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcmVkZW50aWFsLW1hbmFnZW1lbnQvY3JlZGVudGlhbHNj
b250YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2NyZWRlbnRpYWxzY29udGFpbmVyLXN0b3JlLWJhc2lj
cy5odHRwcy5odG1sCkBAIC00Miw3ICs0Miw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07
CiAgICAgICAgIC8vIEEgbW9jayBhdHRlc3RhdGlvbiBvYmplY3QKLSAgICAgICAgaW50ZXJuYWxz
Lm1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5zZXRDcmVhdGlvblJldHVybkJ1bmRsZShoZXhTdHJp
bmdUb1VpbnQ4QXJyYXkoJzAwJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDEnKSk7CisgICAg
ICAgIGludGVybmFscy5tb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLnNldENyZWF0aW9uUmV0
dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJheSgnMDAnKSwgaGV4U3RyaW5nVG9VaW50OEFy
cmF5KCcwMScpKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlhbCA9IGF3YWl0IG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyk7CiAKICAgICAgICAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0LCAiTm90U3VwcG9ydGVkRXJyb3IiLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9pZGwuaHR0cHMuaHRtbAppbmRleCA5YzJjN2YzMTM2NDgxYTc5NjMyNTJmNWQ5YjNlNzZm
ODNiOTI1MTc2Li5jZTcxODg1OTEyZTEyN2RmMTMyNzljNmY0NTM0YmYyY2MxMmFhN2ZhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9pZGwuaHR0cHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9pZGwuaHR0cHMuaHRtbApAQCAtNTIsNyAr
NTIsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgICAgICB9CiAgICAgfTsKICAg
ICAvLyBBIG1vY2sgYXR0ZXN0YXRpb24gb2JqZWN0Ci0gICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50
aWFsc01lc3Nlbmdlci5zZXRDcmVhdGlvblJldHVybkJ1bmRsZShoZXhTdHJpbmdUb1VpbnQ4QXJy
YXkoJzAwJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDEnKSk7CisgICAgaW50ZXJuYWxzLm1v
Y2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoaGV4U3Ry
aW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJykpOwogICAg
IGNyZWF0ZWRDcmVkZW50aWFsID0gYXdhaXQgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShj
cmVhdGlvbk9wdGlvbnMpOwogCiAKQEAgLTYyLDcgKzYyLDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5j
ICgpID0+IHsKICAgICAgICAgfQogICAgIH07CiAgICAgLy8gQSBtb2NrIGFzc2VydGlvbiByZXR1
cm4gYnVuZGxlLgotICAgIGludGVybmFscy5tb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuc2V0QXNz
ZXJ0aW9uUmV0dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJheSgnMDAnKSwgaGV4U3RyaW5n
VG9VaW50OEFycmF5KCcwMScpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAyJyksIGhleFN0cmlu
Z1RvVWludDhBcnJheSgnMDMnKSk7CisgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3Iuc2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJheSgn
MDAnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMScpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXko
JzAyJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDMnKSk7CiAgICAgcmVxdWVzdGVkQ3JlZGVu
dGlhbCA9IGF3YWl0IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQocmVxdWVzdE9wdGlvbnMpOwog
CiAgICAgaWRsQXJyYXkuYWRkX29iamVjdHMoeyJQdWJsaWNLZXlDcmVkZW50aWFsIjogWyJjcmVh
dGVkQ3JlZGVudGlhbCJdLCAiQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UiOiBbImNy
ZWF0ZWRDcmVkZW50aWFsLnJlc3BvbnNlIl0sICJBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UiOiBbInJlcXVlc3RlZENyZWRlbnRpYWwucmVzcG9uc2UiXX0pOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbAppbmRleCBiYjU1NDhjOTBk
MGJjZDA1NzFiNDYzY2VlZGM5ODdjNTM1NTQxZmIzLi40NTA3N2EzY2Y5ZDMzNzFmZWM2ZmY2Yjhi
ZGE1YjI3ZDJkODQxNmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LWZhaWx1cmUuaHR0cHMuaHRtbApAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICAgICAgICAgIHRp
bWVvdXQ6IDAsCiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGludGVybmFscy5t
b2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuc2V0RGlkVGltZU91dCgpOworICAgICAgICBpbnRlcm5h
bHMubW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXREaWRUaW1lT3V0KCk7CiAKICAgICAg
ICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwKICAgICAgICAg
ICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykpOwpAQCAtODIsNyArODIs
NyBAQAogICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgYWxnOiAtNyB9XSwKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgaW50
ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5zZXREaWRVc2VyQ2FuY2VsKCk7CisgICAg
ICAgIGludGVybmFscy5tb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLnNldERpZFVzZXJDYW5j
ZWwoKTsKIAogICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICJOb3RBbGxvd2VkRXJy
b3IiLAogICAgICAgICAgICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy5odHRwcy5odG1s
CmluZGV4IGFiNGZjYzA4MmQxYTBiY2RmYmE4MmIwYWJjZWMzZmY2ZGExNzA2ODAuLjY5OTY4YzNm
NGVkYzFmMWQ2MjE1YmYyZTlhZWJkOTU2ZGIzNTg1MTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy5o
dHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy5odHRwcy5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAg
ICAgICAgICAgICB9CiAgICAgICAgIH07CiAgICAgICAgIC8vIEEgbW9jayBhdHRlc3RhdGlvbiBv
YmplY3QKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5zZXRDcmVh
dGlvblJldHVybkJ1bmRsZShoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAwJyksIGhleFN0cmluZ1Rv
VWludDhBcnJheSgnMDEnKSk7CisgICAgICAgIGludGVybmFscy5tb2NrQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJheSgn
MDAnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMScpKTsKIAogICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGZ1bmN0aW9uKGNyZWRlbnRp
YWwpIHsKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwuaWQsICdBQScp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUuaHR0cHMuaHRtbAppbmRl
eCA1MTJiYjJkYWQxNjRjZDIzOGRiMTQyZWYzMzM0ODhkMDcwMzY3ZTUyLi4wZDRjMDQ1MjU2NzAz
NTJlZjM3Yzg3ZjYwZGYyMzMyMWMzZGU3MmEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUuaHR0cHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LWZhaWx1cmUuaHR0cHMuaHRtbApAQCAtMTEsNyArMTEsNyBAQAogICAgICAgICAgICAg
ICAgIHRpbWVvdXQ6IDAsCiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGludGVy
bmFscy5tb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuc2V0RGlkVGltZU91dCgpOworICAgICAgICBp
bnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXREaWRUaW1lT3V0KCk7CiAK
ICAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwKICAg
ICAgICAgICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykpOwpAQCAtMzUsNyAr
MzUsNyBAQAogICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJs
aWMta2V5IiwgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSB9XSwKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdl
ci5zZXREaWRVc2VyQ2FuY2VsKCk7CisgICAgICAgIGludGVybmFscy5tb2NrQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLnNldERpZFVzZXJDYW5jZWwoKTsKIAogICAgICAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLAogICAgICAgICAgICAgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
c3VjY2Vzcy5odHRwcy5odG1sCmluZGV4IDJlNWVjODgyMTNjNmU2NGU3M2Y2YzI1ZTI4YmZhMGRk
NzNmZDFjZjQuLmYzZmQxNTY0YWVkNGVlNTUxMTMxY2M2ODUyNzMxZmM4Mjg3MzdhNGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtc3VjY2Vzcy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy5odHRwcy5odG1sCkBAIC0xMiw3
ICsxMiw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAgICAgICAgIC8vIEEgbW9jayBh
c3NlcnRpb24gcmV0dXJuIGJ1bmRsZS4KLSAgICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFs
c01lc3Nlbmdlci5zZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5
KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJyksIGhleFN0cmluZ1RvVWludDhBcnJh
eSgnMDInKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMycpKTsKKyAgICAgICAgaW50ZXJuYWxz
Lm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKGhl
eFN0cmluZ1RvVWludDhBcnJheSgnMDAnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMScpLCBo
ZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAyJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDMnKSk7
CiAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhl
bihmdW5jdGlvbihjcmVkZW50aWFsKSB7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRl
bnRpYWwuaWQsICdBQScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1pcy11c2VyLXZlcmlmeWluZy1wbGF0Zm9ybS1hdXRoZW50aWNhdG9yLWF2
YWlsYWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1p
cy11c2VyLXZlcmlmeWluZy1wbGF0Zm9ybS1hdXRoZW50aWNhdG9yLWF2YWlsYWJsZS5odG1sCmlu
ZGV4IGRhOGU1MzQ1OTYwZjlkNGM2MjY0ZWRhYzM5OTFkMjIwNTU0ZWZlOTcuLjE4MWQzM2E0Zjhm
OTg0M2FmZDhhMjgzODVjOWU4OThjZTg2YzA5ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktaXMtdXNlci12ZXJpZnlpbmctcGxhdGZvcm0tYXV0
aGVudGljYXRvci1hdmFpbGFibGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWlzLXVzZXItdmVyaWZ5aW5nLXBsYXRmb3JtLWF1dGhlbnRpY2F0b3It
YXZhaWxhYmxlLmh0bWwKQEAgLTQsNyArNCw3IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIHByb21pc2VfdGVz
dChmdW5jdGlvbih0KSB7Ci0gICAgICAgIGludGVybmFscy5tb2NrQ3JlZGVudGlhbHNNZXNzZW5n
ZXI7CisgICAgICAgIGludGVybmFscy5tb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOwogCiAg
ICAgICAgIHJldHVybiBQdWJsaWNLZXlDcmVkZW50aWFsLmlzVXNlclZlcmlmeWluZ1BsYXRmb3Jt
QXV0aGVudGljYXRvckF2YWlsYWJsZSgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFsc2UpOwpAQCAtMTIsNyArMTIsNyBAQAogICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZSgpIHdpdGhvdXQgYW55IGF2YWlsYWJsZSBhdXRoZW50aWNhdG9ycy4iKTsK
IAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Ci0gICAgICAgIGludGVybmFscy5tb2Nr
Q3JlZGVudGlhbHNNZXNzZW5nZXIuc2V0RGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvclByZXNlbnQoKTsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3Iuc2V0RGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvclByZXNlbnQoKTsK
IAogICAgICAgICByZXR1cm4gUHVibGljS2V5Q3JlZGVudGlhbC5pc1VzZXJWZXJpZnlpbmdQbGF0
Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349347</attachid>
            <date>2018-09-10 16:00:01 -0700</date>
            <delta_ts>2018-09-11 00:59:28 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189277-20180910160000.patch</filename>
            <type>text/plain</type>
            <size>278461</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1ODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM3NTIxN2Y4Njg2ZTI1
MGJiM2EyMzQyOWYwMjAwZmI1NzNmZmU3ZS4uN2ZkMjdmNmVjZjQzYmFjZDRjMmQ3ZWIyMmI5NjQy
MGZjYTU4MDM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxOC0wOS0wOCAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gUG9s
aXNoIEF1dGhlbnRpY2F0b3JNYW5hZ2VyIGFuZCByZW5hbWUgaXQgdG8gQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODkyNzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTE1OTM2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWltcyB0byBwb2xp
c2ggQXV0aGVudGljYXRvck1hbmFnZXIgc3VjaCB0aGF0OgorICAgICAgICAxKSBJdCBpcyBubyBs
b25nZXIgYSBzaW5nbGV0b24uIEluc3RlYWQsIGl0IHdpbGwgbGl2ZSB3aXRoIFBhZ2UuIEl0IHdh
cyBhIHNpbmdsZXRvbiBzaW1wbHkgYmVjYXVzZSBzdGF0aWMKKyAgICAgICAgUHVibGljS2V5Q3Jl
ZGVudGlhbDo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCkg
aGF2ZSB0byBhY2Nlc3MgaXQuIEhvd2V2ZXIsIHRoaXMgcmVxdWVzdAorICAgICAgICBjYW4gYmUg
ZnVsZmlsbGVkIGJ5IGFkZGluZyBhbiBhdHRyaWJ1dGUgW0NhbGxXaXRoPURvY3VtZW50XSB0byB0
aGUgSURMIGRlZmluYXRpb24uIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KKyAgICAgICAgc3VjaCBu
ZWVkLiBBbHNvLCB0aGUgc2luZ2xldG9uIGlzIGlsbHkgaW1wbGVtZW50ZWQgYXMgaXQgb3ducyBh
IHNpbmdsZSBJUEMgcHJveHkgdG8gVUkgUHJvY2VzcyB3aGljaCBtZWFucworICAgICAgICBkaWZm
ZXJlbnQgd2ViIHBhZ2VzIHdpbGwgdGFsayB0byB0aGUgc2FtZSB3ZWIgcGFnZSBwcm94eS4gQW55
d2F5LCBtYWtpbmcgaXQgbGl2ZSB3aXRoIFBhZ2Ugc2hvdWxkIGZpeCBldmVyeXRoaW5nLgorICAg
ICAgICAyKSBTaW5jZSB3ZSBhcmUgbm93IHBsYW5uaW5nIHRvIHN1cHBvcnQgZXh0ZXJuYWwgYXV0
aGVudGljYXRvcnMsIHRoZSBtYW5hZ2VyIG9mIGFsbCBhdXRoZW50aWNhdG9ycyB3aWxsIHRoZW4K
KyAgICAgICAgaGF2ZSB0byBsaXZlIGluIFVJIFByb2Nlc3Mgd2hpY2ggbWFrZXMgdGhpcyBBdXRo
ZW50aWNhdG9yTWFuYWdlciBvYnNvbGV0ZS4gSW5zdGVhZCwgcmVuYW1lIGl0IHRvIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci4KKyAgICAgICAgMykgUmVuYW1lIENyZWRlbnRpYWxzTWVzc2VuZ2Vy
IHRvIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCB0byB0aWdodCBpdCB0byBXZWJBdXRo
Ti4gQWxzbywgc2ltcGxpZnkgdGhlCisgICAgICAgIG1lc3NhZ2UgcmVwbHkgbW9kZWwgYXMgUHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMgPT4KKyAgICAgICAgRXhjZXB0aW9uRGF0YS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0
YSBmb3IgbWFrZUNyZWRlbnRpYWwvZ2V0QXNzZXJ0aW9uIG9wZXJhdGlvbnMuCisgICAgICAgIDQp
IFJlc3RyaWN0IG9uZSByZXF1ZXN0IHBlciB0aW1lLCBpLmUuIG1ha2VDcmVkZW50aWFsL2dldEFz
c2VydGlvbiBmb3IgYSBzaW5nbGUgcGFnZS4KKyAgICAgICAgNSkgVW5pZnlpbmcgbWFrZUNyZWRl
bnRpYWxSZXBseS9nZXRBc3NlcnRpb25SZXBseS9leGNlcHRpb25SZXBseSBpbnRvIHJlcXVlc3RS
ZXBseSBmb3IgSVBDLiBDb3JyZXNwb25kaW5nbHksCisgICAgICAgIHVuaWZ5IGNhbGxiYWNrIGFu
ZCBleGNlcHRpb25DYWxsYmFjayBpbnRvIGNhbGxiYWNrIGFzIHdlbGwgZm9yIExvY2FsQXV0aGVu
dGljYXRvci4KKyAgICAgICAgNikgRW5oYW5jZSBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zIGVuY29kaW5nL2RlY29kaW5nIHdpdGggZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEvZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAg
ICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyZWRlbnRpYWxzQ29udGFpbmVyOjppc0NyZWF0ZSk6CisgICAgICAgICogTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oOgorICAgICAg
ICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVu
dGlhbHNNZXNzZW5nZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6YXV0aGVudGljYXRv
ckRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpzaWduYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlOjp1c2VySGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjphdHRlc3RhdGlvbk9iamVjdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwLgorICAgICAg
ICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw6OnByb2R1Y2VDbGll
bnREYXRhSnNvbik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJ
bnRlcm5hbDo6cHJvZHVjZUNsaWVudERhdGFKc29uSGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6aW5pdFRpbWVvdXRUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDo6ZGlkVGltZW91
dFRpbWVyRmlyZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I6OmNyZWF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5n
UGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5oLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6
On5BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OjpyZXF1ZXN0UmVwbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ojppc1VzZXJWZXJpZnlpbmdQbGF0
Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OnNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ6OmFkZFF1
ZXJ5Q29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHku
aC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9u
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6QXV0aGVudGlj
YXRvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZTo6
Y2xpZW50RGF0YUpTT04gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vUHVibGlj
S2V5Q3JlZGVudGlhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbDo6dHJ5Q3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWw6OlB1YmxpY0tleUNy
ZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbDo6aXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OmRlY29k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGE6OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2NvY29hL0xvY2FsQXV0aGVudGljYXRv
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRp
YWwpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24p
OgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJTdGFnZVBhcmFtZXRlcnMuY3BwOgorICAgICAg
ICBBZGQgYSBoZWFkZXIgZmlsZSB0byBwcmV2ZW50IGxpbmthZ2UgZXJyb3IuCisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjphdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgY29uc3QpOgorICAg
ICAgICAqIHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZUNv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OkludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6Om1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjptb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcjo6c2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6c2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFs
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFz
c2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUpOgorICAgICAg
ICAqIHRlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaC4KKyAgICAg
ICAgKiB0ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaWRsOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaWRsLgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcDogUmVtb3ZlZC4K
KwogMjAxOC0wOS0wOCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W0FwcGxlIFBheV0gRGlzcGF0Y2ggYSBwYXltZW50bWV0aG9kY2hhbmdlIGV2ZW50IHdoZW4gdGhl
IHBheW1lbnQgbWV0aG9kIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWU5ZTE4ODk4M2E3NjMyYmQxNTZl
ODdjYWI0N2MxZDgxZGRjZmI4Yi4uN2M2Yzg2YmU2MGU2ZjViNGMxNDhiNDJhOGY0NmY2N2QwZTQ5
MWQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxOC0wOS0wOCAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gUG9saXNoIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyIGFuZCByZW5hbWUgaXQgdG8gQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyNzcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTE1OTM2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IENocmlzIER1bWV6LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdl
bWVudC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHk6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6On5XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aXNVc2VyVmVyaWZ5aW5nUGxh
dGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnJlcXVlc3RSZXBseSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVk
ZW50aWFsc01lc3NlbmdlclByb3h5LmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2Vi
Q3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9yZXNldFJlY2VudENyYXNo
Q291bnRUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dl
YlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6fldlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6
bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3I6OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Ny
ZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmguCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
bWVzc2FnZXMuaW46IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ3JlZGVu
dGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIubWVzc2FnZXMuaW4uCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
X2NwdUxpbWl0KToKKyAgICAgICAgKFdlYktpdDo6bV9jcmVkZW50aWFsc01lc3Nlbmdlcik6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxOC0w
OS0wOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bmlmeSBtb3N0IG9mIHRoZSBXZWJLaXQgT2JqZWN0aXZlLUMgQVBJIHNvdXJjZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGQyMzY0OGM1MDBjNzk0ZDdjMzkzZTM4YjcxZWRhMjhj
OWQ0ZDNiNWQuLjVkYjMwMTQ1YWE3MjZmNWIzYjBhZDNhY2NmNzQ3MjBjNGEyMTI2NDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtOTYyLDkgKzk2Miw5IEBAIEpTX0JJTkRJTkdf
SURMUyA9IFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS90ZXN0aW5nL01hbGxvY1N0YXRpc3RpY3MuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rl
c3RpbmcvTWVtb3J5SW5mby5pZGwgXAorICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaWRsIFwKLSAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2Vu
Z2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5bWVudEFkZHJlc3MuaWRsIFwKICAgICAkKFdl
YkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGwgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0Nv
bnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50
L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcAppbmRleCAxNDcwN2FlMTFhZWRhYTY0ZjBlYmM3MmQ4
YjIzYjIxNjlmODkyOGUzLi5jYjI3NjBjMWFhNzRlOTE0NzQ1MzUwZTAwZjFmNzE2M2YwM2IzYTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50
L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Ny
ZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNp
bmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Myw3ICs2
NCw3IEBAIHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6OmdldChDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMmJiBvcHRpb25zLCBDcmVkZW50aWFsUHJvCiB7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBp
bXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jcmVkZW50aWFsLW1hbmFnZW1lbnQtMS8j
YWxnb3JpdGhtLXJlcXVlc3QgYXMgb2YgNCBBdWd1c3QgMjAxNwogICAgIC8vIHdpdGggZW5oYW5j
ZW1lbnQgZnJvbSAxNCBOb3ZlbWJlciAyMDE3IEVkaXRvcidzIERyYWZ0LgotICAgIGlmICghbV9k
b2N1bWVudCkgeworICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9kb2N1bWVudC0+cGFnZSgpKSB7
CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODIsOCArODMsNyBAQCB2b2lkIENyZWRlbnRp
YWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYgb3B0aW9ucywgQ3Jl
ZGVudGlhbFBybwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gQXN5bmMgb3BlcmF0
aW9ucyBhcmUgZGlzcGF0Y2hlZC9oYW5kbGVkIGluIChXZWIpQ3JlZGVudGlhbE1lc3Nlbmdlciwg
d2hpY2ggZXhjaGFuZ2VzIG1lc3NhZ2VzIGJldHdlZW4gV2ViUHJvY2VzcyBhbmQgVUlQcm9jZXNz
LgotICAgIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaXNjb3ZlckZyb21FeHRl
cm5hbFNvdXJjZShtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBvcHRpb25zLnB1YmxpY0tl
eS52YWx1ZSgpLCBkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9w
dGlvbnMuc2lnbmFsKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9kb2N1bWVudC0+cGFnZSgp
LT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5kaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSht
X2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpLCBk
b2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9wdGlvbnMuc2lnbmFs
KSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6OnN0
b3JlKGNvbnN0IEJhc2ljQ3JlZGVudGlhbCYsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkK
QEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6aXNDcmVhdGUoQ3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmIG9wdGlvbnMsIENyZWRlbnQKIHsKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL2NyZWRlbnRpYWwtbWFu
YWdlbWVudC0xLyNhbGdvcml0aG0tY3JlYXRlIGFzIG9mIDQgQXVndXN0IDIwMTcKICAgICAvLyB3
aXRoIGVuaGFuY2VtZW50IGZyb20gMTQgTm92ZW1iZXIgMjAxNyBFZGl0b3IncyBEcmFmdC4KLSAg
ICBpZiAoIW1fZG9jdW1lbnQpIHsKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1fZG9jdW1lbnQt
PnBhZ2UoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExMiw4ICsxMTIsNyBAQCB2
b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjppc0NyZWF0ZShDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zJiYgb3B0aW9ucywgQ3JlZGVudAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8g
QXN5bmMgb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZC9oYW5kbGVkIGluIChXZWIpQ3JlZGVudGlh
bE1lc3Nlbmdlciwgd2hpY2ggZXhjaGFuZ2VzIG1lc3NhZ2VzIGJldHdlZW4gV2ViUHJvY2VzcyBh
bmQgVUlQcm9jZXNzLgotICAgIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzaW5nbGV0b24oKS5jcmVh
dGUobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUo
KSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RGTW92ZShvcHRpb25zLnNp
Z25hbCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yKCkuY3JlYXRlKG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCks
IG9wdGlvbnMucHVibGljS2V5LnZhbHVlKCksIGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0
b3JzKCksIFdURk1vdmUob3B0aW9ucy5zaWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAog
dm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6cHJldmVudFNpbGVudEFjY2VzcyhET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0Nv
bnRhaW5lci5oCmluZGV4IDJkNWIzOGI1NjcxN2YzZGU4YjkwMTQxYzc4NTY2MWZlZTA2ZmUxNzQu
LjRlMWJiNGU1YmU1ZTUyNTVhMzc3ODZmOGVmNjliOGE3N2RhZjUzYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250
YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50
L0NyZWRlbnRpYWxzQ29udGFpbmVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShX
RUJfQVVUSE4pCiAKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgorI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzTWVz
c2VuZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ2YmQwNzRhZjQ3ZTg5
Y2M5Y2M3NWI0MWVhYzYyZGEyNjQ2MmJmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2Vt
ZW50L0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyZWRlbnRp
YWxzTWVzc2VuZ2VyLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBDcmVkZW50aWFsc01lc3NlbmdlckludGVybmFsIHsKLQotY29u
c3QgdWludDY0X3QgbWF4TWVzc2FnZUlkID0gMHhGRkZGRkZGRkZGRkZGRjsgLy8gNTYgYml0cwot
Y29uc3Qgc2l6ZV90IGNhbGxCYWNrQ2xhc3NpZmllck9mZnNldCA9IDU2OwotCi19Ci0KLXZvaWQg
Q3JlZGVudGlhbHNNZXNzZW5nZXI6OmV4Y2VwdGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwg
Y29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBD
cmVkZW50aWFsc01lc3NlbmdlckludGVybmFsOwotCi0gICAgaWYgKCEobWVzc2FnZUlkID4+IGNh
bGxCYWNrQ2xhc3NpZmllck9mZnNldCBeIENhbGxCYWNrQ2xhc3NpZmllcjo6Q3JlYXRpb24pKSB7
Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IHRha2VDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyKG1l
c3NhZ2VJZCk7Ci0gICAgICAgIGhhbmRsZXIoZXhjZXB0aW9uLnRvRXhjZXB0aW9uKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghKG1lc3NhZ2VJZCA+PiBjYWxsQmFja0NsYXNz
aWZpZXJPZmZzZXQgXiBDYWxsQmFja0NsYXNzaWZpZXI6OlJlcXVlc3QpKSB7Ci0gICAgICAgIGF1
dG8gaGFuZGxlciA9IHRha2VSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIobWVzc2FnZUlkKTsKLSAg
ICAgICAgaGFuZGxlcihleGNlcHRpb24udG9FeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci19Ci0KLXVpbnQ2NF90IENyZWRlbnRpYWxzTWVzc2VuZ2VyOjphZGRDcmVhdGlvbkNv
bXBsZXRpb25IYW5kbGVyKENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQotewot
ICAgIHVzaW5nIG5hbWVzcGFjZSBDcmVkZW50aWFsc01lc3NlbmdlckludGVybmFsOwotCi0gICAg
dWludDY0X3QgbWVzc2FnZUlkID0gbV9hY2N1bXVsYXRlZE1lc3NhZ2VJZCsrOwotICAgIEFTU0VS
VChtZXNzYWdlSWQgPD0gbWF4TWVzc2FnZUlkKTsKLSAgICBtZXNzYWdlSWQgPSBtZXNzYWdlSWQg
fCBDYWxsQmFja0NsYXNzaWZpZXI6OkNyZWF0aW9uIDw8IGNhbGxCYWNrQ2xhc3NpZmllck9mZnNl
dDsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcGVuZGluZ0NyZWF0aW9uQ29tcGxldGlvbkhhbmRs
ZXJzLmFkZChtZXNzYWdlSWQsIFdURk1vdmUoaGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmV0dXJuIG1lc3NhZ2VJZDsK
LX0KLQotQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciBDcmVkZW50aWFsc01lc3Nlbmdlcjo6dGFr
ZUNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIodWludDY0X3QgbWVzc2FnZUlkKQotewotICAgIHJl
dHVybiBtX3BlbmRpbmdDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVycy50YWtlKG1lc3NhZ2VJZCk7
Ci19Ci0KLXVpbnQ2NF90IENyZWRlbnRpYWxzTWVzc2VuZ2VyOjphZGRSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXIoUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICB1c2lu
ZyBuYW1lc3BhY2UgQ3JlZGVudGlhbHNNZXNzZW5nZXJJbnRlcm5hbDsKLQotICAgIHVpbnQ2NF90
IG1lc3NhZ2VJZCA9IG1fYWNjdW11bGF0ZWRNZXNzYWdlSWQrKzsKLSAgICBBU1NFUlQobWVzc2Fn
ZUlkIDw9IG1heE1lc3NhZ2VJZCk7Ci0gICAgbWVzc2FnZUlkID0gbWVzc2FnZUlkIHwgQ2FsbEJh
Y2tDbGFzc2lmaWVyOjpSZXF1ZXN0IDw8IGNhbGxCYWNrQ2xhc3NpZmllck9mZnNldDsKLSAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fcGVuZGluZ1JlcXVlc3RDb21wbGV0aW9uSGFuZGxlcnMuYWRkKG1l
c3NhZ2VJZCwgV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXR1cm4gbWVzc2FnZUlkOwotfQotCi1SZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXIgQ3JlZGVudGlhbHNNZXNzZW5nZXI6OnRha2VSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXIodWludDY0X3QgbWVzc2FnZUlkKQotewotICAgIHJldHVybiBtX3BlbmRp
bmdSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXJzLnRha2UobWVzc2FnZUlkKTsKLX0KLQotdWludDY0
X3QgQ3JlZGVudGlhbHNNZXNzZW5nZXI6OmFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoUXVlcnlD
b21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIENyZWRl
bnRpYWxzTWVzc2VuZ2VySW50ZXJuYWw7Ci0KLSAgICB1aW50NjRfdCBtZXNzYWdlSWQgPSBtX2Fj
Y3VtdWxhdGVkTWVzc2FnZUlkKys7Ci0gICAgQVNTRVJUKG1lc3NhZ2VJZCA8IG1heE1lc3NhZ2VJ
ZCk7Ci0gICAgbWVzc2FnZUlkID0gbWVzc2FnZUlkIHwgQ2FsbEJhY2tDbGFzc2lmaWVyOjpRdWVy
eSA8PCBjYWxsQmFja0NsYXNzaWZpZXJPZmZzZXQ7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Bl
bmRpbmdRdWVyeUNvbXBsZXRpb25IYW5kbGVycy5hZGQobWVzc2FnZUlkLCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwotICAgIHJldHVybiBtZXNzYWdlSWQ7Ci19Ci0KLVF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIgQ3Jl
ZGVudGlhbHNNZXNzZW5nZXI6OnRha2VRdWVyeUNvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IG1l
c3NhZ2VJZCkKLXsKLSAgICByZXR1cm4gbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMu
dGFrZShtZXNzYWdlSWQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc01lc3Nlbmdlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc01lc3Nlbmdlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjhhZjk1YzE2YWJmZjljYmVlYTE1ODM2NjZi
MDU5NTlhYmJlOGVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlh
bHNNZXNzZW5nZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi0jaW5jbHVkZSAiRXhj
ZXB0aW9uRGF0YS5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGVmZXJyZWRQcm9taXNlOwotCi1zdHJ1Y3Qg
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKLXN0cnVjdCBQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnM7Ci0KLXN0cnVjdCBDcmVhdGlvblJldHVybkJ1bmRsZSB7Ci0g
ICAgQ3JlYXRpb25SZXR1cm5CdW5kbGUoUmVmPEFycmF5QnVmZmVyPiYmIGNyZWRlbnRpYWxJZCwg
UmVmPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KQotICAgICAgICA6IGNyZWRlbnRp
YWxJZChXVEZNb3ZlKGNyZWRlbnRpYWxJZCkpCi0gICAgICAgICwgYXR0ZXN0YXRpb25PYmplY3Qo
V1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdCkpCi0gICAgewotICAgIH0KLQotICAgIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlZGVudGlhbElkOwotICAgIFJlZjxBcnJheUJ1ZmZlcj4gYXR0ZXN0YXRpb25P
YmplY3Q7Ci19Owotc3RydWN0IEFzc2VydGlvblJldHVybkJ1bmRsZSB7Ci0gICAgQXNzZXJ0aW9u
UmV0dXJuQnVuZGxlKFJlZjxBcnJheUJ1ZmZlcj4mJiBjcmVkZW50aWFsSWQsIFJlZjxBcnJheUJ1
ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwg
UmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUpCi0gICAgICAgIDogY3JlZGVudGlhbElkKFdU
Rk1vdmUoY3JlZGVudGlhbElkKSkKLSAgICAgICAgLCBhdXRoZW50aWNhdG9yRGF0YShXVEZNb3Zl
KGF1dGhlbnRpY2F0b3JEYXRhKSkKLSAgICAgICAgLCBzaWduYXR1cmUoV1RGTW92ZShzaWduYXR1
cmUpKQotICAgICAgICAsIHVzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgUmVmPEFycmF5QnVmZmVyPiBjcmVkZW50aWFsSWQ7Ci0gICAgUmVmPEFycmF5
QnVmZmVyPiBhdXRoZW50aWNhdG9yRGF0YTsKLSAgICBSZWY8QXJyYXlCdWZmZXI+IHNpZ25hdHVy
ZTsKLSAgICBSZWY8QXJyYXlCdWZmZXI+IHVzZXJIYW5kbGU7Ci19OwotCi11c2luZyBDcmVhdGlv
bkNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxD
cmVhdGlvblJldHVybkJ1bmRsZT4mJik+OwotdXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVy
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxBc3NlcnRpb25SZXR1cm5CdW5k
bGU+JiYpPjsKLXVzaW5nIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPjsKLQotY2xhc3MgQ3JlZGVudGlhbHNNZXNzZW5nZXIgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8Q3JlZGVudGlhbHNNZXNzZW5nZXI+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcmVkZW50aWFsc01lc3Nlbmdlcik7
Ci1wdWJsaWM6Ci0gICAgQ3JlZGVudGlhbHNNZXNzZW5nZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICAv
LyBTZW5kZXJzLgotICAgIHZpcnR1YWwgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
LCBDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotCi0gICAgLy8gUmVjZWl2ZXJz
LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXhjZXB0aW9uUmVwbHkodWludDY0X3QgbWVzc2Fn
ZUlkLCBjb25zdCBFeGNlcHRpb25EYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIG1ha2VDcmVkZW50
aWFsUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRl
bnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRBc3NlcnRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90
IG1lc3NhZ2VJZCwgYm9vbCkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+Q3JlZGVu
dGlhbHNNZXNzZW5nZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB1aW50NjRf
dCBhZGRDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyKENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIm
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciB0YWtlQ3Jl
YXRpb25Db21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdWlu
dDY0X3QgYWRkUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyKFJlcXVlc3RDb21wbGV0aW9uSGFuZGxl
ciYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIgdGFrZVJl
cXVlc3RDb21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdWlu
dDY0X3QgYWRkUXVlcnlDb21wbGV0aW9uSGFuZGxlcihRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIgdGFrZVF1ZXJ5Q29t
cGxldGlvbkhhbmRsZXIodWludDY0X3QpOwotCi1wcml2YXRlOgotICAgIGVudW0gQ2FsbEJhY2tD
bGFzc2lmaWVyIDogdWludDY0X3QgewotICAgICAgICBDcmVhdGlvbiA9IDB4MDEsCi0gICAgICAg
IFJlcXVlc3QgPSAweDAyLAotICAgICAgICBRdWVyeSA9IDB4MDMsCi0gICAgfTsKLSAgICAvLyBU
aGUgbW9zdCBzaWduaWZpY2FudCBieXRlIGlzIHJlc2VydmVkIGFzIGNhbGxiYWNrIGNsYXNzaWZp
ZXIuCi0gICAgdWludDY0X3QgbV9hY2N1bXVsYXRlZE1lc3NhZ2VJZCB7IDEgfTsKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyPiBtX3BlbmRpbmdDcmVhdGlv
bkNvbXBsZXRpb25IYW5kbGVyczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXI+IG1fcGVuZGluZ1JlcXVlc3RDb21wbGV0aW9uSGFuZGxlcnM7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgUXVlcnlDb21wbGV0aW9uSGFuZGxlcj4gbV9wZW5kaW5nUXVlcnlDb21w
bGV0aW9uSGFuZGxlcnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzJhMmNiMjM3ZDIwYmE0YmVjOTgwYjE0NDhm
NGQ5ZmU2YjViNmQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLUF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBjbGllbnREYXRhSlNPTiwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgc2ln
bmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSkKLSAgICA6IEF1dGhlbnRp
Y2F0b3JSZXNwb25zZShXVEZNb3ZlKGNsaWVudERhdGFKU09OKSkKLSAgICAsIG1fYXV0aGVudGlj
YXRvckRhdGEoV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSkpCi0gICAgLCBtX3NpZ25hdHVyZShX
VEZNb3ZlKHNpZ25hdHVyZSkpCi0gICAgLCBtX3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxl
KSkKLXsKLX0KLQotQXJyYXlCdWZmZXIqIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6
YXV0aGVudGljYXRvckRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX2F1dGhlbnRpY2F0b3JE
YXRhLmdldCgpOwotfQotCi1BcnJheUJ1ZmZlciogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlOjpzaWduYXR1cmUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpZ25hdHVyZS5nZXQoKTsK
LX0KLQotQXJyYXlCdWZmZXIqIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6dXNlckhh
bmRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdXNlckhhbmRsZS5nZXQoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDQ0NTFmMjUzMWE0MzkzZTE4OThlZDZjZjMw
YTJkZThkOTk0YTVlNTAuLmNmMjhjMWFjYWUxOWNjZWUzNzIyZjRmMDI5MjIyOTExOTgxNGQxYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMzMsMjUgKzMzLDMxIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
IDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgY2xpZW50RGF0YUpTT04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9y
RGF0YSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIHVzZXJIYW5kbGUpCisgICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpTT04sIFJlZjxBcnJh
eUJ1ZmZlcj4mJiBhdXRoZW50aWNhdG9yRGF0YSwgUmVmPEFycmF5QnVmZmVyPiYmIHNpZ25hdHVy
ZSwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShjbGll
bnREYXRhSlNPTiksIFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCBXVEZNb3ZlKHNpZ25hdHVy
ZSksIFdURk1vdmUodXNlckhhbmRsZSkpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5BdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoKSA9IGRlZmF1bHQ7CiAKLSAgICBBcnJheUJ1ZmZlciog
YXV0aGVudGljYXRvckRhdGEoKSBjb25zdDsKLSAgICBBcnJheUJ1ZmZlciogc2lnbmF0dXJlKCkg
Y29uc3Q7Ci0gICAgQXJyYXlCdWZmZXIqIHVzZXJIYW5kbGUoKSBjb25zdDsKKyAgICBBcnJheUJ1
ZmZlciogYXV0aGVudGljYXRvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRpY2F0b3JE
YXRhLnB0cigpOyB9CisgICAgQXJyYXlCdWZmZXIqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2lnbmF0dXJlLnB0cigpOyB9CisgICAgQXJyYXlCdWZmZXIqIHVzZXJIYW5kbGUoKSBjb25z
dCB7IHJldHVybiBtX3VzZXJIYW5kbGUucHRyKCk7IH0KIAogcHJpdmF0ZToKLSAgICBBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGNsaWVudERhdGFK
U09OLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKTsK
KyAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIGNs
aWVudERhdGFKU09OLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxB
cnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlKQor
ICAgICAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKGNsaWVudERhdGFKU09OKSkK
KyAgICAgICAgLCBtX2F1dGhlbnRpY2F0b3JEYXRhKFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEp
KQorICAgICAgICAsIG1fc2lnbmF0dXJlKFdURk1vdmUoc2lnbmF0dXJlKSkKKyAgICAgICAgLCBt
X3VzZXJIYW5kbGUoV1RGTW92ZSh1c2VySGFuZGxlKSkKKyAgICB7CisgICAgfQogCiAgICAgVHlw
ZSB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6QXNzZXJ0aW9uOyB9CiAKLSAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXV0aGVudGljYXRvckRhdGE7Ci0gICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBtX3NpZ25hdHVyZTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fdXNlckhhbmRs
ZTsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IG1fYXV0aGVudGljYXRvckRhdGE7CisgICAgUmVmPEFy
cmF5QnVmZmVyPiBtX3NpZ25hdHVyZTsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IG1fdXNlckhhbmRs
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMDZjNDM4NmYy
M2YxMDkzNjYwMjI5Mjk4NTkxMTdjNzFjYTViNDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
OjpBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
Y2xpZW50RGF0YUpTT04sIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkK
LSAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKGNsaWVudERhdGFKU09OKSkKLSAg
ICAsIG1fYXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdHRlc3RhdGlvbk9iamVjdCkpCi17Ci19
Ci0KLUFycmF5QnVmZmVyKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6YXR0ZXN0
YXRpb25PYmplY3QoKSBjb25zdAotewotICAgIHJldHVybiBtX2F0dGVzdGF0aW9uT2JqZWN0Lmdl
dCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oCmluZGV4IDQ4MDcwN2I2
ZjcxZjI1ODMyOGQ5Njg3MjBiMzhkMGRmZTM4MTdhZGMuLjA1MzdkOTdjM2JkMjA2ZjlmYmQyNzE2
ZWQzNTQwOWI2N2UzZWU2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmgK
QEAgLTMzLDIxICszMywyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JSZXNwb25zZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZT4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBjbGllbnREYXRhSlNPTiwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KQorICAgIHN0YXRpYyBSZWY8QXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgY2xpZW50
RGF0YUpTT04sIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlKFdURk1vdmUoY2xpZW50RGF0YUpTT04pLCBXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSkp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
KCkgPSBkZWZhdWx0OwogCi0gICAgQXJyYXlCdWZmZXIqIGF0dGVzdGF0aW9uT2JqZWN0KCkgY29u
c3Q7CisgICAgQXJyYXlCdWZmZXIqIGF0dGVzdGF0aW9uT2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9hdHRlc3RhdGlvbk9iamVjdC5wdHIoKTsgfQogCiBwcml2YXRlOgotICAgIEF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBjbGllbnREYXRhSlNP
TiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICBBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYgY2xpZW50RGF0YUpT
T04sIFJlZjxBcnJheUJ1ZmZlcj4mJiBhdHRlc3RhdGlvbk9iamVjdCkKKyAgICAgICAgOiBBdXRo
ZW50aWNhdG9yUmVzcG9uc2UoV1RGTW92ZShjbGllbnREYXRhSlNPTikpCisgICAgICAgICwgbV9h
dHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF0dGVzdGF0aW9uT2JqZWN0KSkKKyAgICB7CisgICAg
fQogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6QXR0ZXN0YXRp
b247IH0KIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9hdHRlc3RhdGlvbk9iamVjdDsKKyAg
ICBSZWY8QXJyYXlCdWZmZXI+IG1fYXR0ZXN0YXRpb25PYmplY3Q7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q0YTUxZmQy
YWU5ZGZmZTdkMjAxMzc4NTgwMmQwZmU2ZWZmZTVmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApA
QCAtMCwwICsxLDI2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4p
CisKKyNpbmNsdWRlICJBYm9ydFNpZ25hbC5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCisjaW5j
bHVkZSAiSlNCYXNpY0NyZWRlbnRpYWwuaCIKKyNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFs
LmgiCisjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIgorI2lu
Y2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgiCisjaW5jbHVkZSAiUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNp
bmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+Cisj
aW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgQXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWwgeworCitlbnVtIGNs
YXNzIENsaWVudERhdGFUeXBlIHsKKyAgICBDcmVhdGUsCisgICAgR2V0Cit9OworCisvLyBGSVhN
RSgxODE5NDgpOiBBZGQgdG9rZW4gYmluZGluZyBJRCBhbmQgZXh0ZW5zaW9ucy4KK3N0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IHByb2R1Y2VDbGllbnREYXRhSnNvbihDbGllbnREYXRhVHlwZSB0eXBl
LCBjb25zdCBCdWZmZXJTb3VyY2UmIGNoYWxsZW5nZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9y
aWdpbikKK3sKKyAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBDbGllbnREYXRhVHlwZTo6Q3JlYXRlOgorICAgICAg
ICBvYmplY3QtPnNldFN0cmluZygidHlwZSJfcywgIndlYmF1dGhuLmNyZWF0ZSJfcyk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ2xpZW50RGF0YVR5cGU6OkdldDoKKyAgICAgICAgb2JqZWN0
LT5zZXRTdHJpbmcoInR5cGUiX3MsICJ3ZWJhdXRobi5nZXQiX3MpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgb2JqZWN0LT5zZXRTdHJpbmcoImNoYWxsZW5nZSJfcywgV1RGOjpiYXNlNjRV
UkxFbmNvZGUoY2hhbGxlbmdlLmRhdGEoKSwgY2hhbGxlbmdlLmxlbmd0aCgpKSk7CisgICAgb2Jq
ZWN0LT5zZXRTdHJpbmcoIm9yaWdpbiJfcywgb3JpZ2luLnRvUmF3U3RyaW5nKCkpOworICAgIC8v
IEZJWE1FOiBUaGlzIG1pZ2h0IGJlIHBsYXRmb3JtIGRlcGVuZGVudC4KKyAgICBvYmplY3QtPnNl
dFN0cmluZygiaGFzaEFsZ29yaXRobSJfcywgIlNIQS0yNTYiX3MpOworCisgICAgYXV0byB1dGY4
SlNPTlN0cmluZyA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOworICAgIHJldHVybiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHV0ZjhKU09OU3RyaW5nLmRhdGEoKSwgdXRmOEpTT05TdHJpbmcu
bGVuZ3RoKCkpOworfQorCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHByb2R1Y2VDbGllbnREYXRh
SnNvbkhhc2goY29uc3QgQXJyYXlCdWZmZXImIGNsaWVudERhdGFKc29uKQoreworICAgIC8vIEZJ
WE1FOiBUaGlzIG1pZ2h0IGJlIHBsYXRmb3JtIGRlcGVuZGVudC4KKyAgICBhdXRvIGNyeXB0byA9
IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzI1Nik7CisgICAgY3J5cHRvLT5hZGRCeXRlcyhjbGllbnREYXRhSnNvbi5kYXRhKCksIGNs
aWVudERhdGFKc29uLmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIGNyeXB0by0+Y29tcHV0ZUhh
c2goKTsKK30KKworLy8gRklYTUUoMTgxOTQ3KTogV2Ugc2hvdWxkIHByb2JhYmx5IHRyaW0gdGlt
ZU91dEluTXMgdG8gc29tZSBtYXggYWxsb3dhYmxlIG51bWJlci4KK3N0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8VGltZXI+IGluaXRUaW1lb3V0VGltZXIoc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBsb25n
PiB0aW1lT3V0SW5NcywgY29uc3QgQ3JlZGVudGlhbFByb21pc2UmIHByb21pc2UpCit7CisgICAg
aWYgKCF0aW1lT3V0SW5NcykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHRp
bWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oW3Byb21pc2UgPSBwcm9taXNlXSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90QWxsb3dlZEVycm9y
LCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iX3MgfSk7CisgICAgfSk7CisgICAgdGltZXItPnN0YXJ0
T25lU2hvdChTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKCp0aW1lT3V0SW5NcykpOworICAgIHJl
dHVybiB0aW1lcjsKK30KKworc3RhdGljIGJvb2wgZGlkVGltZW91dFRpbWVyRmlyZShUaW1lciog
dGltZXIpCit7CisgICAgaWYgKCF0aW1lcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghdGltZXItPmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHRpbWVyLT5z
dG9wKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JJbnRlcm5hbAorCitBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcihzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50PiYmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KFdURk1vdmUoY2xpZW50KSkKK3sK
K30KKwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OnNldENsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiYmIGNsaWVudCkKK3sKKyAgICBt
X2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKK30KKwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3I6OmNyZWF0ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3JpZ2luLCBjb25zdCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBib29sIHNhbWVPcmln
aW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRl
bnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgQXV0
aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIGlt
cGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNjcmVhdGVDcmVkZW50aWFs
IGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KKyAgICAvLyBGSVhNRTogRXh0ZW5zaW9ucyBhcmUgbm90
IHN1cHBvcnRlZCB5ZXQuIFNraXAgU3RlcCAxMS0xMi4KKyAgICAvLyBTdGVwIDEsIDMsIDE2IGFy
ZSBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIuCisgICAgLy8gU3RlcCAyLgorICAgIGlmICghc2FtZU9y
aWdpbldpdGhBbmNlc3RvcnMpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsg
Tm90QWxsb3dlZEVycm9yLCAiVGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgaXMgbm90IHRoZSBz
YW1lIGFzIGl0cyBhbmNlc3RvcnMuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLy8gU3RlcCA0ICYgMTcuCisgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiB0aW1lb3V0VGlt
ZXIgPSBpbml0VGltZW91dFRpbWVyKG9wdGlvbnMudGltZW91dCwgcHJvbWlzZSk7CisKKyAgICAv
LyBTdGVwIDUtNy4KKyAgICAvLyBGSVhNRSgxODE5NTApOiBXZSBsYWNrIGZ1bmRhbWVudGFsIHN1
cHBvcnQgZnJvbSBTZWN1cml0eU9yaWdpbiB0byBkZXRlcm1pbmUgaWYgYSBob3N0IGlzIGEgdmFs
aWQgZG9tYWluIG9yIG5vdC4KKyAgICAvLyBTdGVwIDYgaXMgdGhlcmVmb3JlIHNraXBwZWQuIEFs
c28sIHdlIGxhY2sgdGhlIHN1cHBvcnQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBkb21haW4gaXMg
YSByZWdpc3RyYWJsZQorICAgIC8vIGRvbWFpbiBzdWZmaXggb2YgYW5vdGhlciBkb21haW4uIEhl
bmNlIHJlc3RyaWN0IHRoZSBjb21wYXJpc29uIHRvIGVxdWFsIGluIFN0ZXAgNy4KKyAgICBpZiAo
IW9wdGlvbnMucnAuaWQuaXNFbXB0eSgpICYmIGNhbGxlck9yaWdpbi5ob3N0KCkgIT0gb3B0aW9u
cy5ycC5pZCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBTZWN1cml0eUVy
cm9yLCAiVGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgaXMgbm90IGEgcmVnaXN0cmFibGUgZG9t
YWluIHN1ZmZpeCBvZiB0aGUgcHJvdmlkZWQgUlAgSUQuIl9zIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChvcHRpb25zLnJwLmlkLmlzRW1wdHkoKSkKKyAgICAgICAgb3B0aW9u
cy5ycC5pZCA9IGNhbGxlck9yaWdpbi5ob3N0KCk7CisKKyAgICAvLyBTdGVwIDgtMTAuCisgICAg
Ly8gTW9zdCBvZiB0aGUgam9icyBhcmUgZG9uZSBieSBiaW5kaW5ncy4gSG93ZXZlciwgd2UgY2Fu
J3Qga25vdyBpZiB0aGUgSlNWYWx1ZSBvZiBvcHRpb25zLnB1YktleUNyZWRQYXJhbXMKKyAgICAv
LyBpcyBlbXB0eSBvciBub3QuIFJldHVybiBOb3RTdXBwb3J0ZWRFcnJvciBhcyBsb25nIGFzIGl0
IGlzIGVtcHR5LgorICAgIGlmIChvcHRpb25zLnB1YktleUNyZWRQYXJhbXMuaXNFbXB0eSgpKSB7
CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAi
Tm8gZGVzaXJlZCBwcm9wZXJ0aWVzIG9mIHRoZSB0byBiZSBjcmVhdGVkIGNyZWRlbnRpYWwgYXJl
IHByb3ZpZGVkLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFN0ZXAg
MTMtMTUuCisgICAgYXV0byBjbGllbnREYXRhSnNvbiA9IHByb2R1Y2VDbGllbnREYXRhSnNvbihD
bGllbnREYXRhVHlwZTo6Q3JlYXRlLCBvcHRpb25zLmNoYWxsZW5nZSwgY2FsbGVyT3JpZ2luKTsK
KyAgICBhdXRvIGNsaWVudERhdGFKc29uSGFzaCA9IHByb2R1Y2VDbGllbnREYXRhSnNvbkhhc2go
Y2xpZW50RGF0YUpzb24pOworCisgICAgLy8gU3RlcCAxOC0yMS4KKyAgICAvLyBPbmx5IHBsYXRm
b3JtIGF0dGFjaG1lbnRzIHdpbGwgYmUgc3VwcG9ydGVkIGF0IHRoaXMgc3RhZ2UuIEFzc3VtaW5n
IG9uZSBhdXRoZW50aWNhdG9yIHBlciBkZXZpY2UuCisgICAgLy8gQWxzbywgcmVzaWRlbnQga2V5
cywgdXNlciB2ZXJpZmljYXRpb25zIGFuZCBkaXJlY3QgYXR0ZXN0YXRpb24gYXJlIGVuZm9yY2Vk
IGF0IHRoaXMgdGFnZS4KKyAgICAvLyBGb3IgYmV0dGVyIHBlcmZvcm1hbmNlLCB0cmFuc3BvcnRz
IG9mIG9wdGlvbnMuZXhjbHVkZUNyZWRlbnRpYWxzIGFyZSBjaGVja2VkIGluIExvY2FsQXV0aGVu
dGljYXRvci4KKyAgICBpZiAoIW1fY2xpZW50KSAgeworICAgICAgICBwcm9taXNlLnJlamVjdChF
eGNlcHRpb24geyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBb
Y2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKSwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIHRpbWVvdXRUaW1lciA9IFdURk1vdmUodGltZW91dFRpbWVyKSwgYWJvcnRT
aWduYWwgPSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWxEYXRhJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRp
b24pIG11dGFibGUgeworICAgICAgICBpZiAoZGlkVGltZW91dFRpbWVyRmlyZSh0aW1lb3V0VGlt
ZXIuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoYWJvcnRTaWduYWwg
JiYgYWJvcnRTaWduYWwtPmFib3J0ZWQoKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwuIl9zIH0pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGF0YS5jbGllbnREYXRh
SlNPTiA9IFdURk1vdmUoY2xpZW50RGF0YUpzb24pOworICAgICAgICBpZiAoYXV0byBwdWJsaWNL
ZXlDcmVkZW50aWFsID0gUHVibGljS2V5Q3JlZGVudGlhbDo6dHJ5Q3JlYXRlKGRhdGEpKSB7Cisg
ICAgICAgICAgICBwcm9taXNlLnJlc29sdmUocHVibGljS2V5Q3JlZGVudGlhbC5nZXQoKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCFleGNlcHRpb24u
bWVzc2FnZS5pc051bGwoKSk7CisgICAgICAgIHByb21pc2UucmVqZWN0KGV4Y2VwdGlvbi50b0V4
Y2VwdGlvbigpKTsKKyAgICB9OworICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNo
ZWQgYW5kIGhhbmRsZWQgaW4gdGhlIG1lc3Nlbmdlci4KKyAgICBtX2NsaWVudC0+bWFrZUNyZWRl
bnRpYWwoY2xpZW50RGF0YUpzb25IYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21F
eHRlcm5hbFNvdXJjZShjb25zdCBTZWN1cml0eU9yaWdpbiYgY2FsbGVyT3JpZ2luLCBjb25zdCBQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdp
bldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVu
dGlhbFByb21pc2UmJiBwcm9taXNlKSBjb25zdAoreworICAgIHVzaW5nIG5hbWVzcGFjZSBBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1w
bGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2NyZWF0ZUNyZWRlbnRpYWwg
YXMgb2YgNSBEZWNlbWJlciAyMDE3LgorICAgIC8vIEZJWE1FOiBFeHRlbnNpb25zIGFyZSBub3Qg
c3VwcG9ydGVkIHlldC4gU2tpcCBTdGVwIDgtOS4KKyAgICAvLyBTdGVwIDEsIDMsIDEzIGFyZSBo
YW5kbGVkIGJ5IHRoZSBjYWxsZXIuCisgICAgLy8gU3RlcCAyLgorICAgIGlmICghc2FtZU9yaWdp
bldpdGhBbmNlc3RvcnMpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90
QWxsb3dlZEVycm9yLCAiVGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgaXMgbm90IHRoZSBzYW1l
IGFzIGl0cyBhbmNlc3RvcnMuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gU3RlcCA0ICYgMTYuCisgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiB0aW1lb3V0VGltZXIg
PSBpbml0VGltZW91dFRpbWVyKG9wdGlvbnMudGltZW91dCwgcHJvbWlzZSk7CisKKyAgICAvLyBT
dGVwIDUtNy4KKyAgICAvLyBGSVhNRSgxODE5NTApOiBXZSBsYWNrIGZ1bmRhbWVudGFsIHN1cHBv
cnQgZnJvbSBTZWN1cml0eU9yaWdpbiB0byBkZXRlcm1pbmUgaWYgYSBob3N0IGlzIGEgdmFsaWQg
ZG9tYWluIG9yIG5vdC4KKyAgICAvLyBTdGVwIDYgaXMgdGhlcmVmb3JlIHNraXBwZWQuIEFsc28s
IHdlIGxhY2sgdGhlIHN1cHBvcnQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBkb21haW4gaXMgYSBy
ZWdpc3RyYWJsZQorICAgIC8vIGRvbWFpbiBzdWZmaXggb2YgYW5vdGhlciBkb21haW4uIEhlbmNl
IHJlc3RyaWN0IHRoZSBjb21wYXJpc29uIHRvIGVxdWFsIGluIFN0ZXAgNy4KKyAgICBpZiAoIW9w
dGlvbnMucnBJZC5pc0VtcHR5KCkgJiYgY2FsbGVyT3JpZ2luLmhvc3QoKSAhPSBvcHRpb25zLnJw
SWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwg
IlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCBhIHJlZ2lzdHJhYmxlIGRvbWFpbiBz
dWZmaXggb2YgdGhlIHByb3ZpZGVkIFJQIElELiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAob3B0aW9ucy5ycElkLmlzRW1wdHkoKSkKKyAgICAgICAgb3B0aW9ucy5ycElk
ID0gY2FsbGVyT3JpZ2luLmhvc3QoKTsKKworICAgIC8vIFN0ZXAgMTAtMTIuCisgICAgYXV0byBj
bGllbnREYXRhSnNvbiA9IHByb2R1Y2VDbGllbnREYXRhSnNvbihDbGllbnREYXRhVHlwZTo6R2V0
LCBvcHRpb25zLmNoYWxsZW5nZSwgY2FsbGVyT3JpZ2luKTsKKyAgICBhdXRvIGNsaWVudERhdGFK
c29uSGFzaCA9IHByb2R1Y2VDbGllbnREYXRhSnNvbkhhc2goY2xpZW50RGF0YUpzb24pOworCisg
ICAgLy8gU3RlcCAxNC0xNSwgMTctMTkuCisgICAgLy8gT25seSBwbGF0Zm9ybSBhdHRhY2htZW50
cyB3aWxsIGJlIHN1cHBvcnRlZCBhdCB0aGlzIHN0YWdlLiBBc3N1bWluZyBvbmUgYXV0aGVudGlj
YXRvciBwZXIgZGV2aWNlLgorICAgIC8vIEFsc28sIHJlc2lkZW50IGtleXMsIHVzZXIgdmVyaWZp
Y2F0aW9ucyBhbmQgZGlyZWN0IGF0dGVzdGF0aW9uIGFyZSBlbmZvcmNlZCBhdCB0aGlzIHRhZ2Uu
CisgICAgLy8gRm9yIGJldHRlciBwZXJmb3JtYW5jZSwgZmlsdGVyaW5nIG9mIG9wdGlvbnMuYWxs
b3dDcmVkZW50aWFscyBpcyBkb25lIGluIExvY2FsQXV0aGVudGljYXRvci4KKyAgICBpZiAoIW1f
Y2xpZW50KSAgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBVbmtub3duRXJy
b3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZN
b3ZlKGNsaWVudERhdGFKc29uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHRpbWVvdXRU
aW1lciA9IFdURk1vdmUodGltZW91dFRpbWVyKSwgYWJvcnRTaWduYWwgPSBXVEZNb3ZlKGFib3J0
U2lnbmFsKV0gKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhLCBj
b25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgeworICAgICAg
ICBpZiAoZGlkVGltZW91dFRpbWVyRmlyZSh0aW1lb3V0VGltZXIuZ2V0KCkpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAoYWJvcnRTaWduYWwgJiYgYWJvcnRTaWduYWwtPmFib3J0
ZWQoKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRFcnJv
ciwgIkFib3J0ZWQgYnkgQWJvcnRTaWduYWwuIl9zIH0pOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgZGF0YS5jbGllbnREYXRhSlNPTiA9IFdURk1vdmUoY2xpZW50
RGF0YUpzb24pOworICAgICAgICBpZiAoYXV0byBwdWJsaWNLZXlDcmVkZW50aWFsID0gUHVibGlj
S2V5Q3JlZGVudGlhbDo6dHJ5Q3JlYXRlKGRhdGEpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJl
c29sdmUocHVibGljS2V5Q3JlZGVudGlhbC5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCFleGNlcHRpb24ubWVzc2FnZS5pc051bGwoKSk7Cisg
ICAgICAgIHByb21pc2UucmVqZWN0KGV4Y2VwdGlvbi50b0V4Y2VwdGlvbigpKTsKKyAgICB9Owor
ICAgIC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQgYW5kIGhhbmRsZWQgaW4gdGhl
IG1lc3Nlbmdlci4KKyAgICBtX2NsaWVudC0+Z2V0QXNzZXJ0aW9uKGNsaWVudERhdGFKc29uSGFz
aCwgb3B0aW9ucywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9y
QXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpIGNvbnN0
Cit7CisgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui93ZWJhdXRobi8jaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxl
CisgICAgLy8gYXMgb2YgNSBEZWNlbWJlciAyMDE3LgorICAgIGlmICghbV9jbGllbnQpICB7Cisg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlVua25vd24g
aW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RklYTUUoMTgyNzY3KTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vcmUgb24gdGhlIGFzc2Vzc21lbnQg
b2YgdGhlIHJldHVybiB2YWx1ZS4gUmlnaHQgbm93LCB3ZSByZXR1cm4gdHJ1ZS9mYWxzZQorICAg
IC8vIGltbWVkaWF0ZWx5IGFjY29yZGluZyB0byBwbGF0Zm9ybSBzcGVjaWZpYyBwcm9jZWR1cmVz
LgorICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldIChib29sIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShyZXN1
bHQpOworICAgIH07CisgICAgLy8gQXN5bmMgb3BlcmF0aW9uIGFyZSBkaXNwYXRjaGVkIGFuZCBo
YW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCisgICAgbV9jbGllbnQtPmlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWM0OWRiNTIzYjkzNmIwYTRlYzIy
MTA0MWI3N2RhN2NjMTQ3OGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEFib3J0U2lnbmFsOworY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50
OworY2xhc3MgQmFzaWNDcmVkZW50aWFsOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKK3N0cnVj
dCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOworc3RydWN0IFB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKKwordXNpbmcgQ3JlZGVudGlhbFByb21pc2UgPSBET01Q
cm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEJhc2ljQ3JlZGVudGlhbD4+
PjsKKworY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IpOworcHVibGljOgorICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcihzdGQ6OnVuaXF1ZV9wdHI8
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xp
ZW50PiYmKTsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgc3RhdGlj
IG1ldGhvZHMgb2YgUHVibGljS2V5Q3JlZGVudGlhbC4KKyAgICB2b2lkIGNyZWF0ZShjb25zdCBT
ZWN1cml0eU9yaWdpbiYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
LCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENy
ZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0OworICAgIHZvaWQgZGlzY292ZXJGcm9tRXh0ZXJuYWxT
b3VyY2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMmLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRT
aWduYWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0OworICAgIHZvaWQgaXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJ
RExCb29sZWFuPiYmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNs
aWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBjODBjYTc3Y2Y3MjFlMDgzYjY0NjBkMGI5NmUxZmRiODFm
NDZmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmNwcApAQCAtMCwwICsxLDc2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudC5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIlB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ojp+QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50
KCkKK3sKKyAgICAvLyBKdXN0IHRvIGNhbGwgaGFuZGxlcnMgdG8gYXZvaWQgYW55IGFzc2VydGlv
biBmYWlsdXJlcy4KKyAgICBpZiAobV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIpCisgICAgICAg
IG1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyBOb3RBbGxvd2VkRXJyb3IsICJPcGVy
YXRpb24gdGltZWQgb3V0LiJfcyB9KTsKKyAgICBmb3IgKGF1dG8gaXRyID0gbV9wZW5kaW5nUXVl
cnlDb21wbGV0aW9uSGFuZGxlcnMuYmVnaW4oKTsgaXRyICE9ICBtX3BlbmRpbmdRdWVyeUNvbXBs
ZXRpb25IYW5kbGVycy5lbmQoKTsgKytpdHIpCisgICAgICAgIGl0ci0+dmFsdWUoZmFsc2UpOwor
fQorCit2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDo6cmVxdWVzdFJlcGx5KGNv
bnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhLCBjb25zdCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pCit7CisgICAgbV9wZW5kaW5nQ29tcGxldGlvbkhh
bmRsZXIoZGF0YSwgZXhjZXB0aW9uKTsKK30KKwordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQ6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJl
cGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCByZXN1bHQpCit7CisgICAgYXV0byBoYW5kbGVy
ID0gbV9wZW5kaW5nUXVlcnlDb21wbGV0aW9uSGFuZGxlcnMudGFrZShtZXNzYWdlSWQpOworICAg
IGhhbmRsZXIocmVzdWx0KTsKK30KKworYm9vbCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQ6OnNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIm
JiBoYW5kbGVyKQoreworICAgIGlmIChtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcikgeworICAg
ICAgICBoYW5kbGVyKHsgfSwgeyBOb3RBbGxvd2VkRXJyb3IsICJBIHJlcXVlc3QgaXMgcGVuZGlu
Zy4iX3MgfSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX3BlbmRpbmdD
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3VpbnQ2NF90IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDo6YWRkUXVlcnlDb21w
bGV0aW9uSGFuZGxlcihRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICB1
aW50NjRfdCBtZXNzYWdlSWQgPSBtX2FjY3VtdWxhdGVkTWVzc2FnZUlkKys7CisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3BlbmRpbmdRdWVyeUNvbXBsZXRpb25IYW5kbGVycy5hZGQobWVzc2FnZUlk
LCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOworICAgIHJldHVybiBtZXNzYWdlSWQ7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmEzZDkxZDY1MGY0MGQ2NDZiMzFmNjFhMDY4
MWVlNTU1ZWJhMTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaApAQCAtMCwwICsxLDc2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisj
aW5jbHVkZSAiRXhjZXB0aW9uRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZWZlcnJlZFByb21pc2U7CisKK3N0cnVj
dCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOworc3RydWN0IFB1YmxpY0tleUNy
ZWRlbnRpYWxEYXRhOworc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsK
KwordXNpbmcgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYsIGNvbnN0IFdlYkNvcmU6
OkV4Y2VwdGlvbkRhdGEmKT47Cit1c2luZyBRdWVyeUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT47CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JDbGllbnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpOwor
cHVibGljOgorICAgIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCgpID0gZGVmYXVsdDsK
KyAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQoKTsKKworICAgIC8v
IFNlbmRlcnMuCisgICAgdmlydHVhbCB2b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYs
IFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEFz
c2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWls
YWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKworICAgIC8vIFJlY2VpdmVycy4K
KyAgICB2b2lkIHJlcXVlc3RSZXBseShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKTsKKyAgICB2b2lkIGlzVXNlclZl
cmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1lc3Nh
Z2VJZCwgYm9vbCk7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBPbmx5IG9uZSByZXF1ZXN0IGlzIGFs
bG93ZWQgYXQgb25lIHRpbWUuIEl0IHJldHVybnMgZmFsc2Ugd2hlbmV2ZXIgdGhlcmUgaXMgYW4g
ZXhpc3RpbmcgcGVuZGluZyByZXF1ZXN0LgorICAgIC8vIEFuZCBpbnZva2VzIHRoZSBwcm92aWRl
ZCBoYW5kbGVyIHdpdGggTm90QWxsb3dlZEVycm9yLgorICAgIGJvb2wgc2V0UmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyKFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB1aW50NjRfdCBh
ZGRRdWVyeUNvbXBsZXRpb25IYW5kbGVyKFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJik7CisKK3By
aXZhdGU6CisgICAgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyIG1fcGVuZGluZ0NvbXBsZXRpb25I
YW5kbGVyOworICAgIHVpbnQ2NF90IG1fYWNjdW11bGF0ZWRNZXNzYWdlSWQgeyAxIH07CisgICAg
SGFzaE1hcDx1aW50NjRfdCwgUXVlcnlDb21wbGV0aW9uSGFuZGxlcj4gbV9wZW5kaW5nUXVlcnlD
b21wbGV0aW9uSGFuZGxlcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTlkNjAxNjIxZjE5MTE3OTViMTdlNGRlNzY2ZmQ2Mzk2OTZmNjE1NC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDI2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQot
Ci0jaW5jbHVkZSAiQWJvcnRTaWduYWwuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZS5oIgotI2luY2x1ZGUgIkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmgiCi0jaW5jbHVkZSAiSlNCYXNp
Y0NyZWRlbnRpYWwuaCIKLSNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsLmgiCi0jaW5jbHVk
ZSAiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIgotI2luY2x1ZGUgIlB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2Vz
dC5oPgotI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JNYW5hZ2VySW50ZXJuYWwgewotCi1lbnVt
IGNsYXNzIENsaWVudERhdGFUeXBlIHsKLSAgICBDcmVhdGUsCi0gICAgR2V0Ci19OwotCi0vLyBG
SVhNRSgxODE5NDgpOiBBZGQgdG9rZW4gYmluZGluZyBJRCBhbmQgZXh0ZW5zaW9ucy4KLXN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IHByb2R1Y2VDbGllbnREYXRhSnNvbihDbGllbnREYXRhVHlwZSB0
eXBlLCBjb25zdCBCdWZmZXJTb3VyY2UmIGNoYWxsZW5nZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbikKLXsKLSAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0g
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDbGllbnREYXRhVHlwZTo6Q3JlYXRlOgotICAg
ICAgICBvYmplY3QtPnNldFN0cmluZygidHlwZSJfcywgIndlYmF1dGhuLmNyZWF0ZSJfcyk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2xpZW50RGF0YVR5cGU6OkdldDoKLSAgICAgICAgb2Jq
ZWN0LT5zZXRTdHJpbmcoInR5cGUiX3MsICJ3ZWJhdXRobi5nZXQiX3MpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImNoYWxsZW5nZSJfcywgV1RGOjpiYXNl
NjRVUkxFbmNvZGUoY2hhbGxlbmdlLmRhdGEoKSwgY2hhbGxlbmdlLmxlbmd0aCgpKSk7Ci0gICAg
b2JqZWN0LT5zZXRTdHJpbmcoIm9yaWdpbiJfcywgb3JpZ2luLnRvUmF3U3RyaW5nKCkpOwotICAg
IC8vIEZJWE1FOiBUaGlzIG1pZ2h0IGJlIHBsYXRmb3JtIGRlcGVuZGVudC4KLSAgICBvYmplY3Qt
PnNldFN0cmluZygiaGFzaEFsZ29yaXRobSJfcywgIlNIQS0yNTYiX3MpOwotCi0gICAgYXV0byB1
dGY4SlNPTlN0cmluZyA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIHJldHVy
biBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHV0ZjhKU09OU3RyaW5nLmRhdGEoKSwgdXRmOEpTT05TdHJp
bmcubGVuZ3RoKCkpOwotfQotCi1zdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHByb2R1Y2VDbGllbnRE
YXRhSnNvbkhhc2goY29uc3QgQXJyYXlCdWZmZXImIGNsaWVudERhdGFKc29uKQotewotICAgIC8v
IEZJWE1FOiBUaGlzIG1pZ2h0IGJlIHBsYXRmb3JtIGRlcGVuZGVudC4KLSAgICBhdXRvIGNyeXB0
byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1Nik7Ci0gICAgY3J5cHRvLT5hZGRCeXRlcyhjbGllbnREYXRhSnNvbi5kYXRhKCks
IGNsaWVudERhdGFKc29uLmJ5dGVMZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGNyeXB0by0+Y29tcHV0
ZUhhc2goKTsKLX0KLQotLy8gRklYTUUoMTgxOTQ3KTogV2Ugc2hvdWxkIHByb2JhYmx5IHRyaW0g
dGltZU91dEluTXMgdG8gc29tZSBtYXggYWxsb3dhYmxlIG51bWJlci4KLXN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8VGltZXI+IGluaXRUaW1lb3V0VGltZXIoc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBs
b25nPiB0aW1lT3V0SW5NcywgY29uc3QgQ3JlZGVudGlhbFByb21pc2UmIHByb21pc2UpCi17Ci0g
ICAgaWYgKCF0aW1lT3V0SW5NcykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRv
IHRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oW3Byb21pc2UgPSBwcm9taXNlXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90QWxsb3dlZEVy
cm9yLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iX3MgfSk7Ci0gICAgfSk7Ci0gICAgdGltZXItPnN0
YXJ0T25lU2hvdChTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKCp0aW1lT3V0SW5NcykpOwotICAg
IHJldHVybiB0aW1lcjsKLX0KLQotc3RhdGljIGJvb2wgZGlkVGltZW91dFRpbWVyRmlyZShUaW1l
ciogdGltZXIpCi17Ci0gICAgaWYgKCF0aW1lcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghdGltZXItPmlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHRpbWVy
LT5zdG9wKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBBdXRoZW50
aWNhdG9yTWFuYWdlckludGVybmFsCi0KLUF1dGhlbnRpY2F0b3JNYW5hZ2VyJiBBdXRoZW50aWNh
dG9yTWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdXRoZW50aWNhdG9yTWFuYWdlcj4gYXV0aGVudGlj
YXRvcjsKLSAgICByZXR1cm4gYXV0aGVudGljYXRvcjsKLX0KLQotdm9pZCBBdXRoZW50aWNhdG9y
TWFuYWdlcjo6c2V0TWVzc2VuZ2VyKENyZWRlbnRpYWxzTWVzc2VuZ2VyJiBtZXNzZW5nZXIpCi17
Ci0gICAgbV9tZXNzZW5nZXIgPSBtYWtlV2Vha1B0cihtZXNzZW5nZXIpOwotfQotCi12b2lkIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjpjcmVhdGUoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNhbGxlck9y
aWdpbiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywg
Ym9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmIGFib3J0
U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0Ci17Ci0gICAgdXNpbmcg
bmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JNYW5hZ2VySW50ZXJuYWw7Ci0KLSAgICAvLyBUaGUgZm9s
bG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNjcmVhdGVD
cmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KLSAgICAvLyBGSVhNRTogRXh0ZW5zaW9u
cyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIFNraXAgU3RlcCAxMS0xMi4KLSAgICAvLyBTdGVwIDEs
IDMsIDE2IGFyZSBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIuCi0gICAgLy8gU3RlcCAyLgotICAgIGlm
ICghc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhj
ZXB0aW9uIHsgTm90QWxsb3dlZEVycm9yLCAiVGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgaXMg
bm90IHRoZSBzYW1lIGFzIGl0cyBhbmNlc3RvcnMuIl9zIH0pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gU3RlcCA0ICYgMTcuCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiB0
aW1lb3V0VGltZXIgPSBpbml0VGltZW91dFRpbWVyKG9wdGlvbnMudGltZW91dCwgcHJvbWlzZSk7
Ci0KLSAgICAvLyBTdGVwIDUtNy4KLSAgICAvLyBGSVhNRSgxODE5NTApOiBXZSBsYWNrIGZ1bmRh
bWVudGFsIHN1cHBvcnQgZnJvbSBTZWN1cml0eU9yaWdpbiB0byBkZXRlcm1pbmUgaWYgYSBob3N0
IGlzIGEgdmFsaWQgZG9tYWluIG9yIG5vdC4KLSAgICAvLyBTdGVwIDYgaXMgdGhlcmVmb3JlIHNr
aXBwZWQuIEFsc28sIHdlIGxhY2sgdGhlIHN1cHBvcnQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBk
b21haW4gaXMgYSByZWdpc3RyYWJsZQotICAgIC8vIGRvbWFpbiBzdWZmaXggb2YgYW5vdGhlciBk
b21haW4uIEhlbmNlIHJlc3RyaWN0IHRoZSBjb21wYXJpc29uIHRvIGVxdWFsIGluIFN0ZXAgNy4K
LSAgICBpZiAoIW9wdGlvbnMucnAuaWQuaXNFbXB0eSgpICYmIGNhbGxlck9yaWdpbi5ob3N0KCkg
IT0gb3B0aW9ucy5ycC5pZCkgewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBT
ZWN1cml0eUVycm9yLCAiVGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgaXMgbm90IGEgcmVnaXN0
cmFibGUgZG9tYWluIHN1ZmZpeCBvZiB0aGUgcHJvdmlkZWQgUlAgSUQuIl9zIH0pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmIChvcHRpb25zLnJwLmlkLmlzRW1wdHkoKSkKLSAgICAg
ICAgb3B0aW9ucy5ycC5pZCA9IGNhbGxlck9yaWdpbi5ob3N0KCk7Ci0KLSAgICAvLyBTdGVwIDgt
MTAuCi0gICAgLy8gTW9zdCBvZiB0aGUgam9icyBhcmUgZG9uZSBieSBiaW5kaW5ncy4gSG93ZXZl
ciwgd2UgY2FuJ3Qga25vdyBpZiB0aGUgSlNWYWx1ZSBvZiBvcHRpb25zLnB1YktleUNyZWRQYXJh
bXMKLSAgICAvLyBpcyBlbXB0eSBvciBub3QuIFJldHVybiBOb3RTdXBwb3J0ZWRFcnJvciBhcyBs
b25nIGFzIGl0IGlzIGVtcHR5LgotICAgIGlmIChvcHRpb25zLnB1YktleUNyZWRQYXJhbXMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRl
ZEVycm9yLCAiTm8gZGVzaXJlZCBwcm9wZXJ0aWVzIG9mIHRoZSB0byBiZSBjcmVhdGVkIGNyZWRl
bnRpYWwgYXJlIHByb3ZpZGVkLiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIFN0ZXAgMTMtMTUuCi0gICAgYXV0byBjbGllbnREYXRhSnNvbiA9IHByb2R1Y2VDbGllbnRE
YXRhSnNvbihDbGllbnREYXRhVHlwZTo6Q3JlYXRlLCBvcHRpb25zLmNoYWxsZW5nZSwgY2FsbGVy
T3JpZ2luKTsKLSAgICBhdXRvIGNsaWVudERhdGFKc29uSGFzaCA9IHByb2R1Y2VDbGllbnREYXRh
SnNvbkhhc2goY2xpZW50RGF0YUpzb24pOwotCi0gICAgLy8gU3RlcCAxOC0yMS4KLSAgICAvLyBP
bmx5IHBsYXRmb3JtIGF0dGFjaG1lbnRzIHdpbGwgYmUgc3VwcG9ydGVkIGF0IHRoaXMgc3RhZ2Uu
IEFzc3VtaW5nIG9uZSBhdXRoZW50aWNhdG9yIHBlciBkZXZpY2UuCi0gICAgLy8gQWxzbywgcmVz
aWRlbnQga2V5cywgdXNlciB2ZXJpZmljYXRpb25zIGFuZCBkaXJlY3QgYXR0ZXN0YXRpb24gYXJl
IGVuZm9yY2VkIGF0IHRoaXMgdGFnZS4KLSAgICAvLyBGb3IgYmV0dGVyIHBlcmZvcm1hbmNlLCB0
cmFuc3BvcnRzIG9mIG9wdGlvbnMuZXhjbHVkZUNyZWRlbnRpYWxzIGFyZSBjaGVja2VkIGluIExv
Y2FsQXV0aGVudGljYXRvci4KLSAgICBpZiAoIW1fbWVzc2VuZ2VyKSAgewotICAgICAgICBwcm9t
aXNlLnJlamVjdChFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVy
cm9yLiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBbY2xpZW50RGF0YUpzb24gPSBXVEZNb3ZlKGNsaWVudERhdGFKc29uKSwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHRpbWVvdXRUaW1lciA9IFdURk1vdmUodGltZW91dFRp
bWVyKSwgYWJvcnRTaWduYWwgPSBXVEZNb3ZlKGFib3J0U2lnbmFsKV0gKEV4Y2VwdGlvbk9yPENy
ZWF0aW9uUmV0dXJuQnVuZGxlPiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChkaWRU
aW1lb3V0VGltZXJGaXJlKHRpbWVvdXRUaW1lci5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGlmIChhYm9ydFNpZ25hbCAmJiBhYm9ydFNpZ25hbC0+YWJvcnRlZCgpKSB7Ci0g
ICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnRl
ZCBieSBBYm9ydFNpZ25hbC4iX3MgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgcHJvbWlz
ZS5yZWplY3QocmVzdWx0LmV4Y2VwdGlvbigpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGF1dG8gYnVuZGxlID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OwotICAgICAgICBwcm9taXNlLnJlc29sdmUoUHVibGljS2V5Q3JlZGVudGlhbDo6Y3JlYXRlKFdU
Rk1vdmUoYnVuZGxlLmNyZWRlbnRpYWxJZCksIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlOjpjcmVhdGUoV1RGTW92ZShjbGllbnREYXRhSnNvbiksIEFycmF5QnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidW5kbGUuYXR0ZXN0YXRpb25PYmplY3QpKSkpLnB0cigpKTsKLSAgICB9OwotICAg
IC8vIEFzeW5jIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQgYW5kIGhhbmRsZWQgaW4gdGhlIG1l
c3Nlbmdlci4KLSAgICBtX21lc3Nlbmdlci0+bWFrZUNyZWRlbnRpYWwoY2xpZW50RGF0YUpzb25I
YXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgQXV0
aGVudGljYXRvck1hbmFnZXI6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBjYWxsZXJPcmlnaW4sIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyYgb3B0aW9ucywgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFi
b3J0U2lnbmFsPiYmIGFib3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNv
bnN0Ci17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JNYW5hZ2VySW50ZXJuYWw7
Ci0KLSAgICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RS
L3dlYmF1dGhuLyNjcmVhdGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KLSAgICAv
LyBGSVhNRTogRXh0ZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIFNraXAgU3RlcCA4LTku
Ci0gICAgLy8gU3RlcCAxLCAzLCAxMyBhcmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgotICAgIC8v
IFN0ZXAgMi4KLSAgICBpZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzKSB7Ci0gICAgICAgIHBy
b21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSBvcmlnaW4gb2Yg
dGhlIGRvY3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiJfcyB9KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN0ZXAgNCAmIDE2LgotICAgIHN0ZDo6dW5p
cXVlX3B0cjxUaW1lcj4gdGltZW91dFRpbWVyID0gaW5pdFRpbWVvdXRUaW1lcihvcHRpb25zLnRp
bWVvdXQsIHByb21pc2UpOwotCi0gICAgLy8gU3RlcCA1LTcuCi0gICAgLy8gRklYTUUoMTgxOTUw
KTogV2UgbGFjayBmdW5kYW1lbnRhbCBzdXBwb3J0IGZyb20gU2VjdXJpdHlPcmlnaW4gdG8gZGV0
ZXJtaW5lIGlmIGEgaG9zdCBpcyBhIHZhbGlkIGRvbWFpbiBvciBub3QuCi0gICAgLy8gU3RlcCA2
IGlzIHRoZXJlZm9yZSBza2lwcGVkLiBBbHNvLCB3ZSBsYWNrIHRoZSBzdXBwb3J0IHRvIGRldGVy
bWluZSB3aGV0aGVyIGEgZG9tYWluIGlzIGEgcmVnaXN0cmFibGUKLSAgICAvLyBkb21haW4gc3Vm
Zml4IG9mIGFub3RoZXIgZG9tYWluLiBIZW5jZSByZXN0cmljdCB0aGUgY29tcGFyaXNvbiB0byBl
cXVhbCBpbiBTdGVwIDcuCi0gICAgaWYgKCFvcHRpb25zLnJwSWQuaXNFbXB0eSgpICYmIGNhbGxl
ck9yaWdpbi5ob3N0KCkgIT0gb3B0aW9ucy5ycElkKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJUaGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBp
cyBub3QgYSByZWdpc3RyYWJsZSBkb21haW4gc3VmZml4IG9mIHRoZSBwcm92aWRlZCBSUCBJRC4i
X3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG9wdGlvbnMucnBJZC5pc0Vt
cHR5KCkpCi0gICAgICAgIG9wdGlvbnMucnBJZCA9IGNhbGxlck9yaWdpbi5ob3N0KCk7Ci0KLSAg
ICAvLyBTdGVwIDEwLTEyLgotICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBwcm9kdWNlQ2xpZW50
RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkdldCwgb3B0aW9ucy5jaGFsbGVuZ2UsIGNhbGxlck9y
aWdpbik7Ci0gICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpz
b25IYXNoKGNsaWVudERhdGFKc29uKTsKLQotICAgIC8vIFN0ZXAgMTQtMTUsIDE3LTE5LgotICAg
IC8vIE9ubHkgcGxhdGZvcm0gYXR0YWNobWVudHMgd2lsbCBiZSBzdXBwb3J0ZWQgYXQgdGhpcyBz
dGFnZS4gQXNzdW1pbmcgb25lIGF1dGhlbnRpY2F0b3IgcGVyIGRldmljZS4KLSAgICAvLyBBbHNv
LCByZXNpZGVudCBrZXlzLCB1c2VyIHZlcmlmaWNhdGlvbnMgYW5kIGRpcmVjdCBhdHRlc3RhdGlv
biBhcmUgZW5mb3JjZWQgYXQgdGhpcyB0YWdlLgotICAgIC8vIEZvciBiZXR0ZXIgcGVyZm9ybWFu
Y2UsIGZpbHRlcmluZyBvZiBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgaXMgZG9uZSBpbiBMb2Nh
bEF1dGhlbnRpY2F0b3IuCi0gICAgaWYgKCFtX21lc3NlbmdlcikgIHsKLSAgICAgICAgcHJvbWlz
ZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJv
ci4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gW2NsaWVudERhdGFKc29uID0gV1RGTW92ZShjbGllbnREYXRhSnNvbiksIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aW1lb3V0VGltZXIgPSBXVEZNb3ZlKHRpbWVvdXRUaW1l
ciksIGFib3J0U2lnbmFsID0gV1RGTW92ZShhYm9ydFNpZ25hbCldIChFeGNlcHRpb25PcjxBc3Nl
cnRpb25SZXR1cm5CdW5kbGU+JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGRpZFRp
bWVvdXRUaW1lckZpcmUodGltZW91dFRpbWVyLmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgaWYgKGFib3J0U2lnbmFsICYmIGFib3J0U2lnbmFsLT5hYm9ydGVkKCkpIHsKLSAg
ICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydGVk
IGJ5IEFib3J0U2lnbmFsLiJfcyB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICBwcm9taXNl
LnJlamVjdChyZXN1bHQuZXhjZXB0aW9uKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYXV0byBidW5kbGUgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7
Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShQdWJsaWNLZXlDcmVkZW50aWFsOjpjcmVhdGUoV1RG
TW92ZShidW5kbGUuY3JlZGVudGlhbElkKSwgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
OjpjcmVhdGUoV1RGTW92ZShjbGllbnREYXRhSnNvbiksIFdURk1vdmUoYnVuZGxlLmF1dGhlbnRp
Y2F0b3JEYXRhKSwgV1RGTW92ZShidW5kbGUuc2lnbmF0dXJlKSwgV1RGTW92ZShidW5kbGUudXNl
ckhhbmRsZSkpKS5wdHIoKSk7Ci0gICAgfTsKLSAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBk
aXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCi0gICAgbV9tZXNzZW5nZXIt
PmdldEFzc2VydGlvbihjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJ
RExCb29sZWFuPiYmIHByb21pc2UpIGNvbnN0Ci17Ci0gICAgLy8gVGhlIGZvbGxvd2luZyBpbXBs
ZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jaXNVc2VyVmVyaWZ5aW5nUGxh
dGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlCi0gICAgLy8gYXMgb2YgNSBEZWNlbWJlciAyMDE3
LgotICAgIGlmICghbV9tZXNzZW5nZXIpICB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUUoMTgyNzY3KTogV2Ugc2hvdWxkIGNv
bnNpZGVyIG1vcmUgb24gdGhlIGFzc2Vzc21lbnQgb2YgdGhlIHJldHVybiB2YWx1ZS4gUmlnaHQg
bm93LCB3ZSByZXR1cm4gdHJ1ZS9mYWxzZQotICAgIC8vIGltbWVkaWF0ZWx5IGFjY29yZGluZyB0
byBwbGF0Zm9ybSBzcGVjaWZpYyBwcm9jZWR1cmVzLgotICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShyZXN1bHQpOwotICAgIH07Ci0gICAgLy8gQXN5bmMg
b3BlcmF0aW9uIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCi0g
ICAgbV9tZXNzZW5nZXItPmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWls
YWJsZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzNzI3NmRkZTY3OGMyM2IwYzkyMTk4ZDFmZjc5ZGFiMzVm
NmNhNWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQl9BVVRITikKLQotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgi
Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
LSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEFib3J0U2lnbmFsOwotY2xhc3MgQmFzaWNDcmVkZW50aWFsOwotY2xhc3MgQ3JlZGVudGlhbHNN
ZXNzZW5nZXI7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLQotc3RydWN0IFB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnM7Ci1zdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zOwotCi11c2luZyBDcmVkZW50aWFsUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJ
RExOdWxsYWJsZTxJRExJbnRlcmZhY2U8QmFzaWNDcmVkZW50aWFsPj4+OwotCi1jbGFzcyBBdXRo
ZW50aWNhdG9yTWFuYWdlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRv
ck1hbmFnZXIpOwotICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxBdXRoZW50aWNhdG9y
TWFuYWdlcj47Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1lc3Nl
bmdlcihDcmVkZW50aWFsc01lc3NlbmdlciYpOwotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBtZXRo
b2RzIGltcGxlbWVudCBzdGF0aWMgbWV0aG9kcyBvZiBQdWJsaWNLZXlDcmVkZW50aWFsLgotICAg
IHZvaWQgY3JlYXRlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucyYsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0
cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7Ci0gICAgdm9pZCBk
aXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNl
c3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7
Ci0gICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUo
RE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpIGNvbnN0OwotCi1wcml2YXRlOgotICAg
IEF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkgPSBkZWZhdWx0OwotCi0gICAgV2Vha1B0cjxDcmVkZW50
aWFsc01lc3Nlbmdlcj4gbV9tZXNzZW5nZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjhmMDk0NmRjM2UwMGQ0ZTM4NDk5MjU2Y2MxZDkyMzI3
MmQwNzVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvclJlc3BvbnNlLmgiCi0KLSNpZiBFTkFCTEUo
V0VCX0FVVEhOKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUF1dGhlbnRpY2F0b3JSZXNwb25z
ZTo6QXV0aGVudGljYXRvclJlc3BvbnNlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBjbGllbnREYXRh
SlNPTikKLSAgICA6IG1fY2xpZW50RGF0YUpTT04oV1RGTW92ZShjbGllbnREYXRhSlNPTikpCi17
Ci19Ci0KLUFycmF5QnVmZmVyKiBBdXRoZW50aWNhdG9yUmVzcG9uc2U6OmNsaWVudERhdGFKU09O
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnREYXRhSlNPTi5nZXQoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNw
b25zZS5oCmluZGV4IDU1MjhjMDMwMzRmNTIxYzU0YzMxNDEyZDVlNjNiNzZlYTdlOGZhYWMuLmNi
N2UwN2U1MmVjOTRkNGUxNDIwNGUxNjYzMzU5NmI5NWIxMDBlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaApA
QCAtNDAsMTUgKzQwLDE4IEBAIHB1YmxpYzoKICAgICAgICAgQXR0ZXN0YXRpb24KICAgICB9Owog
Ci0gICAgZXhwbGljaXQgQXV0aGVudGljYXRvclJlc3BvbnNlKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
Jik7CisgICAgZXhwbGljaXQgQXV0aGVudGljYXRvclJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4m
JiBjbGllbnREYXRhSlNPTikKKyAgICAgICAgOiBtX2NsaWVudERhdGFKU09OKFdURk1vdmUoY2xp
ZW50RGF0YUpTT04pKQorICAgIHsKKyAgICB9CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvclJl
c3BvbnNlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7
CiAKLSAgICBBcnJheUJ1ZmZlciogY2xpZW50RGF0YUpTT04oKSBjb25zdDsKKyAgICBBcnJheUJ1
ZmZlciogY2xpZW50RGF0YUpTT04oKSBjb25zdCB7IHJldHVybiBtX2NsaWVudERhdGFKU09OLnB0
cigpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2NsaWVudERhdGFK
U09OOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbV9jbGllbnREYXRhSlNPTjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuY3BwCmluZGV4IDExMmY0MGE2MzQyZjYyYzc2YzU0
NjViZmVhZThjN2JjNTY1ZTdhMTAuLjIxZjcwMGNmMGYzNmNlYTc3OTYzOGY0NDBiZTBjZGE1ODcy
MTQ4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGlj
S2V5Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9Q
dWJsaWNLZXlDcmVkZW50aWFsLmNwcApAQCAtMjgsMTMgKzI4LDM5IEBACiAKICNpZiBFTkFCTEUo
V0VCX0FVVEhOKQogCi0jaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUHVibGljS2V5Q3JlZGVudGlhbDo6UHVibGlj
S2V5Q3JlZGVudGlhbChSZWZQdHI8QXJyYXlCdWZmZXI+JiYgaWQsIFJlZlB0cjxBdXRoZW50aWNh
dG9yUmVzcG9uc2U+JiYgcmVzcG9uc2UpCitSZWY8UHVibGljS2V5Q3JlZGVudGlhbD4gUHVibGlj
S2V5Q3JlZGVudGlhbDo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiBpZCwgUmVmPEF1dGhlbnRp
Y2F0b3JSZXNwb25zZT4mJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
dWJsaWNLZXlDcmVkZW50aWFsKFdURk1vdmUoaWQpLCBXVEZNb3ZlKHJlc3BvbnNlKSkpOworfQor
CitSZWZQdHI8UHVibGljS2V5Q3JlZGVudGlhbD4gUHVibGljS2V5Q3JlZGVudGlhbDo6dHJ5Q3Jl
YXRlKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhKQoreworICAgIGlmICghZGF0
YS5yYXdJZCB8fCAhZGF0YS5jbGllbnREYXRhSlNPTikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBpZiAoZGF0YS5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKSB7Cisg
ICAgICAgIGlmICghZGF0YS5hdHRlc3RhdGlvbk9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFB1YmxpY0tleUNyZWRlbnRp
YWwoZGF0YS5yYXdJZC5yZWxlYXNlTm9uTnVsbCgpLCBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZTo6Y3JlYXRlKGRhdGEuY2xpZW50RGF0YUpTT04ucmVsZWFzZU5vbk51bGwoKSwgZGF0
YS5hdHRlc3RhdGlvbk9iamVjdC5yZWxlYXNlTm9uTnVsbCgpKSkpOworICAgIH0KKworICAgIGlm
ICghZGF0YS5hdXRoZW50aWNhdG9yRGF0YSB8fCAhZGF0YS5zaWduYXR1cmUgfHwgIWRhdGEudXNl
ckhhbmRsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQdWJsaWNLZXlDcmVkZW50aWFsKGRhdGEucmF3SWQucmVsZWFzZU5vbk51bGwoKSwgQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoZGF0YS5jbGllbnREYXRhSlNPTi5y
ZWxlYXNlTm9uTnVsbCgpLCBkYXRhLmF1dGhlbnRpY2F0b3JEYXRhLnJlbGVhc2VOb25OdWxsKCks
IGRhdGEuc2lnbmF0dXJlLnJlbGVhc2VOb25OdWxsKCksIGRhdGEudXNlckhhbmRsZS5yZWxlYXNl
Tm9uTnVsbCgpKSkpOworfQorCitQdWJsaWNLZXlDcmVkZW50aWFsOjpQdWJsaWNLZXlDcmVkZW50
aWFsKFJlZjxBcnJheUJ1ZmZlcj4mJiBpZCwgUmVmPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4mJiBy
ZXNwb25zZSkKICAgICA6IEJhc2ljQ3JlZGVudGlhbChXVEY6OmJhc2U2NFVSTEVuY29kZShpZC0+
ZGF0YSgpLCBpZC0+Ynl0ZUxlbmd0aCgpKSwgVHlwZTo6UHVibGljS2V5LCBEaXNjb3Zlcnk6OlJl
bW90ZSkKICAgICAsIG1fcmF3SWQoV1RGTW92ZShpZCkpCiAgICAgLCBtX3Jlc3BvbnNlKFdURk1v
dmUocmVzcG9uc2UpKQpAQCAtNDYsOSArNzIsOSBAQCBFeGNlcHRpb25Pcjxib29sPiBQdWJsaWNL
ZXlDcmVkZW50aWFsOjpnZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkgY29uc3QKICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKIH0KIAotdm9pZCBQdWJsaWNLZXlD
cmVkZW50aWFsOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUo
RE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJvbWlzZSkKK3ZvaWQgUHVibGljS2V5
Q3JlZGVudGlhbDo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxl
KERvY3VtZW50JiBkb2N1bWVudCwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJv
bWlzZSkKIHsKLSAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2luZ2xldG9uKCkuaXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFdURk1vdmUocHJvbWlzZSkpOwor
ICAgIGRvY3VtZW50LnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuaXNVc2VyVmVy
aWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFdURk1vdmUocHJvbWlzZSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5oCmluZGV4IGZkZWRjNTg5YjMwMzQx
MTU3ZGFlM2JiN2JhYTQyNzRmYjZmYTliYTQuLjMwZmNlNDIwMmJlYmFmMGE5ODJlY2E4ZmYzZTll
YzNiODliZDcyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
UHVibGljS2V5Q3JlZGVudGlhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vUHVibGljS2V5Q3JlZGVudGlhbC5oCkBAIC0zNiwyOCArMzYsMjkgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQXV0aGVudGljYXRvclJlc3BvbnNlOworY2xhc3MgRG9jdW1lbnQ7
CisKK3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTsKIAogY2xhc3MgUHVibGljS2V5Q3Jl
ZGVudGlhbCBmaW5hbCA6IHB1YmxpYyBCYXNpY0NyZWRlbnRpYWwgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UHVibGljS2V5Q3JlZGVudGlhbD4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBpZCwgUmVmUHRyPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4mJiByZXNwb25zZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFB1YmxpY0tleUNyZWRlbnRpYWwoV1RGTW92ZShp
ZCksIFdURk1vdmUocmVzcG9uc2UpKSk7Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8UHVibGljS2V5
Q3JlZGVudGlhbD4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiBpZCwgUmVmPEF1dGhlbnRpY2F0
b3JSZXNwb25zZT4mJik7CisgICAgc3RhdGljIFJlZlB0cjxQdWJsaWNLZXlDcmVkZW50aWFsPiB0
cnlDcmVhdGUoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbERhdGEmKTsKIAotICAgIEFycmF5QnVm
ZmVyKiByYXdJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3SWQuZ2V0KCk7IH0KLSAgICBBdXRoZW50
aWNhdG9yUmVzcG9uc2UqIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5nZXQo
KTsgfQorICAgIEFycmF5QnVmZmVyKiByYXdJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3SWQucHRy
KCk7IH0KKyAgICBBdXRoZW50aWNhdG9yUmVzcG9uc2UqIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zZS5wdHIoKTsgfQogICAgIC8vIE5vdCBzdXBwb3J0IHlldC4gQWx3YXlzIHRo
cm93cy4KICAgICBFeGNlcHRpb25Pcjxib29sPiBnZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkg
Y29uc3Q7CiAKLSAgICBzdGF0aWMgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRp
Y2F0b3JBdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpOworICAgIHN0
YXRpYyB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShE
b2N1bWVudCYsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKTsKIAogcHJpdmF0ZToK
LSAgICBQdWJsaWNLZXlDcmVkZW50aWFsKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBpZCwgUmVmUHRy
PEF1dGhlbnRpY2F0b3JSZXNwb25zZT4mJik7CisgICAgUHVibGljS2V5Q3JlZGVudGlhbChSZWY8
QXJyYXlCdWZmZXI+JiYgaWQsIFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+JiYpOwogCiAgICAg
VHlwZSBjcmVkZW50aWFsVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OlB1YmxpY0tl
eTsgfQogCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX3Jhd0lkOwotICAgIFJlZlB0cjxBdXRo
ZW50aWNhdG9yUmVzcG9uc2U+IG1fcmVzcG9uc2U7CisgICAgUmVmPEFycmF5QnVmZmVyPiBtX3Jh
d0lkOworICAgIFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+IG1fcmVzcG9uc2U7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWwuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsLmlkbAppbmRleCA3N2IxYjcyNDBiNTkxYjI0
M2RlYTk4NzkyMGQ0NzQyMGVmYmM1NmFkLi5kNTFmMDZkNDBkZDllNGVjM2M2YTI4OTc2NzI2MjBm
ZTJiODVmOTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1
YmxpY0tleUNyZWRlbnRpYWwuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vUHVibGljS2V5Q3JlZGVudGlhbC5pZGwKQEAgLTM1LDUgKzM1LDUgQEAgdHlwZWRlZiBib29s
ZWFuIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uczsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkg
YXR0cmlidXRlIEF1dGhlbnRpY2F0b3JSZXNwb25zZSByZXNwb25zZTsKICAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9ucyBnZXRDbGllbnRFeHRlbnNpb25SZXN1
bHRzKCk7CiAKLSAgICBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBpc1VzZXJWZXJpZnlpbmdQbGF0
Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHN0
YXRpYyBQcm9taXNlPGJvb2xlYW4+IGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRv
ckF2YWlsYWJsZSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgK
aW5kZXggNzYwZThmZGE1ZjFlNzUxNzdjZWZlZjc1MTU4NmVhYjQ5NDA0MzNjOC4uMzQxMzk3Y2Iy
YzY2ZTFkZWUyYjAzNjkxNTA0ZGEyYjIyZTI1YzZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zLmgKQEAgLTk0LDkgKzk0LDkgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KIHZvaWQgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBycC5pZCA8PCBycC5uYW1lIDw8
IHJwLmljb247Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGlkVmVjdG9yOwotICAgIGlkVmVjdG9yLmFw
cGVuZCh1c2VyLmlkLmRhdGEoKSwgdXNlci5pZC5sZW5ndGgoKSk7Ci0gICAgZW5jb2RlciA8PCBp
ZFZlY3RvciA8PCB1c2VyLmRpc3BsYXlOYW1lIDw8IHVzZXIubmFtZSA8PCB1c2VyLmljb24gPDwg
cHViS2V5Q3JlZFBhcmFtcyA8PCBleGNsdWRlQ3JlZGVudGlhbHM7CisgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4odXNlci5pZC5sZW5ndGgoKSk7CisgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEodXNlci5pZC5kYXRhKCksIHVzZXIuaWQubGVuZ3RoKCksIDEpOwor
ICAgIGVuY29kZXIgPDwgdXNlci5kaXNwbGF5TmFtZSA8PCB1c2VyLm5hbWUgPDwgdXNlci5pY29u
IDw8IHB1YktleUNyZWRQYXJhbXMgPDwgZXhjbHVkZUNyZWRlbnRpYWxzOwogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTA5LDggKzEwOSwxNSBAQCBzdGQ6Om9wdGlvbmFsPFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnJwLmljb24pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVzZXIuaWRWZWN0b3IpKQorCisgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gdXNlcklkTGVuZ3RoOworICAgIGRlY29kZXIgPj4gdXNlcklkTGVuZ3Ro
OworICAgIGlmICghdXNlcklkTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJlc3VsdC51c2VyLmlkVmVjdG9yLnJlc2VydmVDYXBhY2l0eSh1c2VySWRMZW5ndGgudmFs
dWUoKSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZXN1bHQudXNl
ci5pZFZlY3Rvci5kYXRhKCksIHVzZXJJZExlbmd0aC52YWx1ZSgpLCAxKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVzZXIu
ZGlzcGxheU5hbWUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnVzZXIubmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjI5ZmI4N2Y3ODBhNWJmNTJjMDJiMDJjNTY5YzA3ZGFjNTAzNTg3NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlh
bERhdGEuaApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVm
ZmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBBdXRoZW50aWNhdG9yUmVzcG9uc2U7CisKK3N0cnVjdCBQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YSB7CisgICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlCdWZmZXI+IHJhd0lkOworCisgICAg
Ly8gQXV0aGVudGljYXRvclJlc3BvbnNlCisgICAgYm9vbCBpc0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlOworICAgIG11dGFibGUgUmVmUHRyPEFycmF5QnVmZmVyPiBjbGllbnREYXRh
SlNPTjsKKworICAgIC8vIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlCisgICAgbXV0
YWJsZSBSZWZQdHI8QXJyYXlCdWZmZXI+IGF0dGVzdGF0aW9uT2JqZWN0OworCisgICAgLy8gQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlCisgICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGF1dGhlbnRpY2F0b3JEYXRhOworICAgIG11dGFibGUgUmVmUHRyPEFycmF5QnVmZmVyPiBz
aWduYXR1cmU7CisgICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlCdWZmZXI+IHVzZXJIYW5kbGU7CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHVibGlj
S2V5Q3JlZGVudGlhbERhdGE+IGRlY29kZShEZWNvZGVyJik7Cit9OworCisvLyBOb3RlZDogY2xp
ZW50RGF0YUpTT04gaXMgbmV2ZXIgZW5jb2RlZCBvciBkZWNvZGVkIGFzIGl0IGlzIG5ldmVyIHNl
bnQgYWNyb3NzIGRpZmZlcmVudCBwcm9jZXNzZXMuCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
dm9pZCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmF3SWQtPmJ5dGVM
ZW5ndGgoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4ocmF3SWQtPmRhdGEoKSksIHJhd0lkLT5ieXRlTGVuZ3RoKCks
IDEpOworCisgICAgZW5jb2RlciA8PCBpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
OworCisgICAgaWYgKGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpIHsKKyAgICAg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXR0ZXN0YXRpb25PYmplY3QtPmJ5
dGVMZW5ndGgoKSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGF0dGVzdGF0aW9uT2JqZWN0LT5kYXRhKCkpLCBh
dHRlc3RhdGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgpLCAxKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGF1dGhlbnRpY2F0b3JE
YXRhLT5ieXRlTGVuZ3RoKCkpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGF1dGhlbnRpY2F0b3JEYXRhLT5kYXRhKCkp
LCBhdXRoZW50aWNhdG9yRGF0YS0+Ynl0ZUxlbmd0aCgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQ2NF90PihzaWduYXR1cmUtPmJ5dGVMZW5ndGgoKSk7CisgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
c2lnbmF0dXJlLT5kYXRhKCkpLCBzaWduYXR1cmUtPmJ5dGVMZW5ndGgoKSwgMSk7CisgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpKTsK
KyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPih1c2VySGFuZGxlLT5kYXRhKCkpLCB1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCks
IDEpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YT4gUHVibGljS2V5Q3JlZGVudGlhbERhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHJlc3VsdDsKKworICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJhd0lkTGVuZ3RoOworICAgIGRlY29kZXIgPj4gcmF3
SWRMZW5ndGg7CisgICAgaWYgKCFyYXdJZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJlc3VsdC5yYXdJZCA9IEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWRMZW5n
dGgudmFsdWUoKSwgc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHJlc3VsdC5yYXdJZC0+ZGF0
YSgpKSwgcmF3SWRMZW5ndGgudmFsdWUoKSwgMSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U7CisgICAgZGVjb2RlciA+PiBpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlOworICAgIGlmICghaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXN1bHQuaXNBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZSA9IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UudmFsdWUo
KTsKKworICAgIGlmIChyZXN1bHQuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkg
eworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBhdHRlc3RhdGlvbk9iamVjdExlbmd0
aDsKKyAgICAgICAgZGVjb2RlciA+PiBhdHRlc3RhdGlvbk9iamVjdExlbmd0aDsKKyAgICAgICAg
aWYgKCFhdHRlc3RhdGlvbk9iamVjdExlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICAgICAgcmVzdWx0LmF0dGVzdGF0aW9uT2JqZWN0ID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdExlbmd0aC52YWx1ZSgpLCBzaXplb2YodWludDhfdCkp
OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KHJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdC0+ZGF0YSgpKSwgYXR0ZXN0
YXRpb25PYmplY3RMZW5ndGgudmFsdWUoKSwgMSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gYXV0aGVudGljYXRvckRhdGFMZW5ndGg7CisgICAgZGVjb2RlciA+PiBh
dXRoZW50aWNhdG9yRGF0YUxlbmd0aDsKKyAgICBpZiAoIWF1dGhlbnRpY2F0b3JEYXRhTGVuZ3Ro
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmVzdWx0LmF1dGhlbnRpY2F0
b3JEYXRhID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YUxlbmd0aC52YWx1
ZSgpLCBzaXplb2YodWludDhfdCkpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0LmF1dGhlbnRpY2F0b3JEYXRh
LT5kYXRhKCkpLCBhdXRoZW50aWNhdG9yRGF0YUxlbmd0aC52YWx1ZSgpLCAxKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHNpZ25h
dHVyZUxlbmd0aDsKKyAgICBkZWNvZGVyID4+IHNpZ25hdHVyZUxlbmd0aDsKKyAgICBpZiAoIXNp
Z25hdHVyZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJlc3Vs
dC5zaWduYXR1cmUgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZUxlbmd0aC52YWx1ZSgp
LCBzaXplb2YodWludDhfdCkpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocmVzdWx0LnNpZ25hdHVyZS0+ZGF0YSgpKSwg
c2lnbmF0dXJlTGVuZ3RoLnZhbHVlKCksIDEpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdXNlckhhbmRsZUxlbmd0aDsKKyAgICBk
ZWNvZGVyID4+IHVzZXJIYW5kbGVMZW5ndGg7CisgICAgaWYgKCF1c2VySGFuZGxlTGVuZ3RoKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmVzdWx0LnVzZXJIYW5kbGUgPSBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGVMZW5ndGgudmFsdWUoKSwgc2l6ZW9mKHVpbnQ4
X3QpKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KHJlc3VsdC51c2VySGFuZGxlLT5kYXRhKCkpLCB1c2VySGFuZGxlTGVu
Z3RoLnZhbHVlKCksIDEpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9jb2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaAppbmRleCAyYWU0MDM1ZTk4MmUy
YjZmZDgzMDU4OTkxMjAxNzYxYWMyZTEyMjVkLi4yNWM0NmJjZWExNjA5MjUwOWRlOTlkMzExYTNk
OGE3MGE1YzA4YzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vY29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKQEAgLTM1LDExICszNSwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3RydWN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlh
bERhdGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwogCi11c2lu
ZyBDcmVhdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8dWludDhfdD4m
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mKT47Ci11c2luZyBSZXF1ZXN0Q2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpPjsKLXVzaW5n
IEV4Y2VwdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhJik+OwordXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFZhcmlhbnQ8UHVibGlj
S2V5Q3JlZGVudGlhbERhdGEsIEV4Y2VwdGlvbkRhdGE+JiYpPjsKIAogdHlwZWRlZiB2b2lkIChe
Q29tcGxldGlvbkJsb2NrKShTZWNLZXlSZWYgX051bGxhYmxlIHJlZmVyZW5jZUtleSwgTlNBcnJh
eSAqIF9OdWxsYWJsZSBjZXJ0aWZpY2F0ZXMsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpOwog
CkBAIC01MCw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICBMb2NhbEF1dGhlbnRpY2F0b3IoKTsKICAg
ICB2aXJ0dWFsIH5Mb2NhbEF1dGhlbnRpY2F0b3IoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIG1h
a2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIENyZWF0aW9uQ2FsbGJhY2smJiwgRXhjZXB0aW9u
Q2FsbGJhY2smJik7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBSZXF1ZXN0
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBtYWtlQ3JlZGVudGlh
bChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmLCBDYWxsYmFjayYmKTsKKyAgICB2b2lkIGdldEFzc2VydGlvbihjb25z
dCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyYsIENhbGxiYWNrJiYpOwogICAgIGJvb2wgaXNBdmFpbGFibGUoKSBjb25zdDsKIAog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9j
b2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCA0MGM4NjMxZWYwMDJiNjAwZDdk
M2RhNzliOWE5M2I0MTRiNTM5MjNjLi45NjVkMWYyOGE3MzI5NjhmYWM1MTZiZjcwNGIzNTRhMjMz
ZmEzNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2NvY29h
L0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9y
dCAiQ09TRUNvbnN0YW50cy5oIgogI2ltcG9ydCAiRXhjZXB0aW9uRGF0YS5oIgogI2ltcG9ydCAi
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIgorI2ltcG9ydCAiUHVibGljS2V5
Q3JlZGVudGlhbERhdGEuaCIKICNpbXBvcnQgIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucy5oIgogI2ltcG9ydCA8U2VjdXJpdHkvU2VjSXRlbS5oPgogI2ltcG9ydCA8cGFsL2NyeXB0
by9DcnlwdG9EaWdlc3QuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBMb2NhbEF1dGhlbnRpY2F0b3I6
OkxvY2FsQXV0aGVudGljYXRvcigpCiAgICAgUkVMRUFTRV9BU1NFUlQoaGFzUHJvY2Vzc1ByaXZp
bGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NDcmVkZW50aWFscykpOwogfQogCi12b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25z
LCBDcmVhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0
aW9uQ2FsbGJhY2spCit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zJiBvcHRpb25zLCBDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHVzaW5nIG5h
bWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKIApAQCAtMTI0LDcgKzEyNSw3IEBA
IHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAgQVNTRVJUX1VOVVNFRChoYXNoLCBoYXNoID09
IGhhc2gpOwogICAgIEFTU0VSVF9VTlVTRUQob3B0aW9ucywgIW9wdGlvbnMucnAuaWQuaXNFbXB0
eSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNhbGxiYWNrLCBjYWxsYmFjayk7Ci0gICAgZXhjZXB0
aW9uQ2FsbGJhY2soeyBOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRv
cnMuIl9zIH0pOworICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3Is
ICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9zIH0pOwogI2Vsc2UKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNvcC1t
YWtlLWNyZWQgYXMgb2YgNSBEZWNlbWJlciAyMDE3LgogICAgIC8vIFNraXAgU3RlcCA0LTUgYXMg
cmVxdWlyZVJlc2lkZW50S2V5IGFuZCByZXF1aXJlVXNlclZlcmlmaWNhdGlvbiBhcmUgZW5mb3Jj
ZWQuCkBAIC0xMzksNyArMTQwLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVk
ZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICAgICAg
fQogICAgIH0KICAgICBpZiAoIWNhbkZ1bGxmaWxsUHViS2V5Q3JlZFBhcmFtcykgewotICAgICAg
ICBleGNlcHRpb25DYWxsYmFjayh7IE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIHBsYXRmb3JtIGF0
dGFjaGVkIGF1dGhlbnRpY2F0b3IgZG9lc24ndCBzdXBwb3J0IGFueSBwcm92aWRlZCBQdWJsaWNL
ZXlDcmVkZW50aWFsUGFyYW1ldGVycy4iX3MgfSk7CisgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlv
bkRhdGEgeyBOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50
aWNhdG9yIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5Q3JlZGVudGlhbFBh
cmFtZXRlcnMuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTgsNyArMTU5
LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0g
U2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0
cmlidXRlc0FycmF5UmVmKTsKICAgICAgICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2Vj
SXRlbU5vdEZvdW5kKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHF1ZXJ5IEtl
eWNoYWluOiAlZCIsIHN0YXR1cyk7Ci0gICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVu
a25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICAgICAg
Y2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwg
ZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGF1
dG8gcmV0YWluQXR0cmlidXRlc0FycmF5ID0gYWRvcHRDRihhdHRyaWJ1dGVzQXJyYXlSZWYpOwpA
QCAtMTY2LDcgKzE2Nyw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlh
bChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAgICAgIGZvciAo
TlNEaWN0aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlS
ZWYpIHsKICAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50aWFsSWQgPSBuc0F0dHJpYnV0ZXNb
KGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF07CiAgICAgICAgICAgICBpZiAoZXhjbHVkZUNy
ZWRlbnRpYWxJZHMuY29udGFpbnMoU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KG5zQ3JlZGVudGlhbElkLmJ5dGVzKSwgbnNDcmVkZW50aWFsSWQubGVuZ3RoKSkpIHsKLSAgICAg
ICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IE5vdEFsbG93ZWRFcnJvciwgIkF0IGxlYXN0
IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFs
cyBsaXN0IGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAi
QXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNy
ZWRlbnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9z
IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMTgwLDE3ICsxODEsMTcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50
aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGkKICAgICBpZiAoIVtj
b250ZXh0IGNhbkV2YWx1YXRlUG9saWN5OkxBUG9saWN5RGV2aWNlT3duZXJBdXRoZW50aWNhdGlv
bldpdGhCaW9tZXRyaWNzIGVycm9yOiZlcnJvcl0pIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZG4ndCBldmFsdWF0ZSBhdXRoZW50aWNhdGlvbiB3aXRoIGJpb21ldHJpY3MgcG9saWN5OiAlQCIs
IGVycm9yKTsKICAgICAgICAgLy8gRklYTUUoMTgyNzY3KQotICAgICAgICBleGNlcHRpb25DYWxs
YmFjayh7IE5vdEFsbG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3Mg
fSk7CisgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJO
byBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgTlNTdHJpbmcgKnJlYXNvbiA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
QWxsb3cgJUAgdG8gY3JlYXRlIGEgcHVibGljIGtleSBjcmVkZW50aWFsIGZvciAlQCIsIChpZClv
cHRpb25zLnJwLmlkLCAoaWQpb3B0aW9ucy51c2VyLm5hbWVdOwogICAgIC8vIEZJWE1FKDE4MzUz
NCk6IE9wdGltaXplIHRoZSBmb2xsb3dpbmcgbmVzdGVkIGNhbGxiYWNrcyBhbmQgdGhyZWFkaW5n
LgotICAgIFtjb250ZXh0IGV2YWx1YXRlUG9saWN5OkxBUG9saWN5RGV2aWNlT3duZXJBdXRoZW50
aWNhdGlvbldpdGhCaW9tZXRyaWNzIGxvY2FsaXplZFJlYXNvbjpyZWFzb24gcmVwbHk6QmxvY2tQ
dHI8dm9pZChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgb3B0aW9ucyA9IGNyb3NzVGhyZWFk
Q29weShvcHRpb25zKSwgaGFzaF0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11dGFi
bGUgeworICAgIFtjb250ZXh0IGV2YWx1YXRlUG9saWN5OkxBUG9saWN5RGV2aWNlT3duZXJBdXRo
ZW50aWNhdGlvbldpdGhCaW9tZXRyaWNzIGxvY2FsaXplZFJlYXNvbjpyZWFzb24gcmVwbHk6Qmxv
Y2tQdHI8dm9pZChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgb3B0aW9ucyA9
IGNyb3NzVGhyZWFkQ29weShvcHRpb25zKSwgaGFzaF0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAq
ZXJyb3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICAg
ICAgaWYgKCFzdWNjZXNzIHx8IGVycm9yKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxk
bid0IGF1dGhlbnRpY2F0ZSB3aXRoIGJpb21ldHJpY3M6ICVAIiwgZXJyb3IpOwotICAgICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNl
ciBjb25zZW50LiJfcyB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBO
b3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJfcyB9KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMDUsNyArMjA2LDcgQEAgdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFz
aCwgY29uc3QgUHVibGkKICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbURlbGV0ZSgo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKICAgICAgICAgaWYgKHN0YXR1
cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKSB7CiAgICAgICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkbid0IGRldGVsZSBvbGRlciBjcmVkZW50aWFsOiAlZCIsIHN0YXR1cyk7Ci0gICAg
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJu
YWwgZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVu
a25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxMywxMSArMjE0LDExIEBAIHZvaWQgTG9jYWxBdXRo
ZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNv
bnN0IFB1YmxpCiAgICAgICAgIC8vIEZJWE1FKDE4MzUzNCkKICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgd2Vha1RoaXMtPmlzc3VlQ2xpZW50Q2Vy
dGlmaWNhdGUob3B0aW9ucy5ycC5pZCwgb3B0aW9ucy51c2VyLm5hbWUsIGhhc2gsIEJsb2NrUHRy
PHZvaWQoU2VjS2V5UmVmLCBOU0FycmF5ICosIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayksIG9wdGlvbnMgPSBjcm9zc1RocmVhZENvcHkob3B0aW9ucyldIChf
TnVsbGFibGUgU2VjS2V5UmVmIHByaXZhdGVLZXksIE5TQXJyYXkgKiBfTnVsbGFibGUgY2VydGlm
aWNhdGVzLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgIHdlYWtUaGlzLT5p
c3N1ZUNsaWVudENlcnRpZmljYXRlKG9wdGlvbnMucnAuaWQsIG9wdGlvbnMudXNlci5uYW1lLCBo
YXNoLCBCbG9ja1B0cjx2b2lkKFNlY0tleVJlZiwgTlNBcnJheSAqLCBOU0Vycm9yICopPjo6ZnJv
bUNhbGxhYmxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBvcHRpb25zID0gY3Jvc3NU
aHJlYWRDb3B5KG9wdGlvbnMpXSAoX051bGxhYmxlIFNlY0tleVJlZiBwcml2YXRlS2V5LCBOU0Fy
cmF5ICogX051bGxhYmxlIGNlcnRpZmljYXRlcywgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikg
ewogICAgICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgICAgICAgICBpZiAo
ZXJyb3IpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGF0dGVzdDogJUAi
LCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBVbmtub3duRXJy
b3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgICAgICAgICBjYWxs
YmFjayhFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJv
ci4iX3MgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgLy8gQXR0ZXN0YXRpb24gQ2VydGlmaWNhdGUgYW5kIEF0dGVzdGF0aW9uIElzc3Vpbmcg
Q0EKQEAgLTI1MCw3ICsyNTEsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRl
bnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgICAgICAg
ICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENG
RGljdGlvbmFyeVJlZiljcmVkZW50aWFsSWRRdWVyeSwgJmF0dHJpYnV0ZXNSZWYpOwogICAgICAg
ICAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZG4ndCBnZXQgQ3JlZGVudGlhbCBJRDogJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwg
ZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRh
IHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4iX3MgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YXV0byByZXRhaW5BdHRyaWJ1dGVzID0gYWRvcHRDRihhdHRyaWJ1dGVzUmVmKTsKQEAgLTI3MSw3
ICsyNzIsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaQogICAgICAgICAgICAgICAgIHN0YXR1
cyA9IFNlY0l0ZW1VcGRhdGUoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZil1cGRhdGVRdWVyeSwg
KF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZil1cGRhdGVQYXJhbXMpOwogICAgICAgICAgICAgICAg
IGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCB1
cGRhdGUgdGhlIEtleWNoYWluIGl0ZW06ICVkIiwgc3RhdHVzKTsKLSAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVy
cm9yLiJfcyB9KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7
IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAt
MzA0LDcgKzMwNSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGVycm9yUmVmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1Io
IkNvdWxkbid0IGV4cG9ydCB0aGUgcHVibGljIGtleTogJUAiLCAoTlNFcnJvciopZXJyb3JSZWYp
OwotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBVbmtub3duRXJy
b3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVy
bmFsIGVycm9yLiJfcyB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoKChOU0RhdGEgKilw
dWJsaWNLZXlEYXRhUmVmLmdldCgpKS5sZW5ndGggPT0gKDEgKyAyICogRVMyNTZLZXlTaXplSW5C
eXRlcykpOyAvLyAwNCB8IFggfCBZCkBAIC0zMjUsNyArMzI2LDcgQEAgdm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29u
c3QgUHVibGkKICAgICAgICAgICAgICAgICBhdXRvIGNvc2VQdWJsaWNLZXkgPSBjYm9yOjpDQk9S
V3JpdGVyOjp3cml0ZShjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZShwdWJsaWNLZXlNYXApKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFjb3NlUHVibGljS2V5KSB7CiAgICAgICAgICAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGRuJ3QgZW5jb2RlIHRoZSBwdWJsaWMga2V5IGludG8gQ09TRSBiaW5h
cmllcy4iKTsKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBVbmtub3du
RXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJu
YWwgZXJyb3IuIl9zIH0pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEuYXBwZW5kVmVj
dG9yKGNvc2VQdWJsaWNLZXkudmFsdWUoKSk7CkBAIC0zNDcsNyArMzQ4LDcgQEAgdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFz
aCwgY29uc3QgUHVibGkKICAgICAgICAgICAgICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFk
b3B0Q0YoZXJyb3JSZWYpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JSZWYpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNp
Z25hdHVyZTogJUAiLCAoTlNFcnJvciopZXJyb3JSZWYpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVy
cm9yLiJfcyB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRh
dGEgeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICBhdXRvIG5zU2lnbmF0dXJlID0gKE5TRGF0YSAqKXNpZ25hdHVyZVJlZi5n
ZXQoKTsKQEAgLTM3NCwxNyArMzc1LDE3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtl
Q3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpCiAgICAg
ICAgICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUo
Y2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoYXR0ZXN0YXRpb25PYmplY3RNYXApKSk7CiAgICAgICAg
ICAgICBpZiAoIWF0dGVzdGF0aW9uT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZG4ndCBlbmNvZGUgdGhlIGF0dGVzdGF0aW9uIG9iamVjdC4iKTsKLSAgICAgICAgICAg
ICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwg
ZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBV
bmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhbGxiYWNrKGNyZWRl
bnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QudmFsdWUoKSk7CisgICAgICAgICAgICBjYWxsYmFj
ayhQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlh
bElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIHRydWUsIG51bGxwdHIsIEFycmF5QnVm
ZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QudmFsdWUoKS5kYXRhKCksIGF0dGVzdGF0aW9u
T2JqZWN0LnZhbHVlKCkuc2l6ZSgpKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9KTsKICAg
ICAgICAgfSkuZ2V0KCkpOwogICAgIH0pLmdldCgpXTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQogfQogCi12b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
JiBvcHRpb25zLCBSZXF1ZXN0Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2sm
JiBleGNlcHRpb25DYWxsYmFjaykKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRp
b24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgdXNp
bmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogCkBAIC0zOTMsNyArMzk0
LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0sKICAgICBBU1NFUlRfVU5VU0VEKGhhc2gsIGhh
c2ggPT0gaGFzaCk7CiAgICAgQVNTRVJUX1VOVVNFRChvcHRpb25zLCAhb3B0aW9ucy5ycElkLmlz
RW1wdHkoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjYWxsYmFjaywgY2FsbGJhY2spOwotICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKHsgTm90QWxsb3dlZEVycm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRp
Y2F0b3JzLiJfcyB9KTsKKyAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVy
cm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiJfcyB9KTsKICNlbHNlCiAgICAgLy8g
VGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8j
b3AtZ2V0LWFzc2VydGlvbiBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU2tpcCBTdGVw
IDIgYXMgcmVxdWlyZVVzZXJWZXJpZmljYXRpb24gaXMgZW5mb3JjZWQuCkBAIC00MDIsNyArNDAz
LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0sKICAgICAvLyBTdGVwIDMtNS4gVW5saWtlIHRo
ZSBzcGVjLCBpZiBhbiBhbGxvdyBsaXN0IGlzIHByb3ZpZGVkIGFuZCB0aGVyZSBpcyBubyBpbnRl
cnNlY3Rpb24gYmV0d2VlbiBleGlzdGluZyBvbmVzIGFuZCB0aGUgYWxsb3cgbGlzdCwgd2UgYWx3
YXlzIHJldHVybiBOb3RBbGxvd2VkRXJyb3IuCiAgICAgSGFzaFNldDxTdHJpbmc+IGFsbG93Q3Jl
ZGVudGlhbElkcyA9IHByb2R1Y2VIYXNoU2V0KG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyk7CiAg
ICAgaWYgKCFvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuaXNFbXB0eSgpICYmIGFsbG93Q3JlZGVu
dGlhbElkcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soeyBOb3RBbGxv
d2VkRXJyb3IsICJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZv
cm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSk7CisgICAgICAgIGNhbGxiYWNrKEV4Y2Vw
dGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBm
b3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQxOCw3ICs0MTksNyBAQCB2b2lkIExvY2FsQXV0aGVu
dGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3Qg
UHVibGljSwogICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJp
ZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJlZik7CiAgICAgaWYg
KHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGRuJ3QgcXVlcnkgS2V5Y2hhaW46ICVkIiwgc3RhdHVzKTsKLSAgICAgICAgZXhj
ZXB0aW9uQ2FsbGJhY2soeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJf
cyB9KTsKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVu
a25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGF1dG8gcmV0YWluQXR0cmlidXRlc0FycmF5ID0gYWRvcHRDRihhdHRyaWJ1dGVzQXJyYXlSZWYp
OwpAQCAtNDM2LDcgKzQzNyw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRp
b24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLCiAgICAgICAgIGlu
dGVyc2VjdGVkQ3JlZGVudGlhbHNBdHRyaWJ1dGVzID0gcmVzdWx0OwogICAgIH0KICAgICBpZiAo
IWludGVyc2VjdGVkQ3JlZGVudGlhbHNBdHRyaWJ1dGVzLmNvdW50KSB7Ci0gICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKHsgTm90QWxsb3dlZEVycm9yLCAiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBh
cmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0pOwor
ICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiTm8gbWF0
Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhl
bnRpY2F0b3IuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTIsNyArNDUz
LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8
dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0sKICAgICAgICAgYXV0byByZXRhaW5Db250ZXh0
ID0gYWRvcHROUyhjb250ZXh0KTsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBldmFsdWF0
ZSBhdXRoZW50aWNhdGlvbiB3aXRoIGJpb21ldHJpY3MgcG9saWN5OiAlQCIsIGVycm9yKTsKICAg
ICAgICAgLy8gRklYTUUoMTgyNzY3KQotICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IE5vdEFs
bG93ZWRFcnJvciwgIk5vIGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CisgICAgICAg
IGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUg
YXV0aGVudGljYXRvcnMuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NjIs
MTEgKzQ2MywxMSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljSwogICAgIFZlY3Rvcjx1aW50OF90
PiB1c2VyaGFuZGxlOwogICAgIE5TRGF0YSAqbnNVc2VyaGFuZGxlID0gc2VsZWN0ZWRDcmVkZW50
aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107CiAgICAgdXNlcmhhbmRs
ZS5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obnNVc2VyaGFuZGxlLmJ5
dGVzKSwgbnNVc2VyaGFuZGxlLmxlbmd0aCk7Ci0gICAgYXV0byByZXBseSA9IEJsb2NrUHRyPHZv
aWQoQk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwg
cnBJZCA9IG9wdGlvbnMucnBJZC5pc29sYXRlZENvcHkoKSwgaGFzaCwgY3JlZGVudGlhbElkID0g
V1RGTW92ZShjcmVkZW50aWFsSWQpLCB1c2VyaGFuZGxlID0gV1RGTW92ZSh1c2VyaGFuZGxlKSwg
Y29udGV4dCA9IGFkb3B0TlMoY29udGV4dCldIChCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKmVycm9y
KSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlcGx5ID0gQmxvY2tQdHI8dm9pZChCT09MLCBOU0Vycm9y
ICopPjo6ZnJvbUNhbGxhYmxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBycElkID0g
b3B0aW9ucy5ycElkLmlzb2xhdGVkQ29weSgpLCBoYXNoLCBjcmVkZW50aWFsSWQgPSBXVEZNb3Zl
KGNyZWRlbnRpYWxJZCksIHVzZXJoYW5kbGUgPSBXVEZNb3ZlKHVzZXJoYW5kbGUpLCBjb250ZXh0
ID0gYWRvcHROUyhjb250ZXh0KV0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11dGFi
bGUgewogICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFzdWNj
ZXNzIHx8IGVycm9yKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGF1dGhlbnRp
Y2F0ZSB3aXRoIGJpb21ldHJpY3M6ICVAIiwgZXJyb3IpOwotICAgICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJf
cyB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJy
b3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJfcyB9KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC00OTAsNyArNDkxLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0
b3I6OmdldEFzc2VydGlvbihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1Ymxp
Y0sKICAgICAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9f
YnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJnByaXZhdGVLZXlSZWYpOwogICAgICAgICAg
ICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2V0
IHRoZSBwcml2YXRlIGtleSByZWZlcmVuY2U6ICVkIiwgc3RhdHVzKTsKLSAgICAgICAgICAgICAg
ICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJy
b3IuIl9zIH0pOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkgPSBh
ZG9wdENGKHByaXZhdGVLZXlSZWYpOwpAQCAtNTA0LDcgKzUwNSw3IEBAIHZvaWQgTG9jYWxBdXRo
ZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25z
dCBQdWJsaWNLCiAgICAgICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJvclJl
Zik7CiAgICAgICAgICAgICBpZiAoZXJyb3JSZWYpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkbid0IGdlbmVyYXRlIHRoZSBzaWduYXR1cmU6ICVAIiwgKE5TRXJyb3IqKWVycm9y
UmVmKTsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayh7IFVua25vd25FcnJvciwg
IlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOworICAgICAgICAgICAgICAgIGNhbGxiYWNr
KEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJf
cyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBhdXRvIG5zU2lnbmF0dXJlID0gKE5TRGF0YSAqKXNpZ25hdHVyZVJlZi5nZXQoKTsKQEAgLTUx
Miw3ICs1MTMsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljSwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gU3RlcCAxMy4KLSAgICAgICAgY2FsbGJhY2soY3JlZGVudGlhbElkLCBhdXRoRGF0YSwg
c2lnbmF0dXJlLCB1c2VyaGFuZGxlKTsKKyAgICAgICAgY2FsbGJhY2soUHVibGljS2V5Q3JlZGVu
dGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRl
bnRpYWxJZC5zaXplKCkpLCBmYWxzZSwgbnVsbHB0ciwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6OmNy
ZWF0ZShhdXRoRGF0YS5kYXRhKCksIGF1dGhEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVh
dGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVh
dGUodXNlcmhhbmRsZS5kYXRhKCksIHVzZXJoYW5kbGUuc2l6ZSgpKSB9KTsKICAgICB9KTsKIAog
ICAgIC8vIEZJWE1FKDE4MzUzMyk6IFVzZSB1c2VyaGFuZGxlIGluc3RlYWQgb2YgdXNlcm5hbWUg
ZHVlIHRvIHRoZSBzdGF0ZWQgS2V5Y2hhaW4gbGltaXRhdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvVlJTdGFnZVBhcmFtZXRlcnMuY3BwCmluZGV4IDg1YzVhZmE5
ZjRlOTcxMDdjY2Y5N2EwZTE4YjU4YjhjMDc2ZTUwNDcuLjNlNWU0YmRjMmUxMDFkODAzYmFlMDM3
NmYxMDI5MTBmNDI0OWE1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvVlJTdGFnZVBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvVlJTdGFnZVBhcmFtZXRlcnMuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiVlJT
dGFnZVBhcmFtZXRlcnMuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5l
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGIwNjVmZjg1
ZjI3OThkMWIxZmI2NDE0MGZlM2QzNzE4ODBjNWM2NGMuLjZlNTlmMGU3MzE1OWVmMmY5NjY2OTkw
MzdlZmFjZGJlM2VjMTEzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC00NSw3ICs0NSw2IEBAIE1vZHVs
ZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCiAKIE1vZHVsZXMvY3JlZGVudGlh
bG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmNwcAogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdl
bWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKLU1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1l
bnQvQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwCiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50
L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcAogCiBNb2R1bGVzL2VudHJpZXNhcGkvRXJyb3JDYWxs
YmFjay5jcHAKQEAgLTI0NywxMCArMjQ2LDggQEAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
RFNQS2VybmVsLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKIE1vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKIAotTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCi1Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcAotTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yTWFuYWdlci5jcHAKLU1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNl
LmNwcAorTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCitNb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAKIE1vZHVsZXMv
d2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbC5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vY2Jvci9D
Qk9SUmVhZGVyLmNwcAogTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5
OWM2YjZiOWQwNWEzY2M0NGZiOTc5MzgzYTE1Y2RhNmFjNDNlY2Q4Li5hNTg5NDBmYjhjZWUzZTQ0
YThhNDU5ZWRmMjA4Nzc1NTVlZjJmZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzU0LDcgKzE3NTQsNyBAQAogCQk1NzMw
M0MyMjIwMDlBRjAzMDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25z
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDND
MjEyMDA5QUVGNjAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
aCAqLzsgfTsKIAkJNTczMDNDMkMyMDA5QjRBODAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTczMDNDMjcyMDA5QjJGQzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZS5oICovOyB9OwogCQk1NzMwM0MyRjIwMDlCN0UxMDAzNTU5NjUgLyogSlNBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3MzAzQzJEMjAwOUI3RDkwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZS5oICovOyB9OwotCQk1NzMwM0M0NjIwMTA1RDJGMDAzNTU5NjUg
LyogQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3MzAzQzQzMjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9y
TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTU3MzAzQzQ2MjAxMDVEMkYwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MzAzQzQz
MjAxMDVCM0QwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzM0ODkzOTFEQUM2QjZF
MDBEQzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczNDg5MzgxREFDNkI2RDAwREMwNjY3IC8q
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNTczOUUxMkYxREFDN0Y3ODAw
RTE0MzgzIC8qIEpTQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczOUUxMkUxREFDN0Y3ODAwRTE0MzgzIC8q
IEpTQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OwogCQk1NzRGNTVFMDIwNEYzQUNF
MDAyOTQ4QzYgLyogTG9jYWxBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVERTIwNEYzNzQ0MDAyOTQ4QzYgLyogTG9jYWxB
dXRoZW50aWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE3NjQsMTEgKzE3NjQsOSBAQAogCQk1NzUwQTk4MjFFNkExNTA4MDA3MDVDNEEg
LyogSlNFY0tleVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc1MEE5ODAxRTZBMTUwODAwNzA1QzRBIC8qIEpTRWNLZXlQYXJhbXMuaCAqLzsg
fTsKIAkJNTc1MEE5ODcxRTZBMjE2ODAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVDREguaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTg1MUU2
QTIxNjgwMDcwNUM0QSAvKiBDcnlwdG9BbGdvcml0aG1FQ0RILmggKi87IH07CiAJCTU3NTQ3MTlG
MUVDRTYyODMwMERENjNCMiAvKiBKU1JzYVBzc1BhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1NDcxOTkxRUNFNUQyQTAwREQ2M0IyIC8qIEpT
UnNhUHNzUGFyYW1zLmggKi87IH07Ci0JCTU3NjA4MjcyMjAyMTVBNTUwMDExNjY3OCAvKiBDcmVk
ZW50aWFsc01lc3Nlbmdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIENyZWRlbnRpYWxzTWVzc2VuZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTc2
MDgyN0EyMDI0RUE1QzAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2MDgyNzgyMDI0NERB
QjAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oICovOyB9OwotCQk1NzYwODI3
QjIwMjRFRDI5MDAxMTY2NzggLyogTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4Mjc5MjAyNDREQUMw
MDExNjY3OCAvKiBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwICovOyB9OwotCQk1NzYwODI4
NjIwMjU2QUZBMDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4MjgyMjAyNTY3OTcw
MDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oICovOyB9OwotCQk1NzYwODI4
ODIwMjU2QUZEMDAxMTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2MDgyODEyMDI1Njc5
NjAwMTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCAqLzsgfTsKKwkJNTc2
MDgyNzIyMDIxNUE1NTAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2MDgyNzAy
MDIxNTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3NjA4MjdBMjAy
NEVBNUMwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI3ODIwMjQ0REFCMDAx
MTY2NzggLyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovOyB9OworCQk1NzYwODI3
QjIwMjRFRDI5MDAxMTY2NzggLyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzYwODI3OTIwMjQ0
REFDMDAxMTY2NzggLyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi87IH07CiAJ
CTU3NjgxNDJBMUU2Rjk5QzEwMEU3Nzc1NCAvKiBDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZl
UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzY4MTQyOTFFNkY5OUMxMDBFNzc3NTQgLyogQ3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBh
cmFtcy5oICovOyB9OwogCQk1NzY4MTQ0MTFFNzA5RkE0MDBFNzc3NTQgLyogSlNFY2RoS2V5RGVy
aXZlUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzY4MTQzRTFFNzA5QzM2MDBFNzc3NTQgLyogSlNFY2RoS2V5RGVyaXZlUGFyYW1zLmggKi87
IH07CiAJCTU3NjgxNDQ1MUU3MENCMUYwMEU3Nzc1NCAvKiBKU0Flc0tleVBhcmFtcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2ODE0NDMxRTcwQ0Ix
MDAwRTc3NzU0IC8qIEpTQWVzS2V5UGFyYW1zLmggKi87IH07CkBAIC0xNzg0LDEyICsxNzgyLDE1
IEBACiAJCTU3QjVGN0Y5MUU1QkU4NDAwMEYzNEY5MCAvKiBDcnlwdG9BbGdvcml0aG1BRVNfR0NN
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I1RjdG
NzFFNUJFODQwMDBGMzRGOTAgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTS5oICovOyB9OwogCQk1
N0I1RjgwOTFFNUQxQTk4MDBGMzRGOTAgLyogQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I1RjgwODFF
NUQxQTk4MDBGMzRGOTAgLyogQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zLmggKi87IH07CiAJ
CTU3QjVGODEwMUU1RTJBNEUwMEYzNEY5MCAvKiBKU0Flc0djbVBhcmFtcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNUY4MEIxRTVEMjJEQTAwRjM0
RjkwIC8qIEpTQWVzR2NtUGFyYW1zLmggKi87IH07Ci0JCTU3QzdBNjhDMUU1Njk2NzUwMEM2N0Q3
MSAvKiBCYXNpY0NyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3QzdBNjhCMUU1Njk2NzUwMEM2N0Q3MSAvKiBCYXNpY0NyZWRlbnRpYWwu
aCAqLzsgfTsKKwkJNTdDN0E2OEMxRTU2OTY3NTAwQzY3RDcxIC8qIEJhc2ljQ3JlZGVudGlhbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdDN0E2OEIx
RTU2OTY3NTAwQzY3RDcxIC8qIEJhc2ljQ3JlZGVudGlhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3QzdBNjlGMUU1NzkxNzgwMEM2N0Q3MSAv
KiBKU0Jhc2ljQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdDN0E2OUQxRTU3OTEwRDAwQzY3RDcxIC8qIEpTQmFzaWNDcmVkZW50aWFs
LmggKi87IH07CiAJCTU3RDAwMThEMURENTQxMzIwMEVEMTlEOSAvKiBKU0NyeXB0b0tleVVzYWdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0QwMDE4
QzFERDU0MTMyMDBFRDE5RDkgLyogSlNDcnlwdG9LZXlVc2FnZS5oICovOyB9OwogCQk1N0Q4NDYy
ODFGRTg5NjA1MDBDQTM2ODIgLyogTmF2aWdhdG9yQ3JlZGVudGlhbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RDg0NjI2MUZFODk1RjgwMENBMzY4
MiAvKiBOYXZpZ2F0b3JDcmVkZW50aWFscy5oICovOyB9OwotCQk1N0Q4NDYyRTFGRUFGNjk5MDBD
QTM2ODIgLyogUHVibGljS2V5Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEODQ2MkIxRkVBRjY4RjAwQ0EzNjgyIC8qIFB1YmxpY0tl
eUNyZWRlbnRpYWwuaCAqLzsgfTsKKwkJNTdEODQ2MkUxRkVBRjY5OTAwQ0EzNjgyIC8qIFB1Ymxp
Y0tleUNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3RDg0NjJCMUZFQUY2OEYwMENBMzY4MiAvKiBQdWJsaWNLZXlDcmVkZW50aWFsLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdEODQ2
MzUxRkVBRkNEMzAwQ0EzNjgyIC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEODQ2MzAxRkVBRkMyRjAwQ0Ez
NjgyIC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbC5oICovOyB9OworCQk1N0RDRUQ2NzIxNDA3NzVC
MDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2MjIxNDA3NjNDMDAxNkI4
NDcgLyogSlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi87IH07CisJCTU3RENFRDY5
MjE0MDc3NjQwMDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VENjMyMTQw
NzYzQzAwMTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi87IH07
CisJCTU3RENFRDc0MjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VENzIy
MTQzMDVGMDAwMTZCODQ3IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdFMUU1QTMxRThDOTFCNTAw
RUUzN0M5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DVFIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTFFNUExMUU4QzkxQjUwMEVFMzdDOSAvKiBDcnlw
dG9BbGdvcml0aG1BRVNfQ1RSLmggKi87IH07CiAJCTU3RTFFNUE3MUU4REJEM0UwMEVFMzdDOSAv
KiBDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTFFNUE2MUU4REJEM0UwMEVFMzdDOSAvKiBDcnlwdG9B
bGdvcml0aG1BZXNDdHJQYXJhbXMuaCAqLzsgfTsKIAkJNTdFMUU1QUQxRThERDA5QjAwRUUzN0M5
IC8qIEpTQWVzQ3RyUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0UxRTVBQjFFOEREMDlCMDBFRTM3QzkgLyogSlNBZXNDdHJQYXJhbXMuaCAq
LzsgfTsKQEAgLTg0NTgsNyArODQ1OSw2IEBACiAJCTU3MzAzQkJFMjAwNkUwMDQwMDM1NTk2NSAv
KiBDQk9SUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENC
T1JSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0JCRjIwMDZF
MDBDMDAzNTU5NjUgLyogQ0JPUlJlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDQk9SUmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAzQkNG
MjAwODdBODMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXV0aGVudGljYXRvclJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTU3MzAzQkQwMjAwODdBODMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNCRDEyMDA4N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0
b3JSZXNwb25zZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXV0aGVudGljYXRvclJlc3BvbnNlLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDNCREQyMDA5NUIyNjAwMzU1OTY1IC8qIEpTQXV0aGVu
dGljYXRvclJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXV0
aGVudGljYXRvclJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAz
QkRFMjAwOTVCMjcwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1dGhlbnRpY2F0b3JSZXNwb25zZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDc5LDE3ICs4NDc5LDE1IEBACiAJ
CTU3MzAzQzEzMjAwOUEyNTcwMDM1NTk2NSAvKiBKU1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3MzAzQzE0MjAwOUEyNTcwMDM1NTk2NSAvKiBKU1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTczMDNDMUIyMDA5QTk4NjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJl
c3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3MzAzQzFDMjAwOUE5ODYw
MDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAzQzFEMjAwOUE5ODYwMDM1NTk2NSAvKiBBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXV0aGVudGljYXRvckF0dGVzdGF0
aW9uUmVzcG9uc2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0MyMDIw
MDlBRUY1MDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczMDND
MjEyMDA5QUVGNjAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzMwM0MyNzIw
MDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1NzMwM0MyODIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzAz
QzI5MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MzAzQzJEMjAwOUI3RDkwMDM1NTk2NSAvKiBKU0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NzMwM0MyRTIwMDlCN0RBMDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1NzMwM0M0MzIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvck1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTczMDNDNDQyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTczMDNDNDMyMDEwNUIzRDAwMzU1OTY1IC8q
IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTczMDNDNDQyMDEw
NUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzM0ODkzODFEQUM2QjZEMDBEQzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzlFMTJFMURB
QzdGNzgwMEUxNDM4MyAvKiBKU0NyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzlFMTMwMURBQzdGRDEwMEUxNDM4MyAvKiBK
U0NyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg1MTIsMTMgKzg1MTAsMTEgQEAKIAkJNTc1NDcxOUExRUNFNUQy
QTAwREQ2M0IyIC8qIEpTUnNhUHNzUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTUnNhUHNzUGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTc2MDgyNEYyMDExOEQ4RDAwMTE2Njc4IC8qIEpTQmFzaWNDcmVkZW50aWFsQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzaWNDcmVkZW50aWFsQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyNTYyMDExQkUwMjAwMTE2Njc4IC8qIEpT
QXV0aGVudGljYXRvclJlc3BvbnNlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXV0
aGVudGljYXRvclJlc3BvbnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIENyZWRlbnRpYWxzTWVzc2VuZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENyZWRlbnRpYWxzTWVzc2VuZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTU3NjA4Mjc4MjAyNDREQUIwMDExNjY3OCAvKiBNb2NrQ3JlZGVudGlhbHNNZXNz
ZW5nZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4Mjc5MjAyNDREQUMwMDExNjY3OCAvKiBNb2Nr
Q3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NyZWRlbnRp
YWxzTWVzc2VuZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyODAy
MDI1NTZGNDAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTW9j
a0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTc2MDgyODEyMDI1Njc5NjAwMTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9ja0NyZWRlbnRpYWxz
TWVzc2VuZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyODIyMDI1
Njc5NzAwMTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjkzMjAyQkE5NTMwMDExNjY3OCAvKiBDcmVk
ZW50aWFsc01lc3Nlbmdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcmVkZW50aWFsc01lc3Nl
bmdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NjA4MjcwMjAyMTUxM0Yw
MDExNjY3OCAvKiBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU3NjA4Mjc4MjAyNDREQUIwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyNzkyMDI0NERBQzAwMTE2Njc4
IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU3NjA4MjgwMjAyNTU2RjQwMDExNjY3OCAvKiBNb2NrQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc2MDgyOTMyMDJCQTk1MzAwMTE2Njc4IC8qIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzY4MTQyODFFNkY5OEFEMDBFNzc3NTQgLyogRWNkaEtleURlcml2ZVBhcmFtcy5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRWNkaEtleURlcml2ZVBhcmFtcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3NjgxNDI5MUU2Rjk5QzEwMEU3Nzc1NCAvKiBDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZl
UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRo
bUVjZGhLZXlEZXJpdmVQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2
ODE0MzQxRTZGRTNFODAwRTc3NzU0IC8qIENyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTcyLDYgKzg1NjgsOSBAQAogCQk1
N0Q4NDYyRDFGRUFGNjhGMDBDQTM2ODIgLyogUHVibGljS2V5Q3JlZGVudGlhbC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UHVibGljS2V5Q3JlZGVudGlhbC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3
RDg0NjMwMUZFQUZDMkYwMENBMzY4MiAvKiBKU1B1YmxpY0tleUNyZWRlbnRpYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQdWJsaWNLZXlDcmVkZW50aWFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RDg0NjMxMUZFQUZDMkYwMENBMzY4MiAvKiBKU1B1
YmxpY0tleUNyZWRlbnRpYWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQdWJsaWNLZXlDcmVkZW50aWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTdEQ0VENjIyMTQwNzYzQzAwMTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vY2tBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdEQ0VENjMy
MTQwNzYzQzAwMTZCODQ3IC8qIEpTTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vY2tBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0RDRUQ3MjIxNDMw
NUYwMDAxNkI4NDcgLyogUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHVibGljS2V5Q3JlZGVudGlhbERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTdFMUU1QTAxRThDOTFCNTAwRUUzN0M5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DVFIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtQUVTX0NU
Ui5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RTFFNUExMUU4QzkxQjUwMEVF
MzdDOSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobUFFU19DVFIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTdFMUU1QTYxRThEQkQzRTAwRUUzN0M5IC8qIENyeXB0b0FsZ29yaXRobUFlc0N0
clBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0
aG1BZXNDdHJQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2OTE5LDYg
KzE2OTE4LDkgQEAKIAkJCQlBN0JFN0VERTE0QzkxNzVBMDAxNDQ4OUQgLyogTWFsbG9jU3RhdGlz
dGljcy5pZGwgKi8sCiAJCQkJQ0Q1MzkzQ0IxNzVEQ0NFNjAwQzA3MTIzIC8qIE1lbW9yeUluZm8u
aCAqLywKIAkJCQlDRDUzOTNDQzE3NURDQ0U2MDBDMDcxMjMgLyogTWVtb3J5SW5mby5pZGwgKi8s
CisJCQkJNTc2MDgyNzkyMDI0NERBQzAwMTE2Njc4IC8qIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwICovLAorCQkJCTU3NjA4Mjc4MjAyNDREQUIwMDExNjY3OCAvKiBNb2NrQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmggKi8sCisJCQkJNTc2MDgyODAyMDI1NTZGNDAwMTE2Njc4IC8q
IE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaWRsICovLAogCQkJCUNERjRCNzIxMUUwM0JG
ODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgKi8sCiAJCQkJQ0RGNEI3MjIxRTAzQkY4
MTAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmggKi8sCiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAw
RTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCAqLywKQEAgLTE2OTI3LDkgKzE2OTI5LDYgQEAK
IAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCi0JCQkJNTc2MDgyNzkyMDI0NERBQzAwMTE2Njc4
IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgKi8sCi0JCQkJNTc2MDgyNzgyMDI0NERB
QjAwMTE2Njc4IC8qIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5oICovLAotCQkJCTU3NjA4Mjgw
MjAyNTU2RjQwMDExNjY3OCAvKiBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaWRsICovLAogCQkJ
CTUxMDU4QUQ3MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5jcHAgKi8sCiAJCQkJNTEw
NThBRDgxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmggKi8sCiAJCQkJNTEwNThBRDkx
RDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuY3BwICovLApAQCAtMTY5NzYs
MTIgKzE2OTc1LDEyIEBACiAJCQkJQTdCNEVBNjkxNEM5MzQ4NDAwQzhGNUJGIC8qIEpTTWFsbG9j
U3RhdGlzdGljcy5oICovLAogCQkJCUNENTM5M0QxMTc1RTAxODYwMEMwNzEyMyAvKiBKU01lbW9y
eUluZm8uY3BwICovLAogCQkJCUNENTM5M0QyMTc1RTAxODYwMEMwNzEyMyAvKiBKU01lbW9yeUlu
Zm8uaCAqLywKKwkJCQk1N0RDRUQ2MzIxNDA3NjNDMDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmNwcCAqLywKKwkJCQk1N0RDRUQ2MjIxNDA3NjNDMDAxNkI4NDcgLyog
SlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi8sCiAJCQkJQ0RGNEI3MkQxRTAzQ0E0
QTAwRTIzNUEyIC8qIEpTTW9ja0NETUZhY3RvcnkuY3BwICovLAogCQkJCUNERjRCNzJFMUUwM0NB
NEEwMEUyMzVBMiAvKiBKU01vY2tDRE1GYWN0b3J5LmggKi8sCiAJCQkJQTE5QUVBMUQxQUFBODA2
RTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTE5
QUVBMUUxQUFBODA2RTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oICov
LAotCQkJCTU3NjA4MjgxMjAyNTY3OTYwMDExNjY3OCAvKiBKU01vY2tDcmVkZW50aWFsc01lc3Nl
bmdlci5jcHAgKi8sCi0JCQkJNTc2MDgyODIyMDI1Njc5NzAwMTE2Njc4IC8qIEpTTW9ja0NyZWRl
bnRpYWxzTWVzc2VuZ2VyLmggKi8sCiAJCQkJMkQ2RjNFOTIxQzFGODU1NTAwNjFEQkQ0IC8qIEpT
TW9ja1BhZ2VPdmVybGF5LmNwcCAqLywKIAkJCQkyRDZGM0U5MzFDMUY4NTU1MDA2MURCRDQgLyog
SlNNb2NrUGFnZU92ZXJsYXkuaCAqLywKIAkJCQlBMTQ2RDMyMDFGOTlDQTNFMDBEMjkxOTYgLyog
SlNNb2NrUGF5bWVudEFkZHJlc3MuY3BwICovLApAQCAtMTg3MTAsOCArMTg3MDksNiBAQAogCQkJ
CTc3RDUxMDE4MUVENzE1OTkwMERBNEM4NyAvKiBDcmVkZW50aWFsc0NvbnRhaW5lci5jcHAgKi8s
CiAJCQkJNzdENTEwMTYxRUQ2MDIxQjAwREE0Qzg3IC8qIENyZWRlbnRpYWxzQ29udGFpbmVyLmgg
Ki8sCiAJCQkJNTdEODQ2MjkxRkU5OUY2MzAwQ0EzNjgyIC8qIENyZWRlbnRpYWxzQ29udGFpbmVy
LmlkbCAqLywKLQkJCQk1NzYwODI5MzIwMkJBOTUzMDAxMTY2NzggLyogQ3JlZGVudGlhbHNNZXNz
ZW5nZXIuY3BwICovLAotCQkJCTU3NjA4MjcwMjAyMTUxM0YwMDExNjY3OCAvKiBDcmVkZW50aWFs
c01lc3Nlbmdlci5oICovLAogCQkJCTU3RDg0NjI0MUZFODk1RjUwMENBMzY4MiAvKiBOYXZpZ2F0
b3JDcmVkZW50aWFscy5jcHAgKi8sCiAJCQkJNTdEODQ2MjYxRkU4OTVGODAwQ0EzNjgyIC8qIE5h
dmlnYXRvckNyZWRlbnRpYWxzLmggKi8sCiAJCQkJNTdEODQ2MjUxRkU4OTVGNjAwQ0EzNjgyIC8q
IE5hdmlnYXRvckNyZWRlbnRpYWxzLmlkbCAqLywKQEAgLTE4NzQxLDE1ICsxODczOCwxNCBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJNTczMDNCQjMyMDA2QzZFRDAwMzU1OTY1IC8qIGNib3IgKi8s
CiAJCQkJNTc0RjU1REQyMDRGMzc0NDAwMjk0OEM2IC8qIGNvY29hICovLAotCQkJCTU3MzAzQzI4
MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwICov
LAogCQkJCTU3MzAzQzI3MjAwOUIyRkMwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2UuaCAqLywKIAkJCQk1NzMwM0MyOTIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlLmlkbCAqLywKLQkJCQk1NzMwM0MxQzIwMDlBOTg2MDAzNTU5
NjUgLyogQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwICovLAogCQkJCTU3MzAz
QzFCMjAwOUE5ODYwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5o
ICovLAogCQkJCTU3MzAzQzFEMjAwOUE5ODYwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZS5pZGwgKi8sCi0JCQkJNTczMDNDNDQyMDEwNUIzRDAwMzU1OTY1IC8qIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCAqLywKLQkJCQk1NzMwM0M0MzIwMTA1QjNEMDAzNTU5NjUg
LyogQXV0aGVudGljYXRvck1hbmFnZXIuaCAqLywKLQkJCQk1NzMwM0JEMDIwMDg3QTgzMDAzNTU5
NjUgLyogQXV0aGVudGljYXRvclJlc3BvbnNlLmNwcCAqLywKKwkJCQk1NzMwM0M0NDIwMTA1QjNE
MDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCAqLywKKwkJCQk1NzMwM0M0
MzIwMTA1QjNEMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggKi8sCisJCQkJ
NTc2MDgyOTMyMDJCQTk1MzAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dC5jcHAgKi8sCisJCQkJNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudC5oICovLAogCQkJCTU3MzAzQkNGMjAwODdBODMwMDM1NTk2NSAvKiBB
dXRoZW50aWNhdG9yUmVzcG9uc2UuaCAqLywKIAkJCQk1NzMwM0JEMTIwMDg3QTgzMDAzNTU5NjUg
LyogQXV0aGVudGljYXRvclJlc3BvbnNlLmlkbCAqLywKIAkJCQk1NzRGNTVEQzIwNEYzNzMyMDAy
OTQ4QzYgLyogQ09TRUNvbnN0YW50cy5oICovLApAQCAtMTg3NTgsNiArMTg3NTQsNyBAQAogCQkJ
CTU3RDg0NjJEMUZFQUY2OEYwMENBMzY4MiAvKiBQdWJsaWNLZXlDcmVkZW50aWFsLmlkbCAqLywK
IAkJCQk1NzMwM0JFNjIwMDk3NDdBMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucy5oICovLAogCQkJCTU3MzAzQkU4MjAwOTc0N0EwMDM1NTk2NSAvKiBQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmlkbCAqLywKKwkJCQk1N0RDRUQ3MjIxNDMwNUYw
MDAxNkI4NDcgLyogUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCAqLywKIAkJCQk1NzMwM0JFQzIw
MDk4MEJGMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaCAqLywKIAkJ
CQk1NzMwM0JFRTIwMDk4MEJGMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0
b3IuaWRsICovLAogCQkJCTU3MzAzQzA2MjAwOTk4RjgwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMuaCAqLywKQEAgLTI2OTk4LDE4ICsyNjk5NSwxOCBAQAogCQkJ
CTUzRUQzRkRGMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDBCNTk1MTRDOTM1QUIwMEE3N0ZBNCAvKiBKU01hbGxv
Y1N0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTM5M0Q0MTc1RTAxODYwMEMwNzEy
MyAvKiBKU01lbW9yeUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTU3RENFRDY3MjE0MDc3NUIw
MDE2Qjg0NyAvKiBKU01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzOEVDOTMzMUY5OUI5RjcwMDREMjJBOCAvKiBKU01vY2tDRE1GYWN0b3J5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTlBRUEyMTFBQUE4MDg2MDBCNTJCMjUgLyogSlNNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKLQkJCQk1NzYwODI4NjIwMjU2QUZBMDAx
MTY2NzggLyogSlNNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUzOEVDOTM0MUY5OUI5RjcwMDREMjJBOCAvKiBKU01vY2tQYWdlT3ZlcmxheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTE0NkQzMjMxRjk5RDBFRjAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRBZGRy
ZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQ2RDMxQjFGOTlCQ0ZCMDBEMjkxOTYgLyogSlNN
b2NrUGF5bWVudENvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzYwODI3QTIwMjRFQTVDMDAxMTY2NzggLyogTW9ja0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFCRjZCODMxQUE5
NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MUI1QjI5RjFBQUE4NDZGMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTc2MDgyN0EyMDI0RUE1QzAwMTE2Njc4IC8qIE1vY2tDcmVkZW50
aWFsc01lc3Nlbmdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwNThBREMxRDY3OTJDMTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFERTFENjc5MkMx
MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1
N0VCRkIxRTNBQjY3RjAwQUM5RkU5IC8qIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNzE5OSw3ICsyNzE5Niw4IEBACiAJCQkJNTE0Qzc2NEMwQ0U5MjM0
RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMw
M0MyQzIwMDlCNEE4MDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0MxRjIwMDlBQjQyMDAzNTU5NjUgLyogQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3MzAzQzQ2MjAx
MDVEMkYwMDM1NTk2NSAvKiBBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTczMDNDNDYyMDEwNUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTc2MDgyNzIyMDIxNUE1NTAwMTE2Njc4IC8qIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCRDIyMDA4
N0E4MzAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUwMTkyMEUxMzJFQkYyRTAwOEJGRTU1IC8qIEF1dG9jYXBpdGFsaXplLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNUE3QUE0MzEzMkYwRUNDMDBEM0EzQzIgLyogQXV0b2NhcGl0YWxpemVUeXBl
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQ2NCw3ICsyNzQ2Miw2IEBACiAJCQkJNzdENTEwMEQx
RUQ1RTI5NTAwREE0Qzg3IC8qIENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTc3RDUxMDBCMUVENUUyODgwMERBNEM4NyAvKiBDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3RDUxMDE3MUVENjAyMjIwMERBNEM4NyAvKiBD
cmVkZW50aWFsc0NvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTc2MDgyNzIyMDIxNUE1
NTAwMTE2Njc4IC8qIENyZWRlbnRpYWxzTWVzc2VuZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUEwNTIzMzEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJENDgxRjAyMTQ2QjVDNTUwMEFBNzgzNCAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE2MTIwRjY1NjJGRDAwOTJEMkZCIC8qIENy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTc5NSw2ICsyOTc5
Miw3IEBACiAJCQkJRkY5NDVFQ0MxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3RDg0NjJFMUZFQUY2OTkwMENBMzY4MiAvKiBQdWJsaWNLZXlD
cmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JFOTIwMDk3NDhEMDAzNTU5NjUg
LyogUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTdEQ0VENzQyMTQzMDVGMDAwMTZCODQ3IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JFRjIwMDk4MEM2MDAzNTU5NjUgLyogUHVibGljS2V5
Q3JlZGVudGlhbERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzBBMjAwOTlC
QUQwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3MzAzQkVCMjAwOTdGNDAwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50
aWFsVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTQwOCwxOSArMzE0MDYsMTkgQEAKIAkJCQk1
M0VEM0ZERTE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOTMyMUY5OUI5RjcwMDREMjJBOCAvKiBKU01hbGxv
Y1N0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1MzkzRDMxNzVFMDE4NjAwQzA3
MTIzIC8qIEpTTWVtb3J5SW5mby5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1N0RDRUQ2OTIxNDA3
NzY0MDAxNkI4NDcgLyogSlNNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNERjRCNzMyMUUwM0QwNjAwMEUyMzVBMiAvKiBKU01vY2tDRE1GYWN0b3J5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExOUFFQTIyMUFBQTgwOEEwMEI1MkIyNSAvKiBKU01v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTc2MDgyODgy
MDI1NkFGRDAwMTE2Njc4IC8qIEpTTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJENDE1MERFMUMxRjg2OEMwMDBBM0JBMiAvKiBKU01vY2tQYWdlT3Zlcmxh
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQ2RDMyMjFGOTlEMEVDMDBEMjkxOTYgLyogSlNN
b2NrUGF5bWVudEFkZHJlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0NkQzMUExRjk5QkNG
ODAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MjdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5
cGVDb252ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NzYwODI3QjIw
MjRFRDI5MDAxMTY2NzggLyogTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDREY0QjczMTFFMDNEMDA3MDBFMjM1QTIgLyogTW9ja0NETUZhY3Rvcnku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCRjZCODIxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tD
b250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQjVCMjlFMUFBQTg0NkUwMDhC
NjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTU3NjA4MjdCMjAyNEVEMjkwMDExNjY3OCAvKiBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1l
cGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBN
b2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2
NzkwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzNDQ2MDdiNzI2YWMzYTBmYjEzYWQyZWQ2ZjhkNTZh
ZDJjYTMyMjhmLi5mM2FjMzQ1OGVmYzUwNWVjMDJmZjE3NDkyN2UyYzk3NWI4MzVmOWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1
ZGUgIkFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ1NTQW5pbWF0aW9uQ29u
dHJvbGxlci5oIgpAQCAtMjU1LDYgKzI1Niw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRp
b24mJiBwYWdlQ29uZmlndXJhdGlvbikKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogICAgICwgbV9w
YXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCpw
YWdlQ29uZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGllbnQpKQogI2VuZGlmCisjaWYg
RU5BQkxFKFdFQl9BVVRITikKKyAgICAsIG1fYXV0aGVudGljYXRvckNvb3JkaW5hdG9yKG1ha2VV
bmlxdWVSZWY8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCkpKQorI2VuZGlmCiAjaWYgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgICwgbV9hcHBsaWNhdGlvbk1hbmlmZXN0KHBhZ2VD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uTWFuaWZlc3QpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggZGJhNGYwZjA4MjcxZWI3NWI5ZjM2YjVjNGQwMzFmOGU4ZDZmMzk0Ni4uYTc4Y2NhNDk5YmJj
YmQzMGI2MGU1Mjc3OTQ4MjFmMzgwYTYwNWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTc2LDYgKzc2
LDcgQEAgY2xhc3MgSURCQ29ubmVjdGlvblRvU2VydmVyOwogCiBjbGFzcyBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQ7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjsKIGNsYXNzIEJhY2tGb3J3YXJkQ29udHJvbGxlcjsKIGNsYXNzIEJh
Y2tGb3J3YXJkQ2xpZW50OwogY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CkBAIC00MTAsNiAr
NDExLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBheW1lbnRDb29y
ZGluYXRvcihzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudENvb3JkaW5hdG9yPiYmKTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3ImIGF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcigpIHsgcmV0dXJuIG1fYXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmdldCgpOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
ICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBhcHBsaWNhdGlv
bk1hbmlmZXN0KCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0OyB9CiAjZW5k
aWYKQEAgLTkwMSw2ICs5MDYsMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGF5
bWVudENvb3JkaW5hdG9yPiBtX3BheW1lbnRDb29yZGluYXRvcjsKICNlbmRpZgogCisjaWYgRU5B
QkxFKFdFQl9BVVRITikKKyAgICBVbmlxdWVSZWY8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yPiBt
X2F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQogICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gbV9h
cHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCmluZGV4IGNkNDAwNWI1NjM3M2M4ODQzY2U5NzEyNmJiM2ZlMzAxMjcxODk0
ZmYuLjE0Yzk5MTU5ZGRkNzMwOTc3OTc3ZTE2YWM0MWQ0YjYxNmIzM2MwYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC00Miw2ICs0MiwxMCBAQAogI2lu
Y2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKICNpbmNsdWRlICJXZWJHTFN0YXRlVHJhY2tlci5o
IgogCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhZ2VDb25m
aWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbihVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmIGVk
aXRvckNsaWVudCwgUmVmPFNvY2tldFByb3ZpZGVyPiYmIHNvY2tldFByb3ZpZGVyLCBVbmlxdWVS
ZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYgbGliV2ViUlRDUHJvdmlkZXIsIFJlZjxDYWNoZVN0b3Jh
Z2VQcm92aWRlcj4mJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uaAppbmRleCAzYTczNDU3NmQ0MGEyY2Q0YmRhMTRjNGViZTAzMzJhYTM1
NmUyMWU0Li42MGJkZWM3ZDNmYzE4MTc2NWJlYTIxYmExNDY1NmU1ZGYwOTBmNDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogY2xhc3MgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQ7CiBjbGFzcyBCYWNrRm9yd2FyZENsaWVudDsKIGNsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVy
OwogY2xhc3MgQ2hyb21lQ2xpZW50OwpAQCAtODAsNiArODEsMTAgQEAgcHVibGljOgogICAgIFBh
eW1lbnRDb29yZGluYXRvckNsaWVudCogcGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IHsgbnVsbHB0
ciB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ+IGF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ckNsaWVudDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAg
IHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gYXBwbGljYXRpb25NYW5pZmVzdDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGY3NWFiMjQ1YWU3
MDA5YTQzODEzODg0ZGM0ZmMyNTc0MTYzOWJjMGIuLjgwZDViZDg3YWJmZmZkNDQxOGM2MjE1NTAw
MjM4ZmQ0MzQ2YjNjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI2
Nyw4ICsyNjcsOCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiTW9ja0NyZWRlbnRpYWxzTWVzc2Vu
Z2VyLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAi
TW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIgogI2VuZGlmCiAKIHVzaW5nIEpTQzo6Q2Fs
bERhdGE7CkBAIC01NDksOCArNTQ5LDExIEBAIEludGVybmFsczo6SW50ZXJuYWxzKERvY3VtZW50
JiBkb2N1bWVudCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBtX21vY2tD
cmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NyZWRlbnRpYWxzTWVz
c2VuZ2VyPigqdGhpcyk7Ci0gICAgQXV0aGVudGljYXRvck1hbmFnZXI6OnNpbmdsZXRvbigpLnNl
dE1lc3NlbmdlcigqbV9tb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIpOworICAgIGlmIChkb2N1bWVu
dC5wYWdlKCkpIHsKKyAgICAgICAgYXV0byBtb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigpOworICAgICAg
ICBtX21vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgPSBtYWtlV2Vha1B0cihtb2NrQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmdldCgpKTsKKyAgICAgICAgZG9jdW1lbnQucGFnZSgpLT5hdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5zZXRDbGllbnQoV1RGTW92ZShtb2NrQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yKSk7CisgICAgfQogI2VuZGlmCiB9CiAKQEAgLTQ2MjAsOSArNDYyMyw5IEBA
IE1vY2tQYXltZW50Q29vcmRpbmF0b3ImIEludGVybmFsczo6bW9ja1BheW1lbnRDb29yZGluYXRv
cigpIGNvbnN0CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi1Nb2NrQ3JlZGVudGlh
bHNNZXNzZW5nZXImIEludGVybmFsczo6bW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyKCkgY29uc3QK
K01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3ImIEludGVybmFsczo6bW9ja0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICptX21vY2tDcmVkZW50aWFsc01l
c3NlbmdlcjsKKyAgICByZXR1cm4gKm1fbW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcjsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBiNGE1MGJhN2QxMTBi
N2EyNTdiMDlhMWIxMjI0MjIyZGQwMGIzMjcwLi4yNDE3ZWU4NTIxOTc1MjY4ZWZlYzJhOGY4OTI1
MzM4YjBjNjExNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTc3LDcgKzc3
LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIGNsYXNzIE1lbW9yeUluZm87CiBjbGFzcyBN
b2NrQ0RNRmFjdG9yeTsKIGNsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7Ci1jbGFzcyBN
b2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI7CitjbGFzcyBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yOwogY2xhc3MgTW9ja1BhZ2VPdmVybGF5OwogY2xhc3MgTW9ja1BheW1lbnRDb29yZGluYXRv
cjsKIGNsYXNzIE5vZGVMaXN0OwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHRlc3RJbmNvbWluZ1N5bmNJUENNZXNzYWdlV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5KCk7CiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIE1vY2tDcmVkZW50aWFsc01lc3NlbmdlciYgbW9j
a0NyZWRlbnRpYWxzTWVzc2VuZ2VyKCkgY29uc3Q7CisgICAgTW9ja0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvciYgbW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpIGNvbnN0OwogI2VuZGlmCiAK
ICAgICBib29sIGlzU3lzdGVtUHJldmlld0xpbmsoRWxlbWVudCYpIGNvbnN0OwpAQCAtNzYzLDcg
Kzc2Myw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAg
c3RkOjp1bmlxdWVfcHRyPE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcj4gbV9tb2NrQ3JlZGVudGlh
bHNNZXNzZW5nZXI7CisgICAgV2Vha1B0cjxNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPiBt
X21vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAwNzg4NDZlZThiMmVhN2ZkYjUwNzJiMjQ0YzZhNjc2
YWNmZDVjZjU0Li4yMTg0ZmQyMWRkMWFjMTg4ZGJmMDQxODg1ODA1Yzg3M2UxYjYxZjhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC02NDYsNyArNjQ2LDcgQEAgZW51bSBD
b21wb3NpdGluZ1BvbGljeSB7CiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9V2ViQW5pbWF0aW9uc10g
dm9pZCBwYXVzZVRpbWVsaW5lKEFuaW1hdGlvblRpbWVsaW5lIHRpbWVsaW5lKTsKICAgICBbRW5h
YmxlZEF0UnVudGltZT1XZWJBbmltYXRpb25zXSB2b2lkIHNldFRpbWVsaW5lQ3VycmVudFRpbWUo
QW5pbWF0aW9uVGltZWxpbmUgdGltZWxpbmUsIGRvdWJsZSBjdXJyZW50VGltZSk7CiAgICAgW0Nv
bmRpdGlvbmFsPUFQUExFX1BBWV0gcmVhZG9ubHkgYXR0cmlidXRlIE1vY2tQYXltZW50Q29vcmRp
bmF0b3IgbW9ja1BheW1lbnRDb29yZGluYXRvcjsKLSAgICBbQ29uZGl0aW9uYWw9V0VCX0FVVEhO
XSByZWFkb25seSBhdHRyaWJ1dGUgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyIG1vY2tDcmVkZW50
aWFsc01lc3NlbmdlcjsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX0FVVEhOXSByZWFkb25seSBhdHRy
aWJ1dGUgTW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvciBtb2NrQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOwogCiAgICAgYm9vbGVhbiBpc1N5c3RlbVByZXZpZXdMaW5rKEVsZW1lbnQgZWxlbWVu
dCk7CiAgICAgYm9vbGVhbiBpc1N5c3RlbVByZXZpZXdJbWFnZShFbGVtZW50IGVsZW1lbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q3ZDY5YTYyZDYwYWQ5ODY0NzdhZDZhMzJkNDg2YjA0
YjU0Y2Y5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkludGVybmFscy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbERhdGEuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBNb2NrQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpzZXRDcmVhdGlvblJldHVybkJ1bmRsZShjb25zdCBCdWZmZXJT
b3VyY2UmIGNyZWRlbnRpYWxJZCwgY29uc3QgQnVmZmVyU291cmNlJiBhdHRlc3RhdGlvbk9iamVj
dCkKK3sKKyAgICBBU1NFUlQoIW1fY3JlZGVudGlhbElkICYmICFtX2F0dGVzdGF0aW9uT2JqZWN0
KTsKKyAgICBtX2NyZWRlbnRpYWxJZCA9IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElk
LmRhdGEoKSwgY3JlZGVudGlhbElkLmxlbmd0aCgpKTsKKyAgICBtX2F0dGVzdGF0aW9uT2JqZWN0
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0
aW9uT2JqZWN0Lmxlbmd0aCgpKTsKK30KKwordm9pZCBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yOjpzZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNlJiBjcmVkZW50
aWFsSWQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IEJ1ZmZl
clNvdXJjZSYgc2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2UmIHVzZXJIYW5kbGUpCit7Cisg
ICAgQVNTRVJUKCFtX2NyZWRlbnRpYWxJZCAmJiAhbV9hdXRoZW50aWNhdG9yRGF0YSAmJiAhbV9z
aWduYXR1cmUgJiYgIW1fdXNlckhhbmRsZSk7CisgICAgbV9jcmVkZW50aWFsSWQgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5sZW5ndGgoKSk7
CisgICAgbV9hdXRoZW50aWNhdG9yRGF0YSA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGlj
YXRvckRhdGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5sZW5ndGgoKSk7CisgICAgbV9zaWdu
YXR1cmUgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5s
ZW5ndGgoKSk7CisgICAgbV91c2VySGFuZGxlID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1c2VySGFu
ZGxlLmRhdGEoKSwgdXNlckhhbmRsZS5sZW5ndGgoKSk7Cit9CisKK3ZvaWQgTW9ja0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwg
Y29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlciYmIGhhbmRsZXIpCit7CisgICAgaWYgKCFzZXRSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShoYW5kbGVyKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2Rp
ZFRpbWVPdXQpIHsKKyAgICAgICAgbV9kaWRUaW1lT3V0ID0gZmFsc2U7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKG1fZGlkVXNlckNhbmNlbCkgeworICAgICAgICBtX2RpZFVzZXJD
YW5jZWwgPSBmYWxzZTsKKyAgICAgICAgcmVxdWVzdFJlcGx5KHsgfSwgeyBOb3RBbGxvd2VkRXJy
b3IsICJVc2VyIGNhbmNlbGxlZC4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKG1fY3JlZGVudGlhbElkKSB7CisgICAgICAgIEFTU0VSVChtX2F0dGVzdGF0aW9uT2JqZWN0
KTsKKyAgICAgICAgcmVxdWVzdFJlcGx5KFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgV1RGTW92
ZShtX2NyZWRlbnRpYWxJZCksIHRydWUsIG51bGxwdHIsIFdURk1vdmUobV9hdHRlc3RhdGlvbk9i
amVjdCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfSwgeyB9KTsKKyAgICAgICAgbV9jcmVk
ZW50aWFsSWQgPSBudWxscHRyOworICAgICAgICBtX2F0dGVzdGF0aW9uT2JqZWN0ID0gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwordm9pZCBNb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
JiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBpZiAoIXNldFJl
cXVlc3RDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fZGlkVGltZU91dCkgeworICAgICAgICBtX2RpZFRpbWVPdXQgPSBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9kaWRVc2VyQ2FuY2VsKSB7Cisg
ICAgICAgIG1fZGlkVXNlckNhbmNlbCA9IGZhbHNlOworICAgICAgICByZXF1ZXN0UmVwbHkoeyB9
LCB7IE5vdEFsbG93ZWRFcnJvciwgIlVzZXIgY2FuY2VsbGVkLiJfcyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAobV9jcmVkZW50aWFsSWQpIHsKKyAgICAgICAgQVNTRVJUKG1f
YXV0aGVudGljYXRvckRhdGEgJiYgbV9zaWduYXR1cmUgJiYgbV91c2VySGFuZGxlKTsKKyAgICAg
ICAgcmVxdWVzdFJlcGx5KFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgV1RGTW92ZShtX2NyZWRl
bnRpYWxJZCksIGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKG1fYXV0aGVudGljYXRv
ckRhdGEpLCBXVEZNb3ZlKG1fc2lnbmF0dXJlKSwgV1RGTW92ZShtX3VzZXJIYW5kbGUpIH0sIHsg
fSk7CisgICAgICAgIG1fY3JlZGVudGlhbElkID0gbnVsbHB0cjsKKyAgICAgICAgbV9hdXRoZW50
aWNhdG9yRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fc2lnbmF0dXJlID0gbnVsbHB0cjsKKyAg
ICAgICAgbV91c2VySGFuZGxlID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBNb2NrQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVl
cnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit7CisgICAgYXV0byBtZXNzYWdlSWQgPSBh
ZGRRdWVyeUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpOworICAgIGlmIChtX2Rp
ZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50KSB7CisgICAgICAgIGlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJ
ZCwgdHJ1ZSk7CisgICAgICAgIG1fZGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRv
clByZXNlbnQgPSBmYWxzZTsKKyAgICB9IGVsc2UKKyAgICAgICAgaXNVc2VyVmVyaWZ5aW5nUGxh
dGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2FnZUlkLCBmYWxzZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk0YWM0NWVhMmZmMzQ1NzVlYTQ2NGI5NTFiY2QxMzZhNDUxMmJh
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnRlcm5h
bHM7CisKK2NsYXNzIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgZmluYWwgOiBwdWJsaWMg
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldERp
ZFRpbWVPdXQoKSB7IG1fZGlkVGltZU91dCA9IHRydWU7IH0KKyAgICB2b2lkIHNldERpZFVzZXJD
YW5jZWwoKSB7IG1fZGlkVXNlckNhbmNlbCA9IHRydWU7IH0KKyAgICB2b2lkIHNldERpZFVzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50KCkgeyBtX2RpZFVzZXJWZXJpZnlp
bmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0Q3Jl
YXRpb25SZXR1cm5CdW5kbGUoY29uc3QgQnVmZmVyU291cmNlJiBjcmVkZW50aWFsSWQsIGNvbnN0
IEJ1ZmZlclNvdXJjZSYgYXR0ZXN0YXRpb25PYmplY3QpOworICAgIHZvaWQgc2V0QXNzZXJ0aW9u
UmV0dXJuQnVuZGxlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgY3JlZGVudGlhbElkLCBjb25zdCBCdWZm
ZXJTb3VyY2UmIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVy
ZSwgY29uc3QgQnVmZmVyU291cmNlJiB1c2VySGFuZGxlKTsKKworICAgIC8vIFJlZkNvdW50ZWQg
aXMgcmVxdWlyZWQgZm9yIEpTIHdyYXBwZXIuIFRoZXJlZm9yZSwgZmFrZSB0aGVtIHRvIGNvbXBp
bGUuCisgICAgdm9pZCByZWYoKSBjb25zdCB7IH0KKyAgICB2b2lkIGRlcmVmKCkgY29uc3QgeyB9
CisKK3ByaXZhdGU6CisgICAgdm9pZCBtYWtlQ3JlZGVudGlhbChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBSZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBnZXRBc3NlcnRpb24oY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBp
c1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKKworICAgIC8vIEFsbCBmb2xsb3dpbmcgZmllbGRzIGFyZSBk
aXNwb3NhYmxlLgorICAgIGJvb2wgbV9kaWRUaW1lT3V0IHsgZmFsc2UgfTsKKyAgICBib29sIG1f
ZGlkVXNlckNhbmNlbCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RpZFVzZXJWZXJpZnlpbmdQbGF0
Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50IHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IG1fY3JlZGVudGlhbElkOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9hdHRlc3RhdGlv
bk9iamVjdDsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXV0aGVudGljYXRvckRhdGE7Cisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX3NpZ25hdHVyZTsKKyAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IG1fdXNlckhhbmRsZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYWM1Y2IyZWY4
MjBiNTAyNmEyNTk4Y2ZkMmZjY2I2NTc1MzNlZDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmlkbApAQCAtMCww
ICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVVRITiwKKyAg
ICBOb0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIE1vY2tBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IgeworICAgIHZvaWQgc2V0RGlkVGltZU91dCgpOworICAgIHZvaWQgc2V0RGlkVXNlckNh
bmNlbCgpOworICAgIHZvaWQgc2V0RGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRv
clByZXNlbnQoKTsKKyAgICB2b2lkIHNldENyZWF0aW9uUmV0dXJuQnVuZGxlKEJ1ZmZlclNvdXJj
ZSBjcmVkZW50aWFsSWQsIEJ1ZmZlclNvdXJjZSBhdHRlc3RhdGlvbk9iamVjdCk7CisgICAgdm9p
ZCBzZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoQnVmZmVyU291cmNlIGNyZWRlbnRpYWxJZCwgQnVm
ZmVyU291cmNlIGF1dGhlbnRpY2F0b3JEYXRhLCBCdWZmZXJTb3VyY2Ugc2lnbmF0dXJlLCBCdWZm
ZXJTb3VyY2UgdXNlckhhbmRsZSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxMDJlMzNiNWM1Yjg4YTgxZjFlMmE2NGI3Y2UwZmUzZjU1MDE0YTNmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1vY2tD
cmVkZW50aWFsc01lc3Nlbmdlci5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotI2luY2x1
ZGUgIkludGVybmFscy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6Ok1vY2tDcmVkZW50aWFsc01lc3Nl
bmdlcihJbnRlcm5hbHMmIGludGVybmFscykKLSAgICA6IG1faW50ZXJuYWxzKGludGVybmFscykK
LXsKLX0KLQotTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjp+TW9ja0NyZWRlbnRpYWxzTWVzc2Vu
Z2VyKCkKLXsKLSAgICAvLyBIYXZlIG5vIGVmZmVjdHMgdG8gb3JpZ2luYWwgcHJvbWlzZXMuIEp1
c3QgdG8gY2FsbCBoYW5kbGVycyB0byBhdm9pZCBhbnkgYXNzZXJ0aW9uIGZhaWx1cmVzLgotICAg
IGZvciAoYXV0byBtZXNzYWdlSWQgOiBtX3RpbWVPdXRNZXNzYWdlSWRzKQotICAgICAgICBleGNl
cHRpb25SZXBseShtZXNzYWdlSWQsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJP
cGVyYXRpb24gdGltZWQgb3V0LiJfcyB9KTsKLX0KLQotdm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNz
ZW5nZXI6OnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgY3JlZGVu
dGlhbElkLCBjb25zdCBCdWZmZXJTb3VyY2UmIGF0dGVzdGF0aW9uT2JqZWN0KQotewotICAgIEFT
U0VSVChtX2NyZWRlbnRpYWxJZC5pc0VtcHR5KCkgJiYgbV9hdHRlc3RhdGlvbk9iamVjdC5pc0Vt
cHR5KCkpOwotICAgIG1fY3JlZGVudGlhbElkLmFwcGVuZChjcmVkZW50aWFsSWQuZGF0YSgpLCBj
cmVkZW50aWFsSWQubGVuZ3RoKCkpOwotICAgIG1fYXR0ZXN0YXRpb25PYmplY3QuYXBwZW5kKGF0
dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3QubGVuZ3RoKCkpOwotfQot
Ci12b2lkIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6c2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxl
KGNvbnN0IEJ1ZmZlclNvdXJjZSYgY3JlZGVudGlhbElkLCBjb25zdCBCdWZmZXJTb3VyY2UmIGF1
dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVm
ZmVyU291cmNlJiB1c2VySGFuZGxlKQotewotICAgIEFTU0VSVChtX2NyZWRlbnRpYWxJZC5pc0Vt
cHR5KCkgJiYgbV9hdXRoZW50aWNhdG9yRGF0YS5pc0VtcHR5KCkgJiYgbV9zaWduYXR1cmUuaXNF
bXB0eSgpICYmIG1fdXNlckhhbmRsZS5pc0VtcHR5KCkpOwotICAgIG1fY3JlZGVudGlhbElkLmFw
cGVuZChjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQubGVuZ3RoKCkpOwotICAgIG1f
YXV0aGVudGljYXRvckRhdGEuYXBwZW5kKGF1dGhlbnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVu
dGljYXRvckRhdGEubGVuZ3RoKCkpOwotICAgIG1fc2lnbmF0dXJlLmFwcGVuZChzaWduYXR1cmUu
ZGF0YSgpLCBzaWduYXR1cmUubGVuZ3RoKCkpOwotICAgIG1fdXNlckhhbmRsZS5hcHBlbmQodXNl
ckhhbmRsZS5kYXRhKCksIHVzZXJIYW5kbGUubGVuZ3RoKCkpOwotfQotCi12b2lkIE1vY2tDcmVk
ZW50aWFsc01lc3Nlbmdlcjo6cmVmKCkKLXsKLSAgICBtX2ludGVybmFscy5yZWYoKTsKLX0KLQot
dm9pZCBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXI6OmRlcmVmKCkKLXsKLSAgICBtX2ludGVybmFs
cy5kZXJlZigpOwotfQotCi12b2lkIE1vY2tDcmVkZW50aWFsc01lc3Nlbmdlcjo6bWFrZUNyZWRl
bnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyYsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQotewot
ICAgIGF1dG8gbWVzc2FnZUlkID0gYWRkQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGhhbmRsZXIpKTsKLSAgICBpZiAobV9kaWRUaW1lT3V0KSB7Ci0gICAgICAgIG1fZGlkVGltZU91
dCA9IGZhbHNlOwotICAgICAgICBtX3RpbWVPdXRNZXNzYWdlSWRzLmFwcGVuZChtZXNzYWdlSWQp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2RpZFVzZXJDYW5jZWwpIHsKLSAg
ICAgICAgbV9kaWRVc2VyQ2FuY2VsID0gZmFsc2U7Ci0gICAgICAgIGV4Y2VwdGlvblJlcGx5KG1l
c3NhZ2VJZCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlVzZXIgY2FuY2VsbGVk
LiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIW1fY3JlZGVudGlhbElk
LmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoIW1fYXR0ZXN0YXRpb25PYmplY3QuaXNFbXB0
eSgpKTsKLSAgICAgICAgbWFrZUNyZWRlbnRpYWxSZXBseShtZXNzYWdlSWQsIG1fY3JlZGVudGlh
bElkLCBtX2F0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICAgICAgbV9jcmVkZW50aWFsSWQuY2xlYXIo
KTsKLSAgICAgICAgbV9hdHRlc3RhdGlvbk9iamVjdC5jbGVhcigpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIE1vY2tDcmVkZW50
aWFsc01lc3Nlbmdlcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFu
ZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgYXV0byBtZXNzYWdlSWQgPSBhZGRSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgaWYgKG1fZGlkVGltZU91dCkgewot
ICAgICAgICBtX2RpZFRpbWVPdXQgPSBmYWxzZTsKLSAgICAgICAgbV90aW1lT3V0TWVzc2FnZUlk
cy5hcHBlbmQobWVzc2FnZUlkKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9k
aWRVc2VyQ2FuY2VsKSB7Ci0gICAgICAgIG1fZGlkVXNlckNhbmNlbCA9IGZhbHNlOwotICAgICAg
ICBleGNlcHRpb25SZXBseShtZXNzYWdlSWQsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJy
b3IsICJVc2VyIGNhbmNlbGxlZC4iX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKCFtX2NyZWRlbnRpYWxJZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKCFtX2F1dGhl
bnRpY2F0b3JEYXRhLmlzRW1wdHkoKSAmJiAhbV9zaWduYXR1cmUuaXNFbXB0eSgpICYmICFtX3Vz
ZXJIYW5kbGUuaXNFbXB0eSgpKTsKLSAgICAgICAgZ2V0QXNzZXJ0aW9uUmVwbHkobWVzc2FnZUlk
LCBtX2NyZWRlbnRpYWxJZCwgbV9hdXRoZW50aWNhdG9yRGF0YSwgbV9zaWduYXR1cmUsIG1fdXNl
ckhhbmRsZSk7Ci0gICAgICAgIG1fY3JlZGVudGlhbElkLmNsZWFyKCk7Ci0gICAgICAgIG1fYXV0
aGVudGljYXRvckRhdGEuY2xlYXIoKTsKLSAgICAgICAgbV9zaWduYXR1cmUuY2xlYXIoKTsKLSAg
ICAgICAgbV91c2VySGFuZGxlLmNsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2Vy
Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21w
bGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgYXV0byBtZXNzYWdlSWQgPSBhZGRRdWVy
eUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpOwotICAgIGlmIChtX2RpZFVzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50KSB7Ci0gICAgICAgIGlzVXNlclZl
cmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJZCwgdHJ1
ZSk7Ci0gICAgICAgIG1fZGlkVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvclByZXNl
bnQgPSBmYWxzZTsKLSAgICB9IGVsc2UKLSAgICAgICAgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkobWVzc2FnZUlkLCBmYWxzZSk7Ci19Ci0KLXZvaWQg
TW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjptYWtlQ3JlZGVudGlhbFJlcGx5KHVpbnQ2NF90IG1l
c3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpCi17Ci0gICAgYXV0byBoYW5kbGVyID0gdGFr
ZUNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIobWVzc2FnZUlkKTsKLSAgICBoYW5kbGVyKENyZWF0
aW9uUmV0dXJuQnVuZGxlKEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwg
Y3JlZGVudGlhbElkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmpl
Y3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5zaXplKCkpKSk7Ci19Ci0KLXZvaWQgTW9ja0Ny
ZWRlbnRpYWxzTWVzc2VuZ2VyOjpnZXRBc3NlcnRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdlSWQs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKQotewotICAgIGF1dG8gaGFuZGxlciA9
IHRha2VSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXIobWVzc2FnZUlkKTsKLSAgICBoYW5kbGVyKEFz
c2VydGlvblJldHVybkJ1bmRsZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRh
KCksIGNyZWRlbnRpYWxJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0
b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNy
ZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNy
ZWF0ZSh1c2VySGFuZGxlLmRhdGEoKSwgdXNlckhhbmRsZS5zaXplKCkpKSk7Ci19Ci0KLXZvaWQg
TW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRp
Y2F0b3JBdmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wgcmVzdWx0KQotewot
ICAgIGF1dG8gaGFuZGxlciA9IHRha2VRdWVyeUNvbXBsZXRpb25IYW5kbGVyKG1lc3NhZ2VJZCk7
Ci0gICAgaGFuZGxlcihyZXN1bHQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGI0YjA4ZGY0ZWFhMDg0OGUxMTE5MWU5YTg2ZTQwNGEyYmM1MTE4MmYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNp
bmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKLSNpbmNsdWRlICJDcmVkZW50aWFsc01lc3Nlbmdlci5o
IgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgSW50ZXJuYWxzOwotCi1jbGFzcyBNb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIgZmluYWwgOiBw
dWJsaWMgQ3JlZGVudGlhbHNNZXNzZW5nZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IE1vY2tD
cmVkZW50aWFsc01lc3NlbmdlcihJbnRlcm5hbHMmKTsKLSAgICB+TW9ja0NyZWRlbnRpYWxzTWVz
c2VuZ2VyKCk7Ci0KLSAgICB2b2lkIHNldERpZFRpbWVPdXQoKSB7IG1fZGlkVGltZU91dCA9IHRy
dWU7IH0KLSAgICB2b2lkIHNldERpZFVzZXJDYW5jZWwoKSB7IG1fZGlkVXNlckNhbmNlbCA9IHRy
dWU7IH0KLSAgICB2b2lkIHNldERpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQ
cmVzZW50KCkgeyBtX2RpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQcmVzZW50
ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoY29uc3QgQnVmZmVy
U291cmNlJiBjcmVkZW50aWFsSWQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYXR0ZXN0YXRpb25PYmpl
Y3QpOwotICAgIHZvaWQgc2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgY3JlZGVudGlhbElkLCBjb25zdCBCdWZmZXJTb3VyY2UmIGF1dGhlbnRpY2F0b3JEYXRhLCBj
b25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiB1c2VySGFu
ZGxlKTsKLQotICAgIHZvaWQgcmVmKCk7Ci0gICAgdm9pZCBkZXJlZigpOwotCi1wcml2YXRlOgot
ICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgUHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBSZXF1ZXN0
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0
Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKLSAgICB2b2lkIG1ha2VDcmVkZW50aWFsUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBh
dHRlc3RhdGlvbk9iamVjdCkgZmluYWw7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb25SZXBseSh1aW50
NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKSBmaW5hbDsK
LSAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJl
cGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCkgZmluYWw7Ci0KLSAgICBJbnRlcm5hbHMmIG1f
aW50ZXJuYWxzOwotICAgIC8vIEFsbCBmb2xsb3dpbmcgZmllbGRzIGFyZSBkaXNwb3NhYmxlLgot
ICAgIGJvb2wgbV9kaWRUaW1lT3V0IHsgZmFsc2UgfTsKLSAgICBib29sIG1fZGlkVXNlckNhbmNl
bCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2RpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRp
Y2F0b3JQcmVzZW50IHsgZmFsc2UgfTsKLSAgICBWZWN0b3I8dWludDhfdD4gbV9hdHRlc3RhdGlv
bk9iamVjdDsKLSAgICBWZWN0b3I8dWludDhfdD4gbV9jcmVkZW50aWFsSWQ7IC8vIE92ZXJsYXBw
ZWQgYmV0d2VlbiBDcmVhdGlvblJldHVybkJ1bmRsZSBhbmQgQXNzZXJ0aW9uUmV0dXJuQnVuZGxl
LgotICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1dGhlbnRpY2F0b3JEYXRhOwotICAgIFZlY3Rvcjx1
aW50OF90PiBtX3NpZ25hdHVyZTsKLSAgICBWZWN0b3I8dWludDhfdD4gbV91c2VySGFuZGxlOwot
Ci0gICAgLy8gVG8gY2xlYW4gdXAgY29tcGxldGlvbiBoYW5kbGVycy4KLSAgICBWZWN0b3I8dWlu
dDY0X3Q+IG1fdGltZU91dE1lc3NhZ2VJZHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ3JlZGVudGlhbHNNZXNzZW5nZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzMWUxMjZhOTJiZjExOWEzYzQ1ZmFlNWViMjhhOGI5YWI5NThkOTgwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVVEhOLAot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotXSBpbnRlcmZhY2UgTW9ja0NyZWRlbnRpYWxzTWVzc2Vu
Z2VyIHsKLSAgICB2b2lkIHNldERpZFRpbWVPdXQoKTsKLSAgICB2b2lkIHNldERpZFVzZXJDYW5j
ZWwoKTsKLSAgICB2b2lkIHNldERpZFVzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JQ
cmVzZW50KCk7Ci0gICAgdm9pZCBzZXRDcmVhdGlvblJldHVybkJ1bmRsZShCdWZmZXJTb3VyY2Ug
Y3JlZGVudGlhbElkLCBCdWZmZXJTb3VyY2UgYXR0ZXN0YXRpb25PYmplY3QpOwotICAgIHZvaWQg
c2V0QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKEJ1ZmZlclNvdXJjZSBjcmVkZW50aWFsSWQsIEJ1ZmZl
clNvdXJjZSBhdXRoZW50aWNhdG9yRGF0YSwgQnVmZmVyU291cmNlIHNpZ25hdHVyZSwgQnVmZmVy
U291cmNlIHVzZXJIYW5kbGUpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAx
ZTRjYzUxZDhmOTBmNGMzM2UzYjhjODQwZjY1MzUzM2JhY2NiZTQ1Li5iZGVjMjgzMWI2NTEwYTc4
MGZlZDZiYjQyNjExYmM5MmY0Nzg3M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC00Myw3ICs0Myw2IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BcHBs
aWNhdGlvbkNhY2hlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvQXV0b21hdGlvbiBcCiAg
ICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0NhY2hlIFwKLSAgICAkKFdlYktpdDIpL1dlYlByb2Nl
c3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvSW5kZXhlZERCIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbiBc
CiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uIFwKQEAgLTU4LDYgKzU3LDcg
QEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUgXAog
ICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9TdG9yYWdlIFwKICAgICAkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQgXAorICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKICAg
ICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViUGFnZSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlIFwKQEAgLTY5LDcgKzY5LDYgQEAgVlBBVEggPSBc
CiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvQXBwbGVQYXkgXAogICAgICQoV2ViS2l0MikvVUlQ
cm9jZXNzL0F1dG9tYXRpb24gXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL0NvY29hIFwKLSAg
ICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudCBcCiAgICAgJChXZWJL
aXQyKS9VSVByb2Nlc3MvRGF0YWJhc2VzIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9Eb3du
bG9hZHMgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL01lZGlhU3RyZWFtIFwKQEAgLTgwLDYg
Kzc5LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9TdG9yYWdlIFwKICAgICAkKFdlYktpdDIp
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudCBcCisgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24gXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL1dlYlN0b3JhZ2UgXAogICAg
ICQoV2ViS2l0MikvVUlQcm9jZXNzL21hYyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvaW9z
IFwKQEAgLTE0OSw4ICsxNDksOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJDb25u
ZWN0aW9uIFwKICAgICBXZWJDb29raWVNYW5hZ2VyIFwKICAgICBXZWJDb29raWVNYW5hZ2VyUHJv
eHkgXAotICAgIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyIFwKLSAgICBXZWJDcmVkZW50aWFsc01l
c3NlbmdlclByb3h5IFwKKyAgICBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgXAorICAgIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IFwKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdl
ciBcCiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBcCiAgICAgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAwMjZkYTUyZTllZDgzYzRhOGRiZDRh
OGNlMjE3ZjM4OGQzMTI5OThiLi4xNmQwN2JhMDMzY2U4N2NmZTM3NjlhYjNkZThmODI5NjBiYTcy
OTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNDQsOCArMzQ0LDYgQEAgVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCiBVSVByb2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9y
UmVjb3ZlcnlBdHRlbXB0ZXIubW0KIFVJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJv
dmlkZXJSZWdpc3RyeS5tbQogCi1VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3Jl
ZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHAKLQogVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlH
YW1lcGFkUHJvdmlkZXJDb2NvYS5tbQogVUlQcm9jZXNzL0dhbWVwYWQvaW9zL1VJR2FtZXBhZFBy
b3ZpZGVySU9TLm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMu
bW0KQEAgLTQ1Niw2ICs0NTQsOCBAQCBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5tbQogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcAogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAogCitVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCisKIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KIAogVUlQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC00NjQsOCArNDY0LDYgQEAgVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvaW9zL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcklPUy5tbQogCiBX
ZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKIAotV2ViUHJvY2Vz
cy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKLQogV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCiBXZWJQcm9jZXNzL2NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tCkBAIC01MTAsNiArNTA4LDggQEAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpblBhc3N3b3JkRmllbGQubW0KIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
VGV4dEFubm90YXRpb24ubW0KIAorV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJW
YWxpZGF0aW9uTWVzc2FnZUNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3Jl
ZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDljYmNmYmYyY2Q5MDQxYWY0OGQwOWMyZDBlNmYwZTRkZTIwMjA1NjguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmgiCi0KLSNpZiBF
TkFCTEUoV0VCX0FVVEhOKQotCi0jaW5jbHVkZSAiV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNz
YWdlcy5oIgotI2luY2x1ZGUgIldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlcy5o
IgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
TG9jYWxBdXRoZW50aWNhdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJDcmVkZW50
aWFsc01lc3NlbmdlclByb3h5OjpXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5KFdlYlBhZ2VQ
cm94eSYgd2ViUGFnZVByb3h5KQotICAgIDogbV93ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5KQot
ewotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV93ZWJQYWdlUHJveHkucGFnZUlEKCksICp0aGlzKTsKLSAgICBtX2F1dGhlbnRpY2F0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRvcj4oKTsKLX0KLQotV2Vi
Q3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6fldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHko
KQotewotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyUHJveHk6Om1ha2VDcmVkZW50aWFsKHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiBvcHRpb25zKQotewotICAgIC8vIEZJWE1FKDE4Mjc2NykKLSAgICBp
ZiAoIW1fYXV0aGVudGljYXRvcikgewotICAgICAgICBleGNlcHRpb25SZXBseShtZXNzYWdlSWQs
IHsgV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCAiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3Jz
LiJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBGSVhNRSgxODM1MzQpOiBX
ZWFrIHBvaW50ZXJzIGRvZXNuJ3Qgd29yayBpbiBhbm90aGVyIHRocmVhZCBiZWNhdXNlIG9mIHJh
Y2UgY29uZGl0aW9uLgotICAgIC8vIEZJWE1FKDE4MzUzNCk6IFVuaWZ5IGNhbGxiYWNrcy4KLSAg
ICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwotICAgIGF1dG8gY2FsbGJhY2sg
PSBbd2Vha1RoaXMsIG1lc3NhZ2VJZF0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlh
bElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KSB7Ci0gICAgICAg
IGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHdlYWtUaGlzLT5t
YWtlQ3JlZGVudGlhbFJlcGx5KG1lc3NhZ2VJZCwgY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9i
amVjdCk7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0gW3dlYWtUaGlzLCBt
ZXNzYWdlSWRdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKLSAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgd2Vha1Ro
aXMtPmV4Y2VwdGlvblJlcGx5KG1lc3NhZ2VJZCwgZXhjZXB0aW9uKTsKLSAgICB9OwotICAgIG1f
YXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoaGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxs
YmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50
aWFsc01lc3NlbmdlclByb3h5OjpnZXRBc3NlcnRpb24odWludDY0X3QgbWVzc2FnZUlkLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICAvLyBGSVhNRSgxODI3NjcpCi0gICAg
aWYgKCFtX2F1dGhlbnRpY2F0b3IpCi0gICAgICAgIGV4Y2VwdGlvblJlcGx5KG1lc3NhZ2VJZCwg
eyBXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMu
Il9zIH0pOwotICAgIC8vIEZJWE1FKDE4MzUzNCk6IFdlYWsgcG9pbnRlcnMgZG9lc24ndCB3b3Jr
IGluIGFub3RoZXIgdGhyZWFkIGJlY2F1c2Ugb2YgcmFjZSBjb25kaXRpb24uCi0gICAgLy8gRklY
TUUoMTgzNTM0KTogVW5pZnkgY2FsbGJhY2tzLgotICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFt3ZWFrVGhpcywgbWVzc2FnZUlkXSAo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpIHsKLSAgICAgICAgaWYgKHdlYWtUaGlz
KQotICAgICAgICAgICAgd2Vha1RoaXMtPmdldEFzc2VydGlvblJlcGx5KG1lc3NhZ2VJZCwgY3Jl
ZGVudGlhbElkLCBhdXRoZW50aWNhdG9yRGF0YSwgc2lnbmF0dXJlLCB1c2VySGFuZGxlKTsKLSAg
ICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbd2Vha1RoaXMsIG1lc3NhZ2VJZF0g
KGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgewotICAgICAgICBpZiAo
d2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+ZXhjZXB0aW9uUmVwbHkobWVzc2FnZUlk
LCBleGNlcHRpb24pOwotICAgIH07Ci0gICAgbV9hdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24o
aGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5Ojppc1VzZXJWZXJp
ZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUodWludDY0X3QgbWVzc2FnZUlkKQot
ewotICAgIGlmICghbV9hdXRoZW50aWNhdG9yKSB7Ci0gICAgICAgIGlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJZCwgZmFsc2UpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGlj
YXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJZCwgbV9hdXRoZW50aWNhdG9yLT5pc0F2YWlsYWJs
ZSgpKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5OjpleGNlcHRpb25S
ZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4
Y2VwdGlvbikKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJDcmVkZW50
aWFsc01lc3Nlbmdlcjo6RXhjZXB0aW9uUmVwbHkobWVzc2FnZUlkLCBleGNlcHRpb24pKTsKLX0K
LQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5OjptYWtlQ3JlZGVudGlhbFJlcGx5
KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpCi17Ci0gICAgbV93ZWJQ
YWdlUHJveHkuc2VuZChNZXNzYWdlczo6V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6Ok1ha2VDcmVk
ZW50aWFsUmVwbHkobWVzc2FnZUlkLCBjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KSk7
Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6Z2V0QXNzZXJ0aW9uUmVw
bHkodWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJ
ZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdG9yRGF0YSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlckhhbmRsZSkK
LXsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJDcmVkZW50aWFsc01lc3Nl
bmdlcjo6R2V0QXNzZXJ0aW9uUmVwbHkobWVzc2FnZUlkLCBjcmVkZW50aWFsSWQsIGF1dGhlbnRp
Y2F0b3JEYXRhLCBzaWduYXR1cmUsIHVzZXJIYW5kbGUpKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50
aWFsc01lc3NlbmdlclByb3h5Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JB
dmFpbGFibGVSZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGJvb2wgcmVzdWx0KQotewotICAgIG1f
d2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjpJc1Vz
ZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGVSZXBseShtZXNzYWdlSWQs
IHJlc3VsdCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DcmVkZW50
aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdl
clByb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNzRjOTcyNzBiNzgzZTg3
ZTRmOGU1MmYyOGRhMGVhMjkwYzcwYzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1l
bnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVVRI
TikKLQotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgTG9jYWxBdXRoZW50aWNhdG9yOwotCi1z
dHJ1Y3QgRXhjZXB0aW9uRGF0YTsKLXN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zOwotc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKLX0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotY2xhc3MgV2ViQ3Jl
ZGVudGlhbHNNZXNzZW5nZXJQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5PiB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eSk7Ci1wdWJs
aWM6Ci0gICAgZXhwbGljaXQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eShXZWJQYWdlUHJv
eHkmKTsKLSAgICB+V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eSgpOwotCi1wcml2YXRlOgot
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0KLSAgICAvLyBSZWNl
aXZlcnMuCi0gICAgdm9pZCBtYWtlQ3JlZGVudGlhbCh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyYpOwotICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKHVpbnQ2NF90IG1lc3Nh
Z2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmKTsKLSAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1Bs
YXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSh1aW50NjRfdCBtZXNzYWdlSWQpOwotCi0gICAg
Ly8gU2VuZGVycy4KLSAgICB2b2lkIGV4Y2VwdGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwg
Y29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpOwotICAgIHZvaWQgbWFrZUNyZWRlbnRpYWxS
ZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlh
bElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICB2b2lk
IGdldEFzc2VydGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRh
dGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHVzZXJIYW5kbGUpOwotICAgIHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50
aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBib29sKTsKLQotICAgIFdl
YlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkxvY2FsQXV0aGVudGljYXRvcj4gbV9hdXRoZW50aWNhdG9yOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNN
ZXNzZW5nZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NyZWRl
bnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkubWVzc2FnZXMuaW4K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1OGJiYWU2ZjAxNGIwYmJiNmNlOTc4YTg0
OWFmZjUzOGYzMzI2MGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3Jl
ZGVudGlhbHNNZXNzZW5nZXJQcm94eS5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDM0
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0jLwotCi0jaWYg
RU5BQkxFKFdFQl9BVVRITikKLQotbWVzc2FnZXMgLT4gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQ
cm94eSB7Ci0KLSAgICBNYWtlQ3JlZGVudGlhbCh1aW50NjRfdCBtZXNzYWdlSWQsIFZlY3Rvcjx1
aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucyBvcHRpb25zKTsKLSAgICBHZXRBc3NlcnRpb24odWludDY0X3QgbWVzc2FnZUlkLCBW
ZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucyBvcHRpb25zKTsKLSAgICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGUodWludDY0X3QgbWVzc2FnZUlkKTsKLX0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTIyMzk0OGVlMTgwMDE4Y2QyZDA1OTFhZDYyMGNiZmQ4ZTdiOTZjNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUg
IldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
RXhjZXB0aW9uRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxBdXRoZW50aWNhdG9yLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OldlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQorICAg
IDogbV93ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5KQoreworICAgIG1fd2ViUGFnZVByb3h5LnBy
b2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpLCAqdGhpcyk7CisgICAgbV9hdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Cit9CisKK1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoKQoreworICAgIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
d2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBj
b25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25z
KQoreworICAgIC8vIEZJWE1FKDE4Mjc2NykKKyAgICBpZiAoIW1fYXV0aGVudGljYXRvcikgewor
ICAgICAgICByZXF1ZXN0UmVwbHkoeyB9LCB7IFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgIk5v
IGF2YWxpYWJsZSBhdXRoZW50aWNhdG9ycy4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgLy8gRklYTUUoMTgzNTM0KTogV2VhayBwb2ludGVycyBkb2Vzbid0IHdvcmsgaW4gYW5v
dGhlciB0aHJlYWQgYmVjYXVzZSBvZiByYWNlIGNvbmRpdGlvbi4KKyAgICBhdXRvIGNhbGxiYWNr
ID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBX
VEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxEYXRhJiBkYXRhKSB7CisgICAgICAgICAgICB3ZWFrVGhpcy0+cmVxdWVzdFJlcGx5KGRhdGEs
IHsgfSk7CisgICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhj
ZXB0aW9uKSB7CisgICAgICAgICAgICB3ZWFrVGhpcy0+cmVxdWVzdFJlcGx5KHsgfSwgZXhjZXB0
aW9uKTsKKyAgICAgICAgfSk7CisgICAgfTsKKyAgICBtX2F1dGhlbnRpY2F0b3ItPm1ha2VDcmVk
ZW50aWFsKGhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwordm9pZCBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zJiBvcHRpb25zKQoreworICAgIC8vIEZJWE1FKDE4Mjc2NykKKyAgICBpZiAoIW1fYXV0
aGVudGljYXRvcikKKyAgICAgICAgcmVxdWVzdFJlcGx5KHsgfSwgeyBXZWJDb3JlOjpOb3RBbGxv
d2VkRXJyb3IsICJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIl9zIH0pOworICAgIC8vIEZJ
WE1FKDE4MzUzNCk6IFdlYWsgcG9pbnRlcnMgZG9lc24ndCB3b3JrIGluIGFub3RoZXIgdGhyZWFk
IGJlY2F1c2Ugb2YgcmFjZSBjb25kaXRpb24uCisgICAgYXV0byBjYWxsYmFjayA9IFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgV1RGOjpzd2l0Y2hP
bihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYgZGF0
YSkgeworICAgICAgICAgICAgd2Vha1RoaXMtPnJlcXVlc3RSZXBseShkYXRhLCB7IH0pOworICAg
ICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgewor
ICAgICAgICAgICAgd2Vha1RoaXMtPnJlcXVlc3RSZXBseSh7IH0sIGV4Y2VwdGlvbik7CisgICAg
ICAgIH0pOworICAgIH07CisgICAgbV9hdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oaGFzaCwg
b3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5Ojppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFp
bGFibGUodWludDY0X3QgbWVzc2FnZUlkKQoreworICAgIGlmICghbV9hdXRoZW50aWNhdG9yKSB7
CisgICAgICAgIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJl
cGx5KG1lc3NhZ2VJZCwgZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlzVXNl
clZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KG1lc3NhZ2VJZCwg
bV9hdXRoZW50aWNhdG9yLT5pc0F2YWlsYWJsZSgpKTsKK30KKwordm9pZCBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eTo6cmVxdWVzdFJlcGx5KGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxEYXRhJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNl
cHRpb24pCit7CisgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6V2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpSZXF1ZXN0UmVwbHkoZGF0YSwgZXhjZXB0aW9uKSk7Cit9CisKK3Zv
aWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmlzVXNlclZlcmlmeWluZ1BsYXRm
b3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCBy
ZXN1bHQpCit7CisgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6V2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFp
bGFibGVSZXBseShtZXNzYWdlSWQsIHJlc3VsdCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTc1YWFjZTAzMDZi
NmJkNWJjZDEyMzgzZWZiMmFhMDk0NWY1ZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBMb2Nh
bEF1dGhlbnRpY2F0b3I7CisKK3N0cnVjdCBFeGNlcHRpb25EYXRhOworc3RydWN0IFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERh
dGE7CitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4gewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
KTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eShXZWJQYWdlUHJveHkmKTsKKyAgICB+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHko
KTsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OworCisgICAgLy8gUmVjZWl2ZXJzLgorICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJik7CisgICAgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmKTsKKyAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWls
YWJsZSh1aW50NjRfdCBtZXNzYWdlSWQpOworCisgICAgLy8gU2VuZGVycy4KKyAgICB2b2lkIHJl
cXVlc3RSZXBseShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYsIGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKTsKKyAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRm
b3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCk7
CisKKyAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpMb2NhbEF1dGhlbnRpY2F0b3I+IG1fYXV0aGVudGljYXRvcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdjNjY3NzZlNjFhMDViMWJhZDUyOTJkZDExNTIxM2Fh
ZmEzYWJlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0wLDAgKzEsMzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisj
LworCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworbWVzc2FnZXMgLT4gV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkgeworCisgICAgTWFrZUNyZWRlbnRpYWwoVmVjdG9yPHVpbnQ4X3Q+
IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
IG9wdGlvbnMpOworICAgIEdldEFzc2VydGlvbihWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKTsKKyAg
ICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUodWludDY0X3Qg
bWVzc2FnZUlkKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCBlMjgzMTBiYTYwYTkyODMzN2EwOGY3NjkzZDhlZGM5MTU2ZWJhNDM2Li4w
MWIxYmJiYmVlZGY3ZTQzNWE5ZTc4NTgxYmYwNDM2N2M5Y2E4YWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotI2luY2x1ZGUgIldlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oIgog
I2VuZGlmCiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKQEAgLTQ2
MSw3ICs0NjEsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdl
Q2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV0VCX0FVVEhOKQotICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk+KCp0aGlzKTsKKyAgICBtX2NyZWRlbnRp
YWxzTWVzc2VuZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlELCAqdGhpcyk7CkBAIC03NzksNyArNzc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0
YWNoVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgQVBJOjpOYXYK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBtX2NyZWRlbnRpYWxzTWVzc2Vu
Z2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5PigqdGhp
cyk7CisgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAgICAgaW5pdGlh
bGl6ZVdlYlBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
YTk4ZmQ3MmVlZTRiZjdhMDUwODZiNTg1YWJiZTczYTFkNjYzNTVlYi4uNDE5MzNhMTQ5Y2NkNWM5
ZDNmZWI3ZTU4MzFiYTI0MDgzODFiOWJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTIzNiw3ICsyMzYsNyBAQCBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5OwogY2xhc3MgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2ViTmF2aWdh
dGlvblN0YXRlOwogY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OwotY2xhc3MgV2Vi
Q3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTsKK2NsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYlVSTFNjaGVtZUhh
bmRsZXI7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwpAQCAtMTkxNyw3ICsxOTE3LDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eT4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+IG1fY3Jl
ZGVudGlhbHNNZXNzZW5nZXI7CiAjZW5kaWYKIAogICAgIENhbGxiYWNrTWFwIG1fY2FsbGJhY2tz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggN2JkYWM2MGZjMzJiNjA3MzdlNmVkMTFmNjE3Nzk0MTA1MGY3NTcwYS4uM2Y5ZGE2OGVlNjY1
OTYyYjBhNjhlMjMwZjU4OWU5Mzk3OTk5MmIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDI4LDExICsxMDI4LDExIEBACiAJCTUz
QkE0N0QxMURDMkVGNUUwMDRERjRBRCAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlFQjU0NzFEQzJFRTQwMDA5
RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5oICovOyB9OwogCQk1M0RFQTM2NjFEREU0MjMx
MDBFODI2NDggLyoganNvbi5ocHAgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0RFQTM2NTFEREU0MjJFMDBFODI2NDggLyoganNvbi5ocHAgKi87IH07CiAJ
CTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBBQjhGMjIwQUUzQkQ3MDBC
OEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oICovOyB9OwotCQk1NzYwODI5QzIwMkQyQzNDMDAx
MTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2MDgyOTAyMDI5OEZC
RDAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKLQkJNTc2MDgyOUQyMDJEMkM0MDAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2Vu
Z2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3NjA4MjhGMjAyOThGQkQwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlck1l
c3NhZ2VzLmggKi87IH07Ci0JCTU3NjA4MjlFMjAyRDJDNDMwMDExNjY3OCAvKiBXZWJDcmVkZW50
aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NjA4MjlBMjAyQkVFNUEwMDExNjY3OCAvKiBX
ZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKLQkJ
NTc2MDgyOUYyMDJEMkM0NjAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTc2MDgyOUIyMDJCRUU1QTAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlN
ZXNzYWdlcy5oICovOyB9OwogCQk1N0I0QjQ2MDIwQjUwNEFDMDBENEFENzkgLyogQ2xpZW50Q2Vy
dGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNEI0NUUyMEI1MDRBQjAwRDRBRDc5IC8qIENs
aWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuaCAqLzsgfTsKKwkJNTdE
Q0VENkUyMTQyRUU1RTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1N0RDRUQ2QjIxNDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNTdEQ0VENkYyMTQyRUU2MzAwMTZCODQ3
IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2QTIxNDJFQUUyMDAxNkI4NDcg
LyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLzsgfTsKKwkJNTdEQ0VE
NzAyMTQyRUU2ODAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3RENFRDZDMjE0MkVBRjkwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTU3RENFRDcxMjE0MkVFNkMw
MDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ2RDIxNDJF
QUZBMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5o
ICovOyB9OwogCQk1QzBCMTc3ODFFN0M4ODBFMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVh
bU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzBCMTc3NDFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVh
bU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTVDMEIxNzc5MUU3Qzg4MjEwMEU5MTIzQyAv
KiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwQjE3NzYxRTdDODc5QzAwRTkxMjNDIC8qIFdl
YlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTVDMTQyNkVEMUMyM0Y4
MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2RTMxQzIzRjgwNTAw
RDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi87IH07CkBAIC0z
MzY4LDE4ICszMzY4LDE4IEBACiAJCTU3MEFCOTAzMjBCMjU0MUMwMEI4QkU4NyAvKiBTZWNLZXlQ
cm94eVN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Vj
S2V5UHJveHlTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc1MDc1QTcy
MEFCNzYzNjAwNjkzRUE5IC8qIFdlYkNyZWRlbnRpYWxNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJDcmVkZW50aWFsTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgbmFtZSA9IExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrOyBwYXRoID0g
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Mb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yazsg
c291cmNlVHJlZSA9IFNES1JPT1Q7IH07Ci0JCTU3NjA4MjhCMjAyOTg1NDIwMDExNjY3OCAvKiBX
ZWJDcmVkZW50aWFsc01lc3Nlbmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDcmVkZW50aWFsc01l
c3Nlbmdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzYwODI4QzIwMjk4NTQy
MDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1NzYwODI4RDIwMjk4N0U2MDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjhGMjAyOThGQkQwMDExNjY3OCAvKiBX
ZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNyZWRl
bnRpYWxzTWVzc2VuZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTc2MDgyOTAyMDI5OEZCRDAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgy
OTUyMDJCRDhCQTAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1NzYwODI5NjIwMkJEOEJBMDAxMTY2NzggLyogV2ViQ3JlZGVudGlh
bHNNZXNzZW5nZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDcmVkZW50aWFsc01l
c3NlbmdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOTky
MDJCREFFMjAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc2MDgyOUEyMDJCRUU1QTAwMTE2Njc4IC8qIFdlYkNy
ZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NjA4MjlCMjAyQkVFNUEwMDExNjY3OCAvKiBX
ZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU3NjA4MjhCMjAyOTg1NDIwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NjA4MjhDMjAyOTg1NDIwMDExNjY3OCAv
KiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTc2MDgyOEQyMDI5ODdFNjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NjA4Mjk1MjAyQkQ4QkEwMDExNjY3
OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1NzYwODI5NjIwMkJEOEJBMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzYwODI5OTIw
MkJEQUUyMDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjRCNDVEMjBCNTA0QUIwMEQ0QUQ3OSAv
KiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOyBwYXRoID0gQXV0
aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjRCNDVFMjBCNTA0QUIwMEQ0QUQ3OSAvKiBDbGllbnRD
ZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFu
dHMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uL2NvY29hL0NsaWVudENlcnRpZmljYXRlQXV0aGVu
dGljYXRpb25YUENDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdE
Q0VENkEyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RENF
RDZCMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTdEQ0VENkMyMTQyRUFGOTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdEQ0VENkQyMTQy
RUFGQTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzBC
MTc3NDFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU29ja2V0
U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUMwQjE3NzUxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrU29ja2V0U3RyZWFtTWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMwQjE3NzYxRTdDODc5QzAw
RTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjcyMSwyNCArNjcyMSwyNCBAQAog
CQkJbmFtZSA9IEZyYW1ld29ya3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owot
CQk1NzYwODI4QTIwMjk4NEM5MDAxMTY2NzggLyogQ3JlZGVudGlhbE1hbmFnZW1lbnQgKi8gPSB7
CisJCTU3NjA4MjhBMjAyOTg0QzkwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdGlvbiAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTc2MDgyOEMyMDI5ODU0
MjAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLmNwcCAqLywKLQkJCQk1NzYwODI4
QjIwMjk4NTQyMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIuaCAqLywKLQkJCQk1
NzYwODI4RDIwMjk4N0U2MDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIubWVzc2Fn
ZXMuaW4gKi8sCisJCQkJNTc2MDgyOEMyMDI5ODU0MjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHAgKi8sCisJCQkJNTc2MDgyOEIyMDI5ODU0MjAwMTE2Njc4IC8qIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovLAorCQkJCTU3NjA4MjhEMjAyOTg3RTYwMDEx
NjY3OCAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4gKi8sCiAJCQkp
OwotCQkJcGF0aCA9IENyZWRlbnRpYWxNYW5hZ2VtZW50OworCQkJcGF0aCA9IFdlYkF1dGhlbnRp
Y2F0aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNTc2MDgyOTQyMDJC
RDg0OTAwMTE2Njc4IC8qIENyZWRlbnRpYWxNYW5hZ2VtZW50ICovID0geworCQk1NzYwODI5NDIw
MkJEODQ5MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTU3NjA4Mjk2MjAyQkQ4QkEwMDExNjY3OCAvKiBX
ZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5LmNwcCAqLywKLQkJCQk1NzYwODI5NTIwMkJEOEJB
MDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oICovLAotCQkJCTU3NjA4
Mjk5MjAyQkRBRTIwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5Lm1lc3Nh
Z2VzLmluICovLAorCQkJCTU3NjA4Mjk2MjAyQkQ4QkEwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgKi8sCisJCQkJNTc2MDgyOTUyMDJCRDhCQTAwMTE2Njc4
IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggKi8sCisJCQkJNTc2MDgyOTky
MDJCREFFMjAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3Nh
Z2VzLmluICovLAogCQkJKTsKLQkJCXBhdGggPSBDcmVkZW50aWFsTWFuYWdlbWVudDsKKwkJCXBh
dGggPSBXZWJBdXRoZW50aWNhdGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
CiAJCTU3QjRCNDVDMjBCNTA0OEIwMEQ0QUQ3OSAvKiBjb2NvYSAqLyA9IHsKQEAgLTcwMzMsNyAr
NzAzMyw2IEBACiAJCQkJMUMwQTE5NDMxQzhGRjFBODAwRkUwRUJCIC8qIEF1dG9tYXRpb24gKi8s
CiAJCQkJNDFEMTI5RDgxRjNEMTAxNDAwRDE1RTQ3IC8qIENhY2hlICovLAogCQkJCTdDNkU3MEY4
MThCMkQ0N0UwMEYyNEUyRSAvKiBjb2NvYSAqLywKLQkJCQk1NzYwODI4QTIwMjk4NEM5MDAxMTY2
NzggLyogQ3JlZGVudGlhbE1hbmFnZW1lbnQgKi8sCiAJCQkJNTEyQTk3NTQxODBERjkyNzAwMzlB
MTQ5IC8qIERhdGFiYXNlcyAqLywKIAkJCQlCQ0FDQzQzQjE2QjI0QzVEMDBCNkUwOTIgLyogRW50
cnlQb2ludCAqLywKIAkJCQlFMTcwODc2RDE2RDZDQTcyMDBGOTkyMjYgLyogRmlsZUFQSSAqLywK
QEAgLTcwNDgsNiArNzA0Nyw3IEBACiAJCQkJMUE2RkI3QUExMUU2NEI0OTAwREIxMzcxIC8qIFBs
dWdpbnMgKi8sCiAJCQkJNTExOEU5OTgxRjI5NTI1OTAwM0VGOUY1IC8qIFN0b3JhZ2UgKi8sCiAJ
CQkJMUFBRjA4QUExOTI2OTMwQjAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovLAorCQkJCTU3NjA4
MjhBMjAyOTg0QzkwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdGlvbiAqLywKIAkJCQlCQzAzMkQ1
RDEwRjQzNzIyMDA1OEMxNUEgLyogV2ViQ29yZVN1cHBvcnQgKi8sCiAJCQkJQkMwMzJENUUxMEY0
MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2UgKi8sCiAJCQkJMUFBQzREREUxNkIxQ0JGNjAwOTQyNUUz
IC8qIFdlYlN0b3JhZ2UgKi8sCkBAIC03MTkzLDcgKzcxOTMsNiBAQAogCQkJCTUxMkY1ODhEMTJB
ODgzNkYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbiAqLywKIAkJCQk5OTU1QTZFODFDNzk4MDkw
MDBFQjZBOTMgLyogQXV0b21hdGlvbiAqLywKIAkJCQkxQUJDM0RGMjE4OTlFNDE1MDA0RjA2MjYg
LyogQ29jb2EgKi8sCi0JCQkJNTc2MDgyOTQyMDJCRDg0OTAwMTE2Njc4IC8qIENyZWRlbnRpYWxN
YW5hZ2VtZW50ICovLAogCQkJCTFBQjdENEM3MTI4OEFBOUEwMENGRDA4QyAvKiBEb3dubG9hZHMg
Ki8sCiAJCQkJNTE1QkUxN0IxRDU0RUY1QTAwREQ3QzY4IC8qIEdhbWVwYWQgKi8sCiAJCQkJMkRB
OTQ0QTgxODg0RTlBQjAwRUQ4NkRCIC8qIGlvcyAqLywKQEAgLTcyMDUsNiArNzIwNCw3IEBACiAJ
CQkJMkQxNTUxQTkxRjVBOUI0MjAwMDZFM0ZFIC8qIFJlbW90ZUxheWVyVHJlZSAqLywKIAkJCQk1
MTdERDVCQjE4MERBN0M0MDA4MTY2MEIgLyogU3RvcmFnZSAqLywKIAkJCQkxQUFGMDg5RTE5MjY4
MUFDMDBCNjM5MEMgLyogVXNlckNvbnRlbnQgKi8sCisJCQkJNTc2MDgyOTQyMDJCRDg0OTAwMTE2
Njc4IC8qIFdlYkF1dGhlbnRpY2F0aW9uICovLAogCQkJCTFBNTNDMkEzMUEzMjU2OTEwMDRFOEM3
MCAvKiBXZWJzaXRlRGF0YSAqLywKIAkJCQkxQTQ0Qjk1ODE2QjczRjhDMDBCN0JCRDggLyogV2Vi
U3RvcmFnZSAqLywKIAkJCQk3Q0QxMDJEOTE4NjY3NzA2MDBFRDQyOUQgLyogQXV0b0NvcnJlY3Rp
b25DYWxsYmFjay5oICovLApAQCAtODM0NCw2ICs4MzQ0LDEwIEBACiAJCQkJMUE2MDIyNEIxOEMx
NkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmVNZXNzYWdlcy5oICovLAogCQkJCTFBOEU3
RDNBMThDMTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCiAJCQkJMUE4RTdEM0IxOEMxNTE0OTAwNUE3MDJBIC8qIFZpc2l0ZWRM
aW5rVGFibGVDb250cm9sbGVyTWVzc2FnZXMuaCAqLywKKwkJCQk1N0RDRUQ2QjIxNDJFQUUyMDAx
NkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKKwkJCQk1N0RDRUQ2QTIxNDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yTWVzc2FnZXMuaCAqLywKKwkJCQk1N0RDRUQ2QzIxNDJFQUY5MDAxNkI4NDcgLyogV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJ
CTU3RENFRDZEMjE0MkVBRkEwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUMwQTE5NTUxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQzBBMTk1NjFDOTAw
NjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlcy5oICovLAogCQkJCTFD
MEExOTUxMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKQEAgLTgzNTYsMTAgKzgzNjAsNiBAQAogCQkJCTMzMDkzNDQ0MTMx
NUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQkzMzA5
MzQ0NTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKIAkJCQkzMzA5MzQ0NjEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFu
YWdlclByb3h5TWVzc2FnZXMuaCAqLywKLQkJCQk1NzYwODI5MDIwMjk4RkJEMDAxMTY2NzggLyog
V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAotCQkJCTU3NjA4
MjhGMjAyOThGQkQwMDExNjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3Nlbmdlck1lc3NhZ2VzLmgg
Ki8sCi0JCQkJNTc2MDgyOUEyMDJCRUU1QTAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVzc2Vu
Z2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAotCQkJCTU3NjA4MjlCMjAyQkVFNUEwMDEx
NjY3OCAvKiBXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQlD
RDczQkE0ODEzMUFDRDhFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAogCQkJCUNENzNCQTQ5MTMxQUNEOEUwMEVFREVEMiAvKiBXZWJGdWxsU2Ny
ZWVuTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJQ0Q3M0JBNDUxMzFBQ0M4ODAwRUVERUQyIC8q
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtOTIy
Myw2ICs5MjIzLDggQEAKIAkJCQkxQUY0Q0VGMDE4QkM0ODE4MDBCQzJEMzQgLyogVmlzaXRlZExp
bmtUYWJsZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEU3RDNEMThDMTUxNDkw
MDVBNzAyQSAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRURBMTJFMzE1MkNEMUIzMDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0RDRUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyog
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU3RENFRDcxMjE0MkVFNkMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU1QTZFQzFDNzk4MEMyMDBFQjZB
OTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QzNBRTJE
MURBREE2QUQwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUMwQTE5NTgxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNz
aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTI2Myw4ICs5MjY1LDYgQEAKIAkJCQkz
MzA5MzQ0QTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODlCMTJBODgzODgwMDYy
OTUzMCAvKiBXZWJDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk1NzYwODI5RDIwMkQy
QzQwMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTc2MDgyOUYyMDJEMkM0NjAwMTE2Njc4IC8qIFdlYkNyZWRlbnRpYWxzTWVz
c2VuZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBODNGNkQxQTVCNjNG
RjAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1
MkNGNTUyMjBBMzVDM0EwMERBREEyNyAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUU1NjhCOTFGMjBBM0FCMkYwMEUzQzg1NiAvKiBXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd24uaCBpbiBIZWFkZXJzICovLApAQCAtMTA5MDAsNiArMTA5MDAs
OCBAQAogCQkJCTI2ODQwNTUyMThCODZFRDYwMDIyQzM4QiAvKiBWaWV3VXBkYXRlRGlzcGF0Y2hl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTYwMjI0QzE4QzE2QjlG
MDBDM0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQThFN0QzQzE4QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJsZUNv
bnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTdEQ0VENkUy
MTQyRUU1RTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1N0RDRUQ3MDIxNDJFRTY4MDAxNkI4NDcgLyog
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUMwQTE5NTcxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25T
ZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMEExOTUzMUM4
RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRCAvKiBXZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMTA5MDcsOCArMTA5MDksNiBAQAogCQkJCTMzMDkzNDQ3MTMxNUI5MjIwMDk3QTdCQyAvKiBX
ZWJDb29raWVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMz
MDkzNDQ5MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODgyMTJCNkFCMTAwRjQ5M0ZEIC8q
IFdlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzYwODI5QzIw
MkQyQzNDMDAxMTY2NzggLyogV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTc2MDgyOUUyMDJEMkM0MzAwMTE2Njc4IC8qIFdlYkNy
ZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ5MkE3ODkyMTJCNkFCMTAwRjQ5M0ZEIC8qIFdlYkV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNENzNCQTRFMTMxQUNEQjcwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDczQkE0NzEzMUFDQzlB
MDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVk
ZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2ViQ3JlZGVudGlhbHNNZXNzZW5n
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjc5ZDdlZmUxZWJhMzE2MGRi
ZmM4ZDAxZGUzMjBlZTRkMWUxYTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVu
dC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkNyZWRl
bnRpYWxzTWVzc2VuZ2VyLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi0jaW5jbHVkZSAi
V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYkNyZWRlbnRp
YWxzTWVzc2VuZ2VyUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkNyZWRlbnRpYWxz
TWVzc2VuZ2VyOjpXZWJDcmVkZW50aWFsc01lc3NlbmdlcihXZWJQYWdlJiB3ZWJQYWdlKQotICAg
IDogbV93ZWJQYWdlKHdlYlBhZ2UpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsKLX0KLQotV2ViQ3Jl
ZGVudGlhbHNNZXNzZW5nZXI6On5XZWJDcmVkZW50aWFsc01lc3NlbmdlcigpCi17Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKLX0KLQot
dm9pZCBXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zJiBvcHRpb25zLCBXZWJDb3JlOjpDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYg
aGFuZGxlcikKLXsKLSAgICBhdXRvIG1lc3NhZ2VJZCA9IGFkZENyZWF0aW9uQ29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6Oldl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6Ok1ha2VDcmVkZW50aWFsKG1lc3NhZ2VJZCwgaGFz
aCwgb3B0aW9ucykpOwotfQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjpnZXRBc3Nl
cnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFdlYkNvcmU6OlJlcXVlc3RDb21w
bGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgYXV0byBtZXNzYWdlSWQgPSBhZGRSZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Ci0gICAgbV93ZWJQYWdlLnNl
bmQoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk6OkdldEFzc2VydGlvbiht
ZXNzYWdlSWQsIGhhc2gsIG9wdGlvbnMpKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3Nl
bmdlcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFdlYkNv
cmU6OlF1ZXJ5Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQotewotICAgIGF1dG8gbWVzc2Fn
ZUlkID0gYWRkUXVlcnlDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBt
X3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eTo6SXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKG1lc3NhZ2VJZCkpOwot
fQotCi12b2lkIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOjptYWtlQ3JlZGVudGlhbFJlcGx5KHVp
bnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYXR0ZXN0YXRpb25PYmplY3QpCi17Ci0gICAgYXV0byBoYW5k
bGVyID0gdGFrZUNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIobWVzc2FnZUlkKTsKLSAgICBoYW5k
bGVyKFdlYkNvcmU6OkNyZWF0aW9uUmV0dXJuQnVuZGxlKEFycmF5QnVmZmVyOjpjcmVhdGUoY3Jl
ZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVh
dGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5zaXplKCkpKSk7
Ci19Ci0KLXZvaWQgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI6OmdldEFzc2VydGlvblJlcGx5KHVp
bnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJIYW5kbGUpCi17Ci0g
ICAgYXV0byBoYW5kbGVyID0gdGFrZVJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihtZXNzYWdlSWQp
OwotICAgIGhhbmRsZXIoV2ViQ29yZTo6QXNzZXJ0aW9uUmV0dXJuQnVuZGxlKEFycmF5QnVmZmVy
OjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIEFycmF5
QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRhdGEuZGF0YSgpLCBhdXRoZW50aWNhdG9yRGF0
YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVy
ZS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUuZGF0YSgpLCB1c2VySGFu
ZGxlLnNpemUoKSkpKTsKLX0KLQotdm9pZCBXZWJDcmVkZW50aWFsc01lc3Nlbmdlcjo6aXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVz
c2FnZUlkLCBib29sIHJlc3VsdCkKLXsKLSAgICBhdXRvIGhhbmRsZXIgPSB0YWtlUXVlcnlDb21w
bGV0aW9uSGFuZGxlcihtZXNzYWdlSWQpOwotICAgIGhhbmRsZXIocmVzdWx0KTsKLX0KLQotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ3JlZGVudGlhbE1hbmFnZW1lbnQvV2Vi
Q3JlZGVudGlhbHNNZXNzZW5nZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DcmVkZW50
aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhMGNhN2U1MmU1NDE1YzNlM2NiZjVmM2Y0ZDU4NGI0OTFjODJjMmZmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbHNNZXNzZW5nZXIuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFdlYkNyZWRlbnRpYWxzTWVz
c2VuZ2VyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNyZWRlbnRpYWxzTWVzc2VuZ2VyLCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJDcmVk
ZW50aWFsc01lc3NlbmdlcihXZWJQYWdlJik7Ci0gICAgfldlYkNyZWRlbnRpYWxzTWVzc2VuZ2Vy
KCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gV2ViQ29yZTo6Q3JlZGVudGlhbHNNZXNzZW5nZXIKLSAg
ICAvLyBTZW5kZXJzLgotICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYs
IFdlYkNvcmU6OkNyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBn
ZXRBc3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1
dGhlbnRpY2F0b3JBdmFpbGFibGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKLQotICAgIC8vIFJlY2VpdmVycy4KLSAgICB2b2lkIG1ha2VDcmVkZW50aWFsUmVwbHko
dWludDY0X3QgbWVzc2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdHRlc3RhdGlvbk9iamVjdCkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRBc3NlcnRpb25SZXBseSh1aW50NjRfdCBtZXNzYWdlSWQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JE
YXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiB1c2VySGFuZGxlKSBmaW5hbDsKLSAgICB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3Jt
QXV0aGVudGljYXRvckF2YWlsYWJsZVJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgYm9vbCkgZmlu
YWw7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KLSAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotCi0gICAg
V2ViUGFnZSYgbV93ZWJQYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NyZWRlbnRpYWxNYW5hZ2VtZW50L1dlYkNy
ZWRlbnRpYWxzTWVzc2VuZ2VyLm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNmM4ZWVjYTdjNDczNDQwMTg0ZmYxOTkxOTA5ZjMyNWJjNmU3ZDFjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9DcmVkZW50aWFsTWFuYWdlbWVudC9XZWJDcmVkZW50aWFsc01lc3Nlbmdlci5tZXNzYWdl
cy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0jLwotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikKLQotbWVzc2FnZXMg
LT4gV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXIgewotCi0gICAgRXhjZXB0aW9uUmVwbHkodWludDY0
X3QgbWVzc2FnZUlkLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pOwot
ICAgIE1ha2VDcmVkZW50aWFsUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBWZWN0b3I8dWludDhf
dD4gY3JlZGVudGlhbElkLCBWZWN0b3I8dWludDhfdD4gYXR0ZXN0YXRpb25PYmplY3QpOwotICAg
IEdldEFzc2VydGlvblJlcGx5KHVpbnQ2NF90IG1lc3NhZ2VJZCwgVmVjdG9yPHVpbnQ4X3Q+IGNy
ZWRlbnRpYWxJZCwgVmVjdG9yPHVpbnQ4X3Q+IGF1dGhlbnRpY2F0b3JEYXRhLCBWZWN0b3I8dWlu
dDhfdD4gc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4gdXNlckhhbmRsZSk7Ci0gICAgSXNVc2Vy
VmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVz
c2FnZUlkLCBib29sIHJlc3VsdCk7Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGJhNGM1N2M2NDE0YTg3
OGFmMjdiZGI1ODNhMDdlNWE0MjRhOGYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OldlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcihXZWJQYWdlJiB3ZWJQYWdlKQorICAgIDogbV93ZWJQYWdlKHdlYlBh
Z2UpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV93ZWJQYWdlLnBhZ2VJRCgpLCAqdGhpcyk7Cit9CisKK1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcjo6fldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpCit7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKK30KKwordm9pZCBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucyYgb3B0aW9ucywgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFu
ZGxlcikKK3sKKyAgICBpZiAoIXNldFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhh
bmRsZXIpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6
OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpNYWtlQ3JlZGVudGlhbChoYXNoLCBv
cHRpb25zKSk7Cit9CisKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3Nl
cnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFdlYkNvcmU6OlJlcXVlc3RDb21w
bGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit7CisgICAgaWYgKCFzZXRSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2Vi
UGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6R2V0
QXNzZXJ0aW9uKGhhc2gsIG9wdGlvbnMpKTsKK30KKwordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShX
ZWJDb3JlOjpRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3sKKyAgICBhdXRvIG1l
c3NhZ2VJZCA9IGFkZFF1ZXJ5Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSk7Cisg
ICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5OjpJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUobWVzc2Fn
ZUlkKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42YmJjNmI2NmFjNTc4NDY5Y2UzODVhOTk3YmE3NjUwNTQyMzc3ZjRmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKwor
Y2xhc3MgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
KFdlYlBhZ2UmKTsKKyAgICB+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCk7CisKK3ByaXZh
dGU6CisgICAgLy8gV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50CisgICAg
Ly8gU2VuZGVycy4KKyAgICB2b2lkIG1ha2VDcmVkZW50aWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBX
ZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBnZXRB
c3NlcnRpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGUoV2ViQ29yZTo6UXVlcnlDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICBX
ZWJQYWdlJiBtX3dlYlBhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2VjMTkzNTE5OWZm
YmQ5M2U2YzViOWYzOTY2MjUyMjc1ZmFmZWUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorIy8KKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKK21lc3NhZ2VzIC0+
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvciB7CisKKyAgICBSZXF1ZXN0UmVwbHkoc3RydWN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhIGV4Y2VwdGlvbik7CisgICAgSXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRo
ZW50aWNhdG9yQXZhaWxhYmxlUmVwbHkodWludDY0X3QgbWVzc2FnZUlkLCBib29sIHJlc3VsdCk7
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA0NGRlZmYxMzQwZjU5YWQ5NzAxZTkzYjMyYTk0ZDRmNmQ3NjFhNjQwLi5lYjk2
NTg4ZWMwY2YwZDM1MDc0ZmQ1YWYzZmUxZDJhMjM3Yjk0MGU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjc4LDggKzI3OCw4IEBACiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0jaW5jbHVkZSAiV2ViQ3JlZGVudGlhbHNNZXNz
ZW5nZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmg+CisjaW5j
bHVkZSAiV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9B
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTM5Miw5ICszOTIsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24ocGFyYW1ldGVycy51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
KQogICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7IHBhcmFtZXRlcnMub3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfQogICAgICwgbV9jcHVMaW1pdChwYXJhbWV0ZXJz
LmNwdUxpbWl0KQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgLCBtX2NyZWRlbnRpYWxzTWVz
c2VuZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI+KCp0aGlzKSkK
LSNlbmRpZgogewogICAgIEFTU0VSVChtX3BhZ2VJRCk7CiAKQEAgLTQ0OCw2ICs0NDUsMTAgQEAg
V2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRv
ckNsaWVudCA9IG5ldyBXZWJQYXltZW50Q29vcmRpbmF0b3IoKnRoaXMpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yPigqdGhpcyk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbk1hbmlmZXN0ID0gcGFyYW1ldGVy
cy5hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCkBAIC02MDUsMTAgKzYwNiw2IEBAIFdlYlBh
Z2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAg
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRNZXNzZW5nZXIo
Km1fY3JlZGVudGlhbHNNZXNzZW5nZXIpOwotI2VuZGlmCi0KICAgICBmb3IgKGF1dG8gaXRlcmF0
b3IgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzKQogICAgICAgICByZWdpc3RlclVSTFNj
aGVtZUhhbmRsZXIoaXRlcmF0b3IudmFsdWUsIGl0ZXJhdG9yLmtleSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNDQ5OTQ4MDI5M2M1ZTQyZWFl
ZTg3Yjc1YTQzNWVlOGQxZmU1MDhlLi4xZWJiNmQ5ZTI0NjI0MDNjMDc3YzU5YjgyOTE0NTdhZmUy
Y2UzMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0yMjYsNyArMjI2LDYgQEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOwogY2xhc3Mg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7CiBjbGFzcyBXZWJU
b3VjaEV2ZW50OwotY2xhc3MgV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXI7CiBjbGFzcyBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjsKIAogZW51bSBjbGFzcyBEZXZpY2VBY2Nlc3NTdGF0ZTsKQEAg
LTE3MzUsMTAgKzE3MzQsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIHVpbnQ2
NF90PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwOwogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDcmVkZW50aWFsc01l
c3Nlbmdlcj4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsKLSNlbmRpZgotCiAgICAgYm9vbCBtX2lz
U3VzcGVuZGVkIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZGViYzI5NzljNjYzNGI3NjYxYTQ4NThjMTVhMmI2NDc1
M2RhN2Y4Li5lODA5NGMzM2NhNjA3MmNkMjgyNWJmYzY0MmIyZTIyYTAyYmU4OGRmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTgtMDktMDggIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV2ViQXV0aE5dIFBvbGlzaCBBdXRoZW50aWNhdG9yTWFuYWdlciBhbmQgcmVuYW1lIGl0
IHRvIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5Mjc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDEx
NTkzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL0xvY2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTA5LTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFR1cm4gb24gQVJDIGZvciBXZWJLaXRUZXN0UnVu
bmVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9Mb2NhbEF1dGhl
bnRpY2F0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9Mb2NhbEF1dGhlbnRp
Y2F0b3IubW0KaW5kZXggODU1YjE0ZmNjZGM3NGUzOTU5ZjVkMTJkMTQ0MjE0OWUzMzEzZjJkNy4u
Y2Q2M2Q3MzlmNjRlNDJjNmRhMTZiZTdlN2ExNjhlNjg5MmJkN2QzZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtMzgs
NiArMzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0xvY2FsQXV0aGVudGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNy
ZWRlbnRpYWxEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9CYXNlNjQuaD4KQEAgLTI2NiwxNiArMjY3LDE3IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9y
LCBNYWtlQ3JlZGVudGlhbE5vdFN1cHBvcnRlZFB1YktleUNyZWRQYXJhbXMpCiAKICAgICBib29s
IGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRv
cj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRv
cj4oKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7
Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFj
ayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0
YWJsZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RTdXBwb3J0ZWRFcnJvciwgZXhj
ZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIlRoZSBwbGF0Zm9ybSBhdHRhY2hl
ZCBhdXRoZW50aWNhdG9yIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5Q3Jl
ZGVudGlhbFBhcmFtZXRlcnMuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwot
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFu
dDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9G
QUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29u
c3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQ
RUNUX0VRKFdlYkNvcmU6Ok5vdFN1cHBvcnRlZEVycm9yLCBleGNlcHRpb24uY29kZSk7CisgICAg
ICAgICAgICBFWFBFQ1RfU1RSRVEoIlRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9y
IGRvZXNuJ3Qgc3VwcG9ydCBhbnkgcHJvdmlkZWQgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRl
cnMuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0aGVudGljYXRvci0+bWFrZUNy
ZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwo
eyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC0yOTQsMTggKzI5NiwxOSBAQCBURVNUKExv
Y2FsQXV0aGVudGljYXRvciwgTWFrZUNyZWRlbnRpYWxFeGNsdWRlQ3JlZGVudGlhbHNNYXRjaCkK
IAogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxB
dXRoZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxB
dXRoZW50aWNhdG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9G
QUxTRSh0cnVlKTsKLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0
cnVlOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIEVY
UEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKLSAgICAg
ICAgRVhQRUNUX1NUUkVRKCJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5
IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQg
YXV0aGVudGljYXRvci4iLCBleGNlcHRpb24ubWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAg
ICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNh
bGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0
YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0
Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYp
IHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGNsZWFuVXBL
ZXljaGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0sIFsmXShjb25z
dCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBFWFBF
Q1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7CisgICAgICAg
ICAgICBFWFBFQ1RfU1RSRVEoIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50
cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hl
ZCBhdXRoZW50aWNhdG9yLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgIH0pOwogICAgIH07Ci0gICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9
LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlv
bk9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CiB9CkBAIC0zMTksMTYgKzMyMiwxNyBAQCBURVNUKExvY2FsQXV0aGVudGlj
YXRvciwgTWFrZUNyZWRlbnRpYWxCaW9tZXRyaWNzTm90RW5yb2xsZWQpCiAKICAgICBib29sIGRv
bmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4g
YXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4o
KTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Ci0g
ICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFjayA9
IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0YWJs
ZSB7Ci0gICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlv
bi5jb2RlKTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJObyBhdmFsaWFibGUgYXV0aGVudGljYXRv
cnMuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsK
KyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6
Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NU
UkVRKCJObyBhdmFsaWFibGUgYXV0aGVudGljYXRvcnMuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNj
aWkoKS5kYXRhKCkpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAg
IH07Ci0gICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlv
bnMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAg
YXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoeyB9LCBjcmVhdGlvbk9wdGlvbnMsIFdURk1v
dmUoY2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9
CkBAIC0zNDMsMTYgKzM0NywxNyBAQCBURVNUKExvY2FsQXV0aGVudGljYXRvciwgTWFrZUNyZWRl
bnRpYWxCaW9tZXRyaWNzTm90QXV0aGVudGljYXRlZCkKIAogICAgIGJvb2wgZG9uZSA9IGZhbHNl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0TG9jYWxBdXRoZW50aWNhdG9yPiBhdXRoZW50aWNh
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0TG9jYWxBdXRoZW50aWNhdG9yPigpOwotICAgIGF1
dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAgICAgICAgZG9u
ZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0gWyZkb25lXSAo
Y29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAg
ICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOwot
ICAgICAgICBFWFBFQ1RfU1RSRVEoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIiwgZXhjZXB0
aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBh
dXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RG
Ojpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRv
bmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEm
IGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRF
cnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJDb3VsZG4n
dCBnZXQgdXNlciBjb25zZW50LiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKICAgICB9OwotICAgIGF1dGhl
bnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOworICAgIGF1dGhlbnRpY2F0b3It
Pm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpAQCAtMzY4LDE2ICsz
NzMsMTcgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFsTm90QXR0ZXN0
YXRlZCkKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExv
Y2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExv
Y2FsQXV0aGVudGljYXRvcj4oKTsKICAgICBhdXRoZW50aWNhdG9yLT5zZXRGYWlsdXJlRmxhZygp
OwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBWZWN0b3I8dWludDhfdD4mLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAg
ICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNhbGxiYWNrID0g
WyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKSBtdXRhYmxl
IHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6OlVua25vd25FcnJvciwgZXhjZXB0aW9uLmNv
ZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIiwgZXhj
ZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAg
V1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAg
IGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6OlVua25vd25F
cnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJVbmtub3du
IGludGVybmFsIGVycm9yLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKICAgICB9OwotICAgIGF1dGhlbnRp
Y2F0b3ItPm1ha2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOworICAgIGF1dGhlbnRpY2F0b3ItPm1h
a2VDcmVkZW50aWFsKHsgfSwgY3JlYXRpb25PcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpAQCAtMzk5LDIyICs0MDUs
MjMgQEAgVEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFsRGVsZXRlT2xkZXJD
cmVkZW5pdGFsKQogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxU
ZXN0TG9jYWxBdXRoZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXN0TG9jYWxBdXRoZW50aWNhdG9yPigpOwogICAgIGF1dGhlbnRpY2F0b3ItPnNldEZhaWx1cmVG
bGFnKCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUp
OwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgbXV0YWJsZSB7Ci0g
ICAgICAgIE5TRGljdGlvbmFyeSAqcXVlcnkgPSBAewotICAgICAgICAgICAgKGlkKWtTZWNDbGFz
czogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAo
aWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJl
bDogdGVzdFJwSWQsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOnRlc3RVc2VyaGFuZGxlIGxlbmd0aDpzaXplb2YodGVzdFVzZXJo
YW5kbGUpXSwKLSAgICAgICAgfTsKLSAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNv
cHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCBOVUxMKTsKLSAgICAg
ICAgRVhQRUNUX0VRKGVyclNlY0l0ZW1Ob3RGb3VuZCwgc3RhdHVzKTsKLSAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7
CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGlj
S2V5Q3JlZGVudGlhbERhdGEmKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Cisg
ICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqcXVl
cnkgPSBAeworICAgICAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXks
CisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNs
YXNzUHJpdmF0ZSwKKyAgICAgICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogdGVzdFJwSWQs
CisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczp0ZXN0VXNlcmhhbmRsZSBsZW5ndGg6c2l6ZW9mKHRlc3RVc2VyaGFuZGxlKV0s
CisgICAgICAgICAgICB9OworICAgICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNv
cHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCBOVUxMKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShlcnJTZWNJdGVtTm90Rm91bmQsIHN0YXR1cyk7CisgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5t
YWtlQ3JlZGVudGlhbCh7IH0sIGNyZWF0aW9uT3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5tYWtlQ3JlZGVu
dGlhbCh7IH0sIGNyZWF0aW9uT3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KQEAgLTQzMiwxMDMgKzQzOSwxMDkgQEAg
VEVTVChMb2NhbEF1dGhlbnRpY2F0b3IsIE1ha2VDcmVkZW50aWFsUGFzc2VkV2l0aFNlbGZBdHRl
c3RhdGlvbikKIAogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxU
ZXN0TG9jYWxBdXRoZW50aWNhdG9yPiBhdXRoZW50aWNhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXN0TG9jYWxBdXRoZW50aWNhdG9yPigpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVdIChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBhdHRlc3RhdGlvbk9iamV0KSB7Ci0gICAgICAgIC8vIENoZWNrIEtleWNoYWluCi0gICAgICAg
IE5TRGljdGlvbmFyeSAqcXVlcnkgPSBAewotICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlk
KWtTZWNDbGFzc0tleSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1Nl
Y0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogdGVz
dFJwSWQsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsOiBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6dGVzdENyZWRlbnRp
YWxJZEJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJh
Y3RlcnNdKS5nZXQoKSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6dGVzdFVzZXJoYW5kbGUgbGVuZ3RoOnNpemVvZih0ZXN0VXNl
cmhhbmRsZSldLAotICAgICAgICB9OwotICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVt
Q29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksIE5VTEwpOwotICAg
ICAgICBFWFBFQ1RfRkFMU0Uoc3RhdHVzKTsKLQotICAgICAgICAvLyBDaGVjayBDcmVkZW50aWFs
IElECi0gICAgICAgIEVYUEVDVF9UUlVFKFdURjo6YmFzZTY0RW5jb2RlKGNyZWRlbnRpYWxJZC5k
YXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpID09IHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpOwot
Ci0gICAgICAgIC8vIENoZWNrIEF0dGVzdGF0aW9uIE9iamVjdAotICAgICAgICBhdXRvIGF0dGVz
dGF0aW9uT2JqZWN0TWFwID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChhdHRlc3RhdGlvbk9iamV0
KTsKLSAgICAgICAgQVNTRVJUX1RSVUUoISFhdHRlc3RhdGlvbk9iamVjdE1hcCk7Ci0KLSAgICAg
ICAgLy8gQ2hlY2sgQXV0aGVudGljYXRvciBEYXRhLgotICAgICAgICBhdXRvJiBhdXRoRGF0YSA9
IGF0dGVzdGF0aW9uT2JqZWN0TWFwLT5nZXRNYXAoKS5maW5kKGNib3I6OkNCT1JWYWx1ZSgiYXV0
aERhdGEiKSktPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7Ci0gICAgICAgIHNpemVfdCBwb3MgPSAw
OwotICAgICAgICB1aW50OF90IGV4cGVjdGVkUnBJZEhhc2hbXSA9IHsKLSAgICAgICAgICAgIDB4
NDksIDB4OTYsIDB4MGQsIDB4ZTUsIDB4ODgsIDB4MGUsIDB4OGMsIDB4NjgsCi0gICAgICAgICAg
ICAweDc0LCAweDM0LCAweDE3LCAweDBmLCAweDY0LCAweDc2LCAweDYwLCAweDViLAotICAgICAg
ICAgICAgMHg4ZiwgMHhlNCwgMHhhZSwgMHhiOSwgMHhhMiwgMHg4NiwgMHgzMiwgMHhjNywKLSAg
ICAgICAgICAgIDB4OTksIDB4NWMsIDB4ZjMsIDB4YmEsIDB4ODMsIDB4MWQsIDB4OTcsIDB4NjMK
LSAgICAgICAgfTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkg
KyBwb3MsIGV4cGVjdGVkUnBJZEhhc2gsIHNpemVvZihleHBlY3RlZFJwSWRIYXNoKSkpOwotICAg
ICAgICBwb3MgKz0gc2l6ZW9mKGV4cGVjdGVkUnBJZEhhc2gpOwotCi0gICAgICAgIC8vIEZMQUdT
Ci0gICAgICAgIEVYUEVDVF9FUSg2OSwgYXV0aERhdGFbcG9zXSk7Ci0gICAgICAgIHBvcysrOwot
Ci0gICAgICAgIHVpbnQzMl90IGNvdW50ZXIgPSAtMTsKLSAgICAgICAgbWVtY3B5KCZjb3VudGVy
LCBhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBFWFBF
Q1RfRVEoMHUsIGNvdW50ZXIpOwotICAgICAgICBwb3MgKz0gc2l6ZW9mKHVpbnQzMl90KTsKLQot
ICAgICAgICB1aW50OF90IGV4cGVjdGVkQUFHVUlEW10gPSB7Ci0gICAgICAgICAgICAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotICAgICAgICAgICAgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMAotICAgICAgICB9Owot
ICAgICAgICBFWFBFQ1RfRkFMU0UobWVtY21wKGF1dGhEYXRhLmRhdGEoKSArIHBvcywgZXhwZWN0
ZWRBQUdVSUQsIHNpemVvZihleHBlY3RlZEFBR1VJRCkpKTsKLSAgICAgICAgcG9zICs9IHNpemVv
ZihleHBlY3RlZEFBR1VJRCk7Ci0KLSAgICAgICAgdWludDE2X3QgbCA9IC0xOwotICAgICAgICBt
ZW1jcHkoJmwsIGF1dGhEYXRhLmRhdGEoKSArIHBvcywgc2l6ZW9mKHVpbnQxNl90KSk7Ci0gICAg
ICAgIEVYUEVDVF9FUSgyMHUsIGwpOwotICAgICAgICBwb3MgKz0gc2l6ZW9mKHVpbnQxNl90KTsK
LQotICAgICAgICBFWFBFQ1RfRkFMU0UobWVtY21wKGF1dGhEYXRhLmRhdGEoKSArIHBvcywgY3Jl
ZGVudGlhbElkLmRhdGEoKSwgbCkpOwotICAgICAgICBwb3MgKz0gbDsKLQotICAgICAgICAvLyBD
cmVkZW50aWFsIFB1YmxpYyBLZXkKLSAgICAgICAgLy8gRklYTUUoMTgzNTM2KTogVGhlIENCT1Ig
cmVhZGVyIGRvZXNuJ3Qgc3VwcG9ydCBuZWdhdGl2ZSBpbnRlZ2VyIGFzIG1hcCBrZXkuIFRodXMg
d2UgY291bGRuJ3QgdXRpbHppZSBpdC4KLSAgICAgICAgRVhQRUNUX1NUUkVRKCJwUUVDQXlZZ0FT
RllJRGovenhTa3pLZ2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OUlsZ2dWQkpQZ3FV
SXdmaFdISjkxbmI3VVBINzZjMCtXRk96WktzbFB5eUZzZTRnPSIsIFdURjo6YmFzZTY0RW5jb2Rl
KGF1dGhEYXRhLmRhdGEoKSArIHBvcywgYXV0aERhdGEuc2l6ZSgpIC0gcG9zKS5hc2NpaSgpLmRh
dGEoKSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgU2VsZiBBdHRlc3RhdGlvbgotICAgICAgICBFWFBF
Q1RfU1RSRVEoIkFwcGxlIiwgYXR0ZXN0YXRpb25PYmplY3RNYXAtPmdldE1hcCgpLmZpbmQoY2Jv
cjo6Q0JPUlZhbHVlKCJmbXQiKSktPnNlY29uZC5nZXRTdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
Ci0KLSAgICAgICAgYXV0byYgYXR0U3RtdCA9IGF0dGVzdGF0aW9uT2JqZWN0TWFwLT5nZXRNYXAo
KS5maW5kKGNib3I6OkNCT1JWYWx1ZSgiYXR0U3RtdCIpKS0+c2Vjb25kLmdldE1hcCgpOwotICAg
ICAgICBFWFBFQ1RfRVEoQ09TRTo6RVMyNTYsIGF0dFN0bXQuZmluZChjYm9yOjpDQk9SVmFsdWUo
ImFsZyIpKS0+c2Vjb25kLmdldE5lZ2F0aXZlKCkpOwotCi0gICAgICAgIGF1dG8mIHNpZyA9IGF0
dFN0bXQuZmluZChjYm9yOjpDQk9SVmFsdWUoInNpZyIpKS0+c2Vjb25kLmdldEJ5dGVTdHJpbmco
KTsKLSAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gZ2V0VGVzdEtleSgpOwotICAgICAgICBFWFBF
Q1RfVFJVRShTZWNLZXlWZXJpZnlTaWduYXR1cmUoU2VjS2V5Q29weVB1YmxpY0tleShwcml2YXRl
S2V5LmdldCgpKSwga1NlY0tleUFsZ29yaXRobUVDRFNBU2lnbmF0dXJlTWVzc2FnZVg5NjJTSEEy
NTYsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmF1dGhEYXRhLmRh
dGEoKSBsZW5ndGg6YXV0aERhdGEuc2l6ZSgpXSwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6c2lnLmRhdGEoKSBsZW5ndGg6c2lnLnNpemUoKV0sIE5VTEwpKTsKLQot
ICAgICAgICAvLyBDaGVjayBjZXJ0aWZpY2F0ZXMKLSAgICAgICAgYXV0byYgeDVjID0gYXR0U3Rt
dC5maW5kKGNib3I6OkNCT1JWYWx1ZSgieDVjIikpLT5zZWNvbmQuZ2V0QXJyYXkoKTsKLSAgICAg
ICAgYXV0byYgYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZURhdGEgPSB4NWNbMF0uZ2V0Qnl0ZVN0cmlu
ZygpOwotICAgICAgICBhdXRvIGF0dGVzdGF0aW9uQ2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0Nl
cnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoTlVMTCwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6YXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZURhdGEuZGF0YSgpIGxlbmd0aDph
dHRlc3RhdGlvbkNlcnRpZmljYXRlRGF0YS5zaXplKCldKSk7Ci0gICAgICAgIENGU3RyaW5nUmVm
IGNvbW1vbk5hbWUgPSBudWxscHRyOwotICAgICAgICBzdGF0dXMgPSBTZWNDZXJ0aWZpY2F0ZUNv
cHlDb21tb25OYW1lKGF0dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCksICZjb21tb25OYW1lKTsK
LSAgICAgICAgYXV0byByZXRhaW5Db21tb25OYW1lID0gYWRvcHRDRihjb21tb25OYW1lKTsKLSAg
ICAgICAgQVNTRVJUKCFzdGF0dXMpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIjAwMDA4MDEwLTAw
MEE0OUEyMzBBMDIxM0EiLCBbKE5TU3RyaW5nICopY29tbW9uTmFtZSBjU3RyaW5nVXNpbmdFbmNv
ZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXSk7Ci0KLSAgICAgICAgYXV0byYgYXR0ZXN0YXRp
b25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZURhdGEgPSB4NWNbMV0uZ2V0Qnl0ZVN0cmluZygpOwotICAg
ICAgICBhdXRvIGF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0Nl
cnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoTlVMTCwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6YXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZURhdGEuZGF0YSgp
IGxlbmd0aDphdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlRGF0YS5zaXplKCldKSk7Ci0g
ICAgICAgIGNvbW1vbk5hbWUgPSBudWxscHRyOwotICAgICAgICBzdGF0dXMgPSBTZWNDZXJ0aWZp
Y2F0ZUNvcHlDb21tb25OYW1lKGF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGUuZ2V0KCks
ICZjb21tb25OYW1lKTsKLSAgICAgICAgcmV0YWluQ29tbW9uTmFtZSA9IGFkb3B0Q0YoY29tbW9u
TmFtZSk7Ci0gICAgICAgIEFTU0VSVCghc3RhdHVzKTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJC
YXNpYyBBdHRlc3RhdGlvbiBVc2VyIFN1YiBDQTEiLCBbKE5TU3RyaW5nICopY29tbW9uTmFtZSBj
U3RyaW5nVXNpbmdFbmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXSk7Ci0KLSAgICAgICAg
Y2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0
byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBjbGVh
blVwS2V5Y2hhaW4oKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgYXV0byBjYWxsYmFjayA9
IFsmZG9uZV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocmVz
dWx0LCBbJl0oY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEmIGRhdGEpIHsK
KyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjcmVkZW50aWFsSWQ7CisgICAgICAgICAgICBj
cmVkZW50aWFsSWQuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEucmF3SWQt
PmRhdGEoKSksIGRhdGEucmF3SWQtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBWZWN0b3I8
dWludDhfdD4gYXR0ZXN0YXRpb25PYmplY3Q7CisgICAgICAgICAgICBhdHRlc3RhdGlvbk9iamVj
dC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YS5hdHRlc3RhdGlvbk9iamVj
dC0+ZGF0YSgpKSwgZGF0YS5hdHRlc3RhdGlvbk9iamVjdC0+Ynl0ZUxlbmd0aCgpKTsKKworICAg
ICAgICAgICAgLy8gQ2hlY2sgS2V5Y2hhaW4KKyAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqcXVl
cnkgPSBAeworICAgICAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXks
CisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNs
YXNzUHJpdmF0ZSwKKyAgICAgICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogdGVzdFJwSWQs
CisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDogYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOnRlc3RDcmVkZW50aWFs
SWRCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0
ZXJzXSkuZ2V0KCksCisgICAgICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp0ZXN0VXNlcmhhbmRsZSBsZW5ndGg6c2l6ZW9mKHRlc3RV
c2VyaGFuZGxlKV0sCisgICAgICAgICAgICB9OworICAgICAgICAgICAgT1NTdGF0dXMgc3RhdHVz
ID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCBO
VUxMKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0dXMpOworCisgICAgICAgICAgICAv
LyBDaGVjayBDcmVkZW50aWFsIElECisgICAgICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmJhc2U2
NEVuY29kZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSA9PSB0ZXN0
Q3JlZGVudGlhbElkQmFzZTY0KTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgQXR0ZXN0YXRpb24g
T2JqZWN0CisgICAgICAgICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0TWFwID0gY2Jvcjo6Q0JP
UlJlYWRlcjo6cmVhZChhdHRlc3RhdGlvbk9iamVjdCk7CisgICAgICAgICAgICBBU1NFUlRfVFJV
RSghIWF0dGVzdGF0aW9uT2JqZWN0TWFwKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgQXV0aGVu
dGljYXRvciBEYXRhLgorICAgICAgICAgICAgYXV0byYgYXV0aERhdGEgPSBhdHRlc3RhdGlvbk9i
amVjdE1hcC0+Z2V0TWFwKCkuZmluZChjYm9yOjpDQk9SVmFsdWUoImF1dGhEYXRhIikpLT5zZWNv
bmQuZ2V0Qnl0ZVN0cmluZygpOworICAgICAgICAgICAgc2l6ZV90IHBvcyA9IDA7CisgICAgICAg
ICAgICB1aW50OF90IGV4cGVjdGVkUnBJZEhhc2hbXSA9IHsKKyAgICAgICAgICAgICAgICAweDQ5
LCAweDk2LCAweDBkLCAweGU1LCAweDg4LCAweDBlLCAweDhjLCAweDY4LAorICAgICAgICAgICAg
ICAgIDB4NzQsIDB4MzQsIDB4MTcsIDB4MGYsIDB4NjQsIDB4NzYsIDB4NjAsIDB4NWIsCisgICAg
ICAgICAgICAgICAgMHg4ZiwgMHhlNCwgMHhhZSwgMHhiOSwgMHhhMiwgMHg4NiwgMHgzMiwgMHhj
NywKKyAgICAgICAgICAgICAgICAweDk5LCAweDVjLCAweGYzLCAweGJhLCAweDgzLCAweDFkLCAw
eDk3LCAweDYzCisgICAgICAgICAgICB9OworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNt
cChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkUnBJZEhhc2gsIHNpemVvZihleHBlY3Rl
ZFJwSWRIYXNoKSkpOworICAgICAgICAgICAgcG9zICs9IHNpemVvZihleHBlY3RlZFJwSWRIYXNo
KTsKKworICAgICAgICAgICAgLy8gRkxBR1MKKyAgICAgICAgICAgIEVYUEVDVF9FUSg2OSwgYXV0
aERhdGFbcG9zXSk7CisgICAgICAgICAgICBwb3MrKzsKKworICAgICAgICAgICAgdWludDMyX3Qg
Y291bnRlciA9IC0xOworICAgICAgICAgICAgbWVtY3B5KCZjb3VudGVyLCBhdXRoRGF0YS5kYXRh
KCkgKyBwb3MsIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKDB1LCBj
b3VudGVyKTsKKyAgICAgICAgICAgIHBvcyArPSBzaXplb2YodWludDMyX3QpOworCisgICAgICAg
ICAgICB1aW50OF90IGV4cGVjdGVkQUFHVUlEW10gPSB7CisgICAgICAgICAgICAgICAgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAgICAgICAgICAg
ICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwCisgICAgICAg
ICAgICB9OworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkg
KyBwb3MsIGV4cGVjdGVkQUFHVUlELCBzaXplb2YoZXhwZWN0ZWRBQUdVSUQpKSk7CisgICAgICAg
ICAgICBwb3MgKz0gc2l6ZW9mKGV4cGVjdGVkQUFHVUlEKTsKKworICAgICAgICAgICAgdWludDE2
X3QgbCA9IC0xOworICAgICAgICAgICAgbWVtY3B5KCZsLCBhdXRoRGF0YS5kYXRhKCkgKyBwb3Ms
IHNpemVvZih1aW50MTZfdCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKDIwdSwgbCk7CisgICAg
ICAgICAgICBwb3MgKz0gc2l6ZW9mKHVpbnQxNl90KTsKKworICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGNyZWRlbnRpYWxJZC5kYXRhKCksIGwp
KTsKKyAgICAgICAgICAgIHBvcyArPSBsOworCisgICAgICAgICAgICAvLyBDcmVkZW50aWFsIFB1
YmxpYyBLZXkKKyAgICAgICAgICAgIC8vIEZJWE1FKDE4MzUzNik6IFRoZSBDQk9SIHJlYWRlciBk
b2Vzbid0IHN1cHBvcnQgbmVnYXRpdmUgaW50ZWdlciBhcyBtYXAga2V5LiBUaHVzIHdlIGNvdWxk
bid0IHV0aWx6aWUgaXQuCisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoInBRRUNBeVlnQVNGWUlE
ai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBnRnBzakYvUW0xNzQ5SWxnZ1ZCSlBncVVJd2Zo
V0hKOTFuYjdVUEg3NmMwK1dGT3paS3NsUHl5RnNlNGc9IiwgV1RGOjpiYXNlNjRFbmNvZGUoYXV0
aERhdGEuZGF0YSgpICsgcG9zLCBhdXRoRGF0YS5zaXplKCkgLSBwb3MpLmFzY2lpKCkuZGF0YSgp
KTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgU2VsZiBBdHRlc3RhdGlvbgorICAgICAgICAgICAg
RVhQRUNUX1NUUkVRKCJBcHBsZSIsIGF0dGVzdGF0aW9uT2JqZWN0TWFwLT5nZXRNYXAoKS5maW5k
KGNib3I6OkNCT1JWYWx1ZSgiZm10IikpLT5zZWNvbmQuZ2V0U3RyaW5nKCkuYXNjaWkoKS5kYXRh
KCkpOworCisgICAgICAgICAgICBhdXRvJiBhdHRTdG10ID0gYXR0ZXN0YXRpb25PYmplY3RNYXAt
PmdldE1hcCgpLmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJhdHRTdG10IikpLT5zZWNvbmQuZ2V0TWFw
KCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoQ09TRTo6RVMyNTYsIGF0dFN0bXQuZmluZChjYm9y
OjpDQk9SVmFsdWUoImFsZyIpKS0+c2Vjb25kLmdldE5lZ2F0aXZlKCkpOworCisgICAgICAgICAg
ICBhdXRvJiBzaWcgPSBhdHRTdG10LmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJzaWciKSktPnNlY29u
ZC5nZXRCeXRlU3RyaW5nKCk7CisgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkgPSBnZXRUZXN0
S2V5KCk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShTZWNLZXlWZXJpZnlTaWduYXR1cmUoU2Vj
S2V5Q29weVB1YmxpY0tleShwcml2YXRlS2V5LmdldCgpKSwga1NlY0tleUFsZ29yaXRobUVDRFNB
U2lnbmF0dXJlTWVzc2FnZVg5NjJTSEEyNTYsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmF1dGhEYXRhLmRhdGEoKSBsZW5ndGg6YXV0aERhdGEuc2l6ZSgpXSwgKF9f
YnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6c2lnLmRhdGEoKSBsZW5ndGg6
c2lnLnNpemUoKV0sIE5VTEwpKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgY2VydGlmaWNhdGVz
CisgICAgICAgICAgICBhdXRvJiB4NWMgPSBhdHRTdG10LmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKCJ4
NWMiKSktPnNlY29uZC5nZXRBcnJheSgpOworICAgICAgICAgICAgYXV0byYgYXR0ZXN0YXRpb25D
ZXJ0aWZpY2F0ZURhdGEgPSB4NWNbMF0uZ2V0Qnl0ZVN0cmluZygpOworICAgICAgICAgICAgYXV0
byBhdHRlc3RhdGlvbkNlcnRpZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdp
dGhEYXRhKE5VTEwsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmF0
dGVzdGF0aW9uQ2VydGlmaWNhdGVEYXRhLmRhdGEoKSBsZW5ndGg6YXR0ZXN0YXRpb25DZXJ0aWZp
Y2F0ZURhdGEuc2l6ZSgpXSkpOworICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgY29tbW9uTmFtZSA9
IG51bGxwdHI7CisgICAgICAgICAgICBzdGF0dXMgPSBTZWNDZXJ0aWZpY2F0ZUNvcHlDb21tb25O
YW1lKGF0dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCksICZjb21tb25OYW1lKTsKKyAgICAgICAg
ICAgIGF1dG8gcmV0YWluQ29tbW9uTmFtZSA9IGFkb3B0Q0YoY29tbW9uTmFtZSk7CisgICAgICAg
ICAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoIjAwMDA4MDEw
LTAwMEE0OUEyMzBBMDIxM0EiLCBbKE5TU3RyaW5nICopY29tbW9uTmFtZSBjU3RyaW5nVXNpbmdF
bmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXSk7CisKKyAgICAgICAgICAgIGF1dG8mIGF0
dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVEYXRhID0geDVjWzFdLmdldEJ5dGVTdHJpbmco
KTsKKyAgICAgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZSA9IGFk
b3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShOVUxMLCAoX19icmlkZ2UgQ0ZEYXRh
UmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczphdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRl
RGF0YS5kYXRhKCkgbGVuZ3RoOmF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVEYXRhLnNp
emUoKV0pKTsKKyAgICAgICAgICAgIGNvbW1vbk5hbWUgPSBudWxscHRyOworICAgICAgICAgICAg
c3RhdHVzID0gU2VjQ2VydGlmaWNhdGVDb3B5Q29tbW9uTmFtZShhdHRlc3RhdGlvbklzc3VpbmdD
QUNlcnRpZmljYXRlLmdldCgpLCAmY29tbW9uTmFtZSk7CisgICAgICAgICAgICByZXRhaW5Db21t
b25OYW1lID0gYWRvcHRDRihjb21tb25OYW1lKTsKKyAgICAgICAgICAgIEFTU0VSVCghc3RhdHVz
KTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUSgiQmFzaWMgQXR0ZXN0YXRpb24gVXNlciBTdWIg
Q0ExIiwgWyhOU1N0cmluZyAqKWNvbW1vbk5hbWUgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVND
SUlTdHJpbmdFbmNvZGluZ10pOworCisgICAgICAgICAgICBjbGVhblVwS2V5Y2hhaW4oKTsKKyAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0oY29uc3QgIFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUp
OworICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKICAgICBWZWN0b3I8dWludDhfdD4gaGFzaCgzMik7Ci0g
ICAgYXV0aGVudGljYXRvci0+bWFrZUNyZWRlbnRpYWwoaGFzaCwgY3JlYXRpb25PcHRpb25zLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjaykpOworICAgIGF1dGhl
bnRpY2F0b3ItPm1ha2VDcmVkZW50aWFsKGhhc2gsIGNyZWF0aW9uT3B0aW9ucywgV1RGTW92ZShj
YWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KQEAg
LTU0NCwxNiArNTU3LDE3IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9yLCBHZXRBc3NlcnRpb25B
bGxvd0NyZWRlbnRpYWxzTWlzbWF0Y2gxKQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0byBjYWxs
YmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpIHsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9
OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2Vi
Q29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVDVF9T
VFJFUSgiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0
dGFjaGVkIGF1dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkp
OwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFy
aWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25z
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBbJl0o
Y29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAgICAg
RVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOworICAg
ICAgICAgICAgRVhQRUNUX1NUUkVRKCJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBp
biB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iLCBleGNlcHRpb24ubWVzc2Fn
ZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7
CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0T3B0
aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsKKyAg
ICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92
ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0K
QEAgLTU2NiwxNiArNTgwLDE3IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9yLCBHZXRBc3NlcnRp
b25BbGxvd0NyZWRlbnRpYWxzTWlzbWF0Y2gyKQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0byBj
YWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYp
IHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAg
ICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEo
V2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVD
VF9TVFJFUSgiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3Jt
IGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRh
KCkpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAo
VmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShj
b25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVY
UEVDVF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9LCBb
Jl0oY29uc3QgIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgeworICAgICAgICAg
ICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwgZXhjZXB0aW9uLmNvZGUpOwor
ICAgICAgICAgICAgRVhQRUNUX1NUUkVRKCJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3Vu
ZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iLCBleGNlcHRpb24ubWVz
c2FnZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAg
fSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0
T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsK
KyAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RG
TW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
IH0KQEAgLTU5NSwxOCArNjEwLDE5IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9yLCBHZXRBc3Nl
cnRpb25BbGxvd0NyZWRlbnRpYWxzTWlzbWF0Y2gzKQogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+IGF1dGhlbnRpY2F0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RMb2NhbEF1dGhlbnRpY2F0b3I+KCk7Ci0gICAgYXV0
byBjYWxsYmFjayA9IFsmZG9uZV0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOwotICAgICAgICBjbGVhblVwS2V5Y2hh
aW4oKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbkNh
bGxiYWNrID0gWyZkb25lXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6Ok5vdEFsbG93ZWRFcnJvciwg
ZXhjZXB0aW9uLmNvZGUpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoIk5vIG1hdGNoZWQgY3JlZGVu
dGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIs
IGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgY2xlYW5VcEtleWNo
YWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOworICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmVd
IChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYmIHJlc3VsdCkgeworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZd
KGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJikgeworICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKHRydWUpOworICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0ICBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXZWJDb3JlOjpO
b3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJF
USgiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFj
aGVkIGF1dGhlbnRpY2F0b3IuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9
LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1ZXN0T3B0
aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKIH0KQEAgLTYyMiwxOCArNjM4LDE5IEBAIFRFU1QoTG9jYWxBdXRoZW50aWNhdG9y
LCBHZXRBc3NlcnRpb25CaW9tZXRyaWNzTm90RW5yb2xsZWQpCiAKICAgICBib29sIGRvbmUgPSBm
YWxzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVu
dGljYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JikgewotICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGNsZWFuVXBL
ZXljaGFpbigpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0
aW9uQ2FsbGJhY2sgPSBbJmRvbmVdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNl
cHRpb24pIG11dGFibGUgewotICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVy
cm9yLCBleGNlcHRpb24uY29kZSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gYXZhbGlhYmxl
IGF1dGhlbnRpY2F0b3JzLiIsIGV4Y2VwdGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKLSAg
ICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOworICAgIGF1dG8g
Y2FsbGJhY2sgPSBbJmRvbmVdIChWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxE
YXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmIHJlc3VsdCkgeworICAgICAgICBXVEY6OnN3
aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRh
JikgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHRydWUpOworICAgICAgICAgICAgY2xlYW5V
cEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSwgWyZdKGNv
bnN0ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShXZWJDb3JlOjpOb3RBbGxvd2VkRXJyb3IsIGV4Y2VwdGlvbi5jb2RlKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9TVFJFUSgiTm8gYXZhbGlhYmxlIGF1dGhlbnRpY2F0b3JzLiIsIGV4Y2Vw
dGlvbi5tZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFp
bigpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH07Ci0gICAg
YXV0aGVudGljYXRvci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUo
Y2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSk7CisgICAgYXV0aGVudGljYXRv
ci0+Z2V0QXNzZXJ0aW9uKHsgfSwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsK
IAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CkBAIC02NTAsMTggKzY2
NywxOSBAQCBURVNUKExvY2FsQXV0aGVudGljYXRvciwgR2V0QXNzZXJ0aW9uQmlvbWV0cmljc05v
dEF1dGhlbnRpY2F0ZWQpCiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gWyZk
b25lXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikgewotICAgICAgICBF
WFBFQ1RfRkFMU0UodHJ1ZSk7Ci0gICAgICAgIGNsZWFuVXBLZXljaGFpbigpOwotICAgICAgICBk
b25lID0gdHJ1ZTsKLSAgICB9OwotICAgIGF1dG8gZXhjZXB0aW9uQ2FsbGJhY2sgPSBbJmRvbmVd
IChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIG11dGFibGUgewotICAg
ICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxsb3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7
Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2VudC4iLCBleGNl
cHRpb24ubWVzc2FnZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIGNsZWFuVXBLZXljaGFpbigp
OwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWyZkb25lXSAoVmFy
aWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4mJiByZXN1bHQpIHsKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsIFsmXShjb25z
dCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSYpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRSh0cnVlKTsKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYgZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Tm90QWxs
b3dlZEVycm9yLCBleGNlcHRpb24uY29kZSk7CisgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoIkNv
dWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIiwgZXhjZXB0aW9uLm1lc3NhZ2UuYXNjaWkoKS5kYXRh
KCkpOworICAgICAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7CisgICAgICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfTsKLSAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRp
b24oeyB9LCByZXF1ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spKTsKKyAgICBhdXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oeyB9LCByZXF1
ZXN0T3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKIH0KQEAgLTY4MCw0OCArNjk4LDU4IEBAIFRFU1QoTG9jYWxBdXRoZW50
aWNhdG9yLCBHZXRBc3NlcnRpb25QYXNzZWQpCiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdExvY2FsQXV0aGVudGljYXRvcj4gYXV0aGVudGljYXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8VGVzdExvY2FsQXV0aGVudGljYXRvcj4oKTsKLSAgICBhdXRvIGNh
bGxiYWNrID0gWyZkb25lLCBoYXNoXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFs
SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aERhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJoYW5kbGUpIHsKLSAgICAg
ICAgLy8gQ2hlY2sgQ3JlZGVudGlhbCBJRAotICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmJhc2U2
NEVuY29kZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSA9PSB0ZXN0
Q3JlZGVudGlhbElkQmFzZTY0KTsKLQotICAgICAgICAvLyBDaGVjayBBdXRoZW50aWNhdG9yIERh
dGEuCi0gICAgICAgIHNpemVfdCBwb3MgPSAwOwotICAgICAgICB1aW50OF90IGV4cGVjdGVkUnBJ
ZEhhc2hbXSA9IHsKLSAgICAgICAgICAgIDB4NDksIDB4OTYsIDB4MGQsIDB4ZTUsIDB4ODgsIDB4
MGUsIDB4OGMsIDB4NjgsCi0gICAgICAgICAgICAweDc0LCAweDM0LCAweDE3LCAweDBmLCAweDY0
LCAweDc2LCAweDYwLCAweDViLAotICAgICAgICAgICAgMHg4ZiwgMHhlNCwgMHhhZSwgMHhiOSwg
MHhhMiwgMHg4NiwgMHgzMiwgMHhjNywKLSAgICAgICAgICAgIDB4OTksIDB4NWMsIDB4ZjMsIDB4
YmEsIDB4ODMsIDB4MWQsIDB4OTcsIDB4NjMKLSAgICAgICAgfTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKG1lbWNtcChhdXRoRGF0YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkUnBJZEhhc2gsIHNpemVv
ZihleHBlY3RlZFJwSWRIYXNoKSkpOwotICAgICAgICBwb3MgKz0gc2l6ZW9mKGV4cGVjdGVkUnBJ
ZEhhc2gpOwotCi0gICAgICAgIC8vIEZMQUdTCi0gICAgICAgIEVYUEVDVF9FUSg1LCBhdXRoRGF0
YVtwb3NdKTsKLSAgICAgICAgcG9zKys7Ci0KLSAgICAgICAgdWludDMyX3QgY291bnRlciA9IC0x
OwotICAgICAgICBtZW1jcHkoJmNvdW50ZXIsIGF1dGhEYXRhLmRhdGEoKSArIHBvcywgc2l6ZW9m
KHVpbnQzMl90KSk7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgY291bnRlcik7Ci0KLSAgICAgICAg
Ly8gQ2hlY2sgc2lnbmF0dXJlCi0gICAgICAgIGF1dG8gcHJpdmF0ZUtleSA9IGdldFRlc3RLZXko
KTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFUb1NpZ24oYXV0aERhdGEpOwotICAgICAg
ICBkYXRhVG9TaWduLmFwcGVuZFZlY3RvcihoYXNoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoU2Vj
S2V5VmVyaWZ5U2lnbmF0dXJlKFNlY0tleUNvcHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSks
IGtTZWNLZXlBbGdvcml0aG1FQ0RTQVNpZ25hdHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAoX19icmlk
Z2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhVG9TaWduLmRhdGEoKSBsZW5n
dGg6ZGF0YVRvU2lnbi5zaXplKCldLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdp
dGhCeXRlczpzaWduYXR1cmUuZGF0YSgpIGxlbmd0aDpzaWduYXR1cmUuc2l6ZSgpXSwgTlVMTCkp
OwotCi0gICAgICAgIC8vIENoZWNrIFVzZXIgSGFuZGxlCi0gICAgICAgIEVYUEVDVF9FUSh1c2Vy
aGFuZGxlLnNpemUoKSwgc2l6ZW9mKHRlc3RVc2VyaGFuZGxlKSk7Ci0gICAgICAgIEVYUEVDVF9G
QUxTRShtZW1jbXAodXNlcmhhbmRsZS5kYXRhKCksIHRlc3RVc2VyaGFuZGxlLCBzaXplb2YodGVz
dFVzZXJoYW5kbGUpKSk7Ci0KLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAgICAgIGRv
bmUgPSB0cnVlOwotICAgIH07Ci0gICAgYXV0byBleGNlcHRpb25DYWxsYmFjayA9IFsmZG9uZV0g
KGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRSh0cnVlKTsKLSAgICAgICAgY2xlYW5VcEtleWNoYWluKCk7Ci0gICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIGF1dG8gY2FsbGJhY2sgPSBbJmRvbmUsIGhhc2hdIChWYXJp
YW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiYmIHJlc3VsdCkgeworICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhKSB7CisgICAgICAgICAgICBW
ZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkOworICAgICAgICAgICAgY3JlZGVudGlhbElkLmFw
cGVuZChyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLnJhd0lkLT5kYXRhKCkpLCBkYXRh
LnJhd0lkLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGF1dGhE
YXRhOworICAgICAgICAgICAgYXV0aERhdGEuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRhdGEuYXV0aGVudGljYXRvckRhdGEtPmRhdGEoKSksIGRhdGEuYXV0aGVudGljYXRvckRh
dGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJl
OworICAgICAgICAgICAgc2lnbmF0dXJlLmFwcGVuZChyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihkYXRhLnNpZ25hdHVyZS0+ZGF0YSgpKSwgZGF0YS5zaWduYXR1cmUtPmJ5dGVMZW5ndGgoKSk7
CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdXNlcmhhbmRsZTsKKyAgICAgICAgICAgIHVz
ZXJoYW5kbGUuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEudXNlckhhbmRs
ZS0+ZGF0YSgpKSwgZGF0YS51c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCkpOworCisgICAgICAgICAg
ICAvLyBDaGVjayBDcmVkZW50aWFsIElECisgICAgICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmJh
c2U2NEVuY29kZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSA9PSB0
ZXN0Q3JlZGVudGlhbElkQmFzZTY0KTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgQXV0aGVudGlj
YXRvciBEYXRhLgorICAgICAgICAgICAgc2l6ZV90IHBvcyA9IDA7CisgICAgICAgICAgICB1aW50
OF90IGV4cGVjdGVkUnBJZEhhc2hbXSA9IHsKKyAgICAgICAgICAgICAgICAweDQ5LCAweDk2LCAw
eDBkLCAweGU1LCAweDg4LCAweDBlLCAweDhjLCAweDY4LAorICAgICAgICAgICAgICAgIDB4NzQs
IDB4MzQsIDB4MTcsIDB4MGYsIDB4NjQsIDB4NzYsIDB4NjAsIDB4NWIsCisgICAgICAgICAgICAg
ICAgMHg4ZiwgMHhlNCwgMHhhZSwgMHhiOSwgMHhhMiwgMHg4NiwgMHgzMiwgMHhjNywKKyAgICAg
ICAgICAgICAgICAweDk5LCAweDVjLCAweGYzLCAweGJhLCAweDgzLCAweDFkLCAweDk3LCAweDYz
CisgICAgICAgICAgICB9OworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG1lbWNtcChhdXRoRGF0
YS5kYXRhKCkgKyBwb3MsIGV4cGVjdGVkUnBJZEhhc2gsIHNpemVvZihleHBlY3RlZFJwSWRIYXNo
KSkpOworICAgICAgICAgICAgcG9zICs9IHNpemVvZihleHBlY3RlZFJwSWRIYXNoKTsKKworICAg
ICAgICAgICAgLy8gRkxBR1MKKyAgICAgICAgICAgIEVYUEVDVF9FUSg1LCBhdXRoRGF0YVtwb3Nd
KTsKKyAgICAgICAgICAgIHBvcysrOworCisgICAgICAgICAgICB1aW50MzJfdCBjb3VudGVyID0g
LTE7CisgICAgICAgICAgICBtZW1jcHkoJmNvdW50ZXIsIGF1dGhEYXRhLmRhdGEoKSArIHBvcywg
c2l6ZW9mKHVpbnQzMl90KSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIGNvdW50ZXIpOwor
CisgICAgICAgICAgICAvLyBDaGVjayBzaWduYXR1cmUKKyAgICAgICAgICAgIGF1dG8gcHJpdmF0
ZUtleSA9IGdldFRlc3RLZXkoKTsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhVG9T
aWduKGF1dGhEYXRhKTsKKyAgICAgICAgICAgIGRhdGFUb1NpZ24uYXBwZW5kVmVjdG9yKGhhc2gp
OworICAgICAgICAgICAgRVhQRUNUX1RSVUUoU2VjS2V5VmVyaWZ5U2lnbmF0dXJlKFNlY0tleUNv
cHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSksIGtTZWNLZXlBbGdvcml0aG1FQ0RTQVNpZ25h
dHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdp
dGhCeXRlczpkYXRhVG9TaWduLmRhdGEoKSBsZW5ndGg6ZGF0YVRvU2lnbi5zaXplKCldLCAoX19i
cmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczpzaWduYXR1cmUuZGF0YSgpIGxl
bmd0aDpzaWduYXR1cmUuc2l6ZSgpXSwgTlVMTCkpOworCisgICAgICAgICAgICAvLyBDaGVjayBV
c2VyIEhhbmRsZQorICAgICAgICAgICAgRVhQRUNUX0VRKHVzZXJoYW5kbGUuc2l6ZSgpLCBzaXpl
b2YodGVzdFVzZXJoYW5kbGUpKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShtZW1jbXAodXNl
cmhhbmRsZS5kYXRhKCksIHRlc3RVc2VyaGFuZGxlLCBzaXplb2YodGVzdFVzZXJoYW5kbGUpKSk7
CisKKyAgICAgICAgICAgIGNsZWFuVXBLZXljaGFpbigpOworICAgICAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgICAgIH0sIFsmXShjb25zdCAgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYgZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodHJ1ZSk7CisgICAgICAgICAgICBjbGVh
blVwS2V5Y2hhaW4oKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKICAg
ICB9OwotICAgIGF1dGhlbnRpY2F0b3ItPmdldEFzc2VydGlvbihoYXNoLCByZXF1ZXN0T3B0aW9u
cywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spKTsKKyAgICBh
dXRoZW50aWNhdG9yLT5nZXRBc3NlcnRpb24oaGFzaCwgcmVxdWVzdE9wdGlvbnMsIFdURk1vdmUo
Y2FsbGJhY2spKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggOWNhZjA3MmJjMGM4NWJhZjFhZTQ2M2I3NjA1MGE3YWE2NzM4YTNjZC4uNjlhOWY2Njdl
NWI2Yjg3OGY1ZWU0MWI5ZjZlZWFjMjU1N2NiZTRjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE4LTA5LTA4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dlYkF1dGhOXSBQb2xpc2ggQXV0aGVudGljYXRvck1hbmFnZXIgYW5kIHJlbmFtZSBpdCB0byBB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4OTI3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQxMTU5MzY+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBodHRwL3dw
dC9jcmVkZW50aWFsLW1hbmFnZW1lbnQvY3JlZGVudGlhbHNjb250YWluZXItc3RvcmUtYmFzaWNz
Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vaWRsLmh0dHBzLmh0bWw6
CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1mYWlsdXJlLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLmh0dHBzLmh0
bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1zdWNjZXNzLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1pcy11c2VyLXZlcmlmeWluZy1wbGF0Zm9ybS1hdXRoZW50aWNhdG9yLWF2YWlsYWJsZS5o
dG1sOgorCiAyMDE4LTA5LTA4ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQXBwbGUgUGF5XSBEaXNwYXRjaCBhIHBheW1lbnRtZXRob2RjaGFuZ2UgZXZlbnQgd2hl
biB0aGUgcGF5bWVudCBtZXRob2QgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2NyZWRlbnRpYWxzY29udGFpbmVyLXN0b3JlLWJh
c2ljcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3JlZGVudGlhbC1tYW5hZ2Vt
ZW50L2NyZWRlbnRpYWxzY29udGFpbmVyLXN0b3JlLWJhc2ljcy5odHRwcy5odG1sCmluZGV4IDE5
ODg4MjU0NzMwZjE2ODMyYTAyNTk5Y2M5ZDA1YmU0NTg2MDQxMjEuLjIzNjkxMzUwYzA1ZWNlMDA4
N2U1MmVjZGM4MTg0ZTBkZGZkZTc5ZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L2NyZWRlbnRpYWwtbWFuYWdlbWVudC9jcmVkZW50aWFsc2NvbnRhaW5lci1zdG9yZS1iYXNpY3Mu
aHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcmVkZW50aWFsLW1hbmFnZW1l
bnQvY3JlZGVudGlhbHNjb250YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWwKQEAgLTQyLDcg
KzQyLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKICAgICAgICAgLy8gQSBtb2NrIGF0
dGVzdGF0aW9uIG9iamVjdAotICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2Vu
Z2VyLnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJheSgnMDAnKSwg
aGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMScpKTsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0Q3JlYXRpb25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9V
aW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJykpOwogICAgICAgICBj
b25zdCBjcmVkZW50aWFsID0gYXdhaXQgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRp
b25zKTsKIAogICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICJOb3RTdXBwb3J0ZWRF
cnJvciIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9pZGwuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCmlu
ZGV4IDljMmM3ZjMxMzY0ODFhNzk2MzI1MmY1ZDliM2U3NmY4M2I5MjUxNzYuLmNlNzE4ODU5MTJl
MTI3ZGYxMzI3OWM2ZjQ1MzRiZjJjYzEyYWE3ZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sCkBAIC01Miw3ICs1Miw3IEBAIHByb21pc2VfdGVzdChh
c3luYyAoKSA9PiB7CiAgICAgICAgIH0KICAgICB9OwogICAgIC8vIEEgbW9jayBhdHRlc3RhdGlv
biBvYmplY3QKLSAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldENyZWF0
aW9uUmV0dXJuQnVuZGxlKGhleFN0cmluZ1RvVWludDhBcnJheSgnMDAnKSwgaGV4U3RyaW5nVG9V
aW50OEFycmF5KCcwMScpKTsKKyAgICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5zZXRDcmVhdGlvblJldHVybkJ1bmRsZShoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAwJyks
IGhleFN0cmluZ1RvVWludDhBcnJheSgnMDEnKSk7CiAgICAgY3JlYXRlZENyZWRlbnRpYWwgPSBh
d2FpdCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGNyZWF0aW9uT3B0aW9ucyk7CiAKIApA
QCAtNjIsNyArNjIsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgICAgICB9CiAg
ICAgfTsKICAgICAvLyBBIG1vY2sgYXNzZXJ0aW9uIHJldHVybiBidW5kbGUuCi0gICAgaW50ZXJu
YWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5zZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoaGV4
U3RyaW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJyksIGhl
eFN0cmluZ1RvVWludDhBcnJheSgnMDInKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMycpKTsK
KyAgICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXRBc3NlcnRpb25S
ZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4
QXJyYXkoJzAxJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgnMDInKSwgaGV4U3RyaW5nVG9VaW50
OEFycmF5KCcwMycpKTsKICAgICByZXF1ZXN0ZWRDcmVkZW50aWFsID0gYXdhaXQgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmdldChyZXF1ZXN0T3B0aW9ucyk7CiAKICAgICBpZGxBcnJheS5hZGRfb2Jq
ZWN0cyh7IlB1YmxpY0tleUNyZWRlbnRpYWwiOiBbImNyZWF0ZWRDcmVkZW50aWFsIl0sICJBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSI6IFsiY3JlYXRlZENyZWRlbnRpYWwucmVzcG9u
c2UiXSwgIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSI6IFsicmVxdWVzdGVkQ3JlZGVu
dGlhbC5yZXNwb25zZSJdfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUuaHR0cHMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IGJiNTU0OGM5MGQwYmNkMDU3MWI0NjNjZWVkYzk4N2M1
MzU1NDFmYjMuLjQ1MDc3YTNjZjlkMzM3MWZlYzZmZjZiOGJkYTViMjdkMmQ4NDE2ZDEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS5odHRwcy5odG1sCkBA
IC0yMCw3ICsyMCw3IEBACiAgICAgICAgICAgICAgICAgdGltZW91dDogMCwKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdl
ci5zZXREaWRUaW1lT3V0KCk7CisgICAgICAgIGludGVybmFscy5tb2NrQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLnNldERpZFRpbWVPdXQoKTsKIAogICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLAogICAgICAgICAgICAgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKSk7CkBAIC04Miw3ICs4Miw3IEBACiAgICAgICAgICAgICAgICAg
cHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAogICAg
ICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxz
TWVzc2VuZ2VyLnNldERpZFVzZXJDYW5jZWwoKTsKKyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0RGlkVXNlckNhbmNlbCgpOwogCiAgICAgICAgIHJldHVy
biBwcm9taXNlX3JlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsCiAgICAgICAgICAgICBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vz
cy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLmh0dHBzLmh0bWwKaW5kZXggYWI0ZmNjMDgyZDFhMGJj
ZGZiYTgyYjBhYmNlYzNmZjZkYTE3MDY4MC4uNjk5NjhjM2Y0ZWRjMWYxZDYyMTViZjJlOWFlYmQ5
NTZkYjM1ODUxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNj
ZXNzLmh0dHBzLmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKICAgICAgICAgLy8gQSBtb2NrIGF0dGVzdGF0aW9uIG9iamVjdAotICAgICAgICBpbnRlcm5h
bHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldENyZWF0aW9uUmV0dXJuQnVuZGxlKGhleFN0
cmluZ1RvVWludDhBcnJheSgnMDAnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMScpKTsKKyAg
ICAgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0Q3JlYXRpb25S
ZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMCcpLCBoZXhTdHJpbmdUb1VpbnQ4
QXJyYXkoJzAxJykpOwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24oY3JlZGVudGlhbCkgewogICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC5pZCwgJ0FBJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IDUxMmJiMmRhZDE2NGNkMjM4ZGIx
NDJlZjMzMzQ4OGQwNzAzNjdlNTIuLjBkNGMwNDUyNTY3MDM1MmVmMzdjODdmNjBkZjIzMzIxYzNk
ZTcyYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS5odHRwcy5o
dG1sCkBAIC0xMSw3ICsxMSw3IEBACiAgICAgICAgICAgICAgICAgdGltZW91dDogMCwKICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01l
c3Nlbmdlci5zZXREaWRUaW1lT3V0KCk7CisgICAgICAgIGludGVybmFscy5tb2NrQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLnNldERpZFRpbWVPdXQoKTsKIAogICAgICAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLAogICAgICAgICAgICAgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKSk7CkBAIC0zNSw3ICszNSw3IEBACiAgICAgICAgICAgICAg
ICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpIH1dLAogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAg
ICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldERpZFVzZXJDYW5jZWwoKTsK
KyAgICAgICAgaW50ZXJuYWxzLm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iuc2V0RGlkVXNl
ckNhbmNlbCgpOwogCiAgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsCiAgICAgICAgICAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMp
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtc3VjY2Vzcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLmh0dHBzLmh0bWwKaW5k
ZXggMmU1ZWM4ODIxM2M2ZTY0ZTczZjZjMjVlMjhiZmEwZGQ3M2ZkMWNmNC4uZjNmZDE1NjRhZWQ0
ZWU1NTExMzFjYzY4NTI3MzFmYzgyODczN2E0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1zdWNjZXNzLmh0dHBzLmh0bWwKQEAgLTEyLDcgKzEyLDcgQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKICAgICAgICAgLy8gQSBtb2NrIGFzc2VydGlvbiByZXR1cm4gYnVuZGxl
LgotICAgICAgICBpbnRlcm5hbHMubW9ja0NyZWRlbnRpYWxzTWVzc2VuZ2VyLnNldEFzc2VydGlv
blJldHVybkJ1bmRsZShoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAwJyksIGhleFN0cmluZ1RvVWlu
dDhBcnJheSgnMDEnKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMicpLCBoZXhTdHJpbmdUb1Vp
bnQ4QXJyYXkoJzAzJykpOworICAgICAgICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5zZXRBc3NlcnRpb25SZXR1cm5CdW5kbGUoaGV4U3RyaW5nVG9VaW50OEFycmF5KCcw
MCcpLCBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoJzAxJyksIGhleFN0cmluZ1RvVWludDhBcnJheSgn
MDInKSwgaGV4U3RyaW5nVG9VaW50OEFycmF5KCcwMycpKTsKIAogICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGZ1bmN0aW9uKGNyZWRlbnRpYWwp
IHsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC5pZCwgJ0FBJyk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWlzLXVzZXIt
dmVyaWZ5aW5nLXBsYXRmb3JtLWF1dGhlbnRpY2F0b3ItYXZhaWxhYmxlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWlzLXVzZXItdmVyaWZ5aW5nLXBsYXRm
b3JtLWF1dGhlbnRpY2F0b3ItYXZhaWxhYmxlLmh0bWwKaW5kZXggZGE4ZTUzNDU5NjBmOWQ0YzYy
NjRlZGFjMzk5MWQyMjA1NTRlZmU5Ny4uMTgxZDMzYTRmOGY5ODQzYWZkOGEyODM4NWM5ZTg5OGNl
ODZjMDllYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1pcy11c2VyLXZlcmlmeWluZy1wbGF0Zm9ybS1hdXRoZW50aWNhdG9yLWF2YWlsYWJsZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktaXMtdXNl
ci12ZXJpZnlpbmctcGxhdGZvcm0tYXV0aGVudGljYXRvci1hdmFpbGFibGUuaHRtbApAQCAtNCw3
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAg
ICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3NlbmdlcjsKKyAgICAgICAgaW50ZXJuYWxz
Lm1vY2tBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I7CiAKICAgICAgICAgcmV0dXJuIFB1YmxpY0tl
eUNyZWRlbnRpYWwuaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxl
KCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LCBmYWxzZSk7CkBAIC0xMiw3ICsxMiw3IEBACiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwuaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKCkgd2l0aG91
dCBhbnkgYXZhaWxhYmxlIGF1dGhlbnRpY2F0b3JzLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHQpIHsKLSAgICAgICAgaW50ZXJuYWxzLm1vY2tDcmVkZW50aWFsc01lc3Nlbmdlci5z
ZXREaWRVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCgpOworICAgICAg
ICBpbnRlcm5hbHMubW9ja0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5zZXREaWRVc2VyVmVyaWZ5
aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yUHJlc2VudCgpOwogCiAgICAgICAgIHJldHVybiBQdWJs
aWNLZXlDcmVkZW50aWFsLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWls
YWJsZSgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdCwgdHJ1ZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>