<?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>229664</bug_id>
          
          <creation_ts>2021-08-29 23:28:10 -0700</creation_ts>
          <short_desc>add logging for IPC messages</short_desc>
          <delta_ts>2022-01-25 02:06:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=235562</see_also>
          <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>230064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1788444</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-29 23:28:10 -0700</bug_when>
    <thetext>I have a patch.  Still wondering whether to have a single IPCMessages log channel that logs all messages, or have a separate channel per message receiver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788445</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-29 23:28:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/82511640&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788446</commentid>
    <comment_count>2</comment_count>
      <attachid>436758</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-30 00:08:55 -0700</bug_when>
    <thetext>Created attachment 436758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788447</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-30 00:10:15 -0700</bug_when>
    <thetext>This is what the logging looks like, right after starting MiniBrowser:

WebProcess_InitializeWebProcess (processCreationParameters ...)
WebProcessProxy_GetNetworkProcessConnection
NetworkProcess_InitializeNetworkProcess (processCreationParameters ...)
NetworkProcess_PreconnectTo (sessionID ...) (webPageProxyID 6) (webPageID 7) (url http://192.168.20.92:8000/) (userAgent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko)) (storedCredentialsPolicy ...) (isNavigatingToAppBoundDomain ...
NetworkProcess_CreateNetworkConnectionToWebProcess (processIdentifier 8) (sessionID ...)
NetworkProcess_CreateNetworkConnectionToWebProcess Reply (connectionIdentifier ...) (cookieAcceptPolicy ...)
WebProcessProxy_GetNetworkProcessConnection Reply (connectionInfo ...)
NetworkConnectionToWebProcess_RegisterURLSchemesAsCORSEnabled (schemes [http, https])
AuxiliaryProcess_MainThreadPing
WebProcess_CreateWebPage (newPageID 7) (pageCreationParameters ...)
DrawingAreaProxy_EnterAcceleratedCompositingMode (backingStoreStateID 0) (context ...)
WebPageProxy_DidCreateMainFrame (frameID 3)
WebPageProxy_DidCreateWindow (frameID 3) (windowIdentifier ...)
WebPageProxy_DidChangeMainDocument (frameID 3)
WebProcessProxy_SetDisplayLinkPreferredFramesPerSecond (observerID 6) (displayID 0) (preferredFramesPerSecond 60)
WebProcessProxy_StartDisplayLink (observerID 6) (displayID 0) (preferredFramesPerSecond 60)
WebPageProxy_RegisterWebProcessAccessibilityToken (data ...)
WebPageProxy_FocusedFrameChanged (frameID 3)
WebProcessProxy_SetDisplayLinkPreferredFramesPerSecond (observerID 6) (displayID 0) (preferredFramesPerSecond 30)
WebProcessPool_ReportWebContentCPUTime (cpuTime 0.07s) (activityState 1)
WebPageProxy_DidChangeContentSize (newSize width=1311 height=964)
WebPageProxy_SetCanShortCircuitHorizontalWheelEvents (canShortCircuitHorizontalWheelEvents 1)
WebPageProxy_SetRenderTreeSize (treeSize 3)
WebPageProxy_SetRenderTreeSize (treeSize 3)
WebPageProxy_SampledPageTopColorChanged (sampledPageTopColor #00000000)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788448</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-30 00:11:50 -0700</bug_when>
    <thetext>Not sure if it&apos;s useful to show PIDs and/or destination IDs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788665</commentid>
    <comment_count>5</comment_count>
      <attachid>436758</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-30 14:44:36 -0700</bug_when>
    <thetext>Comment on attachment 436758
Patch

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

&gt; Source/WebKit/Platform/IPC/HandleMessage.h:51
&gt; +#ifndef NDEBUG

LOG_DISABLED

&gt; Source/WebKit/Platform/IPC/HandleMessage.h:74
&gt; +#ifndef NDEBUG

LOG_DISABLED</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788668</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-30 14:47:53 -0700</bug_when>
    <thetext>Source and destination pid would be quite useful.  On Darwin-based OSes, you can probably get the pid from xpc_connection_get_pid and Connection::xpcConnection(), but on other OSes you should probably leave it unimplemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788669</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-30 14:54:45 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Source and destination pid would be quite useful.  On Darwin-based OSes, you
&gt; can probably get the pid from xpc_connection_get_pid and
&gt; Connection::xpcConnection(), but on other OSes you should probably leave it
&gt; unimplemented.

Maybe I can use getCurrentProcessID() from wtf/ProcessID.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788670</commentid>
    <comment_count>8</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-30 14:55:13 -0700</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #7)
&gt; Maybe I can use getCurrentProcessID() from wtf/ProcessID.h.

(Oh but that doesn&apos;t get me the source PID.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788793</commentid>
    <comment_count>9</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-31 00:15:25 -0700</bug_when>
    <thetext>One wrinkle is that for Connections that were created using createIPCConnectionPair() (e.g. under createNetworkConnectionToWebProcess), Connection::m_xpcConnection is null.

We only care about the remote process ID on the server-side Connection (since that&apos;s the side receiving the messages we&apos;re logging), so I guess we could pass it back through the reply messages to the Web process, if we cared to show the PIDs for messages going across those connections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789180</commentid>
    <comment_count>10</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-31 17:54:09 -0700</bug_when>
    <thetext>I&apos;m going to ignore that problem for now, and omit the remote process ID for such connections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789181</commentid>
    <comment_count>11</comment_count>
      <attachid>436976</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-31 17:55:23 -0700</bug_when>
    <thetext>Created attachment 436976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789964</commentid>
    <comment_count>12</comment_count>
      <attachid>437213</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-09-02 16:23:58 -0700</bug_when>
    <thetext>Created attachment 437213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791043</commentid>
    <comment_count>13</comment_count>
      <attachid>437213</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-07 09:03:01 -0700</bug_when>
    <thetext>Comment on attachment 437213
Patch

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

&gt; Source/WTF/wtf/text/TextStream.h:233
&gt; +        if (i)

nit: I think it would be nice if this had the same style as the other two below and checked count here and used a c++11-style for ( : ) loop

&gt; Source/WTF/wtf/text/TextStream.h:356
&gt; +struct ValueOrFallback {

This is only ever used with &quot;...&quot; as the fallback.  Do we need something this generic, or could we do ValueOrEllipsis?

&gt; Source/WebKit/Platform/IPC/HandleMessage.h:51
&gt; +enum class ForReply { No, Yes };

nit: : bool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791230</commentid>
    <comment_count>14</comment_count>
      <attachid>437558</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-09-07 14:52:53 -0700</bug_when>
    <thetext>Created attachment 437558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791266</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-07 16:32:35 -0700</bug_when>
    <thetext>Committed r282115 (241412@main): &lt;https://commits.webkit.org/241412@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437558.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791345</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-07 20:34:15 -0700</bug_when>
    <thetext>r282126</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791614</commentid>
    <comment_count>17</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-09-08 14:04:13 -0700</bug_when>
    <thetext>Filed: Bug 230064 – REGRESSION(r282115): undefined reference to `IPC::messageArgumentDescriptions(IPC::MessageName)&apos; in Debug build</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436758</attachid>
            <date>2021-08-30 00:08:55 -0700</date>
            <delta_ts>2021-08-31 17:55:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229664-20210830170853.patch</filename>
            <type>text/plain</type>
            <size>16638</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJiYzJlYmI2MjIyNGJiZTExNGU5Yzgx
YjEzOWIwMTYzYmFiMjBiODAuLjhmYTAxZmM1ZTU3MTFmMDU3YjgyYzk1NTRhOWE3YTc2ZjNlMzk3
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMjEtMDgtMjkgIENhbWVyb24gTWNDb3JtYWNrICA8
aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gSVBDTWVzc2FnZXMgY2hhbm5lbCB0
byBsb2cgYWxsIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5NjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MjUxMTY0MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUd28gY2hh
bmdlcyB0byBUZXh0U3RyZWFtIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgVGhlIGZpcnN0IGlz
IGEgbmV3IGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciB0byBhbGxvdyBsaW1pdGluZworICAg
ICAgICB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgY29udGFpbmVyIHdoZW4gYXBwZW5kaW5n
IGl0IHRvIGEKKyAgICAgICAgVGV4dFN0cmVhbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2Vk
IHdoZW4gdGhlIG91dHB1dCBpcyBmb3IKKyAgICAgICAgaHVtYW4gY29uc3VtcHRpb24gYW5kIGNv
dWxkIHBvdGVudGlhbGx5IGJlIHVzZWxlc3NseSBsYXJnZS4KKworICAgICAgICBUaGUgc2Vjb25k
IGlzIGEgdmFsdWUgYWRhcHRlciBWYWx1ZU9yRGVmYXVsdC4gVGhpcyBhbGxvd3MgYXBwZW5kaW5n
CisgICAgICAgIGEgdmFsdWUgdG8gYSBUZXh0U3RyZWFtIGV2ZW4gaWYgaXQgZG9lc24ndCBoYXZl
IGFuCisgICAgICAgIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYpIGRlZmluZWQuIElmIGl0IGRvZXNu
J3QsIHRoZW4gdGhlIGZhbGxiYWNrCisgICAgICAgIHZhbHVlIHByb3ZpZGVkIHRvIHRoZSBWYWx1
ZU9yRGVmYXVsdCBjb25zdHJ1Y3RvciBpcyB1c2VkIGluc3RlYWQuCisKKyAgICAgICAgQW4gaW1w
bGVtZW50YXRpb24gZGV0YWlsIG9mIFZhbHVlT3JEZWZhdWx0IGlzIGEgbmV3IHR5cGUgdHJhaXQK
KyAgICAgICAgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uLCB3aGljaCBkZXRlY3RzIGF0
IGNvbXBpbGUgdGltZSB3aGV0aGVyCisgICAgICAgIGEgZ2l2ZW4gdHlwZSBjYW4gYmUgYXBwZW5k
ZWQgdG8gYSBUZXh0U3RyZWFtLiBJdCB3b3JrcyBieSB1c2luZworICAgICAgICAiZXhwcmVzc2lv
biBTRklOQUUiIGFuZCBwYXJ0aWFsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uLgorCisgICAgICAg
IFRoZSBiYXNlLCB1bnNwZWNpYWxpemVkIHZlcnNpb24gb2YgdGhlIHRlbXBsYXRlIGluaGVyaXRz
IGZyb20KKyAgICAgICAgc3RkOjpmYWxzZV90eXBlLCBhbmQgaXMgc2VsZWN0ZWQgZm9yIGFsbCB0
eXBlcyBieSBkZWZhdWx0LgorCisgICAgICAgIEEgcGFydGlhbCBzcGVjaWFsaXphdGlvbiB0aGF0
IHVzZXMgZGVjbHR5cGUoKSB0byBjaGVjayB3aGV0aGVyIGEKKyAgICAgICAgYFRleHRTdHJlYW0o
KSA8PCB2YWx1ZWAgZXhwcmVzc2lvbiB3b3VsZCBjb21waWxlIGluaGVyaXRzIGZyb20KKyAgICAg
ICAgc3RkOjp0cnVlX3R5cGUuCisKKyAgICAgICAgU2FkbHksIEMrKyBTRklOQUUgaGFzIGEgbGlt
aXRhdGlvbiB0aGF0IG1lYW5zIHRlbXBsYXRlIGRlZmluaXRpb25zCisgICAgICAgIHRoYXQgd291
bGQgYmUgaW5zdGFudGlhdGVkIGluc2lkZSB0aGUgZGVjbHR5cGUoKSBhcmUgbm90IGNoZWNrZWQK
KyAgICAgICAgdG8gZW5zdXJlIHRoZXkgd291bGQgY29tcGlsZS4gVGhpcyB3b3VsZCBtZWFuIGNv
bnRhaW5lciB0eXBlcyB3aG9zZQorICAgICAgICBlbGVtZW50cyBhcmUgdHlwZXMgdGhhdCBkb24n
dCBoYXZlIGFuIG9wZXJhdG9yPDwgZGVmaW5lZCB3b3VsZCBzdGlsbAorICAgICAgICByZXBvcnQg
dHJ1ZSBmcm9tIHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbi4gV2Ugd29yayBhcm91bmQg
dGhpcworICAgICAgICBieSBoYXZpbmcgbW9yZSBzcGVjaWZpYyBwYXJ0aWFsIHNwZWNpYWxpemF0
aW9ucyBmb3IgYWxsIG9mIHRoZSBjb250YWluZXIKKyAgICAgICAgdHlwZXMgd2UgaGF2ZSBvcGVy
YXRvcjw8IGRlZmluaXRpb25zIGZvciwgd2hpY2ggZGVmZXIgdG8gdGhlCisgICAgICAgIHN1cHBv
cnRzX3RleHRfc3RyZWFtX2luc2VydGlvbiB2YWx1ZSBmb3IgdGhlIGVsZW1lbnQgdHlwZShzKS4K
KworICAgICAgICBJZiBhbiBvcGVyYXRvcjw8IGlzIGFkZGVkIGZvciBhIG5ldyBjb250YWluZXIg
dHlwZSB3aXRob3V0IGEKKyAgICAgICAgY29ycmVzcG9uZGluZyBzdXBwb3J0c190ZXh0X3N0cmVh
bV9pbnNlcnRpb24gc3BlY2lhbGl6YXRpb24sIGFuZCB0aGF0CisgICAgICAgIHR5cGUgaXMgdXNl
ZCB3aXRoIFZhbHVlT3JEZWZhdWx0LCBpdCB3aWxsIGNhdXNlIGEgY29tcGlsZSBlcnJvci4KKwor
ICAgICAgICBUaGUgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uIHRlbXBsYXRlIHRha2Vz
IHNpeCB0ZW1wbGF0ZQorICAgICAgICBhcmd1bWVudHMsIHdoaWNoIGxvb2tzIG9kZCwgYnV0IGlz
IG5lZWRlZCBiZWNhdXNlIGFsbCBzcGVjaWFsaXphdGlvbnMKKyAgICAgICAgbXVzdCBoYXZlIHRo
ZSBzYW1lIG51bWJlciAoYW5kIGtpbmQpIG9mIHRlbXBsYXRlIGFyZ3VtZW50cy4gVGhlIHNpeAor
ICAgICAgICBpbmNsdWRlIGZpdmUgdHlwZSB0ZW1wbGF0ZSBhcmd1bWVudHMgKHdoaWNoIGlzIGhv
dyBtYW55IEhhc2hNYXAgaGFzKQorICAgICAgICBwbHVzIGEgc2l6ZV90IHZhbHVlIHRlbXBsYXRl
IGFyZ3VtZW50IChmb3IgVmVjdG9yJ3MgaW5saW5lQ2FwYWNpdHkKKyAgICAgICAgYXJndW1lbnQp
LgorCisgICAgICAgICogd3RmL3RleHQvVGV4dFN0cmVhbS5oOgorICAgICAgICAoV1RGOjpUZXh0
U3RyZWFtOjpUZXh0U3RyZWFtKToKKyAgICAgICAgKFdURjo6VGV4dFN0cmVhbTo6Y29udGFpbmVy
U2l6ZUxpbWl0IGNvbnN0KToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChX
VEY6OlZhbHVlT3JGYWxsYmFjazo6VmFsdWVPckZhbGxiYWNrKToKKwogMjAyMS0wOC0yNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBJbnRs
IEVudW1lcmF0aW9uIEFQSXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDc2YWEzZDM2NWRhYjVhMjJhYTJlNDI2OTE4
NDJlYzNkOTg1OTcwMy4uNDA1ZDRiNTFhMzc2ZjAyMTE1ZjYwZTc2YTNiNWE2YTE5MjM1MzdkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMS0wOC0yOSAgQ2FtZXJvbiBNY0Nvcm1hY2sg
IDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBJUENNZXNzYWdlcyBjaGFubmVs
IHRvIGxvZyBhbGwgSVBDIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjk2NjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyNTExNjQw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
YWRkcyBhIG5ldyBJUENNZXNzYWdlcyBsb2cgY2hhbm5lbCwgdG8gd2hpY2ggYWxsIElQQyBtZXNz
YWdlIG5hbWVzLAorICAgICAgICBhcmd1bWVudHMsIGFuZCByZXR1cm4gdmFsdWVzIGFyZSBsb2dn
ZWQuIFRvIGF2b2lkIHBlcmZvcm1hbmNlIGltcGFjdHMKKyAgICAgICAgd2hlbiBub3QgbG9nZ2lu
ZywgdGhlc2UgYXJlIG9ubHkgZW5hYmxlZCBpbiBkZWJ1ZyBidWlsZHMuCisKKyAgICAgICAgVmFs
dWVPckRlZmF1bHQgaXMgdXNlZCB3aGVuIHdyaXRpbmcgb3V0IGVhY2ggbWVzc2FnZSBhcmd1bWVu
dCB0byAoMSkKKyAgICAgICAgYXZvaWQgaGF2aW5nIHRvIGFkZCBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mKSBkZWZpbnRpb25zIGZvciBhbGwKKyAgICAgICAgYXJndW1lbnQgdHlwZXMgcmlnaHQgbm93
LCBhbmQgKDIpIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCB0byBhZGQgc3VjaCBhCisgICAgICAgIGRl
ZmluaXRpb24gd2hlbiBhZGRpbmcgbmV3IElQQyBtZXNzYWdlcy4gVGhlIHN0cmluZyAiLi4uIiBp
cyBvdXRwdXQKKyAgICAgICAgZm9yIHR5cGVzIHdpdGggbm8gb3BlcmF0b3I8PCBkZWZpbmVkLgor
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6
bG9nTWVzc2FnZUltcGwpOgorICAgICAgICAoSVBDOjpsb2dNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6bG9nUmVwbHkpOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2Fn
ZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2Fn
ZUFzeW5jKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2FudHNDb25uZWN0aW9u
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisKIDIwMjEtMDgtMjcgIENhbWVyb24g
TWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggc3RkOjpvcHRpb25h
bDw+IHN0cmlwcGluZyBpbiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGdlbmVyYXRv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0U3RyZWFtLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaAppbmRleCA3ZjlmYmFmNzk4ZmYxZmFkODk4NjljMDJj
MGViOWI3NThmYTk4ZTZjLi4xZDhlOTE1YjU1NWE4Mjk3ZGQyODc3ODEwMzk1MDA0ZDNkYWE1ZTMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaApAQCAtNTMsOSArNTMsMTAgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICBlbnVtIGNsYXNzIExpbmVNb2RlIHsgU2luZ2xlTGluZSwgTXVsdGlwbGVM
aW5lIH07Ci0gICAgVGV4dFN0cmVhbShMaW5lTW9kZSBsaW5lTW9kZSA9IExpbmVNb2RlOjpNdWx0
aXBsZUxpbmUsIE9wdGlvblNldDxGb3JtYXR0aW5nPiBmb3JtYXR0aW5nRmxhZ3MgPSB7IH0pCisg
ICAgVGV4dFN0cmVhbShMaW5lTW9kZSBsaW5lTW9kZSA9IExpbmVNb2RlOjpNdWx0aXBsZUxpbmUs
IE9wdGlvblNldDxGb3JtYXR0aW5nPiBmb3JtYXR0aW5nRmxhZ3MgPSB7IH0sIHVuc2lnbmVkIGNv
bnRhaW5lclNpemVMaW1pdCA9IDApCiAgICAgICAgIDogbV9mb3JtYXR0aW5nRmxhZ3MoZm9ybWF0
dGluZ0ZsYWdzKQogICAgICAgICAsIG1fbXVsdGlMaW5lTW9kZShsaW5lTW9kZSA9PSBMaW5lTW9k
ZTo6TXVsdGlwbGVMaW5lKQorICAgICAgICAsIG1fY29udGFpbmVyU2l6ZUxpbWl0KGNvbnRhaW5l
clNpemVMaW1pdCkKICAgICB7CiAgICAgfQogCkBAIC0xMTIsNiArMTEzLDggQEAgcHVibGljOgog
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd3JpdGVJbmRlbnQoKTsKIAorICAgIHVuc2ln
bmVkIGNvbnRhaW5lclNpemVMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbmVyU2l6ZUxp
bWl0OyB9CisKICAgICAvLyBTdHJlYW0gbWFuaXB1bGF0b3JzLgogICAgIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgKCpmdW5jKShUZXh0U3RyZWFtJikpCiAgICAgewpAQCAtMTc0
LDYgKzE3Nyw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1faW5kZW50IHsgMCB9OwogICAgIE9wdGlv
blNldDxGb3JtYXR0aW5nPiBtX2Zvcm1hdHRpbmdGbGFnczsKICAgICBib29sIG1fbXVsdGlMaW5l
TW9kZSB7IHRydWUgfTsKKyAgICB1bnNpZ25lZCBtX2NvbnRhaW5lclNpemVMaW1pdCB7IDAgfTsK
IH07CiAKIGlubGluZSBUZXh0U3RyZWFtJiBpbmRlbnQoVGV4dFN0cmVhbSYgdHMpCkBAIC0yMjQs
MTIgKzIyOCwxNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBWZWN0b3I8SXRlbVR5cGUsIGlubGluZUNhcGFjaXR5PiYgdgogICAgIHRzIDw8ICJbIjsKIAog
ICAgIHVuc2lnbmVkIHNpemUgPSB2ZWN0b3Iuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgdHMgPDwgdmVjdG9yW2ldOwotICAgICAgICBp
ZiAoaSA8IHNpemUgLSAxKQorICAgIHVuc2lnbmVkIGxpbWl0ID0gdHMuY29udGFpbmVyU2l6ZUxp
bWl0KCkgPyBzdGQ6Om1pbihzaXplLCB0cy5jb250YWluZXJTaXplTGltaXQoKSkgOiBzaXplOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW1pdDsgKytpKSB7CisgICAgICAgIGlmIChp
KQogICAgICAgICAgICAgdHMgPDwgIiwgIjsKKyAgICAgICAgdHMgPDwgdmVjdG9yW2ldOwogICAg
IH0KIAorICAgIGlmIChsaW1pdCAhPSBzaXplKQorICAgICAgICB0cyA8PCAiLCAuLi4iOworCiAg
ICAgcmV0dXJuIHRzIDw8ICJdIjsKIH0KIApAQCAtMjYyLDE0ICsyNzAsMTggQEAgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSGFzaE1hcDxLZXlBcmcsIE1hcHBl
ZEFyZywgSGFzaEFyZywKIHsKICAgICB0cyA8PCAieyI7CiAKLSAgICBib29sIGZpcnN0ID0gdHJ1
ZTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBrZXlWYWx1
ZVBhaXIgOiBtYXApIHsKLSAgICAgICAgdHMgPDwga2V5VmFsdWVQYWlyLmtleSA8PCAiOiAiIDw8
IGtleVZhbHVlUGFpci52YWx1ZTsKLSAgICAgICAgaWYgKCFmaXJzdCkKKyAgICAgICAgaWYgKGNv
dW50KQogICAgICAgICAgICAgdHMgPDwgIiwgIjsKLSAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAg
ICAgICAgdHMgPDwga2V5VmFsdWVQYWlyLmtleSA8PCAiOiAiIDw8IGtleVZhbHVlUGFpci52YWx1
ZTsKKyAgICAgICAgaWYgKCsrY291bnQgPT0gdHMuY29udGFpbmVyU2l6ZUxpbWl0KCkpCisgICAg
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBpZiAoY291bnQgIT0gbWFwLnNpemUoKSkKKyAg
ICAgICAgdHMgPDwgIiwgLi4uIjsKKwogICAgIHJldHVybiB0cyA8PCAifSI7CiB9CiAKQEAgLTI3
OCwxNCArMjkwLDE4IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmcsIFRyYWl0c0FyCiB7CiAgICAgdHMgPDwgIlsi
OwogCi0gICAgYm9vbCBmaXJzdCA9IHRydWU7CisgICAgdW5zaWduZWQgY291bnQgPSAwOwogICAg
IGZvciAoY29uc3QgYXV0byYgaXRlbSA6IHNldCkgewotICAgICAgICB0cyA8PCBpdGVtOwotICAg
ICAgICBpZiAoIWZpcnN0KQorICAgICAgICBpZiAoY291bnQpCiAgICAgICAgICAgICB0cyA8PCAi
LCAiOwotICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICB0cyA8PCBpdGVtOworICAgICAg
ICBpZiAoKytjb3VudCA9PSB0cy5jb250YWluZXJTaXplTGltaXQoKSkKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAorICAgIGlmIChjb3VudCAhPSBzZXQuc2l6ZSgpKQorICAgICAgICB0cyA8
PCAiLCAuLi4iOworCiAgICAgcmV0dXJuIHRzIDw8ICJdIjsKIH0KIApAQCAtMzAzLDExICszMTks
NjUgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgT3B0aW9u
U2V0PE9wdGlvbj4mIG9wdGlvbnMpCiAgICAgcmV0dXJuIHRzIDw8ICJdIjsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZCwgdHlwZW5hbWUgPSB2b2lkLCB0eXBlbmFtZSA9
IHZvaWQsIHR5cGVuYW1lID0gdm9pZCwgc2l6ZV90ID0gMD4KK3N0cnVjdCBzdXBwb3J0c190ZXh0
X3N0cmVhbV9pbnNlcnRpb24gOiBzdGQ6OmZhbHNlX3R5cGUgeyB9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorc3RydWN0IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxULCBzdGQ6OnZv
aWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VGV4dFN0cmVhbSY+KCkgPDwgc3RkOjpkZWNsdmFs
PFQ+KCkpPj4gOiBzdGQ6OnRydWVfdHlwZSB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW1U
eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitzdHJ1Y3Qgc3VwcG9ydHNfdGV4dF9zdHJlYW1f
aW5zZXJ0aW9uPFZlY3RvcjxJdGVtVHlwZSwgaW5saW5lQ2FwYWNpdHk+PiA6IHN1cHBvcnRzX3Rl
eHRfc3RyZWFtX2luc2VydGlvbjxJdGVtVHlwZT4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBW
YWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgVHJhaXRzQXJnPgorc3RydWN0IHN1
cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnLCBU
cmFpdHNBcmc+PiA6IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxWYWx1ZUFyZz4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNB
cmc+CitzdHJ1Y3Qgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPEhhc2hNYXA8S2V5QXJn
LCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPj4gOiBz
dGQ6OmNvbmp1bmN0aW9uPHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxLZXlBcmc+LCBz
dXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248TWFwcGVkQXJnPj4geyB9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+CitzdHJ1Y3Qgc3VwcG9ydHNfdGV4dF9zdHJl
YW1faW5zZXJ0aW9uPE1hcmthYmxlPFQsIFRyYWl0cz4+IDogc3VwcG9ydHNfdGV4dF9zdHJlYW1f
aW5zZXJ0aW9uPFQ+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBzdXBwb3J0
c190ZXh0X3N0cmVhbV9pbnNlcnRpb248T3B0aW9uU2V0PFQ+PiA6IHN1cHBvcnRzX3RleHRfc3Ry
ZWFtX2luc2VydGlvbjxUPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qgc3Vw
cG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPHN0ZDo6b3B0aW9uYWw8VD4+IDogc3VwcG9ydHNf
dGV4dF9zdHJlYW1faW5zZXJ0aW9uPFQ+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0
cnVjdCBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248V2Vha1B0cjxUPj4gOiBzdXBwb3J0
c190ZXh0X3N0cmVhbV9pbnNlcnRpb248VD4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
c3RydWN0IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxSZWZQdHI8VD4+IDogc3VwcG9y
dHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPFQ+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3N0cnVjdCBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248UmVmPFQ+PiA6IHN1cHBvcnRz
X3RleHRfc3RyZWFtX2luc2VydGlvbjxUPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+CitzdHJ1Y3QgVmFsdWVPckZhbGxiYWNrIHsKKyAgICBWYWx1ZU9yRmFsbGJhY2so
Y29uc3QgVCYgdmFsdWUsIGNvbnN0IFUmIGZhbGxiYWNrKQorICAgICAgICA6IHZhbHVlKHZhbHVl
KQorICAgICAgICAsIGZhbGxiYWNrKGZhbGxiYWNrKQorICAgIHsgfQorICAgIGNvbnN0IFQmIHZh
bHVlOworICAgIGNvbnN0IFUmIGZhbGxiYWNrOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFZhbHVl
T3JGYWxsYmFjazxULCBVPiBpdGVtKQoreworICAgIGlmIGNvbnN0ZXhwciAoc3VwcG9ydHNfdGV4
dF9zdHJlYW1faW5zZXJ0aW9uPFQ+Ojp2YWx1ZSkKKyAgICAgICAgdHMgPDwgaXRlbS52YWx1ZTsK
KyAgICBlbHNlCisgICAgICAgIHRzIDw8IGl0ZW0uZmFsbGJhY2s7CisgICAgcmV0dXJuIHRzOwor
fQorCiAvLyBEZXByZWNhdGVkLiBVc2UgVGV4dFN0cmVhbTo6d3JpdGVJbmRlbnQoKSBpbnN0ZWFk
LgogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd3JpdGVJbmRlbnQoVGV4dFN0cmVhbSYsIGludCBp
bmRlbnQpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpUZXh0U3RyZWFtOwor
dXNpbmcgV1RGOjpWYWx1ZU9yRmFsbGJhY2s7CiB1c2luZyBXVEY6OlZhbHVlT3JOdWxsOwogdXNp
bmcgV1RGOjppbmRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9I
YW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKaW5kZXggOTg5YmI3MjNmOThkN2RkMjgxOGE0MWVmNjEzMzdmZTY5YzNmY2Q1Zi4uNGYyMjYy
YjU3ZGQwMmIwMTM3ZjNkNGE0ZjJhOTE2MTczOTc0YzcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMjcsNiArMjcsOSBAQAogCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CkBAIC0zNSw2ICszOCw1NyBAQCBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3Mg
Q29ubmVjdGlvbjsKIAorLy8gSVBDIG1lc3NhZ2UgbG9nZ2luZy4gT25seSBlbmFibGVkIGluIERF
QlVHIGJ1aWxkcy4KKy8vCisvLyBNZXNzYWdlIGFyZ3VtZW50IHZhbHVlcyBhcHBlYXIgYXMgIi4u
LiIgaWYgbm8gb3BlcmF0b3I8PChUZXh0U3RyZWFtJikgaXMKKy8vIGltcGxlbWVudGVkIGZvciB0
aGVtLgorCitjb25zdGV4cHIgdW5zaWduZWQgbG9nZ2luZ0NvbnRhaW5lclNpemVMaW1pdCA9IDIw
MDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQXJnc1R1cGxlLCBzaXplX3QuLi4gQXJnc0luZGV4Pgor
dm9pZCBsb2dNZXNzYWdlSW1wbChNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgY29uc3QgQXJnc1R1
cGxlJiBhcmdzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFyZ3NJbmRleC4uLj4pCit7CisjaWZuZGVm
IE5ERUJVRworICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpTaW5n
bGVMaW5lLCB7IH0sIGxvZ2dpbmdDb250YWluZXJTaXplTGltaXQpOworICAgIHN0cmVhbSA8PCBk
ZXNjcmlwdGlvbihtZXNzYWdlTmFtZSk7CisKKyAgICBpZiAoYXV0byBhcmd1bWVudERlc2NyaXB0
aW9ucyA9IG1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucyhtZXNzYWdlTmFtZSkpCisgICAgICAg
IChzdHJlYW0uZHVtcFByb3BlcnR5KCgqYXJndW1lbnREZXNjcmlwdGlvbnMpW0FyZ3NJbmRleF0u
bmFtZSwgVmFsdWVPckZhbGxiYWNrKHN0ZDo6Z2V0PEFyZ3NJbmRleD4oYXJncyksICIuLi4iKSks
IC4uLik7CisKKyAgICBMT0coSVBDTWVzc2FnZXMsICIlcyIsIHN0cmVhbS5yZWxlYXNlKCkudXRm
OCgpLmRhdGEoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtZXNzYWdlTmFtZSk7CisgICAg
VU5VU0VEX1BBUkFNKGFyZ3MpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFyZ3NU
dXBsZSwgdHlwZW5hbWUgQXJnc0luZGljZXMgPSBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3Rk
Ojp0dXBsZV9zaXplPEFyZ3NUdXBsZT46OnZhbHVlPj4KK3ZvaWQgbG9nTWVzc2FnZShNZXNzYWdl
TmFtZSBtZXNzYWdlTmFtZSwgY29uc3QgQXJnc1R1cGxlJiBhcmdzKQoreworICAgIGxvZ01lc3Nh
Z2VJbXBsKG1lc3NhZ2VOYW1lLCBhcmdzLCBBcmdzSW5kaWNlcygpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUuLi4gVD4KK3ZvaWQgbG9nUmVwbHkoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIGNv
bnN0IFQmLi4uIGFyZ3MpCit7CisjaWZuZGVmIE5ERUJVRworICAgIGlmICghc2l6ZW9mLi4uKFQp
KQorICAgICAgICByZXR1cm47CisKKyAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpM
aW5lTW9kZTo6U2luZ2xlTGluZSwgeyB9LCBsb2dnaW5nQ29udGFpbmVyU2l6ZUxpbWl0KTsKKyAg
ICBzdHJlYW0gPDwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpIDw8ICIgUmVwbHkiOworCisgICAg
dW5zaWduZWQgYXJnSW5kZXggPSAwOworICAgIGlmIChhdXRvIGFyZ3VtZW50RGVzY3JpcHRpb25z
ID0gbWVzc2FnZVJlcGx5QXJndW1lbnREZXNjcmlwdGlvbnMobWVzc2FnZU5hbWUpKQorICAgICAg
ICAoc3RyZWFtLmR1bXBQcm9wZXJ0eSgoKmFyZ3VtZW50RGVzY3JpcHRpb25zKVthcmdJbmRleCsr
XS5uYW1lLCBWYWx1ZU9yRmFsbGJhY2soYXJncywgIi4uLiIpKSwgLi4uKTsKKworICAgIExPRyhJ
UENNZXNzYWdlcywgIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2VOYW1lKTsKKyAgICAoVU5VU0VEX1BBUkFNKGFyZ3Mp
LCAuLi4pOworI2VuZGlmCit9CisKIC8vIERpc3BhdGNoIGZ1bmN0aW9ucyB3aXRoIG5vIHJlcGx5
IGFyZ3VtZW50cy4KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFt
ZSBBcmdzVHVwbGUsIHNpemVfdC4uLiBBcmdzSW5kZXg+CkBAIC0xMTYsNiArMTcwLDcgQEAgdm9p
ZCBoYW5kbGVNZXNzYWdlKERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24p
CiAgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQogICAgICAgICByZXR1cm47CiAKKyAgICBs
b2dNZXNzYWdlKFQ6Om5hbWUoKSwgKmFyZ3VtZW50cyk7CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9u
KFdURk1vdmUoKmFyZ3VtZW50cyksIG9iamVjdCwgZnVuY3Rpb24pOwogfQogCkBAIC0xMjYsNiAr
MTgxLDggQEAgdm9pZCBoYW5kbGVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29k
ZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3QKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50
czsKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCiAgICAgICAgIHJldHVybjsKKworICAg
IGxvZ01lc3NhZ2UoVDo6bmFtZSgpLCAqYXJndW1lbnRzKTsKICAgICBjYWxsTWVtYmVyRnVuY3Rp
b24oY29ubmVjdGlvbiwgV1RGTW92ZSgqYXJndW1lbnRzKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9
CiAKQEAgLTEzOCw4ICsxOTUsMTAgQEAgYm9vbCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmUKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25I
YW5kbGVyID0gW3JlcGx5RW5jb2RlciA9IFdURk1vdmUocmVwbHlFbmNvZGVyKSwgY29ubmVjdGlv
biA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAg
ICAgIGxvZ1JlcGx5KFQ6Om5hbWUoKSwgYXJncy4uLik7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92
ZShyZXBseUVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9Owor
ICAgIGxvZ01lc3NhZ2UoVDo6bmFtZSgpLCAqYXJndW1lbnRzKTsKICAgICBjYWxsTWVtYmVyRnVu
Y3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9i
amVjdCwgZnVuY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTUzLDggKzIxMiwxMCBA
QCBib29sIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3JlcGx5RW5j
b2RlciA9IFdURk1vdmUocmVwbHlFbmNvZGVyKSwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVj
dGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAgICAgIGxvZ1JlcGx5KFQ6Om5h
bWUoKSwgYXJncy4uLik7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92ZShyZXBseUVuY29kZXIpLCBX
VEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9OworICAgIGxvZ01lc3NhZ2UoVDo6
bmFtZSgpLCAqYXJndW1lbnRzKTsKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwg
V1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwg
ZnVuY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTcyLDggKzIzMywxMCBAQCB2b2lk
IGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29u
bmVjdGlvbiwgRGVjb2RlciYgZAogICAgICAgICByZXR1cm47CiAKICAgICB0eXBlbmFtZSBUOjpE
ZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbc3luY1JlcXVlc3RJRCwgY29ubmVjdGlv
biA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAg
ICAgIGxvZ1JlcGx5KFQ6Om5hbWUoKSwgYXJncy4uLik7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNl
bmRTeW5jUmVwbHk8VD4oc3luY1JlcXVlc3RJRCwgYXJncy4uLik7CiAgICAgfTsKKyAgICBsb2dN
ZXNzYWdlKFQ6Om5hbWUoKSwgKmFyZ3VtZW50cyk7CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdU
Rk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1
bmN0aW9uKTsKIH0KIApAQCAtMTkyLDggKzI1NSwxMCBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3lu
YyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1G
CiAKICAgICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0geyBbbGlz
dGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0g
KGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZVJlZjxFbmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgbGlzdGVuZXJJRCk7
CisgICAgICAgIGxvZ1JlcGx5KFQ6Om5hbWUoKSwgYXJncy4uLik7CiAgICAgICAgIFQ6OnNlbmQo
V1RGTW92ZShlbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfSwg
VDo6Y2FsbGJhY2tUaHJlYWQgfTsKKyAgICBsb2dNZXNzYWdlKFQ6Om5hbWUoKSwgKmFyZ3VtZW50
cyk7CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKIH0KIApAQCAtMjEyLDggKzI3
NywxMCBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luY1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLAogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNS
ZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IHsgW2xpc3RlbmVySUQgPSAqbGlzdGVuZXJJRCwgY29u
bmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7
CiAgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oVDo6YXN5bmNN
ZXNzYWdlUmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOworICAgICAgICBsb2dSZXBseShUOjpuYW1l
KCksIGFyZ3MuLi4pOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUo
Y29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH0sIFQ6OmNhbGxiYWNrVGhyZWFkIH07CisgICAg
bG9nTWVzc2FnZShUOjpuYW1lKCksICphcmd1bWVudHMpOwogICAgIGNhbGxNZW1iZXJGdW5jdGlv
bihjb25uZWN0aW9uLCBXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5k
ZXggMzkxYWQzMTg2NGZmZjkxZmJjYzYwM2NjYjYzMmUwMGExYTQyYjE4Yy4uYzllY2E4YzI4MWIy
MDJhY2NiMzkzYWE4MWM3ZWY3MzYzYmM1YzI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgK
QEAgLTU2LDYgKzU2LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShGdWxsc2NyZWVuKSBcCiAgICAg
TShHYW1lcGFkKSBcCiAgICAgTShJUEMpIFwKKyAgICBNKElQQ01lc3NhZ2VzKSBcCiAgICAgTShJ
VFBEZWJ1ZykgXAogICAgIE0oSWNvbkRhdGFiYXNlKSBcCiAgICAgTShJbWFnZXMpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436976</attachid>
            <date>2021-08-31 17:55:23 -0700</date>
            <delta_ts>2021-09-02 16:23:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229664-20210901105521.patch</filename>
            <type>text/plain</type>
            <size>34892</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc5NTk5MGZhYjJlNzQ0MmI5MWZiMTU1
ZmU1ZTI4MDg3NDc0NTViMjYuLjQ1YTYwMGNhNDRhZTg5NTk3Y2RlMmIxYWJmYjlkMDc3YjMwNGU3
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMjEtMDgtMjkgIENhbWVyb24gTWNDb3JtYWNrICA8
aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gSVBDTWVzc2FnZXMgY2hhbm5lbCB0
byBsb2cgYWxsIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5NjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MjUxMTY0MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUd28gY2hh
bmdlcyB0byBUZXh0U3RyZWFtIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgVGhlIGZpcnN0IGlz
IGEgbmV3IGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciB0byBhbGxvdyBsaW1pdGluZworICAg
ICAgICB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgY29udGFpbmVyIHdoZW4gYXBwZW5kaW5n
IGl0IHRvIGEKKyAgICAgICAgVGV4dFN0cmVhbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2Vk
IHdoZW4gdGhlIG91dHB1dCBpcyBmb3IKKyAgICAgICAgaHVtYW4gY29uc3VtcHRpb24gYW5kIGNv
dWxkIHBvdGVudGlhbGx5IGJlIHVzZWxlc3NseSBsYXJnZS4KKworICAgICAgICBUaGUgc2Vjb25k
IGlzIGEgdmFsdWUgYWRhcHRlciBWYWx1ZU9yRGVmYXVsdC4gVGhpcyBhbGxvd3MgYXBwZW5kaW5n
CisgICAgICAgIGEgdmFsdWUgdG8gYSBUZXh0U3RyZWFtIGV2ZW4gaWYgaXQgZG9lc24ndCBoYXZl
IGFuCisgICAgICAgIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYpIGRlZmluZWQuIElmIGl0IGRvZXNu
J3QsIHRoZW4gdGhlIGZhbGxiYWNrCisgICAgICAgIHZhbHVlIHByb3ZpZGVkIHRvIHRoZSBWYWx1
ZU9yRGVmYXVsdCBjb25zdHJ1Y3RvciBpcyB1c2VkIGluc3RlYWQuCisKKyAgICAgICAgQW4gaW1w
bGVtZW50YXRpb24gZGV0YWlsIG9mIFZhbHVlT3JEZWZhdWx0IGlzIGEgbmV3IHR5cGUgdHJhaXQK
KyAgICAgICAgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uLCB3aGljaCBkZXRlY3RzIGF0
IGNvbXBpbGUgdGltZSB3aGV0aGVyCisgICAgICAgIGEgZ2l2ZW4gdHlwZSBjYW4gYmUgYXBwZW5k
ZWQgdG8gYSBUZXh0U3RyZWFtLiBJdCB3b3JrcyBieSB1c2luZworICAgICAgICAiZXhwcmVzc2lv
biBTRklOQUUiIGFuZCBwYXJ0aWFsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uLgorCisgICAgICAg
IFRoZSBiYXNlLCB1bnNwZWNpYWxpemVkIHZlcnNpb24gb2YgdGhlIHRlbXBsYXRlIGluaGVyaXRz
IGZyb20KKyAgICAgICAgc3RkOjpmYWxzZV90eXBlLCBhbmQgaXMgc2VsZWN0ZWQgZm9yIGFsbCB0
eXBlcyBieSBkZWZhdWx0LgorCisgICAgICAgIEEgcGFydGlhbCBzcGVjaWFsaXphdGlvbiB0aGF0
IHVzZXMgZGVjbHR5cGUoKSB0byBjaGVjayB3aGV0aGVyIGEKKyAgICAgICAgYFRleHRTdHJlYW0o
KSA8PCB2YWx1ZWAgZXhwcmVzc2lvbiB3b3VsZCBjb21waWxlIGluaGVyaXRzIGZyb20KKyAgICAg
ICAgc3RkOjp0cnVlX3R5cGUuCisKKyAgICAgICAgU2FkbHksIEMrKyBTRklOQUUgaGFzIGEgbGlt
aXRhdGlvbiB0aGF0IG1lYW5zIHRlbXBsYXRlIGRlZmluaXRpb25zCisgICAgICAgIHRoYXQgd291
bGQgYmUgaW5zdGFudGlhdGVkIGluc2lkZSB0aGUgZGVjbHR5cGUoKSBhcmUgbm90IGNoZWNrZWQK
KyAgICAgICAgdG8gZW5zdXJlIHRoZXkgd291bGQgY29tcGlsZS4gVGhpcyB3b3VsZCBtZWFuIGNv
bnRhaW5lciB0eXBlcyB3aG9zZQorICAgICAgICBlbGVtZW50cyBhcmUgdHlwZXMgdGhhdCBkb24n
dCBoYXZlIGFuIG9wZXJhdG9yPDwgZGVmaW5lZCB3b3VsZCBzdGlsbAorICAgICAgICByZXBvcnQg
dHJ1ZSBmcm9tIHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbi4gV2Ugd29yayBhcm91bmQg
dGhpcworICAgICAgICBieSBoYXZpbmcgbW9yZSBzcGVjaWZpYyBwYXJ0aWFsIHNwZWNpYWxpemF0
aW9ucyBmb3IgYWxsIG9mIHRoZSBjb250YWluZXIKKyAgICAgICAgdHlwZXMgd2UgaGF2ZSBvcGVy
YXRvcjw8IGRlZmluaXRpb25zIGZvciwgd2hpY2ggZGVmZXIgdG8gdGhlCisgICAgICAgIHN1cHBv
cnRzX3RleHRfc3RyZWFtX2luc2VydGlvbiB2YWx1ZSBmb3IgdGhlIGVsZW1lbnQgdHlwZShzKS4K
KworICAgICAgICBJZiBhbiBvcGVyYXRvcjw8IGlzIGFkZGVkIGZvciBhIG5ldyBjb250YWluZXIg
dHlwZSB3aXRob3V0IGEKKyAgICAgICAgY29ycmVzcG9uZGluZyBzdXBwb3J0c190ZXh0X3N0cmVh
bV9pbnNlcnRpb24gc3BlY2lhbGl6YXRpb24sIGFuZCB0aGF0CisgICAgICAgIHR5cGUgaXMgdXNl
ZCB3aXRoIFZhbHVlT3JEZWZhdWx0LCBpdCB3aWxsIGNhdXNlIGEgY29tcGlsZSBlcnJvci4KKwor
ICAgICAgICBUaGUgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uIHRlbXBsYXRlIHRha2Vz
IHNpeCB0ZW1wbGF0ZQorICAgICAgICBhcmd1bWVudHMsIHdoaWNoIGxvb2tzIG9kZCwgYnV0IGlz
IG5lZWRlZCBiZWNhdXNlIGFsbCBzcGVjaWFsaXphdGlvbnMKKyAgICAgICAgbXVzdCBoYXZlIHRo
ZSBzYW1lIG51bWJlciAoYW5kIGtpbmQpIG9mIHRlbXBsYXRlIGFyZ3VtZW50cy4gVGhlIHNpeAor
ICAgICAgICBpbmNsdWRlIGZpdmUgdHlwZSB0ZW1wbGF0ZSBhcmd1bWVudHMgKHdoaWNoIGlzIGhv
dyBtYW55IEhhc2hNYXAgaGFzKQorICAgICAgICBwbHVzIGEgc2l6ZV90IHZhbHVlIHRlbXBsYXRl
IGFyZ3VtZW50IChmb3IgVmVjdG9yJ3MgaW5saW5lQ2FwYWNpdHkKKyAgICAgICAgYXJndW1lbnQp
LgorCisgICAgICAgICogd3RmL3RleHQvVGV4dFN0cmVhbS5oOgorICAgICAgICAoV1RGOjpUZXh0
U3RyZWFtOjpUZXh0U3RyZWFtKToKKyAgICAgICAgKFdURjo6VGV4dFN0cmVhbTo6Y29udGFpbmVy
U2l6ZUxpbWl0IGNvbnN0KToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChX
VEY6OlZhbHVlT3JGYWxsYmFjazo6VmFsdWVPckZhbGxiYWNrKToKKwogMjAyMS0wOC0yNyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWZpbmUgRU5B
QkxFX0NPTlRFTlRfQ0hBTkdFX09CU0VSVkVSIGZvciBJT1NfRkFNSUxZIGFuZCB1c2UgaXQgdG8g
d3JhcCBjb250ZW50IG9ic2VydmF0aW9uIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzN2VmNDJmOTQ2NmQ1
NmRhYTdkZjIzYmJlYjI2NWRlMWNiZTJmNDIxLi4yNjcwZGYyZWZjMzI5ZjNjYjQyNzRkMDFjMGNi
NDEwNDliYTdhNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDgtMzEgIENh
bWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gSVBD
TWVzc2FnZXMgY2hhbm5lbCB0byBsb2cgYWxsIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjY0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84MjUxMTY0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSB3YXkgdG8gZ2V0IHRoZSB0eXBlIG9mIHByb2Nlc3Mgd2UncmUgaW4g
YXMgYSBzdHJpbmcsIGZvcgorICAgICAgICBsb2dnaW5nLgorCisgICAgICAgICogcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NUeXBlRGVzY3JpcHRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oOgorCiAyMDIxLTA4LTI0ICBD
YW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93cyBi
dWlsZCBmaXggYWZ0ZXIgcjI4MTQ3MApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjYTI5NGZjYjE0ZDA1MDU4MmZmZGQz
YzJjZjBkYWQwNjJmMGEyMDgzLi4wMGYxYmYwZjNkZGFkMmQ5YTRkNGFiMGRhYWVkZDFjNmU2MjQ1
YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA4LTI5ICBDYW1lcm9uIE1jQ29y
bWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIElQQ01lc3NhZ2VzIGNo
YW5uZWwgdG8gbG9nIGFsbCBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTY2NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODI1
MTE2NDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBhZGRzIGEgbmV3IElQQ01lc3NhZ2VzIGxvZyBjaGFubmVsLCB0byB3aGljaCBhbGwgSVBD
IG1lc3NhZ2UgbmFtZXMsCisgICAgICAgIGFyZ3VtZW50cywgYW5kIHJldHVybiB2YWx1ZXMgYXJl
IGxvZ2dlZC4gVG8gYXZvaWQgcGVyZm9ybWFuY2UgaW1wYWN0cworICAgICAgICB3aGVuIG5vdCBs
b2dnaW5nLCB0aGVzZSBhcmUgb25seSBlbmFibGVkIGluIGRlYnVnIGJ1aWxkcy4KKworICAgICAg
ICBWYWx1ZU9yRGVmYXVsdCBpcyB1c2VkIHdoZW4gd3JpdGluZyBvdXQgZWFjaCBtZXNzYWdlIGFy
Z3VtZW50IHRvICgxKQorICAgICAgICBhdm9pZCBoYXZpbmcgdG8gYWRkIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYpIGRlZmludGlvbnMgZm9yIGFsbAorICAgICAgICBhcmd1bWVudCB0eXBlcyByaWdo
dCBub3csIGFuZCAoMikgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIHRvIGFkZCBzdWNoIGEKKyAgICAg
ICAgZGVmaW5pdGlvbiB3aGVuIGFkZGluZyBuZXcgSVBDIG1lc3NhZ2VzLiBUaGUgc3RyaW5nICIu
Li4iIGlzIG91dHB1dAorICAgICAgICBmb3IgdHlwZXMgd2l0aCBubyBvcGVyYXRvcjw8IGRlZmlu
ZWQuCisKKyAgICAgICAgVGhlIHJlbW90ZSBhbmQgbG9jYWwgcHJvY2VzcyBJRHMgYXJlIGluY2x1
ZGVkIGluIHRoZSBsb2cgbWVzc2FnZS4gVGhlCisgICAgICAgIHJlbW90ZSBwcm9jZXNzIElEIGlz
IG9ubHkgcmVhZGlseSBhY2Nlc3NpYmxlIG9uIE9TKERBUldJTiksIGFzIHdlIGNhbgorICAgICAg
ICBncmFiIGl0IGZyb20gdGhlIFhQQyBjb25uZWN0aW9uLiBCdXQgbm90IGFsbCBJUEM6OkNvbm5l
Y3Rpb25zIGFyZQorICAgICAgICBjcmVhdGVkIGZvciBYUEMgY29ubmVjdGlvbnMuIEZvciBleGFt
cGxlLCB0aGUgV2ViIC0+IEdQVSBwcm9jZXNzCisgICAgICAgIGNvbm5lY3Rpb24gaXMgY3JlYXRl
ZCBieSB0aGUgVUkgcHJvY2VzcyBvbiBiZWhhbGYgb2YgdGhlIFdlYiBwcm9jZXNzLAorICAgICAg
ICBhbmQgdGhlIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBkb2VzIG5vdCBoYXZlIGFuIFhQ
QyBzZXJ2aWNlCisgICAgICAgIGhhbmRsZSBpbiBpdC4gU28gZm9yIG5vdywgd2Ugb21pdCB0aGUg
cmVtb3RlIHByb2Nlc3MgSUQuIChXZSdkIG5lZWQKKyAgICAgICAgdG8gdGhyZWFkIGl0IHRocm91
Z2ggbWVzc2FnZXMgbGlrZSBDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCisgICAgICAg
IHRvIGhhdmUgaXQgYXZhaWxhYmxlLikKKworICAgICAgICBTaW5jZSB3ZSBuZWVkIHRoZSBJUEM6
OkNvbm5lY3Rpb24gb2JqZWN0IGZvciBsb2dnaW5nIG5vdywgYWxsIG9mIHRoZQorICAgICAgICBo
YW5kbGVNZXNzYWdlKiBmdW5jdGlvbnMgdGFrZSBhIGNvbm5lY3Rpb24sIGFuZCB0aGUgbWVzc2Fn
ZXMucHkgY29kZQorICAgICAgICBnZW5lcmF0b3IgaXMgdXBkYXRlZCBhY2NvcmRpbmdseS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChJUEM6OnRl
eHRTdHJlYW1Gb3JMb2dnaW5nKToKKyAgICAgICAgKElQQzo6bG9nTWVzc2FnZUltcGwpOgorICAg
ICAgICAoSVBDOjpsb2dNZXNzYWdlKToKKyAgICAgICAgKElQQzo6bG9nUmVwbHkpOgorICAgICAg
ICAoSVBDOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZVdhbnRz
Q29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyk6Cisg
ICAgICAgIChJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbik6Cisg
ICAgICAgIChJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYyk6CisgICAgICAgIChJUEM6OmhhbmRsZU1l
c3NhZ2VBc3luY1dhbnRzQ29ubmVjdGlvbik6CisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5o
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoYXN5bmNf
bWVzc2FnZV9zdGF0ZW1lbnQpOgorICAgICAgICAoc3luY19tZXNzYWdlX3N0YXRlbWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKwogMjAyMS0w
OC0yNyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBzdGQ6Om9wdGlvbmFsPD4gc3RyaXBwaW5nIGluIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9u
cy5jcHAgZ2VuZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJl
YW0uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5oCmluZGV4IDdmOWZiYWY3OThm
ZjFmYWQ4OTg2OWMwMmMwZWI5Yjc1OGZhOThlNmMuLjFkOGU5MTViNTU1YTgyOTdkZDI4Nzc4MTAz
OTUwMDRkM2RhYTVlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVh
bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5oCkBAIC01Myw5ICs1Mywx
MCBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgTGluZU1vZGUgeyBTaW5nbGVM
aW5lLCBNdWx0aXBsZUxpbmUgfTsKLSAgICBUZXh0U3RyZWFtKExpbmVNb2RlIGxpbmVNb2RlID0g
TGluZU1vZGU6Ok11bHRpcGxlTGluZSwgT3B0aW9uU2V0PEZvcm1hdHRpbmc+IGZvcm1hdHRpbmdG
bGFncyA9IHsgfSkKKyAgICBUZXh0U3RyZWFtKExpbmVNb2RlIGxpbmVNb2RlID0gTGluZU1vZGU6
Ok11bHRpcGxlTGluZSwgT3B0aW9uU2V0PEZvcm1hdHRpbmc+IGZvcm1hdHRpbmdGbGFncyA9IHsg
fSwgdW5zaWduZWQgY29udGFpbmVyU2l6ZUxpbWl0ID0gMCkKICAgICAgICAgOiBtX2Zvcm1hdHRp
bmdGbGFncyhmb3JtYXR0aW5nRmxhZ3MpCiAgICAgICAgICwgbV9tdWx0aUxpbmVNb2RlKGxpbmVN
b2RlID09IExpbmVNb2RlOjpNdWx0aXBsZUxpbmUpCisgICAgICAgICwgbV9jb250YWluZXJTaXpl
TGltaXQoY29udGFpbmVyU2l6ZUxpbWl0KQogICAgIHsKICAgICB9CiAKQEAgLTExMiw2ICsxMTMs
OCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3cml0ZUluZGVudCgp
OwogCisgICAgdW5zaWduZWQgY29udGFpbmVyU2l6ZUxpbWl0KCkgY29uc3QgeyByZXR1cm4gbV9j
b250YWluZXJTaXplTGltaXQ7IH0KKwogICAgIC8vIFN0cmVhbSBtYW5pcHVsYXRvcnMuCiAgICAg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiAoKmZ1bmMpKFRleHRTdHJlYW0mKSkK
ICAgICB7CkBAIC0xNzQsNiArMTc3LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9pbmRlbnQgeyAw
IH07CiAgICAgT3B0aW9uU2V0PEZvcm1hdHRpbmc+IG1fZm9ybWF0dGluZ0ZsYWdzOwogICAgIGJv
b2wgbV9tdWx0aUxpbmVNb2RlIHsgdHJ1ZSB9OworICAgIHVuc2lnbmVkIG1fY29udGFpbmVyU2l6
ZUxpbWl0IHsgMCB9OwogfTsKIAogaW5saW5lIFRleHRTdHJlYW0mIGluZGVudChUZXh0U3RyZWFt
JiB0cykKQEAgLTIyNCwxMiArMjI4LDE2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFZlY3RvcjxJdGVtVHlwZSwgaW5saW5lQ2FwYWNpdHk+JiB2CiAgICAg
dHMgPDwgIlsiOwogCiAgICAgdW5zaWduZWQgc2l6ZSA9IHZlY3Rvci5zaXplKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICB0cyA8PCB2ZWN0b3Jb
aV07Ci0gICAgICAgIGlmIChpIDwgc2l6ZSAtIDEpCisgICAgdW5zaWduZWQgbGltaXQgPSB0cy5j
b250YWluZXJTaXplTGltaXQoKSA/IHN0ZDo6bWluKHNpemUsIHRzLmNvbnRhaW5lclNpemVMaW1p
dCgpKSA6IHNpemU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpbWl0OyArK2kpIHsK
KyAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICB0cyA8PCAiLCAiOworICAgICAgICB0cyA8PCB2
ZWN0b3JbaV07CiAgICAgfQogCisgICAgaWYgKGxpbWl0ICE9IHNpemUpCisgICAgICAgIHRzIDw8
ICIsIC4uLiI7CisKICAgICByZXR1cm4gdHMgPDwgIl0iOwogfQogCkBAIC0yNjIsMTQgKzI3MCwx
OCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBIYXNoTWFw
PEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLAogewogICAgIHRzIDw8ICJ7IjsKIAotICAgIGJv
b2wgZmlyc3QgPSB0cnVlOworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGtleVZhbHVlUGFpciA6IG1hcCkgewotICAgICAgICB0cyA8PCBrZXlWYWx1ZVBhaXIu
a2V5IDw8ICI6ICIgPDwga2V5VmFsdWVQYWlyLnZhbHVlOwotICAgICAgICBpZiAoIWZpcnN0KQor
ICAgICAgICBpZiAoY291bnQpCiAgICAgICAgICAgICB0cyA8PCAiLCAiOwotICAgICAgICBmaXJz
dCA9IGZhbHNlOworICAgICAgICB0cyA8PCBrZXlWYWx1ZVBhaXIua2V5IDw8ICI6ICIgPDwga2V5
VmFsdWVQYWlyLnZhbHVlOworICAgICAgICBpZiAoKytjb3VudCA9PSB0cy5jb250YWluZXJTaXpl
TGltaXQoKSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGlmIChjb3VudCAhPSBt
YXAuc2l6ZSgpKQorICAgICAgICB0cyA8PCAiLCAuLi4iOworCiAgICAgcmV0dXJuIHRzIDw8ICJ9
IjsKIH0KIApAQCAtMjc4LDE0ICsyOTAsMTggQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgSGFzaFNldDxWYWx1ZUFyZywgSGFzaEFyZywgVHJhaXRzQXIKIHsK
ICAgICB0cyA8PCAiWyI7CiAKLSAgICBib29sIGZpcnN0ID0gdHJ1ZTsKKyAgICB1bnNpZ25lZCBj
b3VudCA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogc2V0KSB7Ci0gICAgICAgIHRz
IDw8IGl0ZW07Ci0gICAgICAgIGlmICghZmlyc3QpCisgICAgICAgIGlmIChjb3VudCkKICAgICAg
ICAgICAgIHRzIDw8ICIsICI7Ci0gICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgIHRzIDw8
IGl0ZW07CisgICAgICAgIGlmICgrK2NvdW50ID09IHRzLmNvbnRhaW5lclNpemVMaW1pdCgpKQor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgaWYgKGNvdW50ICE9IHNldC5zaXplKCkp
CisgICAgICAgIHRzIDw8ICIsIC4uLiI7CisKICAgICByZXR1cm4gdHMgPDwgIl0iOwogfQogCkBA
IC0zMDMsMTEgKzMxOSw2NSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBPcHRpb25TZXQ8T3B0aW9uPiYgb3B0aW9ucykKICAgICByZXR1cm4gdHMgPDwgIl0i
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkLCB0eXBlbmFtZSA9IHZv
aWQsIHR5cGVuYW1lID0gdm9pZCwgdHlwZW5hbWUgPSB2b2lkLCBzaXplX3QgPSAwPgorc3RydWN0
IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbiA6IHN0ZDo6ZmFsc2VfdHlwZSB7IH07CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0
aW9uPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUZXh0U3RyZWFtJj4oKSA8
PCBzdGQ6OmRlY2x2YWw8VD4oKSk+PiA6IHN0ZDo6dHJ1ZV90eXBlIHsgfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgSXRlbVR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KK3N0cnVjdCBzdXBwb3J0
c190ZXh0X3N0cmVhbV9pbnNlcnRpb248VmVjdG9yPEl0ZW1UeXBlLCBpbmxpbmVDYXBhY2l0eT4+
IDogc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPEl0ZW1UeXBlPiB7IH07CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBUcmFpdHNB
cmc+CitzdHJ1Y3Qgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPEhhc2hTZXQ8VmFsdWVB
cmcsIEhhc2hBcmcsIFRyYWl0c0FyZz4+IDogc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9u
PFZhbHVlQXJnPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFw
cGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1l
IE1hcHBlZFRyYWl0c0FyZz4KK3N0cnVjdCBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248
SGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRU
cmFpdHNBcmc+PiA6IHN0ZDo6Y29uanVuY3Rpb248c3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0
aW9uPEtleUFyZz4sIHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxNYXBwZWRBcmc+PiB7
IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4KK3N0cnVjdCBzdXBw
b3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248TWFya2FibGU8VCwgVHJhaXRzPj4gOiBzdXBwb3J0
c190ZXh0X3N0cmVhbV9pbnNlcnRpb248VD4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
c3RydWN0IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxPcHRpb25TZXQ8VD4+IDogc3Vw
cG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPFQ+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3N0cnVjdCBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248c3RkOjpvcHRpb25hbDxU
Pj4gOiBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248VD4geyB9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorc3RydWN0IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxXZWFrUHRy
PFQ+PiA6IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxUPiB7IH07CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitzdHJ1Y3Qgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPFJlZlB0
cjxUPj4gOiBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248VD4geyB9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorc3RydWN0IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxSZWY8
VD4+IDogc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPFQ+IHsgfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3N0cnVjdCBWYWx1ZU9yRmFsbGJhY2sgeworICAgIFZh
bHVlT3JGYWxsYmFjayhjb25zdCBUJiB2YWx1ZSwgY29uc3QgVSYgZmFsbGJhY2spCisgICAgICAg
IDogdmFsdWUodmFsdWUpCisgICAgICAgICwgZmFsbGJhY2soZmFsbGJhY2spCisgICAgeyB9Cisg
ICAgY29uc3QgVCYgdmFsdWU7CisgICAgY29uc3QgVSYgZmFsbGJhY2s7Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgVmFsdWVPckZhbGxiYWNrPFQsIFU+IGl0ZW0pCit7CisgICAgaWYgY29uc3RleHBy
IChzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248VD46OnZhbHVlKQorICAgICAgICB0cyA8
PCBpdGVtLnZhbHVlOworICAgIGVsc2UKKyAgICAgICAgdHMgPDwgaXRlbS5mYWxsYmFjazsKKyAg
ICByZXR1cm4gdHM7Cit9CisKIC8vIERlcHJlY2F0ZWQuIFVzZSBUZXh0U3RyZWFtOjp3cml0ZUlu
ZGVudCgpIGluc3RlYWQuCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3cml0ZUluZGVudChUZXh0
U3RyZWFtJiwgaW50IGluZGVudCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6
OlRleHRTdHJlYW07Cit1c2luZyBXVEY6OlZhbHVlT3JGYWxsYmFjazsKIHVzaW5nIFdURjo6VmFs
dWVPck51bGw7CiB1c2luZyBXVEY6OmluZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCmluZGV4IDJiMmFmYTg5NTljNzJl
N2FmYmRhOGE2Y2VmYzEzNTliZTkyOGY2YmYuLmUwNDUzMzRhZDE2ZmM0NzViYWIwZDYyNjU3OGVh
Mjc2NmZmNWQxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcApAQCAtODMsNCArODMsMzMgQEAgYm9vbCBjaGVja0F1eGls
aWFyeVByb2Nlc3NUeXBlKEF1eGlsaWFyeVByb2Nlc3NUeXBlIHR5cGUpCiAgICAgcmV0dXJuICpj
dXJyZW50VHlwZSA9PSB0eXBlOyAKIH0KIAorc3RkOjpvcHRpb25hbDxBdXhpbGlhcnlQcm9jZXNz
VHlwZT4gcHJvY2Vzc1R5cGUoKQoreworICAgIHJldHVybiBhdXhpbGlhcnlQcm9jZXNzVHlwZSgp
OworfQorCitjb25zdCBjaGFyKiBwcm9jZXNzVHlwZURlc2NyaXB0aW9uKHN0ZDo6b3B0aW9uYWw8
QXV4aWxpYXJ5UHJvY2Vzc1R5cGU+IHR5cGUpCit7CisgICAgaWYgKCF0eXBlKQorICAgICAgICBy
ZXR1cm4gIlVJIjsKKworICAgIHN3aXRjaCAoKnR5cGUpIHsKKyAgICBjYXNlIEF1eGlsaWFyeVBy
b2Nlc3NUeXBlOjpXZWJDb250ZW50OgorICAgICAgICByZXR1cm4gIldlYiI7CisgICAgY2FzZSBB
dXhpbGlhcnlQcm9jZXNzVHlwZTo6TmV0d29yazoKKyAgICAgICAgcmV0dXJuICJOZXR3b3JrIjsK
KyAgICBjYXNlIEF1eGlsaWFyeVByb2Nlc3NUeXBlOjpQbHVnaW46CisgICAgICAgIHJldHVybiAi
UGx1Z2luIjsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgY2FzZSBBdXhpbGlhcnlQcm9j
ZXNzVHlwZTo6R1BVOgorICAgICAgICByZXR1cm4gIkdQVSI7CisjZW5kaWYKKyNpZiBFTkFCTEUo
V0VCX0FVVEhOKQorICAgIGNhc2UgQXV4aWxpYXJ5UHJvY2Vzc1R5cGU6OldlYkF1dGhuOgorICAg
ICAgICByZXR1cm4gIldlYkF1dGhuIjsKKyNlbmRpZgorICAgIH0KKyAgICByZXR1cm4gIlVua25v
d24iOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCmluZGV4IDg4NDU3OGU5NWY2YTcw
NTI2NzAwYWU1YTAzZDQ3NzI5MGVhNTY4ZGYuLjA2ZGI3OGU4NTg0MjM5ZDRjZWIwM2ExOThhZmMx
MmQxYTAzMTY0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBlbnVtIGNsYXNzIEF1eGlsaWFyeVByb2Nlc3NU
eXBlIDogdWludDhfdCB7CiAKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXV4aWxpYXJ5UHJvY2Vz
c1R5cGUoQXV4aWxpYXJ5UHJvY2Vzc1R5cGUpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBjaGVja0F1
eGlsaWFyeVByb2Nlc3NUeXBlKEF1eGlsaWFyeVByb2Nlc3NUeXBlKTsKK1dFQkNPUkVfRVhQT1JU
IHN0ZDo6b3B0aW9uYWw8QXV4aWxpYXJ5UHJvY2Vzc1R5cGU+IHByb2Nlc3NUeXBlKCk7CitXRUJD
T1JFX0VYUE9SVCBjb25zdCBjaGFyKiBwcm9jZXNzVHlwZURlc2NyaXB0aW9uKHN0ZDo6b3B0aW9u
YWw8QXV4aWxpYXJ5UHJvY2Vzc1R5cGU+KTsKIAogYm9vbCBpc0luQXV4aWxpYXJ5UHJvY2Vzcygp
OwogaW5saW5lIGJvb2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVybiBjaGVja0F1eGlsaWFyeVBy
b2Nlc3NUeXBlKEF1eGlsaWFyeVByb2Nlc3NUeXBlOjpXZWJDb250ZW50KTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDk4OWJiNzIzZjk4ZDdkZDI4
MThhNDFlZjYxMzM3ZmU2OWMzZmNkNWYuLmE4MjgzOGZkZjVkODNiY2EyODg2ZDJiZmJmZTRjYjkz
MzY5ZTZlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1l
c3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgK
QEAgLTI3LDE0ICsyNyw5MyBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgog
I2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgorI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCiBjbGFzcyBDb25uZWN0aW9uOwogCisvLyBJUEMg
bWVzc2FnZSBsb2dnaW5nLiBPbmx5IGVuYWJsZWQgaW4gREVCVUcgYnVpbGRzLgorLy8KKy8vIE1l
c3NhZ2UgYXJndW1lbnQgdmFsdWVzIGFwcGVhciBhcyAiLi4uIiBpZiBubyBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mKSBpcworLy8gaW1wbGVtZW50ZWQgZm9yIHRoZW0uCisKK2NvbnN0ZXhwciB1bnNp
Z25lZCBsb2dnaW5nQ29udGFpbmVyU2l6ZUxpbWl0ID0gMjAwOworCisjaWYgIUxPR19ESVNBQkxF
RAorZW51bSBjbGFzcyBGb3JSZXBseSB7IE5vLCBZZXMgfTsKKworaW5saW5lIFRleHRTdHJlYW0g
dGV4dFN0cmVhbUZvckxvZ2dpbmcoY29uc3QgQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgTWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWUsIEZvclJlcGx5IGZvclJlcGx5KQoreworICAgIFRleHRTdHJlYW0g
c3RyZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpTaW5nbGVMaW5lLCB7IH0sIGxvZ2dpbmdDb250
YWluZXJTaXplTGltaXQpOworICAgIHN0cmVhbSA8PCAnWyc7CisjaWYgT1MoREFSV0lOKQorICAg
IC8vIFRoZSByZW1vdGUgcHJvY2VzcyBJRCBpcyBub3QgYXZhaWxhYmxlIHdoZW4gdGhlIGNvbm5l
Y3Rpb24gd2FzIG5vdCBtYWRlCisgICAgLy8gZm9yIGFuIFhQQyBzZXJ2aWNlLCBlLmcuIGZvciB0
aGUgV2ViIC0+IEdQVSBwcm9jZXNzIGNvbm5lY3Rpb24uCisgICAgaWYgKGNvbm5lY3Rpb24ucmVt
b3RlUHJvY2Vzc0lEKCkpCisgICAgICAgIHN0cmVhbSA8PCBjb25uZWN0aW9uLnJlbW90ZVByb2Nl
c3NJRCgpIDw8ICcgJzsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworI2Vu
ZGlmCisgICAgYXV0byBhcnJvdyA9IGZvclJlcGx5ID09IEZvclJlcGx5OjpZZXMgPyAiPC0gIiA6
ICItPiAiOworICAgIHN0cmVhbSA8PCBhcnJvdyA8PCBXZWJDb3JlOjpwcm9jZXNzVHlwZURlc2Ny
aXB0aW9uKFdlYkNvcmU6OnByb2Nlc3NUeXBlKCkpIDw8ICcgJyA8PCBnZXRDdXJyZW50UHJvY2Vz
c0lEKCkgPDwgIl0gIiA8PCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSk7CisgICAgaWYgKGZvclJl
cGx5ID09IEZvclJlcGx5OjpZZXMpCisgICAgICAgIHN0cmVhbSA8PCAiIFJlcGx5IjsKKyAgICBy
ZXR1cm4gc3RyZWFtOworfQorI2VuZGlmCisKK3RlbXBsYXRlPHR5cGVuYW1lIEFyZ3NUdXBsZSwg
c2l6ZV90Li4uIEFyZ3NJbmRleD4KK3ZvaWQgbG9nTWVzc2FnZUltcGwoY29uc3QgQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIGNvbnN0IEFyZ3NUdXBsZSYg
YXJncywgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmdzSW5kZXguLi4+KQoreworI2lmICFMT0dfRElT
QUJMRUQKKyAgICBhdXRvIHN0cmVhbSA9IHRleHRTdHJlYW1Gb3JMb2dnaW5nKGNvbm5lY3Rpb24s
IG1lc3NhZ2VOYW1lLCBGb3JSZXBseTo6Tm8pOworCisgICAgaWYgKGF1dG8gYXJndW1lbnREZXNj
cmlwdGlvbnMgPSBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMobWVzc2FnZU5hbWUpKQorICAg
ICAgICAoc3RyZWFtLmR1bXBQcm9wZXJ0eSgoKmFyZ3VtZW50RGVzY3JpcHRpb25zKVtBcmdzSW5k
ZXhdLm5hbWUsIFZhbHVlT3JGYWxsYmFjayhzdGQ6OmdldDxBcmdzSW5kZXg+KGFyZ3MpLCAiLi4u
IikpLCAuLi4pOworCisgICAgTE9HKElQQ01lc3NhZ2VzLCAiJXMiLCBzdHJlYW0ucmVsZWFzZSgp
LnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Cisg
ICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2VOYW1lKTsKKyAgICBVTlVTRURfUEFSQU0oYXJncyk7Cisj
ZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQXJnc1R1cGxlLCB0eXBlbmFtZSBBcmdzSW5k
aWNlcyA9IHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8QXJnc1R1cGxl
Pjo6dmFsdWU+Pgordm9pZCBsb2dNZXNzYWdlKGNvbnN0IENvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBjb25zdCBBcmdzVHVwbGUmIGFyZ3MpCit7CisgICAg
bG9nTWVzc2FnZUltcGwoY29ubmVjdGlvbiwgbWVzc2FnZU5hbWUsIGFyZ3MsIEFyZ3NJbmRpY2Vz
KCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgordm9pZCBsb2dSZXBseShjb25zdCBD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgY29uc3QgVCYu
Li4gYXJncykKK3sKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKCFzaXplb2YuLi4oVCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc3RyZWFtID0gdGV4dFN0cmVhbUZvckxvZ2dpbmco
Y29ubmVjdGlvbiwgbWVzc2FnZU5hbWUsIEZvclJlcGx5OjpZZXMpOworCisgICAgdW5zaWduZWQg
YXJnSW5kZXggPSAwOworICAgIGlmIChhdXRvIGFyZ3VtZW50RGVzY3JpcHRpb25zID0gbWVzc2Fn
ZVJlcGx5QXJndW1lbnREZXNjcmlwdGlvbnMobWVzc2FnZU5hbWUpKQorICAgICAgICAoc3RyZWFt
LmR1bXBQcm9wZXJ0eSgoKmFyZ3VtZW50RGVzY3JpcHRpb25zKVthcmdJbmRleCsrXS5uYW1lLCBW
YWx1ZU9yRmFsbGJhY2soYXJncywgIi4uLiIpKSwgLi4uKTsKKworICAgIExPRyhJUENNZXNzYWdl
cywgIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShtZXNzYWdlTmFtZSk7Cisg
ICAgKFVOVVNFRF9QQVJBTShhcmdzKSwgLi4uKTsKKyNlbmRpZgorfQorCiAvLyBEaXNwYXRjaCBm
dW5jdGlvbnMgd2l0aCBubyByZXBseSBhcmd1bWVudHMuCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBD
LCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgQXJnc1R1cGxlLCBzaXplX3QuLi4gQXJnc0luZGV4PgpA
QCAtMTA5LDIzICsxODgsMjYgQEAgc3RydWN0IENvZGluZ1R5cGU8c3RkOjp0dXBsZTxUcy4uLj4+
IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgot
dm9pZCBoYW5kbGVNZXNzYWdlKERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rp
b24pCit2b2lkIGhhbmRsZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYg
ZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPHR5
cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRz
OwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRz
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbG9nTWVzc2FnZShjb25uZWN0aW9uLCBUOjpuYW1l
KCksICphcmd1bWVudHMpOwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVu
dHMpLCBvYmplY3QsIGZ1bmN0aW9uKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgQywgdHlwZW5hbWUgTUY+Ci12b2lkIGhhbmRsZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3ZvaWQgaGFu
ZGxlTWVzc2FnZVdhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVy
JiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogewogICAgIHN0ZDo6b3B0aW9uYWw8
dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVu
dHM7CiAgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CiAgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVu
dHMpKQogICAgICAgICByZXR1cm47CisKKyAgICBsb2dNZXNzYWdlKGNvbm5lY3Rpb24sIFQ6Om5h
bWUoKSwgKmFyZ3VtZW50cyk7CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIFdU
Rk1vdmUoKmFyZ3VtZW50cyksIG9iamVjdCwgZnVuY3Rpb24pOwogfQogCkBAIC0xMzgsOCArMjIw
LDEwIEBAIGJvb2wgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKENvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtyZXBseUVu
Y29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5l
Y3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICBsb2dSZXBseShjb25u
ZWN0aW9uLCBUOjpuYW1lKCksIGFyZ3MuLi4pOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUocmVw
bHlFbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKKyAgICBs
b2dNZXNzYWdlKGNvbm5lY3Rpb24sIFQ6Om5hbWUoKSwgKmFyZ3VtZW50cyk7CiAgICAgY2FsbE1l
bWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE1Myw4ICsy
MzcsMTAgQEAgYm9vbCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24oQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAogICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFty
ZXBseUVuY29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rpb24gPSBtYWtlUmVm
KGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICBsb2dSZXBs
eShjb25uZWN0aW9uLCBUOjpuYW1lKCksIGFyZ3MuLi4pOwogICAgICAgICBUOjpzZW5kKFdURk1v
dmUocmVwbHlFbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsK
KyAgICBsb2dNZXNzYWdlKGNvbm5lY3Rpb24sIFQ6Om5hbWUoKSwgKmFyZ3VtZW50cyk7CiAgICAg
Y2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTE3Miw4ICsyNTgsMTAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMo
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIERlY29kZXImIGQKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5k
bGVyID0gW3N5bmNSZXF1ZXN0SUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAo
YXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICBsb2dSZXBseShjb25uZWN0aW9uLT5j
b25uZWN0aW9uKCksIFQ6Om5hbWUoKSwgYXJncy4uLik7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNl
bmRTeW5jUmVwbHk8VD4oc3luY1JlcXVlc3RJRCwgYXJncy4uLik7CiAgICAgfTsKKyAgICBsb2dN
ZXNzYWdlKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBUOjpuYW1lKCksICphcmd1bWVudHMpOwog
ICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKQEAgLTE5Miw4ICsyODAsMTAg
QEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2Rl
ciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRgogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBj
b21wbGV0aW9uSGFuZGxlciA9IHsgW2xpc3RlbmVySUQgPSAqbGlzdGVuZXJJRCwgY29ubmVjdGlv
biA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CiAgICAg
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oVDo6YXN5bmNNZXNzYWdl
UmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOworICAgICAgICBsb2dSZXBseShjb25uZWN0aW9uLCBU
OjpuYW1lKCksIGFyZ3MuLi4pOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdU
Rk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH0sIFQ6OmNhbGxiYWNrVGhyZWFkIH07
CisgICAgbG9nTWVzc2FnZShjb25uZWN0aW9uLCBUOjpuYW1lKCksICphcmd1bWVudHMpOwogICAg
IGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKQEAgLTIxMiw4ICszMDIsMTAgQEAg
dm9pZCBoYW5kbGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgRGVjb2RlciYgZGVjb2RlciwKIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29t
cGxldGlvbkhhbmRsZXIgPSB7IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVySUQsIGNvbm5lY3Rpb24g
PSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewogICAgICAg
ICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KFQ6OmFzeW5jTWVzc2FnZVJl
cGx5TmFtZSgpLCBsaXN0ZW5lcklEKTsKKyAgICAgICAgbG9nUmVwbHkoY29ubmVjdGlvbiwgVDo6
bmFtZSgpLCBhcmdzLi4uKTsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZN
b3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9LCBUOjpjYWxsYmFja1RocmVhZCB9Owor
ICAgIGxvZ01lc3NhZ2UoY29ubmVjdGlvbiwgVDo6bmFtZSgpLCAqYXJndW1lbnRzKTsKICAgICBj
YWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vTG9nZ2luZy5oCmluZGV4IDM5MWFkMzE4NjRmZmY5MWZiY2M2MDNjY2I2MzJlMDBhMWE0MmIx
OGMuLmM5ZWNhOGMyODFiMjAyYWNjYjM5M2FhODFjN2VmNzM2M2JjNWMyNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vTG9nZ2luZy5oCkBAIC01Niw2ICs1Niw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oRnVs
bHNjcmVlbikgXAogICAgIE0oR2FtZXBhZCkgXAogICAgIE0oSVBDKSBcCisgICAgTShJUENNZXNz
YWdlcykgXAogICAgIE0oSVRQRGVidWcpIFwKICAgICBNKEljb25EYXRhYmFzZSkgXAogICAgIE0o
SW1hZ2VzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBi
ZTdkYWVlZGZjZWU1YTJlZDljMWYyMjJmMjFjY2ViZWZkMzc2YzI4Li40MDhjYWQzNzVmZGVmN2M2
YzMzZWMzMWViMDNmZWVkNTVjMWZkMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKQEAgLTU2NiwxNyArNTY2LDE3IEBAIGRlZiBhc3luY19tZXNzYWdlX3N0YXRl
bWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgZGlzcGF0Y2hfZnVuY3Rpb24gPSAnaGFuZGxl
TWVzc2FnZScKICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToK
ICAgICAgICAgZGlzcGF0Y2hfZnVuY3Rpb24gKz0gJ0FzeW5jJwotICAgICAgICBkaXNwYXRjaF9m
dW5jdGlvbl9hcmdzLmluc2VydCgwLCAnY29ubmVjdGlvbicpCiAKICAgICBpZiBtZXNzYWdlLmhh
c19hdHRyaWJ1dGUoV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUpOgotICAgICAgICBpZiBtZXNz
YWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKLSAgICAgICAgICAgIGRpc3BhdGNo
X2Z1bmN0aW9uICs9ICdXYW50c0Nvbm5lY3Rpb24nCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBkaXNwYXRjaF9mdW5jdGlvbl9hcmdzLmluc2VydCgwLCAnY29ubmVjdGlvbicpCisgICAgICAg
IGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdXYW50c0Nvbm5lY3Rpb24nCisKKyAgICBjb25uZWN0aW9u
ID0gJ2Nvbm5lY3Rpb24nCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKToKKyAgICAgICAgY29ubmVjdGlvbiA9ICdjb25uZWN0aW9uLmNvbm5lY3Rpb24oKScK
IAogICAgIHJlc3VsdCA9IFtdCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OiVzOjolczo6bmFtZSgpKVxuJyAlIChyZWNlaXZlci5u
YW1lLCBtZXNzYWdlLm5hbWUpKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIElQ
Qzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVj
ZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oZGlzcGF0Y2hfZnVuY3Rpb25fYXJn
cykpKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIElQQzo6JXM8TWVzc2FnZXM6
OiVzOjolcz4oJXMsICVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUs
IG1lc3NhZ2UubmFtZSwgY29ubmVjdGlvbiwgJywgJy5qb2luKGRpc3BhdGNoX2Z1bmN0aW9uX2Fy
Z3MpKSkKICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcnLmpvaW4ocmVzdWx0KSwg
bWVzc2FnZS5jb25kaXRpb24pCiAKIApAQCAtNTg0LDEyICs1ODQsMTEgQEAgZGVmIHN5bmNfbWVz
c2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgIGRpc3BhdGNoX2Z1bmN0aW9u
ID0gJ2hhbmRsZU1lc3NhZ2UnCiAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9O
T1VTX0FUVFJJQlVURSk6CiAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdTeW5jaHJvbm91
cycKLSAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFdBTlRTX0NPTk5FQ1RJT05fQVRU
UklCVVRFKToKLSAgICAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdXYW50c0Nvbm5lY3Rp
b24nCiAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CiAgICAg
ICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdBc3luYycKKyAgICBpZiBtZXNzYWdlLmhhc19hdHRy
aWJ1dGUoV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUpOgorICAgICAgICBkaXNwYXRjaF9mdW5j
dGlvbiArPSAnV2FudHNDb25uZWN0aW9uJwogCi0gICAgd2FudHNfY29ubmVjdGlvbiA9IG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0
dHJpYnV0ZShXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSkKICAgICBtYXliZV9yZXBseV9lbmNv
ZGVyID0gIiwgKnJlcGx5RW5jb2RlciIKICAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNU
UkVBTV9BVFRSSUJVVEUpOgogICAgICAgICBtYXliZV9yZXBseV9lbmNvZGVyID0gJycKQEAgLTU5
OCw3ICs1OTcsNyBAQCBkZWYgc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2Fn
ZSk6CiAKICAgICByZXN1bHQgPSBbXQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSlcbicgJSAocmVjZWl2
ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
biBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzZGVjb2RlciVzLCB0aGlzLCAmJXMpO1xuJyAl
IChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVj
dGlvbiwgJyBpZiB3YW50c19jb25uZWN0aW9uIGVsc2UgJycsIG1heWJlX3JlcGx5X2VuY29kZXIs
IGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKKyAgICByZXN1bHQuYXBwZW5k
KCcgICAgICAgIHJldHVybiBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KGNvbm5lY3Rpb24sIGRl
Y29kZXIlcywgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5h
bWUsIG1lc3NhZ2UubmFtZSwgbWF5YmVfcmVwbHlfZW5jb2RlciwgaGFuZGxlcl9mdW5jdGlvbihy
ZWNlaXZlciwgbWVzc2FnZSkpKQogICAgIHJldHVybiBzdXJyb3VuZF9pbl9jb25kaXRpb24oJycu
am9pbihyZXN1bHQpLCBtZXNzYWdlLmNvbmRpdGlvbikKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggNzVhNjVjNDMzNzA2NTQ3
ODAwZTYyMGFkMDVmNDU2YzM2MDQxZWZmMy4uMWJlMmUxYWRlNjQ4MTM2Yzc0NGNkNTMxOTk5ZGYx
MTMwNjFkYWNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcApAQCAtNDc5LDkwICs0NzksOTAgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkQKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0
eVRva2VuOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbj4oZGVjb2Rl
ciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4pOworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuPihjb25uZWN0aW9u
LCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vz
c0FjY2Vzc2liaWxpdHlUb2tlbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmluZEFjY2Vzc2liaWxpdHlUcmVl
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkJpbmRBY2Nlc3NpYmlsaXR5VHJlZT4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFs
UGFnZVByb3h5OjpiaW5kQWNjZXNzaWJpbGl0eVRyZWUpOworICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmluZEFjY2Vzc2liaWxpdHlUcmVlPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmJpbmRBY2Nlc3Np
YmlsaXR5VHJlZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAogICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9nRGlhZ25v
c3RpY01lc3NhZ2VGcm9tV2ViUHJvY2Vzczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZUZyb21X
ZWJQcm9jZXNzPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvZ0RpYWdu
b3N0aWNNZXNzYWdlRnJvbVdlYlByb2Nlc3MpOworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VGcm9tV2ViUHJvY2Vz
cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2dE
aWFnbm9zdGljTWVzc2FnZUZyb21XZWJQcm9jZXNzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5RnJvbVdlYlByb2Nlc3M6
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5RnJvbVdlYlByb2Nl
c3M+KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9nRGlhZ25vc3RpY01l
c3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5RnJvbVdlYlByb2Nlc3MpOworICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoRW5oYW5jZWRQcml2YWN5RnJvbVdlYlByb2Nlc3M+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRo
aXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoRW5oYW5j
ZWRQcml2YWN5RnJvbVdlYlByb2Nlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZURpY3Rpb25hcnlGcm9tV2ViUHJvY2Vzczo6bmFtZSgp
KSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpM
b2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZURpY3Rpb25hcnlGcm9tV2ViUHJvY2Vzcz4oZGVj
b2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhWYWx1ZURpY3Rpb25hcnlGcm9tV2ViUHJvY2Vzcyk7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZURpY3Rpb25hcnlGcm9tV2ViUHJvY2Vzcz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlBy
b3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZURpY3Rpb25h
cnlGcm9tV2ViUHJvY2Vzcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0VVJMU2No
ZW1lVGFzazo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTdGFydFVSTFNjaGVtZVRhc2s+KGRlY29kZXIsIHRoaXMsICZQcm92aXNp
b25hbFBhZ2VQcm94eTo6c3RhcnRVUkxTY2hlbWVUYXNrKTsKKyAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0VVJMU2NoZW1lVGFzaz4oY29ubmVj
dGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpzdGFydFVSTFNjaGVt
ZVRhc2spOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uQXN5bmM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
PihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25Bc3luYyk7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmM+KGNv
bm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U+KGRl
Y29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UpOworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lOjpuYW1lKCkpIHsK
LSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENo
YW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWU+KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSk7CisgICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VQcm92aXNpb25h
bFVSTEZvckZyYW1lPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YTo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YT4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRO
YXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFBlcmZvcm1DbGllbnRSZWRpcmVjdDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Q+KGRl
Y29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGly
ZWN0KTsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdD4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVNYWluRnJhbWU6Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZy
YW1lPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5G
cmFtZSk7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRDcmVhdGVNYWluRnJhbWU+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92aXNp
b25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOworICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOjpuYW1lKCkpIHsKLSAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZT4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lPihj
b25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENv
bW1pdExvYWRGb3JGcmFtZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWU+KGRlY29kZXIsIHRo
aXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKTsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExv
YWRGb3JGcmFtZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTo6bmFtZSgp
KSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZT4oZGVjb2Rl
ciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q+KGRlY29kZXIsIHRoaXMsICZQcm92aXNp
b25hbFBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KTsKKyAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdD4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01
NzUsMTQgKzU3NSwxNCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RAogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZT4oZGVjb2RlciwgdGhpcywgJlByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJhbWUpOworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q29udGVudEZp
bHRlckRpZEJsb2NrTG9hZEZvckZyYW1lPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9Q
QUdBVElPTl9WSUVXKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQ
cm9wYWdhdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOworICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlQ29u
dGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbj4oY29ubmVjdGlvbiwgZGVj
b2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5XZWJQ
cm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437213</attachid>
            <date>2021-09-02 16:23:58 -0700</date>
            <delta_ts>2021-09-07 14:52:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229664-20210903092356.patch</filename>
            <type>text/plain</type>
            <size>67228</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE0Yjk5YjNmNDI2NTMzOWVjNjNlZDY3
ZmZhNGE3YjQxMmRjNDRiOTguLmVhZmY1NDRjNTE4ZjYwNWE1Mzk1MWJiYmM5Y2ExMzRmOWRkOGFm
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMjEtMDgtMjkgIENhbWVyb24gTWNDb3JtYWNrICA8
aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gSVBDTWVzc2FnZXMgY2hhbm5lbCB0
byBsb2cgYWxsIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5NjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MjUxMTY0MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUd28gY2hh
bmdlcyB0byBUZXh0U3RyZWFtIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgVGhlIGZpcnN0IGlz
IGEgbmV3IGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciB0byBhbGxvdyBsaW1pdGluZworICAg
ICAgICB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgY29udGFpbmVyIHdoZW4gYXBwZW5kaW5n
IGl0IHRvIGEKKyAgICAgICAgVGV4dFN0cmVhbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2Vk
IHdoZW4gdGhlIG91dHB1dCBpcyBmb3IKKyAgICAgICAgaHVtYW4gY29uc3VtcHRpb24gYW5kIGNv
dWxkIHBvdGVudGlhbGx5IGJlIHVzZWxlc3NseSBsYXJnZS4KKworICAgICAgICBUaGUgc2Vjb25k
IGlzIGEgdmFsdWUgYWRhcHRlciBWYWx1ZU9yRGVmYXVsdC4gVGhpcyBhbGxvd3MgYXBwZW5kaW5n
CisgICAgICAgIGEgdmFsdWUgdG8gYSBUZXh0U3RyZWFtIGV2ZW4gaWYgaXQgZG9lc24ndCBoYXZl
IGFuCisgICAgICAgIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYpIGRlZmluZWQuIElmIGl0IGRvZXNu
J3QsIHRoZW4gdGhlIGZhbGxiYWNrCisgICAgICAgIHZhbHVlIHByb3ZpZGVkIHRvIHRoZSBWYWx1
ZU9yRGVmYXVsdCBjb25zdHJ1Y3RvciBpcyB1c2VkIGluc3RlYWQuCisKKyAgICAgICAgQW4gaW1w
bGVtZW50YXRpb24gZGV0YWlsIG9mIFZhbHVlT3JEZWZhdWx0IGlzIGEgbmV3IHR5cGUgdHJhaXQK
KyAgICAgICAgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uLCB3aGljaCBkZXRlY3RzIGF0
IGNvbXBpbGUgdGltZSB3aGV0aGVyCisgICAgICAgIGEgZ2l2ZW4gdHlwZSBjYW4gYmUgYXBwZW5k
ZWQgdG8gYSBUZXh0U3RyZWFtLiBJdCB3b3JrcyBieSB1c2luZworICAgICAgICAiZXhwcmVzc2lv
biBTRklOQUUiIGFuZCBwYXJ0aWFsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uLgorCisgICAgICAg
IFRoZSBiYXNlLCB1bnNwZWNpYWxpemVkIHZlcnNpb24gb2YgdGhlIHRlbXBsYXRlIGluaGVyaXRz
IGZyb20KKyAgICAgICAgc3RkOjpmYWxzZV90eXBlLCBhbmQgaXMgc2VsZWN0ZWQgZm9yIGFsbCB0
eXBlcyBieSBkZWZhdWx0LgorCisgICAgICAgIEEgcGFydGlhbCBzcGVjaWFsaXphdGlvbiB0aGF0
IHVzZXMgZGVjbHR5cGUoKSB0byBjaGVjayB3aGV0aGVyIGEKKyAgICAgICAgYFRleHRTdHJlYW0o
KSA8PCB2YWx1ZWAgZXhwcmVzc2lvbiB3b3VsZCBjb21waWxlIGluaGVyaXRzIGZyb20KKyAgICAg
ICAgc3RkOjp0cnVlX3R5cGUuCisKKyAgICAgICAgU2FkbHksIEMrKyBTRklOQUUgaGFzIGEgbGlt
aXRhdGlvbiB0aGF0IG1lYW5zIHRlbXBsYXRlIGRlZmluaXRpb25zCisgICAgICAgIHRoYXQgd291
bGQgYmUgaW5zdGFudGlhdGVkIGluc2lkZSB0aGUgZGVjbHR5cGUoKSBhcmUgbm90IGNoZWNrZWQK
KyAgICAgICAgdG8gZW5zdXJlIHRoZXkgd291bGQgY29tcGlsZS4gVGhpcyB3b3VsZCBtZWFuIGNv
bnRhaW5lciB0eXBlcyB3aG9zZQorICAgICAgICBlbGVtZW50cyBhcmUgdHlwZXMgdGhhdCBkb24n
dCBoYXZlIGFuIG9wZXJhdG9yPDwgZGVmaW5lZCB3b3VsZCBzdGlsbAorICAgICAgICByZXBvcnQg
dHJ1ZSBmcm9tIHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbi4gV2Ugd29yayBhcm91bmQg
dGhpcworICAgICAgICBieSBoYXZpbmcgbW9yZSBzcGVjaWZpYyBwYXJ0aWFsIHNwZWNpYWxpemF0
aW9ucyBmb3IgYWxsIG9mIHRoZSBjb250YWluZXIKKyAgICAgICAgdHlwZXMgd2UgaGF2ZSBvcGVy
YXRvcjw8IGRlZmluaXRpb25zIGZvciwgd2hpY2ggZGVmZXIgdG8gdGhlCisgICAgICAgIHN1cHBv
cnRzX3RleHRfc3RyZWFtX2luc2VydGlvbiB2YWx1ZSBmb3IgdGhlIGVsZW1lbnQgdHlwZShzKS4K
KworICAgICAgICBJZiBhbiBvcGVyYXRvcjw8IGlzIGFkZGVkIGZvciBhIG5ldyBjb250YWluZXIg
dHlwZSB3aXRob3V0IGEKKyAgICAgICAgY29ycmVzcG9uZGluZyBzdXBwb3J0c190ZXh0X3N0cmVh
bV9pbnNlcnRpb24gc3BlY2lhbGl6YXRpb24sIGFuZCB0aGF0CisgICAgICAgIHR5cGUgaXMgdXNl
ZCB3aXRoIFZhbHVlT3JEZWZhdWx0LCBpdCB3aWxsIGNhdXNlIGEgY29tcGlsZSBlcnJvci4KKwor
ICAgICAgICBUaGUgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uIHRlbXBsYXRlIHRha2Vz
IHNpeCB0ZW1wbGF0ZQorICAgICAgICBhcmd1bWVudHMsIHdoaWNoIGxvb2tzIG9kZCwgYnV0IGlz
IG5lZWRlZCBiZWNhdXNlIGFsbCBzcGVjaWFsaXphdGlvbnMKKyAgICAgICAgbXVzdCBoYXZlIHRo
ZSBzYW1lIG51bWJlciAoYW5kIGtpbmQpIG9mIHRlbXBsYXRlIGFyZ3VtZW50cy4gVGhlIHNpeAor
ICAgICAgICBpbmNsdWRlIGZpdmUgdHlwZSB0ZW1wbGF0ZSBhcmd1bWVudHMgKHdoaWNoIGlzIGhv
dyBtYW55IEhhc2hNYXAgaGFzKQorICAgICAgICBwbHVzIGEgc2l6ZV90IHZhbHVlIHRlbXBsYXRl
IGFyZ3VtZW50IChmb3IgVmVjdG9yJ3MgaW5saW5lQ2FwYWNpdHkKKyAgICAgICAgYXJndW1lbnQp
LgorCisgICAgICAgICogd3RmL3RleHQvVGV4dFN0cmVhbS5oOgorICAgICAgICAoV1RGOjpUZXh0
U3RyZWFtOjpUZXh0U3RyZWFtKToKKyAgICAgICAgKFdURjo6VGV4dFN0cmVhbTo6Y29udGFpbmVy
U2l6ZUxpbWl0IGNvbnN0KToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChX
VEY6OlZhbHVlT3JGYWxsYmFjazo6VmFsdWVPckZhbGxiYWNrKToKKwogMjAyMS0wOC0yNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9m
IENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJl
YW1saW5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMjRkYzRkMjIxZDVlNmNmMTJhNDk0M2Q2ODYwZDM1NjEx
ZGM2ZmEwLi41NGUwMDMxNTRkNjRiNTJlYzA0NTQ0NDA4NTEzYWJlMDI0YTZiMTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDgtMzEgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5
Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gSVBDTWVzc2FnZXMgY2hhbm5lbCB0byBs
b2cgYWxsIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI5NjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MjUxMTY0MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB3YXkg
dG8gZ2V0IHRoZSB0eXBlIG9mIHByb2Nlc3Mgd2UncmUgaW4gYXMgYSBzdHJpbmcsIGZvcgorICAg
ICAgICBsb2dnaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OnByb2Nlc3NUeXBlRGVzY3JpcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oOgorCiAyMDIxLTA5LTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IEFOR0xFIHZlcnNpb24gb2YgV2Vi
R0wgbGF5ZXIgc25hcHNob3QgY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkN2Q2ZDZiMThlMDY2NGI0MmM3NDY5NTQ4ZTFhNzgzODk1NTRjN2I4Li41MTU2ZTkyYjll
MzQ4YWRjN2Y5MmJlYWVhMzEwNzcwZmQ0ZjkwY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBA
CisyMDIxLTA4LTI5ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGFuIElQQ01lc3NhZ2VzIGNoYW5uZWwgdG8gbG9nIGFsbCBJUEMgbWVzc2FnZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTY2NAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODI1MTE2NDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIGEgbmV3IElQQ01lc3NhZ2VzIGxv
ZyBjaGFubmVsLCB0byB3aGljaCBhbGwgSVBDIG1lc3NhZ2UgbmFtZXMsCisgICAgICAgIGFyZ3Vt
ZW50cywgYW5kIHJldHVybiB2YWx1ZXMgYXJlIGxvZ2dlZC4gVG8gYXZvaWQgcGVyZm9ybWFuY2Ug
aW1wYWN0cworICAgICAgICB3aGVuIG5vdCBsb2dnaW5nLCB0aGVzZSBhcmUgb25seSBlbmFibGVk
IGluIGRlYnVnIGJ1aWxkcy4KKworICAgICAgICBWYWx1ZU9yRGVmYXVsdCBpcyB1c2VkIHdoZW4g
d3JpdGluZyBvdXQgZWFjaCBtZXNzYWdlIGFyZ3VtZW50IHRvICgxKQorICAgICAgICBhdm9pZCBo
YXZpbmcgdG8gYWRkIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYpIGRlZmludGlvbnMgZm9yIGFsbAor
ICAgICAgICBhcmd1bWVudCB0eXBlcyByaWdodCBub3csIGFuZCAoMikgdG8gYWxsZXZpYXRlIHRo
ZSBuZWVkIHRvIGFkZCBzdWNoIGEKKyAgICAgICAgZGVmaW5pdGlvbiB3aGVuIGFkZGluZyBuZXcg
SVBDIG1lc3NhZ2VzLiBUaGUgc3RyaW5nICIuLi4iIGlzIG91dHB1dAorICAgICAgICBmb3IgdHlw
ZXMgd2l0aCBubyBvcGVyYXRvcjw8IGRlZmluZWQuCisKKyAgICAgICAgVGhlIHJlbW90ZSBhbmQg
bG9jYWwgcHJvY2VzcyBJRHMgYXJlIGluY2x1ZGVkIGluIHRoZSBsb2cgbWVzc2FnZS4gVGhlCisg
ICAgICAgIHJlbW90ZSBwcm9jZXNzIElEIGlzIG9ubHkgcmVhZGlseSBhY2Nlc3NpYmxlIG9uIE9T
KERBUldJTiksIGFzIHdlIGNhbgorICAgICAgICBncmFiIGl0IGZyb20gdGhlIFhQQyBjb25uZWN0
aW9uLiBCdXQgbm90IGFsbCBJUEM6OkNvbm5lY3Rpb25zIGFyZQorICAgICAgICBjcmVhdGVkIGZv
ciBYUEMgY29ubmVjdGlvbnMuIEZvciBleGFtcGxlLCB0aGUgV2ViIC0+IEdQVSBwcm9jZXNzCisg
ICAgICAgIGNvbm5lY3Rpb24gaXMgY3JlYXRlZCBieSB0aGUgVUkgcHJvY2VzcyBvbiBiZWhhbGYg
b2YgdGhlIFdlYiBwcm9jZXNzLAorICAgICAgICBhbmQgdGhlIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBkb2VzIG5vdCBoYXZlIGFuIFhQQyBzZXJ2aWNlCisgICAgICAgIGhhbmRsZSBpbiBp
dC4gU28gZm9yIG5vdywgd2Ugb21pdCB0aGUgcmVtb3RlIHByb2Nlc3MgSUQuIChXZSdkIG5lZWQK
KyAgICAgICAgdG8gdGhyZWFkIGl0IHRocm91Z2ggbWVzc2FnZXMgbGlrZSBDcmVhdGVHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzCisgICAgICAgIHRvIGhhdmUgaXQgYXZhaWxhYmxlLikKKworICAg
ICAgICBTaW5jZSB3ZSBuZWVkIHRoZSBJUEM6OkNvbm5lY3Rpb24gb2JqZWN0IGZvciBsb2dnaW5n
IG5vdywgYWxsIG9mIHRoZQorICAgICAgICBoYW5kbGVNZXNzYWdlKiBmdW5jdGlvbnMgdGFrZSBh
IGNvbm5lY3Rpb24sIGFuZCB0aGUgbWVzc2FnZXMucHkgY29kZQorICAgICAgICBnZW5lcmF0b3Ig
aXMgdXBkYXRlZCBhY2NvcmRpbmdseS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmg6CisgICAgICAgIChJUEM6OnRleHRTdHJlYW1Gb3JMb2dnaW5nKToKKyAgICAgICAg
KElQQzo6bG9nTWVzc2FnZUltcGwpOgorICAgICAgICAoSVBDOjpsb2dNZXNzYWdlKToKKyAgICAg
ICAgKElQQzo6bG9nUmVwbHkpOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKElQQzo6aGFuZGxlTWVzc2FnZVdhbnRzQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6Omhh
bmRsZU1lc3NhZ2VTeW5jaHJvbm91cyk6CisgICAgICAgIChJUEM6OmhhbmRsZU1lc3NhZ2VTeW5j
aHJvbm91c1dhbnRzQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OmhhbmRsZU1lc3NhZ2VBc3lu
Yyk6CisgICAgICAgIChJUEM6OmhhbmRsZU1lc3NhZ2VBc3luY1dhbnRzQ29ubmVjdGlvbik6Cisg
ICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5OgorICAgICAgICAoYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQpOgorICAgICAgICAo
c3luY19tZXNzYWdlX3N0YXRlbWVudCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhDVlBpeGVsQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhDVlBpeGVsQnVmZmVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlRlc3RXaXRoQ1ZQaXhlbEJ1ZmZlcjo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VSZWNl
aXZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRlc3RXaXRoSWZNZXNzYWdlOjpkaWRSZWNlaXZl
TWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJbWFnZURh
dGFNZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aEltYWdlRGF0
YTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aEltYWdlRGF0
YTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkUmVjZWl2ZVRlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXJNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
ZGlkUmVjZWl2ZVN5bmNUZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZl
ck1lc3NhZ2VSZWNlaXZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRlc3RXaXRoU3RyZWFtQnVm
ZmVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXN0
V2l0aFN0cmVhbTo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlRlc3RXaXRoU3VwZXJjbGFzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2VS
ZWNlaXZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlk
UmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZFJlY2VpdmVNZXNzYWdlKToKKwogMjAyMS0wOC0yNyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXlj
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzdGQ6Om9wdGlvbmFsPD4gc3RyaXBwaW5nIGlu
IE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgZ2VuZXJhdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4
dFN0cmVhbS5oCmluZGV4IDdmOWZiYWY3OThmZjFmYWQ4OTg2OWMwMmMwZWI5Yjc1OGZhOThlNmMu
LjFkOGU5MTViNTU1YTgyOTdkZDI4Nzc4MTAzOTUwMDRkM2RhYTVlMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
VGV4dFN0cmVhbS5oCkBAIC01Myw5ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIGVu
dW0gY2xhc3MgTGluZU1vZGUgeyBTaW5nbGVMaW5lLCBNdWx0aXBsZUxpbmUgfTsKLSAgICBUZXh0
U3RyZWFtKExpbmVNb2RlIGxpbmVNb2RlID0gTGluZU1vZGU6Ok11bHRpcGxlTGluZSwgT3B0aW9u
U2V0PEZvcm1hdHRpbmc+IGZvcm1hdHRpbmdGbGFncyA9IHsgfSkKKyAgICBUZXh0U3RyZWFtKExp
bmVNb2RlIGxpbmVNb2RlID0gTGluZU1vZGU6Ok11bHRpcGxlTGluZSwgT3B0aW9uU2V0PEZvcm1h
dHRpbmc+IGZvcm1hdHRpbmdGbGFncyA9IHsgfSwgdW5zaWduZWQgY29udGFpbmVyU2l6ZUxpbWl0
ID0gMCkKICAgICAgICAgOiBtX2Zvcm1hdHRpbmdGbGFncyhmb3JtYXR0aW5nRmxhZ3MpCiAgICAg
ICAgICwgbV9tdWx0aUxpbmVNb2RlKGxpbmVNb2RlID09IExpbmVNb2RlOjpNdWx0aXBsZUxpbmUp
CisgICAgICAgICwgbV9jb250YWluZXJTaXplTGltaXQoY29udGFpbmVyU2l6ZUxpbWl0KQogICAg
IHsKICAgICB9CiAKQEAgLTExMiw2ICsxMTMsOCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCB3cml0ZUluZGVudCgpOwogCisgICAgdW5zaWduZWQgY29udGFpbmVyU2l6
ZUxpbWl0KCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluZXJTaXplTGltaXQ7IH0KKwogICAgIC8v
IFN0cmVhbSBtYW5pcHVsYXRvcnMuCiAgICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiAoKmZ1bmMpKFRleHRTdHJlYW0mKSkKICAgICB7CkBAIC0xNzQsNiArMTc3LDcgQEAgcHJp
dmF0ZToKICAgICBpbnQgbV9pbmRlbnQgeyAwIH07CiAgICAgT3B0aW9uU2V0PEZvcm1hdHRpbmc+
IG1fZm9ybWF0dGluZ0ZsYWdzOwogICAgIGJvb2wgbV9tdWx0aUxpbmVNb2RlIHsgdHJ1ZSB9Owor
ICAgIHVuc2lnbmVkIG1fY29udGFpbmVyU2l6ZUxpbWl0IHsgMCB9OwogfTsKIAogaW5saW5lIFRl
eHRTdHJlYW0mIGluZGVudChUZXh0U3RyZWFtJiB0cykKQEAgLTIyNCwxMiArMjI4LDE2IEBAIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFZlY3RvcjxJdGVtVHlw
ZSwgaW5saW5lQ2FwYWNpdHk+JiB2CiAgICAgdHMgPDwgIlsiOwogCiAgICAgdW5zaWduZWQgc2l6
ZSA9IHZlY3Rvci5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICB0cyA8PCB2ZWN0b3JbaV07Ci0gICAgICAgIGlmIChpIDwgc2l6ZSAtIDEp
CisgICAgdW5zaWduZWQgbGltaXQgPSB0cy5jb250YWluZXJTaXplTGltaXQoKSA/IHN0ZDo6bWlu
KHNpemUsIHRzLmNvbnRhaW5lclNpemVMaW1pdCgpKSA6IHNpemU7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxpbWl0OyArK2kpIHsKKyAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICB0
cyA8PCAiLCAiOworICAgICAgICB0cyA8PCB2ZWN0b3JbaV07CiAgICAgfQogCisgICAgaWYgKGxp
bWl0ICE9IHNpemUpCisgICAgICAgIHRzIDw8ICIsIC4uLiI7CisKICAgICByZXR1cm4gdHMgPDwg
Il0iOwogfQogCkBAIC0yNjIsMTQgKzI3MCwxOCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLAog
ewogICAgIHRzIDw8ICJ7IjsKIAotICAgIGJvb2wgZmlyc3QgPSB0cnVlOworICAgIHVuc2lnbmVk
IGNvdW50ID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleVZhbHVlUGFpciA6IG1hcCkgewot
ICAgICAgICB0cyA8PCBrZXlWYWx1ZVBhaXIua2V5IDw8ICI6ICIgPDwga2V5VmFsdWVQYWlyLnZh
bHVlOwotICAgICAgICBpZiAoIWZpcnN0KQorICAgICAgICBpZiAoY291bnQpCiAgICAgICAgICAg
ICB0cyA8PCAiLCAiOwotICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICB0cyA8PCBrZXlW
YWx1ZVBhaXIua2V5IDw8ICI6ICIgPDwga2V5VmFsdWVQYWlyLnZhbHVlOworICAgICAgICBpZiAo
Kytjb3VudCA9PSB0cy5jb250YWluZXJTaXplTGltaXQoKSkKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGlmIChjb3VudCAhPSBtYXAuc2l6ZSgpKQorICAgICAgICB0cyA8PCAiLCAu
Li4iOworCiAgICAgcmV0dXJuIHRzIDw8ICJ9IjsKIH0KIApAQCAtMjc4LDE0ICsyOTAsMTggQEAg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSGFzaFNldDxWYWx1
ZUFyZywgSGFzaEFyZywgVHJhaXRzQXIKIHsKICAgICB0cyA8PCAiWyI7CiAKLSAgICBib29sIGZp
cnN0ID0gdHJ1ZTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBpdGVtIDogc2V0KSB7Ci0gICAgICAgIHRzIDw8IGl0ZW07Ci0gICAgICAgIGlmICghZmlyc3Qp
CisgICAgICAgIGlmIChjb3VudCkKICAgICAgICAgICAgIHRzIDw8ICIsICI7Ci0gICAgICAgIGZp
cnN0ID0gZmFsc2U7CisgICAgICAgIHRzIDw8IGl0ZW07CisgICAgICAgIGlmICgrK2NvdW50ID09
IHRzLmNvbnRhaW5lclNpemVMaW1pdCgpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgaWYgKGNvdW50ICE9IHNldC5zaXplKCkpCisgICAgICAgIHRzIDw8ICIsIC4uLiI7CisKICAg
ICByZXR1cm4gdHMgPDwgIl0iOwogfQogCkBAIC0zMDMsMTEgKzMxOSw2NSBAQCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBPcHRpb25TZXQ8T3B0aW9uPiYgb3B0
aW9ucykKICAgICByZXR1cm4gdHMgPDwgIl0iOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlw
ZW5hbWUgPSB2b2lkLCB0eXBlbmFtZSA9IHZvaWQsIHR5cGVuYW1lID0gdm9pZCwgdHlwZW5hbWUg
PSB2b2lkLCBzaXplX3QgPSAwPgorc3RydWN0IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlv
biA6IHN0ZDo6ZmFsc2VfdHlwZSB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qg
c3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKHN0
ZDo6ZGVjbHZhbDxUZXh0U3RyZWFtJj4oKSA8PCBzdGQ6OmRlY2x2YWw8VD4oKSk+PiA6IHN0ZDo6
dHJ1ZV90eXBlIHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbVR5cGUsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KK3N0cnVjdCBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248VmVjdG9y
PEl0ZW1UeXBlLCBpbmxpbmVDYXBhY2l0eT4+IDogc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0
aW9uPEl0ZW1UeXBlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFt
ZSBIYXNoQXJnLCB0eXBlbmFtZSBUcmFpdHNBcmc+CitzdHJ1Y3Qgc3VwcG9ydHNfdGV4dF9zdHJl
YW1faW5zZXJ0aW9uPEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmcsIFRyYWl0c0FyZz4+IDogc3Vw
cG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPFZhbHVlQXJnPiB7IH07CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBl
bmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3N0cnVjdCBzdXBw
b3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248SGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFz
aEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+PiA6IHN0ZDo6Y29uanVuY3Rpb248
c3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPEtleUFyZz4sIHN1cHBvcnRzX3RleHRfc3Ry
ZWFtX2luc2VydGlvbjxNYXBwZWRBcmc+PiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFRyYWl0cz4KK3N0cnVjdCBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248TWFy
a2FibGU8VCwgVHJhaXRzPj4gOiBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248VD4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IHN1cHBvcnRzX3RleHRfc3RyZWFtX2lu
c2VydGlvbjxPcHRpb25TZXQ8VD4+IDogc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPFQ+
IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBzdXBwb3J0c190ZXh0X3N0cmVh
bV9pbnNlcnRpb248c3RkOjpvcHRpb25hbDxUPj4gOiBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNl
cnRpb248VD4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IHN1cHBvcnRzX3Rl
eHRfc3RyZWFtX2luc2VydGlvbjxXZWFrUHRyPFQ+PiA6IHN1cHBvcnRzX3RleHRfc3RyZWFtX2lu
c2VydGlvbjxUPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qgc3VwcG9ydHNf
dGV4dF9zdHJlYW1faW5zZXJ0aW9uPFJlZlB0cjxUPj4gOiBzdXBwb3J0c190ZXh0X3N0cmVhbV9p
bnNlcnRpb248VD4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IHN1cHBvcnRz
X3RleHRfc3RyZWFtX2luc2VydGlvbjxSZWY8VD4+IDogc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5z
ZXJ0aW9uPFQ+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3N0cnVj
dCBWYWx1ZU9yRmFsbGJhY2sgeworICAgIFZhbHVlT3JGYWxsYmFjayhjb25zdCBUJiB2YWx1ZSwg
Y29uc3QgVSYgZmFsbGJhY2spCisgICAgICAgIDogdmFsdWUodmFsdWUpCisgICAgICAgICwgZmFs
bGJhY2soZmFsbGJhY2spCisgICAgeyB9CisgICAgY29uc3QgVCYgdmFsdWU7CisgICAgY29uc3Qg
VSYgZmFsbGJhY2s7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVmFsdWVPckZhbGxiYWNrPFQsIFU+
IGl0ZW0pCit7CisgICAgaWYgY29uc3RleHByIChzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRp
b248VD46OnZhbHVlKQorICAgICAgICB0cyA8PCBpdGVtLnZhbHVlOworICAgIGVsc2UKKyAgICAg
ICAgdHMgPDwgaXRlbS5mYWxsYmFjazsKKyAgICByZXR1cm4gdHM7Cit9CisKIC8vIERlcHJlY2F0
ZWQuIFVzZSBUZXh0U3RyZWFtOjp3cml0ZUluZGVudCgpIGluc3RlYWQuCiBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCB3cml0ZUluZGVudChUZXh0U3RyZWFtJiwgaW50IGluZGVudCk7CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OlRleHRTdHJlYW07Cit1c2luZyBXVEY6OlZhbHVl
T3JGYWxsYmFjazsKIHVzaW5nIFdURjo6VmFsdWVPck51bGw7CiB1c2luZyBXVEY6OmluZGVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuY3BwCmluZGV4IDJiMmFmYTg5NTljNzJlN2FmYmRhOGE2Y2VmYzEzNTliZTkyOGY2YmYuLmUw
NDUzMzRhZDE2ZmM0NzViYWIwZDYyNjU3OGVhMjc2NmZmNWQxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcApAQCAtODMs
NCArODMsMzMgQEAgYm9vbCBjaGVja0F1eGlsaWFyeVByb2Nlc3NUeXBlKEF1eGlsaWFyeVByb2Nl
c3NUeXBlIHR5cGUpCiAgICAgcmV0dXJuICpjdXJyZW50VHlwZSA9PSB0eXBlOyAKIH0KIAorc3Rk
OjpvcHRpb25hbDxBdXhpbGlhcnlQcm9jZXNzVHlwZT4gcHJvY2Vzc1R5cGUoKQoreworICAgIHJl
dHVybiBhdXhpbGlhcnlQcm9jZXNzVHlwZSgpOworfQorCitjb25zdCBjaGFyKiBwcm9jZXNzVHlw
ZURlc2NyaXB0aW9uKHN0ZDo6b3B0aW9uYWw8QXV4aWxpYXJ5UHJvY2Vzc1R5cGU+IHR5cGUpCit7
CisgICAgaWYgKCF0eXBlKQorICAgICAgICByZXR1cm4gIlVJIjsKKworICAgIHN3aXRjaCAoKnR5
cGUpIHsKKyAgICBjYXNlIEF1eGlsaWFyeVByb2Nlc3NUeXBlOjpXZWJDb250ZW50OgorICAgICAg
ICByZXR1cm4gIldlYiI7CisgICAgY2FzZSBBdXhpbGlhcnlQcm9jZXNzVHlwZTo6TmV0d29yazoK
KyAgICAgICAgcmV0dXJuICJOZXR3b3JrIjsKKyAgICBjYXNlIEF1eGlsaWFyeVByb2Nlc3NUeXBl
OjpQbHVnaW46CisgICAgICAgIHJldHVybiAiUGx1Z2luIjsKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisgICAgY2FzZSBBdXhpbGlhcnlQcm9jZXNzVHlwZTo6R1BVOgorICAgICAgICByZXR1cm4g
IkdQVSI7CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIGNhc2UgQXV4aWxpYXJ5
UHJvY2Vzc1R5cGU6OldlYkF1dGhuOgorICAgICAgICByZXR1cm4gIldlYkF1dGhuIjsKKyNlbmRp
ZgorICAgIH0KKyAgICByZXR1cm4gIlVua25vd24iOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oCmluZGV4IDg4NDU3OGU5NWY2YTcwNTI2NzAwYWU1YTAzZDQ3NzI5MGVhNTY4ZGYuLjA2
ZGI3OGU4NTg0MjM5ZDRjZWIwM2ExOThhZmMxMmQxYTAzMTY0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBl
bnVtIGNsYXNzIEF1eGlsaWFyeVByb2Nlc3NUeXBlIDogdWludDhfdCB7CiAKIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0QXV4aWxpYXJ5UHJvY2Vzc1R5cGUoQXV4aWxpYXJ5UHJvY2Vzc1R5cGUpOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCBjaGVja0F1eGlsaWFyeVByb2Nlc3NUeXBlKEF1eGlsaWFyeVBy
b2Nlc3NUeXBlKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8QXV4aWxpYXJ5UHJvY2Vz
c1R5cGU+IHByb2Nlc3NUeXBlKCk7CitXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBwcm9jZXNz
VHlwZURlc2NyaXB0aW9uKHN0ZDo6b3B0aW9uYWw8QXV4aWxpYXJ5UHJvY2Vzc1R5cGU+KTsKIAog
Ym9vbCBpc0luQXV4aWxpYXJ5UHJvY2VzcygpOwogaW5saW5lIGJvb2wgaXNJbldlYlByb2Nlc3Mo
KSB7IHJldHVybiBjaGVja0F1eGlsaWFyeVByb2Nlc3NUeXBlKEF1eGlsaWFyeVByb2Nlc3NUeXBl
OjpXZWJDb250ZW50KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
SGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2Fn
ZS5oCmluZGV4IDBjZWVlNTBlMGVlM2JlZjVhNjMyNTU4YmM4MmRjODAwZDE2ZmJkODcuLjlhYjAy
MTI5NGI1NmQ4YmY5ZDBkY2Y2MWVhNjRmOTQwYTIxZWQ1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTI3LDE0ICsyNyw5MyBAQAogCiAjaW5jbHVk
ZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCiBj
bGFzcyBDb25uZWN0aW9uOwogCisvLyBJUEMgbWVzc2FnZSBsb2dnaW5nLiBPbmx5IGVuYWJsZWQg
aW4gREVCVUcgYnVpbGRzLgorLy8KKy8vIE1lc3NhZ2UgYXJndW1lbnQgdmFsdWVzIGFwcGVhciBh
cyAiLi4uIiBpZiBubyBvcGVyYXRvcjw8KFRleHRTdHJlYW0mKSBpcworLy8gaW1wbGVtZW50ZWQg
Zm9yIHRoZW0uCisKK2NvbnN0ZXhwciB1bnNpZ25lZCBsb2dnaW5nQ29udGFpbmVyU2l6ZUxpbWl0
ID0gMjAwOworCisjaWYgIUxPR19ESVNBQkxFRAorZW51bSBjbGFzcyBGb3JSZXBseSB7IE5vLCBZ
ZXMgfTsKKworaW5saW5lIFRleHRTdHJlYW0gdGV4dFN0cmVhbUZvckxvZ2dpbmcoY29uc3QgQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIEZvclJlcGx5IGZv
clJlcGx5KQoreworICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpT
aW5nbGVMaW5lLCB7IH0sIGxvZ2dpbmdDb250YWluZXJTaXplTGltaXQpOworICAgIHN0cmVhbSA8
PCAnWyc7CisjaWYgT1MoREFSV0lOKQorICAgIC8vIFRoZSByZW1vdGUgcHJvY2VzcyBJRCBpcyBu
b3QgYXZhaWxhYmxlIHdoZW4gdGhlIGNvbm5lY3Rpb24gd2FzIG5vdCBtYWRlCisgICAgLy8gZm9y
IGFuIFhQQyBzZXJ2aWNlLCBlLmcuIGZvciB0aGUgV2ViIC0+IEdQVSBwcm9jZXNzIGNvbm5lY3Rp
b24uCisgICAgaWYgKGNvbm5lY3Rpb24ucmVtb3RlUHJvY2Vzc0lEKCkpCisgICAgICAgIHN0cmVh
bSA8PCBjb25uZWN0aW9uLnJlbW90ZVByb2Nlc3NJRCgpIDw8ICcgJzsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGNvbm5lY3Rpb24pOworI2VuZGlmCisgICAgYXV0byBhcnJvdyA9IGZvclJlcGx5
ID09IEZvclJlcGx5OjpZZXMgPyAiPC0gIiA6ICItPiAiOworICAgIHN0cmVhbSA8PCBhcnJvdyA8
PCBXZWJDb3JlOjpwcm9jZXNzVHlwZURlc2NyaXB0aW9uKFdlYkNvcmU6OnByb2Nlc3NUeXBlKCkp
IDw8ICcgJyA8PCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkgPDwgIl0gIiA8PCBkZXNjcmlwdGlvbiht
ZXNzYWdlTmFtZSk7CisgICAgaWYgKGZvclJlcGx5ID09IEZvclJlcGx5OjpZZXMpCisgICAgICAg
IHN0cmVhbSA8PCAiIFJlcGx5IjsKKyAgICByZXR1cm4gc3RyZWFtOworfQorI2VuZGlmCisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEFyZ3NUdXBsZSwgc2l6ZV90Li4uIEFyZ3NJbmRleD4KK3ZvaWQgbG9n
TWVzc2FnZUltcGwoY29uc3QgQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgTWVzc2FnZU5hbWUgbWVz
c2FnZU5hbWUsIGNvbnN0IEFyZ3NUdXBsZSYgYXJncywgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmdz
SW5kZXguLi4+KQoreworI2lmICFMT0dfRElTQUJMRUQKKyAgICBhdXRvIHN0cmVhbSA9IHRleHRT
dHJlYW1Gb3JMb2dnaW5nKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lLCBGb3JSZXBseTo6Tm8pOwor
CisgICAgaWYgKGF1dG8gYXJndW1lbnREZXNjcmlwdGlvbnMgPSBtZXNzYWdlQXJndW1lbnREZXNj
cmlwdGlvbnMobWVzc2FnZU5hbWUpKQorICAgICAgICAoc3RyZWFtLmR1bXBQcm9wZXJ0eSgoKmFy
Z3VtZW50RGVzY3JpcHRpb25zKVtBcmdzSW5kZXhdLm5hbWUsIFZhbHVlT3JGYWxsYmFjayhzdGQ6
OmdldDxBcmdzSW5kZXg+KGFyZ3MpLCAiLi4uIikpLCAuLi4pOworCisgICAgTE9HKElQQ01lc3Nh
Z2VzLCAiJXMiLCBzdHJlYW0ucmVsZWFzZSgpLnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2VOYW1lKTsK
KyAgICBVTlVTRURfUEFSQU0oYXJncyk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
QXJnc1R1cGxlLCB0eXBlbmFtZSBBcmdzSW5kaWNlcyA9IHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5j
ZTxzdGQ6OnR1cGxlX3NpemU8QXJnc1R1cGxlPjo6dmFsdWU+Pgordm9pZCBsb2dNZXNzYWdlKGNv
bnN0IENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBjb25z
dCBBcmdzVHVwbGUmIGFyZ3MpCit7CisgICAgbG9nTWVzc2FnZUltcGwoY29ubmVjdGlvbiwgbWVz
c2FnZU5hbWUsIGFyZ3MsIEFyZ3NJbmRpY2VzKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBUPgordm9pZCBsb2dSZXBseShjb25zdCBDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBNZXNzYWdl
TmFtZSBtZXNzYWdlTmFtZSwgY29uc3QgVCYuLi4gYXJncykKK3sKKyNpZiAhTE9HX0RJU0FCTEVE
CisgICAgaWYgKCFzaXplb2YuLi4oVCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc3Ry
ZWFtID0gdGV4dFN0cmVhbUZvckxvZ2dpbmcoY29ubmVjdGlvbiwgbWVzc2FnZU5hbWUsIEZvclJl
cGx5OjpZZXMpOworCisgICAgdW5zaWduZWQgYXJnSW5kZXggPSAwOworICAgIGlmIChhdXRvIGFy
Z3VtZW50RGVzY3JpcHRpb25zID0gbWVzc2FnZVJlcGx5QXJndW1lbnREZXNjcmlwdGlvbnMobWVz
c2FnZU5hbWUpKQorICAgICAgICAoc3RyZWFtLmR1bXBQcm9wZXJ0eSgoKmFyZ3VtZW50RGVzY3Jp
cHRpb25zKVthcmdJbmRleCsrXS5uYW1lLCBWYWx1ZU9yRmFsbGJhY2soYXJncywgIi4uLiIpKSwg
Li4uKTsKKworICAgIExPRyhJUENNZXNzYWdlcywgIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4
KCkuZGF0YSgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVO
VVNFRF9QQVJBTShtZXNzYWdlTmFtZSk7CisgICAgKFVOVVNFRF9QQVJBTShhcmdzKSwgLi4uKTsK
KyNlbmRpZgorfQorCiAvLyBEaXNwYXRjaCBmdW5jdGlvbnMgd2l0aCBubyByZXBseSBhcmd1bWVu
dHMuCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgQXJnc1R1
cGxlLCBzaXplX3QuLi4gQXJnc0luZGV4PgpAQCAtMTA5LDIzICsxODgsMjYgQEAgc3RydWN0IENv
ZGluZ1R5cGU8c3RkOjp0dXBsZTxUcy4uLj4+IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgotdm9pZCBoYW5kbGVNZXNzYWdlKERlY29kZXImIGRl
Y29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCit2b2lkIGhhbmRsZU1lc3NhZ2UoQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlv
bikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6
QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwog
ICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbG9n
TWVzc2FnZShjb25uZWN0aW9uLCBUOjpuYW1lKCksICphcmd1bWVudHMpOwogICAgIGNhbGxNZW1i
ZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBvYmplY3QsIGZ1bmN0aW9uKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+Ci12b2lkIGhhbmRs
ZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2Jq
ZWN0LCBNRiBmdW5jdGlvbikKK3ZvaWQgaGFuZGxlTWVzc2FnZVdhbnRzQ29ubmVjdGlvbihDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0
aW9uKQogewogICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBU
OjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7
CiAgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQogICAgICAgICByZXR1cm47CisKKyAgICBs
b2dNZXNzYWdlKGNvbm5lY3Rpb24sIFQ6Om5hbWUoKSwgKmFyZ3VtZW50cyk7CiAgICAgY2FsbE1l
bWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUoKmFyZ3VtZW50cyksIG9iamVjdCwgZnVu
Y3Rpb24pOwogfQogCkBAIC0xMzgsOCArMjIwLDEwIEBAIGJvb2wgaGFuZGxlTWVzc2FnZVN5bmNo
cm9ub3VzKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJl
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBj
b21wbGV0aW9uSGFuZGxlciA9IFtyZXBseUVuY29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5jb2Rlciks
IGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFi
bGUgeworICAgICAgICBsb2dSZXBseShjb25uZWN0aW9uLCBUOjpuYW1lKCksIGFyZ3MuLi4pOwog
ICAgICAgICBUOjpzZW5kKFdURk1vdmUocmVwbHlFbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9u
KSwgYXJncy4uLik7CiAgICAgfTsKKyAgICBsb2dNZXNzYWdlKGNvbm5lY3Rpb24sIFQ6Om5hbWUo
KSwgKmFyZ3VtZW50cyk7CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50
cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTE1Myw4ICsyMzcsMTAgQEAgYm9vbCBoYW5kbGVNZXNzYWdlU3lu
Y2hyb25vdXNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYg
ZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRS
ZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtyZXBseUVuY29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5j
b2RlciksIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3Mp
IG11dGFibGUgeworICAgICAgICBsb2dSZXBseShjb25uZWN0aW9uLCBUOjpuYW1lKCksIGFyZ3Mu
Li4pOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUocmVwbHlFbmNvZGVyKSwgV1RGTW92ZShjb25u
ZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKKyAgICBsb2dNZXNzYWdlKGNvbm5lY3Rpb24sIFQ6
Om5hbWUoKSwgKmFyZ3VtZW50cyk7CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24s
IFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3Qs
IGZ1bmN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE3Miw4ICsyNTgsMTAgQEAgdm9p
ZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNv
bm5lY3Rpb24sIERlY29kZXImIGQKICAgICAgICAgcmV0dXJuOwogCiAgICAgdHlwZW5hbWUgVDo6
RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3N5bmNSZXF1ZXN0SUQsIGNvbm5lY3Rp
b24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAg
ICAgICBsb2dSZXBseShjb25uZWN0aW9uLT5jb25uZWN0aW9uKCksIFQ6Om5hbWUoKSwgYXJncy4u
Lik7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHk8VD4oc3luY1JlcXVlc3RJRCwg
YXJncy4uLik7CiAgICAgfTsKKyAgICBsb2dNZXNzYWdlKGNvbm5lY3Rpb24uY29ubmVjdGlvbigp
LCBUOjpuYW1lKCksICphcmd1bWVudHMpOwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3Zl
KCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlv
bik7CiB9CiAKQEAgLTE5Miw4ICsyODAsMTAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRgogCiAg
ICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IHsgW2xpc3RlbmVy
SUQgPSAqbGlzdGVuZXJJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRv
JiYuLi4gYXJncykgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVS
ZWY8RW5jb2Rlcj4oVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOworICAg
ICAgICBsb2dSZXBseShjb25uZWN0aW9uLCBUOjpuYW1lKCksIGFyZ3MuLi4pOwogICAgICAgICBU
OjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwog
ICAgIH0sIFQ6OmNhbGxiYWNrVGhyZWFkIH07CisgICAgbG9nTWVzc2FnZShjb25uZWN0aW9uLCBU
OjpuYW1lKCksICphcmd1bWVudHMpOwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCph
cmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7
CiB9CiAKQEAgLTIxMiw4ICszMDIsMTAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmNXYW50c0Nv
bm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwKIAogICAg
IHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSB7IFtsaXN0ZW5lcklE
ID0gKmxpc3RlbmVySUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYm
Li4uIGFyZ3MpIG11dGFibGUgewogICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVm
PEVuY29kZXI+KFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCBsaXN0ZW5lcklEKTsKKyAgICAg
ICAgbG9nUmVwbHkoY29ubmVjdGlvbiwgVDo6bmFtZSgpLCBhcmdzLi4uKTsKICAgICAgICAgVDo6
c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAg
ICB9LCBUOjpjYWxsYmFja1RocmVhZCB9OworICAgIGxvZ01lc3NhZ2UoY29ubmVjdGlvbiwgVDo6
bmFtZSgpLCAqYXJndW1lbnRzKTsKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwg
V1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwg
ZnVuY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dp
bmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDM5MWFkMzE4NjRm
ZmY5MWZiY2M2MDNjY2I2MzJlMDBhMWE0MmIxOGMuLmM5ZWNhOGMyODFiMjAyYWNjYjM5M2FhODFj
N2VmNzM2M2JjNWMyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC01Niw2ICs1Niw3
IEBAIGV4dGVybiAiQyIgewogICAgIE0oRnVsbHNjcmVlbikgXAogICAgIE0oR2FtZXBhZCkgXAog
ICAgIE0oSVBDKSBcCisgICAgTShJUENNZXNzYWdlcykgXAogICAgIE0oSVRQRGVidWcpIFwKICAg
ICBNKEljb25EYXRhYmFzZSkgXAogICAgIE0oSW1hZ2VzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBlNzI2M2UxMmViZDljNjQ0ZDkzMjVjODE1YzFiODY4
NTYxMTkxMDA5Li5mZDgxNWJkZTE0NjcwNTcwZWZmMzAxYmI4NDIzM2IyYTIxZWQxMTcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTU2NiwxNyArNTY2LDE3
IEBAIGRlZiBhc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAg
ZGlzcGF0Y2hfZnVuY3Rpb24gPSAnaGFuZGxlTWVzc2FnZScKICAgICBpZiBtZXNzYWdlLmhhc19h
dHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKICAgICAgICAgZGlzcGF0Y2hfZnVuY3Rpb24gKz0g
J0FzeW5jJwotICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbl9hcmdzLmluc2VydCgwLCAnY29ubmVj
dGlvbicpCiAKICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoV0FOVFNfQ09OTkVDVElPTl9B
VFRSSUJVVEUpOgotICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklC
VVRFKToKLSAgICAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdXYW50c0Nvbm5lY3Rpb24n
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbl9hcmdzLmluc2Vy
dCgwLCAnY29ubmVjdGlvbicpCisgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdXYW50c0Nv
bm5lY3Rpb24nCisKKyAgICBjb25uZWN0aW9uID0gJ2Nvbm5lY3Rpb24nCisgICAgaWYgcmVjZWl2
ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKKyAgICAgICAgY29ubmVjdGlvbiA9
ICdjb25uZWN0aW9uLmNvbm5lY3Rpb24oKScKIAogICAgIHJlc3VsdCA9IFtdCiAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OiVzOjol
czo6bmFtZSgpKVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQotICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXMpO1xu
JyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnLCAn
LmpvaW4oZGlzcGF0Y2hfZnVuY3Rpb25fYXJncykpKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXMsICVzKTtcbicgJSAoZGlzcGF0
Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgY29ubmVjdGlvbiwgJywg
Jy5qb2luKGRpc3BhdGNoX2Z1bmN0aW9uX2FyZ3MpKSkKICAgICByZXR1cm4gc3Vycm91bmRfaW5f
Y29uZGl0aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCiAKIApAQCAtNTg0
LDEyICs1ODQsMTEgQEAgZGVmIHN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3Nh
Z2UpOgogICAgIGRpc3BhdGNoX2Z1bmN0aW9uID0gJ2hhbmRsZU1lc3NhZ2UnCiAgICAgaWYgbWVz
c2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSk6CiAgICAgICAgIGRpc3Bh
dGNoX2Z1bmN0aW9uICs9ICdTeW5jaHJvbm91cycKLSAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0
cmlidXRlKFdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFKToKLSAgICAgICAgICAgIGRpc3BhdGNo
X2Z1bmN0aW9uICs9ICdXYW50c0Nvbm5lY3Rpb24nCiAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmli
dXRlKEFTWU5DX0FUVFJJQlVURSk6CiAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdBc3lu
YycKKyAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJV
VEUpOgorICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbiArPSAnV2FudHNDb25uZWN0aW9uJwogCi0g
ICAgd2FudHNfY29ubmVjdGlvbiA9IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19B
VFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShXQU5UU19DT05ORUNUSU9OX0FUVFJJ
QlVURSkKICAgICBtYXliZV9yZXBseV9lbmNvZGVyID0gIiwgKnJlcGx5RW5jb2RlciIKICAgICBp
ZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgogICAgICAgICBtYXli
ZV9yZXBseV9lbmNvZGVyID0gJycKQEAgLTU5OCw3ICs1OTcsNyBAQCBkZWYgc3luY19tZXNzYWdl
X3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAKICAgICByZXN1bHQgPSBbXQogICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjol
czo6JXM6Om5hbWUoKSlcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVz
ZGVjb2RlciVzLCB0aGlzLCAmJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIu
bmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVjdGlvbiwgJyBpZiB3YW50c19jb25uZWN0aW9uIGVs
c2UgJycsIG1heWJlX3JlcGx5X2VuY29kZXIsIGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1l
c3NhZ2UpKSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBJUEM6OiVzPE1lc3Nh
Z2VzOjolczo6JXM+KGNvbm5lY3Rpb24sIGRlY29kZXIlcywgdGhpcywgJiVzKTtcbicgJSAoZGlz
cGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgbWF5YmVfcmVwbHlf
ZW5jb2RlciwgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQogICAgIHJldHVy
biBzdXJyb3VuZF9pbl9jb25kaXRpb24oJycuam9pbihyZXN1bHQpLCBtZXNzYWdlLmNvbmRpdGlv
bikKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoQ1ZQaXhlbEJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoQ1ZQaXhlbEJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5j
cHAKaW5kZXggOTgwZWI2NzY4ZmRjYWE5MDAyOGI5MjZiM2ZkZmVlYzkzZGFjN2I3My4uNWNjYjcw
MmVkZGIxZGVlYWVjOTVhOTAxYzlhMzI2Y2ExNDYyZWNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aENWUGl4ZWxCdWZmZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhDVlBpeGVsQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lk
IFRlc3RXaXRoQ1ZQaXhlbEJ1ZmZlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OgogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpOwogI2lmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhDVlBpeGVsQnVmZmVyOjpTZW5kQ1ZQaXhlbEJ1ZmZlcjo6
bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aENWUGl4ZWxCdWZmZXI6OlNlbmRDVlBpeGVsQnVmZmVyPihkZWNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhDVlBpeGVsQnVmZmVyOjpzZW5kQ1ZQaXhlbEJ1ZmZlcik7CisgICAgICAgIHJldHVybiBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoQ1ZQaXhlbEJ1ZmZlcjo6U2VuZENW
UGl4ZWxCdWZmZXI+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aENWUGl4ZWxC
dWZmZXI6OnNlbmRDVlBpeGVsQnVmZmVyKTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CkBAIC01OCw3ICs1OCw3IEBAIGJv
b2wgVGVzdFdpdGhDVlBpeGVsQnVmZmVyOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7CiAjaWYgVVNFKEFWRk9VTkRBVElPTikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aENWUGl4ZWxCdWZmZXI6OlJlY2VpdmVDVlBpeGVsQnVm
ZmVyOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoQ1ZQaXhlbEJ1ZmZlcjo6UmVjZWl2ZUNWUGl4ZWxCdWZmZXI+KGRlY29kZXIsICpy
ZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aENWUGl4ZWxCdWZmZXI6OnJlY2VpdmVDVlBpeGVs
QnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhDVlBpeGVsQnVmZmVyOjpSZWNlaXZlQ1ZQaXhlbEJ1ZmZlcj4oY29ubmVjdGlvbiwgZGVj
b2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoQ1ZQaXhlbEJ1ZmZlcjo6cmVjZWl2
ZUNWUGl4ZWxCdWZmZXIpOwogI2VuZGlmCiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwog
ICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJZk1lc3NhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3Nh
Z2VSZWNlaXZlci5jcHAKaW5kZXggZjI5ZDNmYzkyZmM3YzUxOWY4NmI2YzZjZTIyZjMyZDZlNzdm
NmFjNy4uYzgyZjA1NGEzMjViMDY2NTMzMmM5ZjcwZTdlNWY3NmJjNzI1OTJiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1l
c3NhZ2VSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTQyLDExICs0MiwxMSBA
QCB2b2lkIFRlc3RXaXRoSWZNZXNzYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjbwogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2FkVVJMOjpuYW1lKCkpCi0g
ICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNz
YWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhJZk1lc3NhZ2U6OmxvYWRVUkwp
OworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aElm
TWVzc2FnZTo6TG9hZFVSTD4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoSWZN
ZXNzYWdlOjpsb2FkVVJMKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVS
TDo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoSWZNZXNz
YWdlOjpsb2FkVVJMKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6VGVzdFdpdGhJZk1lc3NhZ2U6OkxvYWRVUkw+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aElmTWVzc2FnZTo6bG9hZFVSTCk7CiAjZW5kaWYKICAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aEltYWdlRGF0YU1lc3NhZ2VS
ZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
SW1hZ2VEYXRhTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCBhOTk1NjIyMGYwMWFkMjIzZGMzYmJj
ZGQ1YjA2NmUwMDdiOTJhM2YzLi4xZTE5ODcxMDFhNDY0MWQ5NjBhMGNmZDYxY2ZhMzBlYzczNmFj
ZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoSW1hZ2VEYXRhTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAt
MzksNyArMzksNyBAQCB2b2lkIFRlc3RXaXRoSW1hZ2VEYXRhOjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjbwogewogICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRoSW1hZ2VEYXRhOjpTZW5kSW1hZ2VEYXRhOjpuYW1lKCkpCi0g
ICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoSW1hZ2VE
YXRhOjpTZW5kSW1hZ2VEYXRhPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhJbWFnZURhdGE6OnNl
bmRJbWFnZURhdGEpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpUZXN0V2l0aEltYWdlRGF0YTo6U2VuZEltYWdlRGF0YT4oY29ubmVjdGlvbiwgZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRoSW1hZ2VEYXRhOjpzZW5kSW1hZ2VEYXRhKTsKICAgICBVTlVTRURfUEFS
QU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwogI2lmIEVOQUJMRShJ
UENfVEVTVElOR19BUEkpCkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgVGVzdFdpdGhJbWFnZURhdGE6
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
CiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhJbWFnZURhdGE6OlJlY2Vp
dmVJbWFnZURhdGE6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6VGVzdFdpdGhJbWFnZURhdGE6OlJlY2VpdmVJbWFnZURhdGE+KGRlY29kZXIsICpy
ZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aEltYWdlRGF0YTo6cmVjZWl2ZUltYWdlRGF0YSk7
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoSW1h
Z2VEYXRhOjpSZWNlaXZlSW1hZ2VEYXRhPihjb25uZWN0aW9uLCBkZWNvZGVyLCAqcmVwbHlFbmNv
ZGVyLCB0aGlzLCAmVGVzdFdpdGhJbWFnZURhdGE6OnJlY2VpdmVJbWFnZURhdGEpOwogICAgIFVO
VVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAg
VU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCA2NDJjOWQwNzkxY2E3ZjljYTczYjhkZTEy
MjdkMTM5Njk5YzcwNjNlLi5iMWYxM2MyYjMzOTA2ZGMxNDk3ZGQxN2U3ZWFhMjEyMTJjMGMwNDBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
TGVnYWN5UmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VSZWNlaXZlci5j
cHAKQEAgLTg0LDUwICs4NCw1MCBAQCB2b2lkIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRpZFJl
Y2VpdmVUZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZShJUEM6OkNvbm5lYwogewogICAgIGF1
dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwogICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRVUkw6Om5h
bWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXI6OmxvYWRVUkwpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkVVJMPihjb25uZWN0aW9uLCBkZWNv
ZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6bG9hZFVSTCk7CiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpCi0gICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OkxvYWRTb21ldGhpbmc+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
Ojpsb2FkU29tZXRoaW5nKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6TG9hZFNvbWV0aGluZz4oY29ubmVjdGlvbiwg
ZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmxvYWRTb21ldGhpbmcpOwog
I2VuZGlmCiAjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05E
SVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VG91Y2hF
dmVudDo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhMZWdhY3lSZWNlaXZlcjo6dG91Y2hFdmVudCk7CisgICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRvdWNoRXZlbnQ+
KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0b3Vj
aEV2ZW50KTsKICNlbmRpZgogI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01F
U1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OkFkZEV2ZW50OjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6YWRkRXZlbnQpOworICAgICAgICByZXR1cm4gSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpBZGRFdmVu
dD4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmFk
ZEV2ZW50KTsKICNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6TG9h
ZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRl
Y29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpsb2FkU29tZXRoaW5nRWxzZSk7
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OkxvYWRTb21ldGhpbmdFbHNlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6bG9hZFNvbWV0aGluZ0Vsc2UpOwogI2VuZGlmCiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcjo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkpCi0gICAgICAgIHJldHVy
biBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXI6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7CisgICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXI6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7CiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Q2xvc2U6Om5h
bWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpjbG9zZSk7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkNsb3NlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Y2xvc2UpOwogICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlByZWZlcmVu
Y2VzRGlkQ2hhbmdlOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlByZWZlcmVuY2VzRGlkQ2hhbmdlPihk
ZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6cHJlZmVyZW5jZXNEaWRDaGFu
Z2UpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpQcmVmZXJlbmNlc0RpZENoYW5nZT4oY29ubmVjdGlvbiwgZGVjb2Rl
ciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKTsK
ICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2VuZERv
dWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6c2Vu
ZERvdWJsZUFuZEZsb2F0KTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2VuZERvdWJsZUFuZEZsb2F0Pihjb25uZWN0
aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6c2VuZERvdWJsZUFu
ZEZsb2F0KTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyOjpTZW5kSW50czo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZW5kSW50
cz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnNlbmRJbnRzKTsKKyAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcjo6U2VuZEludHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjpzZW5kSW50cyk7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdFBhcmFtZXRlckF0dHJpYnV0
ZXM6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIs
IHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6dGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMp
OwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OlRlbXBsYXRlVGVzdDo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUZW1wbGF0ZVRl
c3Q+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0ZW1wbGF0ZVRlc3Qp
OworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjpUZW1wbGF0ZVRlc3Q+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0ZW1wbGF0ZVRlc3QpOwogICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlNldFZpZGVv
TGF5ZXJJRDo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZXRWaWRlb0xheWVySUQ+KGRlY29kZXIsIHRo
aXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpzZXRWaWRlb0xheWVySUQpOworICAgICAgICBy
ZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
OjpTZXRWaWRlb0xheWVySUQ+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjpzZXRWaWRlb0xheWVySUQpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKQotICAgICAgICByZXR1
cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpE
aWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik7
CiAjZW5kaWYKICNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRlcHJl
Y2F0ZWRPcGVyYXRpb246Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGVwcmVjYXRlZE9wZXJhdGlvbj4o
ZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRlcHJlY2F0ZWRPcGVyYXRp
b24pOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpEZXByZWNhdGVkT3BlcmF0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RXhwZXJp
bWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3Nh
Z2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkV4cGVyaW1lbnRhbE9wZXJhdGlv
bj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmV4cGVyaW1lbnRhbE9w
ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4oY29ubmVjdGlvbiwg
ZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmV4cGVyaW1lbnRhbE9wZXJh
dGlvbik7CiAjZW5kaWYKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VE
X1BBUkFNKGRlY29kZXIpOwpAQCAtMTQyLDE4ICsxNDIsMTggQEAgYm9vbCBUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpkaWRSZWNlaXZlU3luY1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlKElQ
Qzo6Q28KIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpDcmVhdGVQbHVnaW46Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Q3JlYXRlUGx1Z2luPihkZWNv
ZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Y3JlYXRl
UGx1Z2luKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhMZWdhY3lSZWNlaXZlcjo6Q3JlYXRlUGx1Z2luPihjb25uZWN0aW9uLCBkZWNvZGVyLCAq
cmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Y3JlYXRlUGx1Z2lu
KTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJu
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6UnVu
SmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKKyAgICAgICAgcmV0dXJuIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6UnVuSmF2YVNj
cmlwdEFsZXJ0Pihjb25uZWN0aW9uLCBkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhMZWdhY3lSZWNlaXZlcjo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpHZXRQ
bHVnaW5zOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpbnM+KGRlY29kZXIsICpyZXBseUVu
Y29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpnZXRQbHVnaW5zKTsKKyAgICAg
ICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6R2V0UGx1Z2lucz4oY29ubmVjdGlvbiwgZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhp
cywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmdldFBsdWdpbnMpOwogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpCiAgICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6R2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rl
ciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpCiAgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbjxNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdE11bHRpcGxlQXR0cmlidXRlcz4oY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6dGVzdE11bHRpcGxlQXR0cmlidXRlcyk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OkludGVycHJldEtleUV2ZW50OjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkludGVycHJldEtleUV2
ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6aW50ZXJwcmV0S2V5RXZlbnQpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpJbnRlcnByZXRLZXlFdmVudD4oY29u
bmVjdGlvbiwgZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXI6OmludGVycHJldEtleUV2ZW50KTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZVJlY2Vp
dmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1h
cGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwCmluZGV4IDJkY2E5ZDkyMmFiNjgxZDJkODM2YzU4OWUx
MGMwMWYwOTM5NGJhMGYuLmQ1NmIwOTM0MjZhMGM3ZDM5ZDRlMmE4Y2JjMmU2ZTNkYjlhMWE5ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
ZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0zNiw3
ICszNiw3IEBAIHZvaWQgVGVzdFdpdGhTZW1hcGhvcmU6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyk7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6Om5hbWUoKSkKLSAgICAg
ICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6
OlNlbmRTZW1hcGhvcmU+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFNlbWFwaG9yZTo6c2VuZFNl
bWFwaG9yZSk7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRl
c3RXaXRoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhTZW1hcGhvcmU6OnNlbmRTZW1hcGhvcmUpOwogICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAjaWYgRU5BQkxFKElQQ19U
RVNUSU5HX0FQSSkKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBUZXN0V2l0aFNlbWFwaG9yZTo6ZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjoKIHsK
ICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFwaG9yZTo6UmVjZWl2ZVNl
bWFwaG9yZTo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpUZXN0V2l0aFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFwaG9yZT4oZGVjb2RlciwgKnJlcGx5
RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoU2VtYXBob3JlOjpyZWNlaXZlU2VtYXBob3JlKTsKKyAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhv
cmU6OlJlY2VpdmVTZW1hcGhvcmU+KGNvbm5lY3Rpb24sIGRlY29kZXIsICpyZXBseUVuY29kZXIs
IHRoaXMsICZUZXN0V2l0aFNlbWFwaG9yZTo6cmVjZWl2ZVNlbWFwaG9yZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBVTlVT
RURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1l
c3NhZ2VSZWNlaXZlci5jcHAKaW5kZXggNTY4ODBhYzE4YzdjOTZiODgwZDhlNmQyZDY3OGFmYjI3
ZGViNDU4NC4uYjc0Y2RmMTU4ZjJkY2U3MWRiYzg4ZWY5MjJiZGI2YzIzODlkOGRiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1
ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAgdm9pZCBUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkQKIHsKICAgICBhdXRvIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcjo6bmFtZSgpKQot
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVh
bUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFt
QnVmZmVyOjpzZW5kU3RyZWFtQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI+KGNv
bm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6c2VuZFN0cmVh
bUJ1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJB
TShkZWNvZGVyKTsKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNl
aXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCBkZDZjMzQxZTBiZDU2NWMyN2JjOTk5ODA4MTU1
MmYwZTMxMzIzYjYwLi5kZDJiNjFiYzM0MTE4Y2M2YmIwNWM2ODc0YWIwMjgyMWI4ZjFiOWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMzksMjAgKzM5LDIw
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBUZXN0V2l0aFN0cmVhbTo6ZGlkUmVjZWl2ZVN0
cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpuYW1lKCkpCi0gICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5k
U3RyaW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmcpOworICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6
U2VuZFN0cmluZz4oY29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGRlY29kZXIsIHRoaXMsICZUZXN0
V2l0aFN0cmVhbTo6c2VuZFN0cmluZyk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRNYWNo
U2VuZFJpZ2h0OjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kTWFjaFNlbmRSaWdodD4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoU3RyZWFtOjpzZW5kTWFjaFNlbmRSaWdodCk7CisgICAgICAgIHJldHVybiBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kTWFjaFNlbmRSaWdo
dD4oY29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVh
bTo6c2VuZE1hY2hTZW5kUmlnaHQpOwogI2VuZGlmCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6
Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ+KGRlY29kZXIsIHRoaXMsICZUZXN0
V2l0aFN0cmVhbTo6c2VuZFN0cmluZ1N5bmNocm9uaXplZCk7CisgICAgICAgIHJldHVybiBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hy
b25pemVkPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRT
dHJpbmdTeW5jaHJvbml6ZWQpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpSZWNlaXZlTWFjaFNl
bmRSaWdodDo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpUZXN0V2l0aFN0cmVhbTo6UmVjZWl2ZU1hY2hTZW5kUmlnaHQ+KGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aFN0cmVhbTo6cmVjZWl2ZU1hY2hTZW5kUmlnaHQpOworICAgICAgICByZXR1cm4g
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6UmVjZWl2ZU1hY2hT
ZW5kUmlnaHQ+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6cmVj
ZWl2ZU1hY2hTZW5kUmlnaHQpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRB
bmRSZWNlaXZlTWFjaFNlbmRSaWdodDo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZEFuZFJlY2VpdmVNYWNoU2Vu
ZFJpZ2h0PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRBbmRSZWNlaXZlTWFj
aFNlbmRSaWdodCk7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoU3RyZWFtOjpTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ+KGNvbm5lY3Rpb24s
IGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJp
Z2h0KTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBVTlVTRURfUEFS
QU0oY29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZl
ci5jcHAKaW5kZXggNTU5YzAzMmQ0M2RiYTNlZjAyYmM4ODg0NGNhYTI3OGUyZmUyZmM4Zi4uZTNk
YmE5NWZmNmUwOTk5ZmNlMGNlM2U5Zjg2YTYyZGI3ZDI5MjQ2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlUmVj
ZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQg
VGVzdFdpdGhTdXBlcmNsYXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdp
dGhTdXBlcmNsYXNzOjpMb2FkVVJMOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6TG9hZFVSTD4oZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6bG9hZFVSTCk7CisgICAgICAgIHJldHVybiBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6TG9hZFVSTD4oY29u
bmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6bG9hZFVSTCk7CiAj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2U6Om5hbWUoKSkK
ICAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpUZXN0V2l0
aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aFN1cGVyY2xhc3M6OnRlc3RBc3luY01lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNz
YWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlUmVjZWl2ZXIuY3BwCmluZGV4IDMyYzA2MTY0NWZhYjNl
OTY4NzgzMWQzOTRiY2Q4OGY4ZjJiZTE5NmMuLjNkMjE4YWEwODg3MjEwMjUxYTYwMzZhYWFlYzJm
MWFjN2M0ZDNjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2VS
ZWNlaXZlci5jcHAKQEAgLTg0LDUwICs4NCw1MCBAQCB2b2lkIFRlc3RXaXRob3V0QXR0cmlidXRl
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ogog
ewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwogICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9h
ZFVSTDo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0
aG91dEF0dHJpYnV0ZXM6OmxvYWRVUkwpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkxvYWRVUkw+KGNvbm5lY3Rpb24s
IGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmxvYWRVUkwpOwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpCi0gICAg
ICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmli
dXRlczo6TG9hZFNvbWV0aGluZz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRl
czo6bG9hZFNvbWV0aGluZyk7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0aGluZz4oY29ubmVjdGlvbiwg
ZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6bG9hZFNvbWV0aGluZyk7CiAj
ZW5kaWYKICNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJ
VElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKICAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRvdWNoRXZl
bnQ6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjp0b3VjaEV2ZW50KTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUb3VjaEV2ZW50Pihjb25u
ZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0b3VjaEV2ZW50
KTsKICNlbmRpZgogI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0Vf
Q09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQogICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6QWRk
RXZlbnQ6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpBZGRFdmVudD4oZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRob3V0QXR0cmlidXRlczo6YWRkRXZlbnQpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkFkZEV2ZW50Pihjb25uZWN0
aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjphZGRFdmVudCk7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0aGluZ0Vs
c2U6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRob3V0QXR0cmlidXRlczo6bG9hZFNvbWV0aGluZ0Vsc2UpOworICAgICAgICByZXR1
cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6Okxv
YWRTb21ldGhpbmdFbHNlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpsb2FkU29tZXRoaW5nRWxzZSk7CiAjZW5kaWYKICAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbjo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24+KGNvbm5l
Y3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbik7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpDbG9zZTo6bmFtZSgpKQotICAgICAgICByZXR1cm4g
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNsb3Nl
PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpjbG9zZSk7CisgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6Q2xvc2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OmNsb3NlKTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1lKCkpCi0gICAg
ICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmli
dXRlczo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0
dHJpYnV0ZXM6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpQcmVmZXJlbmNlc0Rp
ZENoYW5nZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRl
czo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6U2VuZERvdWJsZUFuZEZsb2F0Ojpu
YW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RX
aXRob3V0QXR0cmlidXRlczo6U2VuZERvdWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpzZW5kRG91YmxlQW5kRmxvYXQpOworICAgICAgICByZXR1cm4g
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmRE
b3VibGVBbmRGbG9hdD4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0
cmlidXRlczo6c2VuZERvdWJsZUFuZEZsb2F0KTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmRJbnRzOjpuYW1lKCkp
Ci0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OnNlbmRJbnRzKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpTZW5kSW50cz4oY29ubmVjdGlvbiwgZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6c2VuZEludHMpOwogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6VGVzdFBh
cmFtZXRlckF0dHJpYnV0ZXM6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0UGFyYW1ldGVyQXR0cmli
dXRlcz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6dGVzdFBhcmFtZXRl
ckF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzPihjb25uZWN0
aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0ZXN0UGFyYW1ldGVy
QXR0cmlidXRlcyk7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZW1wbGF0ZVRlc3Q6Om5hbWUoKSkKLSAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpU
ZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnRlbXBs
YXRlVGVzdCk7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRl
c3RXaXRob3V0QXR0cmlidXRlczo6VGVtcGxhdGVUZXN0Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0ZW1wbGF0ZVRlc3QpOwogICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6U2V0
VmlkZW9MYXllcklEOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6U2V0VmlkZW9MYXllcklEPihkZWNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpzZXRWaWRlb0xheWVySUQpOworICAgICAg
ICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OlNldFZpZGVvTGF5ZXJJRD4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6c2V0VmlkZW9MYXllcklEKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKQotICAgICAgICByZXR1
cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgICAgIHJldHVy
biBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKICNl
bmRpZgogI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEZXByZWNhdGVk
T3BlcmF0aW9uOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2Rl
ciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7Cisg
ICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0
cmlidXRlczo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpFeHBlcmltZW50YWxPcGVy
YXRpb246Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpFeHBlcmltZW50YWxPcGVyYXRpb24+KGRlY29kZXIs
IHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7Cisg
ICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0
cmlidXRlczo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpleHBlcmltZW50YWxPcGVyYXRpb24pOwogI2VuZGlm
CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVy
KTsKQEAgLTE0MiwxOCArMTQyLDE4IEBAIGJvb2wgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJCiB7CiAgICAg
YXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpDcmVhdGVQbHVn
aW46Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpDcmVhdGVQbHVnaW4+KGRlY29kZXIsICpyZXBseUVuY29k
ZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmNyZWF0ZVBsdWdpbik7CisgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6Q3JlYXRlUGx1Z2luPihjb25uZWN0aW9uLCBkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpjcmVhdGVQbHVnaW4pOwogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UnVuSmF2
YVNjcmlwdEFsZXJ0OjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNv
ZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpydW5KYXZh
U2NyaXB0QWxlcnQpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlJ1bkphdmFTY3JpcHRBbGVydD4oY29ubmVjdGlvbiwg
ZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6cnVu
SmF2YVNjcmlwdEFsZXJ0KTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkdldFBsdWdpbnM6Om5hbWUoKSkKLSAgICAgICAg
cmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpHZXRQbHVnaW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpnZXRQbHVnaW5zKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpHZXRQbHVnaW5zPihjb25uZWN0aW9u
LCBkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpn
ZXRQbHVnaW5zKTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkp
CiAgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0TXVsdGlwbGVBdHRy
aWJ1dGVzOjpuYW1lKCkpCiAgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJv
bm91c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0
TXVsdGlwbGVBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRo
aXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkludGVycHJldEtleUV2ZW50OjpuYW1lKCkpCi0gICAg
ICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmli
dXRlczo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmludGVycHJldEtleUV2ZW50KTsKKyAgICAgICAgcmV0dXJu
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpJbnRl
cnByZXRLZXlFdmVudD4oY29ubmVjdGlvbiwgZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywg
JlRlc3RXaXRob3V0QXR0cmlidXRlczo6aW50ZXJwcmV0S2V5RXZlbnQpOwogI2VuZGlmCiAgICAg
VU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRl
eCAzZGJhYmIxYzcxM2FiOTgyNjEwYWFjYjg2ODc3MTQxNTc3ZWY4YzdkLi5lNjI1OGZiMDFiNmJi
ZTQ0ZjQ4M2E2YjkyMDQyZmQ3OTExMzEwZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC00NzksOTAgKzQ3OSw5MCBAQCB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW46Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VuPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVy
V2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5
VG9rZW4+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6
cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCaW5k
QWNjZXNzaWJpbGl0eVRyZWU6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmluZEFjY2Vzc2liaWxpdHlUcmVlPihkZWNvZGVyLCB0
aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmJpbmRBY2Nlc3NpYmlsaXR5VHJlZSk7CisgICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCaW5kQWNjZXNz
aWJpbGl0eVRyZWU+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQ
cm94eTo6YmluZEFjY2Vzc2liaWxpdHlUcmVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNl
bmRpZgogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZUZyb21XZWJQcm9jZXNzOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvZ0RpYWdu
b3N0aWNNZXNzYWdlRnJvbVdlYlByb2Nlc3M+KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyk7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2dEaWFnbm9zdGljTWVz
c2FnZUZyb21XZWJQcm9jZXNzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlRnJvbVdlYlByb2Nlc3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhFbmhhbmNlZFByaXZh
Y3lGcm9tV2ViUHJvY2Vzczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhFbmhhbmNlZFBy
aXZhY3lGcm9tV2ViUHJvY2Vzcz4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5
Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhFbmhhbmNlZFByaXZhY3lGcm9tV2ViUHJvY2Vzcyk7
CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhFbmhhbmNlZFByaXZhY3lGcm9tV2ViUHJvY2Vzcz4oY29ubmVj
dGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhFbmhhbmNlZFByaXZhY3lGcm9tV2ViUHJvY2Vzcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlRGljdGlvbmFyeUZyb21X
ZWJQcm9jZXNzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlRGljdGlvbmFyeUZy
b21XZWJQcm9jZXNzPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlRGljdGlvbmFyeUZyb21XZWJQcm9jZXNzKTsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aFZhbHVlRGljdGlvbmFyeUZyb21XZWJQcm9jZXNzPihjb25uZWN0aW9uLCBk
ZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFZhbHVlRGljdGlvbmFyeUZyb21XZWJQcm9jZXNzKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U3RhcnRVUkxTY2hlbWVUYXNrOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0VVJMU2NoZW1lVGFzaz4oZGVjb2Rl
ciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZVRhc2spOworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnRVUkxT
Y2hlbWVUYXNrPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OnN0YXJ0VVJMU2NoZW1lVGFzayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYzo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmM+KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKTsKKyAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25Bc3luYz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZTo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZT4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSk7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZT4oY29ubmVjdGlvbiwgZGVj
b2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWU6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZT4oZGVjb2RlciwgdGhp
cywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1l
KTsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWU+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMs
ICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhPihkZWNvZGVyLCB0aGlzLCAmUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKTsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0OjpuYW1lKCkpIHsKLSAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1D
bGllbnRSZWRpcmVjdD4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QpOworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0Pihjb25uZWN0aW9uLCBk
ZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFtZTo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRDcmVhdGVNYWluRnJhbWU+KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKTsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFtZT4oY29ubmVjdGlvbiwgZGVjb2Rl
ciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOjpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU+KGRlY29kZXIsIHRoaXMsICZQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk7CisgICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWU+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lOjpuYW1lKCkpIHsKLSAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JG
cmFtZT4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUpOworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAm
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKKyAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0
aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVy
Zm9ybVNlcnZlclJlZGlyZWN0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdD4oZGVjb2Rl
ciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Qp
OworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UGVyZm9ybVNlcnZlclJlZGlyZWN0Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTU3NSwxNCArNTc1LDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkRm9yRnJhbWU6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lPihkZWNv
ZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWRGb3JGcmFtZSk7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJhbWU+KGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6Y29udGVudEZpbHRlckRpZEJsb2Nr
TG9hZEZvckZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCiAjaWYgSEFW
RShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9j
ZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZUNvbnRleHRJbldlYlBy
b2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24+KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbik7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9u
Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437558</attachid>
            <date>2021-09-07 14:52:53 -0700</date>
            <delta_ts>2021-09-07 16:32:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229664-20210908075251.patch</filename>
            <type>text/plain</type>
            <size>67096</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE0Yjk5YjNmNDI2NTMzOWVjNjNlZDY3
ZmZhNGE3YjQxMmRjNDRiOTguLjNmMjBmZTRhODcxNjE1NzJmMDZmODU3YzRkNmIyZDIyN2Y1Njlh
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMjEtMDgtMjkgIENhbWVyb24gTWNDb3JtYWNrICA8
aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gSVBDTWVzc2FnZXMgY2hhbm5lbCB0
byBsb2cgYWxsIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5NjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MjUxMTY0MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFR3byBj
aGFuZ2VzIHRvIFRleHRTdHJlYW0gaW4gdGhpcyBwYXRjaC4KKworICAgICAgICBUaGUgZmlyc3Qg
aXMgYSBuZXcgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yIHRvIGFsbG93IGxpbWl0aW5nCisg
ICAgICAgIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSBjb250YWluZXIgd2hlbiBhcHBlbmRp
bmcgaXQgdG8gYQorICAgICAgICBUZXh0U3RyZWFtLiBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVz
ZWQgd2hlbiB0aGUgb3V0cHV0IGlzIGZvcgorICAgICAgICBodW1hbiBjb25zdW1wdGlvbiBhbmQg
Y291bGQgcG90ZW50aWFsbHkgYmUgdXNlbGVzc2x5IGxhcmdlLgorCisgICAgICAgIFRoZSBzZWNv
bmQgaXMgYSB2YWx1ZSBhZGFwdGVyIFZhbHVlT3JFbGxpcHNpcy4gVGhpcyBhbGxvd3MgYXBwZW5k
aW5nCisgICAgICAgIGEgdmFsdWUgdG8gYSBUZXh0U3RyZWFtIGV2ZW4gaWYgaXQgZG9lc24ndCBo
YXZlIGFuCisgICAgICAgIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYpIGRlZmluZWQuIElmIGl0IGRv
ZXNuJ3QsIHRoZW4gdGhlIGZhbGxiYWNrCisgICAgICAgIHZhbHVlICIuLi4iIGlzIHVzZWQgaW5z
dGVhZC4KKworICAgICAgICBBbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgVmFsdWVPckVsbGlw
c2lzIGlzIGEgbmV3IHR5cGUgdHJhaXQKKyAgICAgICAgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5z
ZXJ0aW9uLCB3aGljaCBkZXRlY3RzIGF0IGNvbXBpbGUgdGltZSB3aGV0aGVyCisgICAgICAgIGEg
Z2l2ZW4gdHlwZSBjYW4gYmUgYXBwZW5kZWQgdG8gYSBUZXh0U3RyZWFtLiBJdCB3b3JrcyBieSB1
c2luZworICAgICAgICAiZXhwcmVzc2lvbiBTRklOQUUiIGFuZCBwYXJ0aWFsIHRlbXBsYXRlIHNw
ZWNpYWxpemF0aW9uLgorCisgICAgICAgIFRoZSBiYXNlLCB1bnNwZWNpYWxpemVkIHZlcnNpb24g
b2YgdGhlIHRlbXBsYXRlIGluaGVyaXRzIGZyb20KKyAgICAgICAgc3RkOjpmYWxzZV90eXBlLCBh
bmQgaXMgc2VsZWN0ZWQgZm9yIGFsbCB0eXBlcyBieSBkZWZhdWx0LgorCisgICAgICAgIEEgcGFy
dGlhbCBzcGVjaWFsaXphdGlvbiB0aGF0IHVzZXMgZGVjbHR5cGUoKSB0byBjaGVjayB3aGV0aGVy
IGEKKyAgICAgICAgYFRleHRTdHJlYW0oKSA8PCB2YWx1ZWAgZXhwcmVzc2lvbiB3b3VsZCBjb21w
aWxlIGluaGVyaXRzIGZyb20KKyAgICAgICAgc3RkOjp0cnVlX3R5cGUuCisKKyAgICAgICAgU2Fk
bHksIEMrKyBTRklOQUUgaGFzIGEgbGltaXRhdGlvbiB0aGF0IG1lYW5zIHRlbXBsYXRlIGRlZmlu
aXRpb25zCisgICAgICAgIHRoYXQgd291bGQgYmUgaW5zdGFudGlhdGVkIGluc2lkZSB0aGUgZGVj
bHR5cGUoKSBhcmUgbm90IGNoZWNrZWQKKyAgICAgICAgdG8gZW5zdXJlIHRoZXkgd291bGQgY29t
cGlsZS4gVGhpcyB3b3VsZCBtZWFuIGNvbnRhaW5lciB0eXBlcyB3aG9zZQorICAgICAgICBlbGVt
ZW50cyBhcmUgdHlwZXMgdGhhdCBkb24ndCBoYXZlIGFuIG9wZXJhdG9yPDwgZGVmaW5lZCB3b3Vs
ZCBzdGlsbAorICAgICAgICByZXBvcnQgdHJ1ZSBmcm9tIHN1cHBvcnRzX3RleHRfc3RyZWFtX2lu
c2VydGlvbi4gV2Ugd29yayBhcm91bmQgdGhpcworICAgICAgICBieSBoYXZpbmcgbW9yZSBzcGVj
aWZpYyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9ucyBmb3IgYWxsIG9mIHRoZSBjb250YWluZXIKKyAg
ICAgICAgdHlwZXMgd2UgaGF2ZSBvcGVyYXRvcjw8IGRlZmluaXRpb25zIGZvciwgd2hpY2ggZGVm
ZXIgdG8gdGhlCisgICAgICAgIHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbiB2YWx1ZSBm
b3IgdGhlIGVsZW1lbnQgdHlwZShzKS4KKworICAgICAgICBJZiBhbiBvcGVyYXRvcjw8IGlzIGFk
ZGVkIGZvciBhIG5ldyBjb250YWluZXIgdHlwZSB3aXRob3V0IGEKKyAgICAgICAgY29ycmVzcG9u
ZGluZyBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb24gc3BlY2lhbGl6YXRpb24sIGFuZCB0
aGF0CisgICAgICAgIHR5cGUgaXMgdXNlZCB3aXRoIFZhbHVlT3JFbGxpcHNpcywgaXQgd2lsbCBj
YXVzZSBhIGNvbXBpbGUgZXJyb3IuCisKKyAgICAgICAgVGhlIHN1cHBvcnRzX3RleHRfc3RyZWFt
X2luc2VydGlvbiB0ZW1wbGF0ZSB0YWtlcyBzaXggdGVtcGxhdGUKKyAgICAgICAgYXJndW1lbnRz
LCB3aGljaCBsb29rcyBvZGQsIGJ1dCBpcyBuZWVkZWQgYmVjYXVzZSBhbGwgc3BlY2lhbGl6YXRp
b25zCisgICAgICAgIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgKGFuZCBraW5kKSBvZiB0ZW1w
bGF0ZSBhcmd1bWVudHMuIFRoZSBzaXgKKyAgICAgICAgaW5jbHVkZSBmaXZlIHR5cGUgdGVtcGxh
dGUgYXJndW1lbnRzICh3aGljaCBpcyBob3cgbWFueSBIYXNoTWFwIGhhcykKKyAgICAgICAgcGx1
cyBhIHNpemVfdCB2YWx1ZSB0ZW1wbGF0ZSBhcmd1bWVudCAoZm9yIFZlY3RvcidzIGlubGluZUNh
cGFjaXR5CisgICAgICAgIGFyZ3VtZW50KS4KKworICAgICAgICAqIHd0Zi90ZXh0L1RleHRTdHJl
YW0uaDoKKyAgICAgICAgKFdURjo6VGV4dFN0cmVhbTo6VGV4dFN0cmVhbSk6CisgICAgICAgIChX
VEY6OlRleHRTdHJlYW06OmNvbnRhaW5lclNpemVMaW1pdCBjb25zdCk6CisgICAgICAgIChXVEY6
Om9wZXJhdG9yPDwpOgorICAgICAgICAoV1RGOjpWYWx1ZU9yRWxsaXBzaXM6OlZhbHVlT3JFbGxp
cHNpcyk6CisKIDIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcgZHluYW1pY19jZl9j
YXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFjZDQxMDM5
MDg2NWJmODNkYjE2NDMwNGZhNjQ2NmZhNzY1Y2NjYy4uM2Y3NDZkNjE1YzI4Yzk3ZWM3NGYwODE0
YWM5NGZjYzVmZDA3NTM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA4LTMx
ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFu
IElQQ01lc3NhZ2VzIGNoYW5uZWwgdG8gbG9nIGFsbCBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTY2NAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODI1MTE2NDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3Rl
bnNlbi4KKworICAgICAgICBBZGQgYSB3YXkgdG8gZ2V0IHRoZSB0eXBlIG9mIHByb2Nlc3Mgd2Un
cmUgaW4gYXMgYSBzdHJpbmcsIGZvcgorICAgICAgICBsb2dnaW5nLgorCisgICAgICAgICogcGxh
dGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBy
b2Nlc3NUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NUeXBlRGVzY3JpcHRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oOgorCiAyMDIxLTA5
LTA1ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU3Vw
cG9ydCBkcmF3SW1hZ2Ugd2l0aCBhIHdpZGUgZ2FtdXQgaW1hZ2UgcGFpbnRpbmcgaW50byBhIGRp
c3BsYXktcDMgY2FudmFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBkMWI1NDJhOGU2MzFmYzI0Y2JkNThmOThmMjAz
ZjMxNWNkYjkwZjcuLjBiMjEzNWM4NGYyNmYwNTcxY2M5MjllN2QyN2RiOTA1NWQxMWQxNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjEtMDgtMjkgIENhbWVyb24gTWNDb3JtYWNrICA8
aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gSVBDTWVzc2FnZXMgY2hhbm5lbCB0
byBsb2cgYWxsIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5NjY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MjUxMTY0MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRoaXMg
YWRkcyBhIG5ldyBJUENNZXNzYWdlcyBsb2cgY2hhbm5lbCwgdG8gd2hpY2ggYWxsIElQQyBtZXNz
YWdlIG5hbWVzLAorICAgICAgICBhcmd1bWVudHMsIGFuZCByZXR1cm4gdmFsdWVzIGFyZSBsb2dn
ZWQuIFRvIGF2b2lkIHBlcmZvcm1hbmNlIGltcGFjdHMKKyAgICAgICAgd2hlbiBub3QgbG9nZ2lu
ZywgdGhlc2UgYXJlIG9ubHkgZW5hYmxlZCBpbiBkZWJ1ZyBidWlsZHMuCisKKyAgICAgICAgVmFs
dWVPckRlZmF1bHQgaXMgdXNlZCB3aGVuIHdyaXRpbmcgb3V0IGVhY2ggbWVzc2FnZSBhcmd1bWVu
dCB0byAoMSkKKyAgICAgICAgYXZvaWQgaGF2aW5nIHRvIGFkZCBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mKSBkZWZpbnRpb25zIGZvciBhbGwKKyAgICAgICAgYXJndW1lbnQgdHlwZXMgcmlnaHQgbm93
LCBhbmQgKDIpIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCB0byBhZGQgc3VjaCBhCisgICAgICAgIGRl
ZmluaXRpb24gd2hlbiBhZGRpbmcgbmV3IElQQyBtZXNzYWdlcy4gVGhlIHN0cmluZyAiLi4uIiBp
cyBvdXRwdXQKKyAgICAgICAgZm9yIHR5cGVzIHdpdGggbm8gb3BlcmF0b3I8PCBkZWZpbmVkLgor
CisgICAgICAgIFRoZSByZW1vdGUgYW5kIGxvY2FsIHByb2Nlc3MgSURzIGFyZSBpbmNsdWRlZCBp
biB0aGUgbG9nIG1lc3NhZ2UuIFRoZQorICAgICAgICByZW1vdGUgcHJvY2VzcyBJRCBpcyBvbmx5
IHJlYWRpbHkgYWNjZXNzaWJsZSBvbiBPUyhEQVJXSU4pLCBhcyB3ZSBjYW4KKyAgICAgICAgZ3Jh
YiBpdCBmcm9tIHRoZSBYUEMgY29ubmVjdGlvbi4gQnV0IG5vdCBhbGwgSVBDOjpDb25uZWN0aW9u
cyBhcmUKKyAgICAgICAgY3JlYXRlZCBmb3IgWFBDIGNvbm5lY3Rpb25zLiBGb3IgZXhhbXBsZSwg
dGhlIFdlYiAtPiBHUFUgcHJvY2VzcworICAgICAgICBjb25uZWN0aW9uIGlzIGNyZWF0ZWQgYnkg
dGhlIFVJIHByb2Nlc3Mgb24gYmVoYWxmIG9mIHRoZSBXZWIgcHJvY2VzcywKKyAgICAgICAgYW5k
IHRoZSBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgZG9lcyBub3QgaGF2ZSBhbiBYUEMgc2Vy
dmljZQorICAgICAgICBoYW5kbGUgaW4gaXQuIFNvIGZvciBub3csIHdlIG9taXQgdGhlIHJlbW90
ZSBwcm9jZXNzIElELiAoV2UnZCBuZWVkCisgICAgICAgIHRvIHRocmVhZCBpdCB0aHJvdWdoIG1l
c3NhZ2VzIGxpa2UgQ3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcworICAgICAgICB0byBo
YXZlIGl0IGF2YWlsYWJsZS4pCisKKyAgICAgICAgU2luY2Ugd2UgbmVlZCB0aGUgSVBDOjpDb25u
ZWN0aW9uIG9iamVjdCBmb3IgbG9nZ2luZyBub3csIGFsbCBvZiB0aGUKKyAgICAgICAgaGFuZGxl
TWVzc2FnZSogZnVuY3Rpb25zIHRha2UgYSBjb25uZWN0aW9uLCBhbmQgdGhlIG1lc3NhZ2VzLnB5
IGNvZGUKKyAgICAgICAgZ2VuZXJhdG9yIGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjp0ZXh0U3Ry
ZWFtRm9yTG9nZ2luZyk6CisgICAgICAgIChJUEM6OmxvZ01lc3NhZ2VJbXBsKToKKyAgICAgICAg
KElQQzo6bG9nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OmxvZ1JlcGx5KToKKyAgICAgICAgKElQ
Qzo6aGFuZGxlTWVzc2FnZSk6CisgICAgICAgIChJUEM6OmhhbmRsZU1lc3NhZ2VXYW50c0Nvbm5l
Y3Rpb24pOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAg
ICAoSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24pOgorICAgICAg
ICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmMpOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdl
QXN5bmNXYW50c0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKGFzeW5jX21lc3Nh
Z2Vfc3RhdGVtZW50KToKKyAgICAgICAgKHN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoQ1ZQaXhlbEJ1ZmZlck1lc3NhZ2VSZWNl
aXZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRlc3RXaXRoQ1ZQaXhlbEJ1ZmZlcjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aENWUGl4ZWxCdWZmZXI6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhJZk1lc3NhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXN0
V2l0aElmTWVzc2FnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZVJlY2VpdmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VGVzdFdpdGhJbWFnZURhdGE6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAg
KFdlYktpdDo6VGVzdFdpdGhJbWFnZURhdGE6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VS
ZWNlaXZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRp
ZFJlY2VpdmVUZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRpZFJlY2VpdmVTeW5jVGVzdFdpdGhMZWdhY3lSZWNl
aXZlck1lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2Vt
YXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGVzdFdpdGhTZW1h
cGhvcmU6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6VGVzdFdpdGhTZW1h
cGhvcmU6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VGVzdFdpdGhTdHJlYW06OmRpZFJlY2VpdmVTdHJlYW1NZXNz
YWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NN
ZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aFN1cGVyY2xhc3M6
OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisKIDIwMjEtMDgtMjcg
IENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggc3Rk
OjpvcHRpb25hbDw+IHN0cmlwcGluZyBpbiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3Bw
IGdlbmVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0U3RyZWFtLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaAppbmRleCA3ZjlmYmFmNzk4ZmYxZmFk
ODk4NjljMDJjMGViOWI3NThmYTk4ZTZjLi5jODVkYTY2NDFlMTMxNzNjOTcxMTU3YmE0YTk4M2I0
NGY1NDY1YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaApAQCAtNTMsOSArNTMsMTAgQEAg
cHVibGljOgogICAgIH07CiAKICAgICBlbnVtIGNsYXNzIExpbmVNb2RlIHsgU2luZ2xlTGluZSwg
TXVsdGlwbGVMaW5lIH07Ci0gICAgVGV4dFN0cmVhbShMaW5lTW9kZSBsaW5lTW9kZSA9IExpbmVN
b2RlOjpNdWx0aXBsZUxpbmUsIE9wdGlvblNldDxGb3JtYXR0aW5nPiBmb3JtYXR0aW5nRmxhZ3Mg
PSB7IH0pCisgICAgVGV4dFN0cmVhbShMaW5lTW9kZSBsaW5lTW9kZSA9IExpbmVNb2RlOjpNdWx0
aXBsZUxpbmUsIE9wdGlvblNldDxGb3JtYXR0aW5nPiBmb3JtYXR0aW5nRmxhZ3MgPSB7IH0sIHVu
c2lnbmVkIGNvbnRhaW5lclNpemVMaW1pdCA9IDApCiAgICAgICAgIDogbV9mb3JtYXR0aW5nRmxh
Z3MoZm9ybWF0dGluZ0ZsYWdzKQogICAgICAgICAsIG1fbXVsdGlMaW5lTW9kZShsaW5lTW9kZSA9
PSBMaW5lTW9kZTo6TXVsdGlwbGVMaW5lKQorICAgICAgICAsIG1fY29udGFpbmVyU2l6ZUxpbWl0
KGNvbnRhaW5lclNpemVMaW1pdCkKICAgICB7CiAgICAgfQogCkBAIC0xMTIsNiArMTEzLDggQEAg
cHVibGljOgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd3JpdGVJbmRlbnQoKTsKIAor
ICAgIHVuc2lnbmVkIGNvbnRhaW5lclNpemVMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFp
bmVyU2l6ZUxpbWl0OyB9CisKICAgICAvLyBTdHJlYW0gbWFuaXB1bGF0b3JzLgogICAgIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgKCpmdW5jKShUZXh0U3RyZWFtJikpCiAgICAg
ewpAQCAtMTc0LDYgKzE3Nyw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1faW5kZW50IHsgMCB9Owog
ICAgIE9wdGlvblNldDxGb3JtYXR0aW5nPiBtX2Zvcm1hdHRpbmdGbGFnczsKICAgICBib29sIG1f
bXVsdGlMaW5lTW9kZSB7IHRydWUgfTsKKyAgICB1bnNpZ25lZCBtX2NvbnRhaW5lclNpemVMaW1p
dCB7IDAgfTsKIH07CiAKIGlubGluZSBUZXh0U3RyZWFtJiBpbmRlbnQoVGV4dFN0cmVhbSYgdHMp
CkBAIC0yMjMsMTMgKzIyNywxOCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBWZWN0b3I8SXRlbVR5cGUsIGlubGluZUNhcGFjaXR5PiYgdgogewogICAgIHRz
IDw8ICJbIjsKIAotICAgIHVuc2lnbmVkIHNpemUgPSB2ZWN0b3Iuc2l6ZSgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgdHMgPDwgdmVjdG9yW2ld
OwotICAgICAgICBpZiAoaSA8IHNpemUgLSAxKQorICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIHZhbHVlIDogdmVjdG9yKSB7CisgICAgICAgIGlmIChjb3VudCkK
ICAgICAgICAgICAgIHRzIDw8ICIsICI7CisgICAgICAgIHRzIDw8IHZhbHVlOworICAgICAgICBp
ZiAoKytjb3VudCA9PSB0cy5jb250YWluZXJTaXplTGltaXQoKSkKKyAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGlmIChjb3VudCAhPSB2ZWN0b3Iuc2l6ZSgpKQorICAgICAgICB0cyA8
PCAiLCAuLi4iOworCiAgICAgcmV0dXJuIHRzIDw8ICJdIjsKIH0KIApAQCAtMjYyLDE0ICsyNzEs
MTggQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSGFzaE1h
cDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywKIHsKICAgICB0cyA8PCAieyI7CiAKLSAgICBi
b29sIGZpcnN0ID0gdHJ1ZTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBrZXlWYWx1ZVBhaXIgOiBtYXApIHsKLSAgICAgICAgdHMgPDwga2V5VmFsdWVQYWly
LmtleSA8PCAiOiAiIDw8IGtleVZhbHVlUGFpci52YWx1ZTsKLSAgICAgICAgaWYgKCFmaXJzdCkK
KyAgICAgICAgaWYgKGNvdW50KQogICAgICAgICAgICAgdHMgPDwgIiwgIjsKLSAgICAgICAgZmly
c3QgPSBmYWxzZTsKKyAgICAgICAgdHMgPDwga2V5VmFsdWVQYWlyLmtleSA8PCAiOiAiIDw8IGtl
eVZhbHVlUGFpci52YWx1ZTsKKyAgICAgICAgaWYgKCsrY291bnQgPT0gdHMuY29udGFpbmVyU2l6
ZUxpbWl0KCkpCisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBpZiAoY291bnQgIT0g
bWFwLnNpemUoKSkKKyAgICAgICAgdHMgPDwgIiwgLi4uIjsKKwogICAgIHJldHVybiB0cyA8PCAi
fSI7CiB9CiAKQEAgLTI3OCwxNCArMjkxLDE4IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmcsIFRyYWl0c0FyCiB7
CiAgICAgdHMgPDwgIlsiOwogCi0gICAgYm9vbCBmaXJzdCA9IHRydWU7CisgICAgdW5zaWduZWQg
Y291bnQgPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IHNldCkgewotICAgICAgICB0
cyA8PCBpdGVtOwotICAgICAgICBpZiAoIWZpcnN0KQorICAgICAgICBpZiAoY291bnQpCiAgICAg
ICAgICAgICB0cyA8PCAiLCAiOwotICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICB0cyA8
PCBpdGVtOworICAgICAgICBpZiAoKytjb3VudCA9PSB0cy5jb250YWluZXJTaXplTGltaXQoKSkK
KyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGlmIChjb3VudCAhPSBzZXQuc2l6ZSgp
KQorICAgICAgICB0cyA8PCAiLCAuLi4iOworCiAgICAgcmV0dXJuIHRzIDw8ICJdIjsKIH0KIApA
QCAtMzAzLDExICszMjAsNjMgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgT3B0aW9uU2V0PE9wdGlvbj4mIG9wdGlvbnMpCiAgICAgcmV0dXJuIHRzIDw8ICJd
IjsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZCwgdHlwZW5hbWUgPSB2
b2lkLCB0eXBlbmFtZSA9IHZvaWQsIHR5cGVuYW1lID0gdm9pZCwgc2l6ZV90ID0gMD4KK3N0cnVj
dCBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb24gOiBzdGQ6OmZhbHNlX3R5cGUgeyB9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2Vy
dGlvbjxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VGV4dFN0cmVhbSY+KCkg
PDwgc3RkOjpkZWNsdmFsPFQ+KCkpPj4gOiBzdGQ6OnRydWVfdHlwZSB7IH07CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEl0ZW1UeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitzdHJ1Y3Qgc3VwcG9y
dHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPFZlY3RvcjxJdGVtVHlwZSwgaW5saW5lQ2FwYWNpdHk+
PiA6IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxJdGVtVHlwZT4geyB9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgVHJhaXRz
QXJnPgorc3RydWN0IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxIYXNoU2V0PFZhbHVl
QXJnLCBIYXNoQXJnLCBUcmFpdHNBcmc+PiA6IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlv
bjxWYWx1ZUFyZz4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1h
cHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFt
ZSBNYXBwZWRUcmFpdHNBcmc+CitzdHJ1Y3Qgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9u
PEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVk
VHJhaXRzQXJnPj4gOiBzdGQ6OmNvbmp1bmN0aW9uPHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2Vy
dGlvbjxLZXlBcmc+LCBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248TWFwcGVkQXJnPj4g
eyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+CitzdHJ1Y3Qgc3Vw
cG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPE1hcmthYmxlPFQsIFRyYWl0cz4+IDogc3VwcG9y
dHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPFQ+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3N0cnVjdCBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248T3B0aW9uU2V0PFQ+PiA6IHN1
cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxUPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3Qgc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPHN0ZDo6b3B0aW9uYWw8
VD4+IDogc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPFQ+IHsgfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK3N0cnVjdCBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248V2Vha1B0
cjxUPj4gOiBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248VD4geyB9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorc3RydWN0IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxSZWZQ
dHI8VD4+IDogc3VwcG9ydHNfdGV4dF9zdHJlYW1faW5zZXJ0aW9uPFQ+IHsgfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248UmVm
PFQ+PiA6IHN1cHBvcnRzX3RleHRfc3RyZWFtX2luc2VydGlvbjxUPiB7IH07CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgVmFsdWVPckVsbGlwc2lzIHsKKyAgICBleHBsaWNpdCBWYWx1
ZU9yRWxsaXBzaXMoY29uc3QgVCYgdmFsdWUpCisgICAgICAgIDogdmFsdWUodmFsdWUpCisgICAg
eyB9CisgICAgY29uc3QgVCYgdmFsdWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVmFsdWVPckVsbGlwc2lzPFQ+IGl0
ZW0pCit7CisgICAgaWYgY29uc3RleHByIChzdXBwb3J0c190ZXh0X3N0cmVhbV9pbnNlcnRpb248
VD46OnZhbHVlKQorICAgICAgICB0cyA8PCBpdGVtLnZhbHVlOworICAgIGVsc2UKKyAgICAgICAg
dHMgPDwgIi4uLiI7CisgICAgcmV0dXJuIHRzOworfQorCiAvLyBEZXByZWNhdGVkLiBVc2UgVGV4
dFN0cmVhbTo6d3JpdGVJbmRlbnQoKSBpbnN0ZWFkLgogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
d3JpdGVJbmRlbnQoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpOwogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIAogdXNpbmcgV1RGOjpUZXh0U3RyZWFtOwordXNpbmcgV1RGOjpWYWx1ZU9yRWxsaXBzaXM7
CiB1c2luZyBXVEY6OlZhbHVlT3JOdWxsOwogdXNpbmcgV1RGOjppbmRlbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAppbmRl
eCAyYjJhZmE4OTU5YzcyZTdhZmJkYThhNmNlZmMxMzU5YmU5MjhmNmJmLi5lMDQ1MzM0YWQxNmZj
NDc1YmFiMGQ2MjY1NzhlYTI3NjZmZjVkMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKQEAgLTgzLDQgKzgzLDMzIEBA
IGJvb2wgY2hlY2tBdXhpbGlhcnlQcm9jZXNzVHlwZShBdXhpbGlhcnlQcm9jZXNzVHlwZSB0eXBl
KQogICAgIHJldHVybiAqY3VycmVudFR5cGUgPT0gdHlwZTsgCiB9CiAKK3N0ZDo6b3B0aW9uYWw8
QXV4aWxpYXJ5UHJvY2Vzc1R5cGU+IHByb2Nlc3NUeXBlKCkKK3sKKyAgICByZXR1cm4gYXV4aWxp
YXJ5UHJvY2Vzc1R5cGUoKTsKK30KKworY29uc3QgY2hhciogcHJvY2Vzc1R5cGVEZXNjcmlwdGlv
bihzdGQ6Om9wdGlvbmFsPEF1eGlsaWFyeVByb2Nlc3NUeXBlPiB0eXBlKQoreworICAgIGlmICgh
dHlwZSkKKyAgICAgICAgcmV0dXJuICJVSSI7CisKKyAgICBzd2l0Y2ggKCp0eXBlKSB7CisgICAg
Y2FzZSBBdXhpbGlhcnlQcm9jZXNzVHlwZTo6V2ViQ29udGVudDoKKyAgICAgICAgcmV0dXJuICJX
ZWIiOworICAgIGNhc2UgQXV4aWxpYXJ5UHJvY2Vzc1R5cGU6Ok5ldHdvcms6CisgICAgICAgIHJl
dHVybiAiTmV0d29yayI7CisgICAgY2FzZSBBdXhpbGlhcnlQcm9jZXNzVHlwZTo6UGx1Z2luOgor
ICAgICAgICByZXR1cm4gIlBsdWdpbiI7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNh
c2UgQXV4aWxpYXJ5UHJvY2Vzc1R5cGU6OkdQVToKKyAgICAgICAgcmV0dXJuICJHUFUiOworI2Vu
ZGlmCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBjYXNlIEF1eGlsaWFyeVByb2Nlc3NUeXBl
OjpXZWJBdXRobjoKKyAgICAgICAgcmV0dXJuICJXZWJBdXRobiI7CisjZW5kaWYKKyAgICB9Cisg
ICAgcmV0dXJuICJVbmtub3duIjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAppbmRl
eCA4ODQ1NzhlOTVmNmE3MDUyNjcwMGFlNWEwM2Q0NzcyOTBlYTU2OGRmLi4wNmRiNzhlODU4NDIz
OWQ0Y2ViMDNhMTk4YWZjMTJkMWEwMzE2NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDYgKzQ3LDggQEAgZW51bSBjbGFzcyBB
dXhpbGlhcnlQcm9jZXNzVHlwZSA6IHVpbnQ4X3QgewogCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEF1eGlsaWFyeVByb2Nlc3NUeXBlKEF1eGlsaWFyeVByb2Nlc3NUeXBlKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY2hlY2tBdXhpbGlhcnlQcm9jZXNzVHlwZShBdXhpbGlhcnlQcm9jZXNzVHlwZSk7
CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEF1eGlsaWFyeVByb2Nlc3NUeXBlPiBwcm9j
ZXNzVHlwZSgpOworV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogcHJvY2Vzc1R5cGVEZXNjcmlw
dGlvbihzdGQ6Om9wdGlvbmFsPEF1eGlsaWFyeVByb2Nlc3NUeXBlPik7CiAKIGJvb2wgaXNJbkF1
eGlsaWFyeVByb2Nlc3MoKTsKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1cm4g
Y2hlY2tBdXhpbGlhcnlQcm9jZXNzVHlwZShBdXhpbGlhcnlQcm9jZXNzVHlwZTo6V2ViQ29udGVu
dCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3Nh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCAw
Y2VlZTUwZTBlZTNiZWY1YTYzMjU1OGJjODJkYzgwMGQxNmZiZDg3Li43MTAwY2U3MTE5NDBlNmYz
NzcwZTNiMDczM2NiYWE0YzI3YjNjNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
SGFuZGxlTWVzc2FnZS5oCkBAIC0yNywxNCArMjcsOTMgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgQ29ubmVj
dGlvbjsKIAorLy8gSVBDIG1lc3NhZ2UgbG9nZ2luZy4gT25seSBlbmFibGVkIGluIERFQlVHIGJ1
aWxkcy4KKy8vCisvLyBNZXNzYWdlIGFyZ3VtZW50IHZhbHVlcyBhcHBlYXIgYXMgIi4uLiIgaWYg
bm8gb3BlcmF0b3I8PChUZXh0U3RyZWFtJikgaXMKKy8vIGltcGxlbWVudGVkIGZvciB0aGVtLgor
Citjb25zdGV4cHIgdW5zaWduZWQgbG9nZ2luZ0NvbnRhaW5lclNpemVMaW1pdCA9IDIwMDsKKwor
I2lmICFMT0dfRElTQUJMRUQKK2VudW0gY2xhc3MgRm9yUmVwbHkgOiBib29sIHsgTm8sIFllcyB9
OworCitpbmxpbmUgVGV4dFN0cmVhbSB0ZXh0U3RyZWFtRm9yTG9nZ2luZyhjb25zdCBDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgRm9yUmVwbHkgZm9yUmVw
bHkpCit7CisgICAgVGV4dFN0cmVhbSBzdHJlYW0oVGV4dFN0cmVhbTo6TGluZU1vZGU6OlNpbmds
ZUxpbmUsIHsgfSwgbG9nZ2luZ0NvbnRhaW5lclNpemVMaW1pdCk7CisgICAgc3RyZWFtIDw8ICdb
JzsKKyNpZiBPUyhEQVJXSU4pCisgICAgLy8gVGhlIHJlbW90ZSBwcm9jZXNzIElEIGlzIG5vdCBh
dmFpbGFibGUgd2hlbiB0aGUgY29ubmVjdGlvbiB3YXMgbm90IG1hZGUKKyAgICAvLyBmb3IgYW4g
WFBDIHNlcnZpY2UsIGUuZy4gZm9yIHRoZSBXZWIgLT4gR1BVIHByb2Nlc3MgY29ubmVjdGlvbi4K
KyAgICBpZiAoY29ubmVjdGlvbi5yZW1vdGVQcm9jZXNzSUQoKSkKKyAgICAgICAgc3RyZWFtIDw8
IGNvbm5lY3Rpb24ucmVtb3RlUHJvY2Vzc0lEKCkgPDwgJyAnOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7CisjZW5kaWYKKyAgICBhdXRvIGFycm93ID0gZm9yUmVwbHkgPT0g
Rm9yUmVwbHk6OlllcyA/ICI8LSAiIDogIi0+ICI7CisgICAgc3RyZWFtIDw8IGFycm93IDw8IFdl
YkNvcmU6OnByb2Nlc3NUeXBlRGVzY3JpcHRpb24oV2ViQ29yZTo6cHJvY2Vzc1R5cGUoKSkgPDwg
JyAnIDw8IGdldEN1cnJlbnRQcm9jZXNzSUQoKSA8PCAiXSAiIDw8IGRlc2NyaXB0aW9uKG1lc3Nh
Z2VOYW1lKTsKKyAgICBpZiAoZm9yUmVwbHkgPT0gRm9yUmVwbHk6OlllcykKKyAgICAgICAgc3Ry
ZWFtIDw8ICIgUmVwbHkiOworICAgIHJldHVybiBzdHJlYW07Cit9CisjZW5kaWYKKwordGVtcGxh
dGU8dHlwZW5hbWUgQXJnc1R1cGxlLCBzaXplX3QuLi4gQXJnc0luZGV4Pgordm9pZCBsb2dNZXNz
YWdlSW1wbChjb25zdCBDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBNZXNzYWdlTmFtZSBtZXNzYWdl
TmFtZSwgY29uc3QgQXJnc1R1cGxlJiBhcmdzLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFyZ3NJbmRl
eC4uLj4pCit7CisjaWYgIUxPR19ESVNBQkxFRAorICAgIGF1dG8gc3RyZWFtID0gdGV4dFN0cmVh
bUZvckxvZ2dpbmcoY29ubmVjdGlvbiwgbWVzc2FnZU5hbWUsIEZvclJlcGx5OjpObyk7CisKKyAg
ICBpZiAoYXV0byBhcmd1bWVudERlc2NyaXB0aW9ucyA9IG1lc3NhZ2VBcmd1bWVudERlc2NyaXB0
aW9ucyhtZXNzYWdlTmFtZSkpCisgICAgICAgIChzdHJlYW0uZHVtcFByb3BlcnR5KCgqYXJndW1l
bnREZXNjcmlwdGlvbnMpW0FyZ3NJbmRleF0ubmFtZSwgVmFsdWVPckVsbGlwc2lzKHN0ZDo6Z2V0
PEFyZ3NJbmRleD4oYXJncykpKSwgLi4uKTsKKworICAgIExPRyhJUENNZXNzYWdlcywgIiVzIiwg
c3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShtZXNzYWdlTmFtZSk7CisgICAgVU5VU0VE
X1BBUkFNKGFyZ3MpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFyZ3NUdXBsZSwg
dHlwZW5hbWUgQXJnc0luZGljZXMgPSBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBs
ZV9zaXplPEFyZ3NUdXBsZT46OnZhbHVlPj4KK3ZvaWQgbG9nTWVzc2FnZShjb25zdCBDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgY29uc3QgQXJnc1R1cGxl
JiBhcmdzKQoreworICAgIGxvZ01lc3NhZ2VJbXBsKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lLCBh
cmdzLCBBcmdzSW5kaWNlcygpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KK3ZvaWQg
bG9nUmVwbHkoY29uc3QgQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgTWVzc2FnZU5hbWUgbWVzc2Fn
ZU5hbWUsIGNvbnN0IFQmLi4uIGFyZ3MpCit7CisjaWYgIUxPR19ESVNBQkxFRAorICAgIGlmICgh
c2l6ZW9mLi4uKFQpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHN0cmVhbSA9IHRleHRT
dHJlYW1Gb3JMb2dnaW5nKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lLCBGb3JSZXBseTo6WWVzKTsK
KworICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsKKyAgICBpZiAoYXV0byBhcmd1bWVudERlc2Ny
aXB0aW9ucyA9IG1lc3NhZ2VSZXBseUFyZ3VtZW50RGVzY3JpcHRpb25zKG1lc3NhZ2VOYW1lKSkK
KyAgICAgICAgKHN0cmVhbS5kdW1wUHJvcGVydHkoKCphcmd1bWVudERlc2NyaXB0aW9ucylbYXJn
SW5kZXgrK10ubmFtZSwgVmFsdWVPckVsbGlwc2lzKGFyZ3MpKSwgLi4uKTsKKworICAgIExPRyhJ
UENNZXNzYWdlcywgIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShtZXNzYWdl
TmFtZSk7CisgICAgKFVOVVNFRF9QQVJBTShhcmdzKSwgLi4uKTsKKyNlbmRpZgorfQorCiAvLyBE
aXNwYXRjaCBmdW5jdGlvbnMgd2l0aCBubyByZXBseSBhcmd1bWVudHMuCiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgQXJnc1R1cGxlLCBzaXplX3QuLi4gQXJn
c0luZGV4PgpAQCAtMTA5LDIzICsxODgsMjYgQEAgc3RydWN0IENvZGluZ1R5cGU8c3RkOjp0dXBs
ZTxUcy4uLj4+IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVu
YW1lIE1GPgotdm9pZCBoYW5kbGVNZXNzYWdlKERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwg
TUYgZnVuY3Rpb24pCit2b2lkIGhhbmRsZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKICAgICBzdGQ6Om9w
dGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4g
YXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAgIGlmIChVTkxJS0VMWSgh
YXJndW1lbnRzKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbG9nTWVzc2FnZShjb25uZWN0aW9u
LCBUOjpuYW1lKCksICphcmd1bWVudHMpOwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3Zl
KCphcmd1bWVudHMpLCBvYmplY3QsIGZ1bmN0aW9uKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+Ci12b2lkIGhhbmRsZU1lc3NhZ2UoQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikK
K3ZvaWQgaGFuZGxlTWVzc2FnZVdhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogewogICAgIHN0ZDo6
b3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBl
PiBhcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CiAgICAgaWYgKFVOTElLRUxZ
KCFhcmd1bWVudHMpKQogICAgICAgICByZXR1cm47CisKKyAgICBsb2dNZXNzYWdlKGNvbm5lY3Rp
b24sIFQ6Om5hbWUoKSwgKmFyZ3VtZW50cyk7CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5l
Y3Rpb24sIFdURk1vdmUoKmFyZ3VtZW50cyksIG9iamVjdCwgZnVuY3Rpb24pOwogfQogCkBAIC0x
MzgsOCArMjIwLDEwIEBAIGJvb2wgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9
IFtyZXBseUVuY29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rpb24gPSBtYWtl
UmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICBsb2dS
ZXBseShjb25uZWN0aW9uLCBUOjpuYW1lKCksIGFyZ3MuLi4pOwogICAgICAgICBUOjpzZW5kKFdU
Rk1vdmUocmVwbHlFbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAg
fTsKKyAgICBsb2dNZXNzYWdlKGNvbm5lY3Rpb24sIFQ6Om5hbWUoKSwgKmFyZ3VtZW50cyk7CiAg
ICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTE1Myw4ICsyMzcsMTAgQEAgYm9vbCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5l
Y3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGUKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIAogICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFu
ZGxlciA9IFtyZXBseUVuY29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rpb24g
PSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAg
ICBsb2dSZXBseShjb25uZWN0aW9uLCBUOjpuYW1lKCksIGFyZ3MuLi4pOwogICAgICAgICBUOjpz
ZW5kKFdURk1vdmUocmVwbHlFbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7
CiAgICAgfTsKKyAgICBsb2dNZXNzYWdlKGNvbm5lY3Rpb24sIFQ6Om5hbWUoKSwgKmFyZ3VtZW50
cyk7CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUoKmFyZ3VtZW50
cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTE3Miw4ICsyNTgsMTAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlU3lu
Y2hyb25vdXMoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIERlY29kZXIm
IGQKICAgICAgICAgcmV0dXJuOwogCiAgICAgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBs
ZXRpb25IYW5kbGVyID0gW3N5bmNSZXF1ZXN0SUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5l
Y3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICBsb2dSZXBseShjb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCksIFQ6Om5hbWUoKSwgYXJncy4uLik7CiAgICAgICAgIGNvbm5l
Y3Rpb24tPnNlbmRTeW5jUmVwbHk8VD4oc3luY1JlcXVlc3RJRCwgYXJncy4uLik7CiAgICAgfTsK
KyAgICBsb2dNZXNzYWdlKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBUOjpuYW1lKCksICphcmd1
bWVudHMpOwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKQEAgLTE5Miw4
ICsyODAsMTAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRgogCiAgICAgdHlwZW5hbWUgVDo6QXN5
bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IHsgW2xpc3RlbmVySUQgPSAqbGlzdGVuZXJJRCwg
Y29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJs
ZSB7CiAgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oVDo6YXN5
bmNNZXNzYWdlUmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOworICAgICAgICBsb2dSZXBseShjb25u
ZWN0aW9uLCBUOjpuYW1lKCksIGFyZ3MuLi4pOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5j
b2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH0sIFQ6OmNhbGxiYWNr
VGhyZWFkIH07CisgICAgbG9nTWVzc2FnZShjb25uZWN0aW9uLCBUOjpuYW1lKCksICphcmd1bWVu
dHMpOwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKQEAgLTIxMiw4ICsz
MDIsMTAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwKIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5j
UmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSB7IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVySUQsIGNv
bm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUg
ewogICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KFQ6OmFzeW5j
TWVzc2FnZVJlcGx5TmFtZSgpLCBsaXN0ZW5lcklEKTsKKyAgICAgICAgbG9nUmVwbHkoY29ubmVj
dGlvbiwgVDo6bmFtZSgpLCBhcmdzLi4uKTsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29k
ZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9LCBUOjpjYWxsYmFja1Ro
cmVhZCB9OworICAgIGxvZ01lc3NhZ2UoY29ubmVjdGlvbiwgVDo6bmFtZSgpLCAqYXJndW1lbnRz
KTsKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZSgqYXJndW1lbnRz
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDM5MWFkMzE4NjRmZmY5MWZiY2M2MDNjY2I2MzJl
MDBhMWE0MmIxOGMuLmM5ZWNhOGMyODFiMjAyYWNjYjM5M2FhODFjN2VmNzM2M2JjNWMyNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC01Niw2ICs1Niw3IEBAIGV4dGVybiAiQyIgewog
ICAgIE0oRnVsbHNjcmVlbikgXAogICAgIE0oR2FtZXBhZCkgXAogICAgIE0oSVBDKSBcCisgICAg
TShJUENNZXNzYWdlcykgXAogICAgIE0oSVRQRGVidWcpIFwKICAgICBNKEljb25EYXRhYmFzZSkg
XAogICAgIE0oSW1hZ2VzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQppbmRleCBlNzI2M2UxMmViZDljNjQ0ZDkzMjVjODE1YzFiODY4NTYxMTkxMDA5Li5mZDgxNWJk
ZTE0NjcwNTcwZWZmMzAxYmI4NDIzM2IyYTIxZWQxMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTU2NiwxNyArNTY2LDE3IEBAIGRlZiBhc3luY19tZXNz
YWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgZGlzcGF0Y2hfZnVuY3Rpb24g
PSAnaGFuZGxlTWVzc2FnZScKICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRU
UklCVVRFKToKICAgICAgICAgZGlzcGF0Y2hfZnVuY3Rpb24gKz0gJ0FzeW5jJwotICAgICAgICBk
aXNwYXRjaF9mdW5jdGlvbl9hcmdzLmluc2VydCgwLCAnY29ubmVjdGlvbicpCiAKICAgICBpZiBt
ZXNzYWdlLmhhc19hdHRyaWJ1dGUoV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUpOgotICAgICAg
ICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKLSAgICAgICAgICAg
IGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdXYW50c0Nvbm5lY3Rpb24nCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbl9hcmdzLmluc2VydCgwLCAnY29ubmVjdGlvbicp
CisgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdXYW50c0Nvbm5lY3Rpb24nCisKKyAgICBj
b25uZWN0aW9uID0gJ2Nvbm5lY3Rpb24nCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShT
VFJFQU1fQVRUUklCVVRFKToKKyAgICAgICAgY29ubmVjdGlvbiA9ICdjb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKScKIAogICAgIHJlc3VsdCA9IFtdCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OiVzOjolczo6bmFtZSgpKVxuJyAlIChy
ZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAg
cmV0dXJuIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5j
dGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oZGlzcGF0Y2hfZnVu
Y3Rpb25fYXJncykpKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIElQQzo6JXM8
TWVzc2FnZXM6OiVzOjolcz4oJXMsICVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2Vp
dmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgY29ubmVjdGlvbiwgJywgJy5qb2luKGRpc3BhdGNoX2Z1
bmN0aW9uX2FyZ3MpKSkKICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcnLmpvaW4o
cmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCiAKIApAQCAtNTg0LDEyICs1ODQsMTEgQEAgZGVm
IHN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgIGRpc3BhdGNo
X2Z1bmN0aW9uID0gJ2hhbmRsZU1lc3NhZ2UnCiAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRl
KFNZTkNIUk9OT1VTX0FUVFJJQlVURSk6CiAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdT
eW5jaHJvbm91cycKLSAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFdBTlRTX0NPTk5F
Q1RJT05fQVRUUklCVVRFKToKLSAgICAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdXYW50
c0Nvbm5lY3Rpb24nCiAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVU
RSk6CiAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdBc3luYycKKyAgICBpZiBtZXNzYWdl
Lmhhc19hdHRyaWJ1dGUoV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUpOgorICAgICAgICBkaXNw
YXRjaF9mdW5jdGlvbiArPSAnV2FudHNDb25uZWN0aW9uJwogCi0gICAgd2FudHNfY29ubmVjdGlv
biA9IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSkKICAgICBtYXliZV9y
ZXBseV9lbmNvZGVyID0gIiwgKnJlcGx5RW5jb2RlciIKICAgICBpZiByZWNlaXZlci5oYXNfYXR0
cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgogICAgICAgICBtYXliZV9yZXBseV9lbmNvZGVyID0g
JycKQEAgLTU5OCw3ICs1OTcsNyBAQCBkZWYgc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZl
ciwgbWVzc2FnZSk6CiAKICAgICByZXN1bHQgPSBbXQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSlcbicg
JSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAgICByZXN1bHQuYXBwZW5kKCcgICAg
ICAgIHJldHVybiBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzZGVjb2RlciVzLCB0aGlzLCAm
JXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1l
LCAnY29ubmVjdGlvbiwgJyBpZiB3YW50c19jb25uZWN0aW9uIGVsc2UgJycsIG1heWJlX3JlcGx5
X2VuY29kZXIsIGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKKyAgICByZXN1
bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KGNvbm5l
Y3Rpb24sIGRlY29kZXIlcywgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJl
Y2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgbWF5YmVfcmVwbHlfZW5jb2RlciwgaGFuZGxlcl9m
dW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQogICAgIHJldHVybiBzdXJyb3VuZF9pbl9jb25k
aXRpb24oJycuam9pbihyZXN1bHQpLCBtZXNzYWdlLmNvbmRpdGlvbikKIAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoQ1ZQaXhlbEJ1ZmZl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoQ1ZQaXhlbEJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKaW5kZXggOTgwZWI2NzY4
ZmRjYWE5MDAyOGI5MjZiM2ZkZmVlYzkzZGFjN2I3My4uNWNjYjcwMmVkZGIxZGVlYWVjOTVhOTAx
YzlhMzI2Y2ExNDYyZWNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aENWUGl4ZWxCdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhDVlBpeGVsQnVmZmVyTWVz
c2FnZVJlY2VpdmVyLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFRlc3RXaXRoQ1ZQaXhlbEJ1
ZmZlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OgogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwogI2lmIFVTRShBVkZP
VU5EQVRJT04pCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhDVlBpeGVsQnVmZmVyOjpTZW5kQ1ZQaXhlbEJ1ZmZlcjo6bmFtZSgpKQotICAgICAgICBy
ZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aENWUGl4ZWxCdWZmZXI6
OlNlbmRDVlBpeGVsQnVmZmVyPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhDVlBpeGVsQnVmZmVy
OjpzZW5kQ1ZQaXhlbEJ1ZmZlcik7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoQ1ZQaXhlbEJ1ZmZlcjo6U2VuZENWUGl4ZWxCdWZmZXI+KGNvbm5l
Y3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aENWUGl4ZWxCdWZmZXI6OnNlbmRDVlBpeGVs
QnVmZmVyKTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVT
RURfUEFSQU0oZGVjb2Rlcik7CkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgVGVzdFdpdGhDVlBpeGVs
QnVmZmVyOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAjaWYgVVNFKEFW
Rk9VTkRBVElPTikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpU
ZXN0V2l0aENWUGl4ZWxCdWZmZXI6OlJlY2VpdmVDVlBpeGVsQnVmZmVyOjpuYW1lKCkpCi0gICAg
ICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoQ1ZQaXhlbEJ1
ZmZlcjo6UmVjZWl2ZUNWUGl4ZWxCdWZmZXI+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMs
ICZUZXN0V2l0aENWUGl4ZWxCdWZmZXI6OnJlY2VpdmVDVlBpeGVsQnVmZmVyKTsKKyAgICAgICAg
cmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhDVlBpeGVsQnVmZmVy
OjpSZWNlaXZlQ1ZQaXhlbEJ1ZmZlcj4oY29ubmVjdGlvbiwgZGVjb2RlciwgKnJlcGx5RW5jb2Rl
ciwgdGhpcywgJlRlc3RXaXRoQ1ZQaXhlbEJ1ZmZlcjo6cmVjZWl2ZUNWUGl4ZWxCdWZmZXIpOwog
I2VuZGlmCiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShk
ZWNvZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhJZk1lc3NhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VSZWNlaXZlci5jcHAKaW5k
ZXggZjI5ZDNmYzkyZmM3YzUxOWY4NmI2YzZjZTIyZjMyZDZlNzdmNmFjNy4uYzgyZjA1NGEzMjVi
MDY2NTMzMmM5ZjcwZTdlNWY3NmJjNzI1OTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VSZWNlaXZlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2Fn
ZU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTQyLDExICs0MiwxMSBAQCB2b2lkIFRlc3RXaXRoSWZN
ZXNzYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjbwogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2FkVVJMOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2FkVVJMPihkZWNv
ZGVyLCB0aGlzLCAmVGVzdFdpdGhJZk1lc3NhZ2U6OmxvYWRVUkwpOworICAgICAgICByZXR1cm4g
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTD4o
Y29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoSWZNZXNzYWdlOjpsb2FkVVJMKTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTDo6bmFtZSgpKQotICAgICAg
ICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6
TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoSWZNZXNzYWdlOjpsb2FkVVJMKTsKKyAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhJZk1lc3Nh
Z2U6OkxvYWRVUkw+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aElmTWVzc2Fn
ZTo6bG9hZFVSTCk7CiAjZW5kaWYKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAg
VU5VU0VEX1BBUkFNKGRlY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aEltYWdlRGF0YU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZVJl
Y2VpdmVyLmNwcAppbmRleCBhOTk1NjIyMGYwMWFkMjIzZGMzYmJjZGQ1YjA2NmUwMDdiOTJhM2Yz
Li4xZTE5ODcxMDFhNDY0MWQ5NjBhMGNmZDYxY2ZhMzBlYzczNmFjZmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoSW1hZ2VEYXRhTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMzksNyArMzksNyBAQCB2b2lk
IFRlc3RXaXRoSW1hZ2VEYXRhOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjbwogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRoSW1hZ2VEYXRhOjpTZW5kSW1hZ2VEYXRhOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoSW1hZ2VEYXRhOjpTZW5kSW1hZ2VEYXRh
PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhJbWFnZURhdGE6OnNlbmRJbWFnZURhdGEpOworICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aEltYWdlRGF0
YTo6U2VuZEltYWdlRGF0YT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoSW1h
Z2VEYXRhOjpzZW5kSW1hZ2VEYXRhKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAg
ICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCkBA
IC01Myw3ICs1Myw3IEBAIGJvb2wgVGVzdFdpdGhJbWFnZURhdGE6OmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6CiB7CiAgICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhJbWFnZURhdGE6OlJlY2VpdmVJbWFnZURhdGE6Om5hbWUo
KSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhJ
bWFnZURhdGE6OlJlY2VpdmVJbWFnZURhdGE+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMs
ICZUZXN0V2l0aEltYWdlRGF0YTo6cmVjZWl2ZUltYWdlRGF0YSk7CisgICAgICAgIHJldHVybiBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoSW1hZ2VEYXRhOjpSZWNlaXZlSW1h
Z2VEYXRhPihjb25uZWN0aW9uLCBkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhJbWFnZURhdGE6OnJlY2VpdmVJbWFnZURhdGEpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0
aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgVU5VU0VEX1BBUkFNKHJlcGx5
RW5jb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZVJlY2Vp
dmVyLmNwcAppbmRleCA2NDJjOWQwNzkxY2E3ZjljYTczYjhkZTEyMjdkMTM5Njk5YzcwNjNlLi5i
MWYxM2MyYjMzOTA2ZGMxNDk3ZGQxN2U3ZWFhMjEyMTJjMGMwNDBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTg0LDUwICs4NCw1
MCBAQCB2b2lkIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRpZFJlY2VpdmVUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyTWVzc2FnZShJUEM6OkNvbm5lYwogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRVUkw6Om5hbWUoKSkKLSAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmxvYWRVUkwp
OworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjpMb2FkVVJMPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6bG9hZFVSTCk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRTb21ldGhpbmc+
KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpsb2FkU29tZXRoaW5nKTsK
KyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcjo6TG9hZFNvbWV0aGluZz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmxvYWRTb21ldGhpbmcpOwogI2VuZGlmCiAjaWYgKEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhF
Ul9NRVNTQUdFX0NPTkRJVElPTikpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VG91Y2hFdmVudDo6bmFtZSgpKQotICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6dG91Y2hFdmVudCk7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRvdWNoRXZlbnQ+KGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0b3VjaEV2ZW50KTsKICNlbmRpZgog
I2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYm
IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkFkZEV2ZW50OjpuYW1l
KCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXI6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcjo6YWRkRXZlbnQpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpBZGRFdmVudD4oY29ubmVjdGlvbiwgZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmFkZEV2ZW50KTsKICNlbmRpZgog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5h
bWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRlY29kZXIsIHRoaXMsICZUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyOjpsb2FkU29tZXRoaW5nRWxzZSk7CisgICAgICAgIHJldHVybiBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRT
b21ldGhpbmdFbHNlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcjo6bG9hZFNvbWV0aGluZ0Vsc2UpOwogI2VuZGlmCiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3Nh
Z2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbik7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbj4oY29u
bmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbik7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Q2xvc2U6Om5hbWUoKSkKLSAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpjbG9zZSk7Cisg
ICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXI6OkNsb3NlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcjo6Y2xvc2UpOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1l
KCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXI6OlByZWZlcmVuY2VzRGlkQ2hhbmdlPihkZWNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhMZWdhY3lSZWNlaXZlcjo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOworICAgICAgICByZXR1
cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpQ
cmVmZXJlbmNlc0RpZENoYW5nZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXI6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKTsKICAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZW5kRG91
YmxlQW5kRmxvYXQ6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2VuZERvdWJsZUFuZEZsb2F0PihkZWNv
ZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6c2VuZERvdWJsZUFuZEZsb2F0KTsK
KyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcjo6U2VuZERvdWJsZUFuZEZsb2F0Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6c2VuZERvdWJsZUFuZEZsb2F0KTsKICAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
OjpTZW5kSW50czo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZW5kSW50cz4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnNlbmRJbnRzKTsKKyAgICAgICAgcmV0dXJuIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2VuZEludHM+
KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpzZW5k
SW50cyk7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6Om5hbWUoKSkKLSAgICAg
ICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7CisgICAgICAgIHJldHVybiBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlc3RQ
YXJhbWV0ZXJBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjo6dGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOwogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlbXBs
YXRlVGVzdDo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0ZW1wbGF0ZVRlc3QpOworICAgICAgICByZXR1cm4g
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUZW1w
bGF0ZVRlc3Q+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjp0ZW1wbGF0ZVRlc3QpOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgpKQot
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpTZXRWaWRlb0xheWVySUQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpzZXRWaWRlb0xheWVySUQpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZXRWaWRlb0xheWVySUQ+
KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpzZXRW
aWRlb0xheWVySUQpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRpZENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik7CiAjZW5kaWYKICNpZiBFTkFC
TEUoREVQUkVDQVRFRF9GRUFUVVJFKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRlcHJlY2F0ZWRPcGVyYXRpb246Om5h
bWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOworICAgICAgICByZXR1
cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpE
ZXByZWNhdGVkT3BlcmF0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7CiAjZW5kaWYKICNpZiBFTkFCTEUo
RVhQRVJJTUVOVEFMX0ZFQVRVUkUpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpu
YW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXI6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7CisgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7CiAjZW5kaWYKICAg
ICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwpA
QCAtMTQyLDE4ICsxNDIsMTggQEAgYm9vbCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpkaWRSZWNl
aXZlU3luY1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlKElQQzo6Q28KIHsKICAgICBhdXRv
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpDcmVhdGVQbHVnaW46
Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhMZWdhY3lSZWNlaXZlcjo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Y3JlYXRlUGx1Z2luKTsKKyAgICAgICAg
cmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6Q3JlYXRlUGx1Z2luPihjb25uZWN0aW9uLCBkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Y3JlYXRlUGx1Z2luKTsKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpSdW5K
YXZhU2NyaXB0QWxlcnQ6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6UnVuSmF2YVNjcmlwdEFsZXJ0Pihk
ZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6cnVu
SmF2YVNjcmlwdEFsZXJ0KTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6UnVuSmF2YVNjcmlwdEFsZXJ0Pihjb25uZWN0
aW9uLCBkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpHZXRQbHVnaW5zOjpuYW1lKCkpCi0g
ICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXI6OkdldFBsdWdpbnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyOjpnZXRQbHVnaW5zKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6R2V0UGx1Z2lucz4o
Y29ubmVjdGlvbiwgZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXI6OmdldFBsdWdpbnMpOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpuYW1lKCkpCiAgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91
czxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpU
ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpCiAgICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdlczo6VGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcjo6VGVzdE11bHRpcGxlQXR0cmlidXRlcz4oY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6dGVzdE11bHRpcGxl
QXR0cmlidXRlcyk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkludGVycHJldEtleUV2
ZW50OjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVw
bHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6aW50ZXJwcmV0S2V5RXZl
bnQpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpJbnRlcnByZXRLZXlFdmVudD4oY29ubmVjdGlvbiwgZGVjb2Rlciwg
KnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmludGVycHJldEtl
eUV2ZW50KTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVT
RURfUEFSQU0oZGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlUmVjZWl2
ZXIuY3BwCmluZGV4IDJkY2E5ZDkyMmFiNjgxZDJkODM2YzU4OWUxMGMwMWYwOTM5NGJhMGYuLmQ1
NmIwOTM0MjZhMGM3ZDM5ZDRlMmE4Y2JjMmU2ZTNkYjlhMWE5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlUmVj
ZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHZvaWQgVGVz
dFdpdGhTZW1hcGhvcmU6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyk7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhT
ZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU+KGRl
Y29kZXIsIHRoaXMsICZUZXN0V2l0aFNlbWFwaG9yZTo6c2VuZFNlbWFwaG9yZSk7CisgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpT
ZW5kU2VtYXBob3JlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTZW1hcGhv
cmU6OnNlbmRTZW1hcGhvcmUpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7CiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKQEAgLTUw
LDcgKzUwLDcgQEAgYm9vbCBUZXN0V2l0aFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjoKIHsKICAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFwaG9yZTo6bmFtZSgpKQot
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFw
aG9yZTo6UmVjZWl2ZVNlbWFwaG9yZT4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRl
c3RXaXRoU2VtYXBob3JlOjpyZWNlaXZlU2VtYXBob3JlKTsKKyAgICAgICAgcmV0dXJuIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhv
cmU+KGNvbm5lY3Rpb24sIGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aFNl
bWFwaG9yZTo6cmVjZWl2ZVNlbWFwaG9yZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24p
OwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNv
ZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAK
aW5kZXggNTY4ODBhYzE4YzdjOTZiODgwZDhlNmQyZDY3OGFmYjI3ZGViNDU4NC4uYjc0Y2RmMTU4
ZjJkY2U3MWRiYzg4ZWY5MjJiZGI2YzIzODlkOGRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdm9pZCBUZXN0
V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkQKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0
cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcjo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVh
bUJ1ZmZlcj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpzZW5kU3RyZWFt
QnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI+KGNvbm5lY3Rpb24sIGRlY29kZXIs
IHRoaXMsICZUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6c2VuZFN0cmVhbUJ1ZmZlcik7CiAgICAgVU5V
U0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICNpZiBF
TkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVy
LmNwcAppbmRleCBkZDZjMzQxZTBiZDU2NWMyN2JjOTk5ODA4MTU1MmYwZTMxMzIzYjYwLi5kZDJi
NjFiYzM0MTE4Y2M2YmIwNWM2ODc0YWIwMjgyMWI4ZjFiOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMzksMjAgKzM5LDIwIEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogdm9pZCBUZXN0V2l0aFN0cmVhbTo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nPihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmcpOworICAgICAgICByZXR1cm4gSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZz4oY29ubmVj
dGlvbi5jb25uZWN0aW9uKCksIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0
cmluZyk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRNYWNoU2VuZFJpZ2h0OjpuYW1lKCkp
Ci0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3Ry
ZWFtOjpTZW5kTWFjaFNlbmRSaWdodD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtOjpz
ZW5kTWFjaFNlbmRSaWdodCk7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kTWFjaFNlbmRSaWdodD4oY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCksIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZE1hY2hTZW5kUmln
aHQpOwogI2VuZGlmCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6Om5hbWUoKSkKLSAgICAgICAg
cmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRT
dHJpbmdTeW5jaHJvbml6ZWQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0
cmluZ1N5bmNocm9uaXplZCk7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkPihjb25uZWN0aW9u
LCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmdTeW5jaHJvbml6ZWQp
OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpSZWNlaXZlTWFjaFNlbmRSaWdodDo6bmFtZSgpKQot
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVh
bTo6UmVjZWl2ZU1hY2hTZW5kUmlnaHQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6
cmVjZWl2ZU1hY2hTZW5kUmlnaHQpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6UmVjZWl2ZU1hY2hTZW5kUmlnaHQ+KGNvbm5lY3Rp
b24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6cmVjZWl2ZU1hY2hTZW5kUmlnaHQp
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRBbmRSZWNlaXZlTWFjaFNlbmRS
aWdodDo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpUZXN0V2l0aFN0cmVhbTo6U2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0PihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodCk7CisgICAg
ICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpT
ZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZU
ZXN0V2l0aFN0cmVhbTo6c2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0KTsKICNlbmRpZgogICAg
IFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Vw
ZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAKaW5kZXggNTU5YzAz
MmQ0M2RiYTNlZjAyYmM4ODg0NGNhYTI3OGUyZmUyZmM4Zi4uZTNkYmE5NWZmNmUwOTk5ZmNlMGNl
M2U5Zjg2YTYyZGI3ZDI5MjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2Fn
ZVJlY2VpdmVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgVGVzdFdpdGhTdXBlcmNsYXNz
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
CiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpMb2Fk
VVJMOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoU3VwZXJjbGFzczo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3Vw
ZXJjbGFzczo6bG9hZFVSTCk7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6TG9hZFVSTD4oY29ubmVjdGlvbiwgZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6bG9hZFVSTCk7CiAjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2U6Om5hbWUoKSkKICAgICAgICAgcmV0dXJuIElQ
Qzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RB
c3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN1cGVyY2xh
c3M6OnRlc3RBc3luY01lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlUmVjZWl2ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNN
ZXNzYWdlUmVjZWl2ZXIuY3BwCmluZGV4IDMyYzA2MTY0NWZhYjNlOTY4NzgzMWQzOTRiY2Q4OGY4
ZjJiZTE5NmMuLjNkMjE4YWEwODg3MjEwMjUxYTYwMzZhYWFlYzJmMWFjN2M0ZDNjNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTg0
LDUwICs4NCw1MCBAQCB2b2lkIFRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OgogewogICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFVSTDo6bmFtZSgpKQotICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6Omxv
YWRVUkwpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OkxvYWRVUkw+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmxvYWRVUkwpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0aGlu
Zz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6bG9hZFNvbWV0aGluZyk7
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6TG9hZFNvbWV0aGluZz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRl
c3RXaXRob3V0QXR0cmlidXRlczo6bG9hZFNvbWV0aGluZyk7CiAjZW5kaWYKICNpZiAoRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVS
X01FU1NBR0VfQ09ORElUSU9OKSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRvdWNoRXZlbnQ6Om5hbWUoKSkKLSAgICAg
ICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0
b3VjaEV2ZW50KTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUb3VjaEV2ZW50Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0b3VjaEV2ZW50KTsKICNlbmRpZgogI2lmIChF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6QWRkRXZlbnQ6Om5hbWUoKSkKLSAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpBZGRFdmVudD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6
YWRkRXZlbnQpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkFkZEV2ZW50Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjphZGRFdmVudCk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkKLSAgICAg
ICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmli
dXRlczo6bG9hZFNvbWV0aGluZ0Vsc2UpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkxvYWRTb21ldGhpbmdFbHNlPihj
b25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpsb2FkU29t
ZXRoaW5nRWxzZSk7CiAjZW5kaWYKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6
bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbj4oZGVjb2RlciwgdGhp
cywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKTsKKyAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRo
aXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7CiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpDbG9zZTo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAm
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpjbG9zZSk7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6Q2xvc2U+KGNvbm5lY3Rp
b24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmNsb3NlKTsKICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UHJlZmVyZW5jZXNE
aWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnByZWZlcmVu
Y2VzRGlkQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpQcmVmZXJlbmNlc0RpZENoYW5nZT4oY29ubmVjdGlv
biwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6cHJlZmVyZW5jZXNEaWRD
aGFuZ2UpOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRob3V0QXR0cmlidXRlczo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpCi0gICAgICAgIHJl
dHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6
U2VuZERvdWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpzZW5kRG91YmxlQW5kRmxvYXQpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmREb3VibGVBbmRGbG9hdD4oY29u
bmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6c2VuZERvdWJs
ZUFuZEZsb2F0KTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmRJbnRzOjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6U2VuZElu
dHM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnNlbmRJbnRzKTsKKyAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpTZW5kSW50cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0
QXR0cmlidXRlczo6c2VuZEludHMpOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6
Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2RlciwgdGhp
cywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6dGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOworICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7CiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpUZW1wbGF0ZVRlc3Q6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZW1wbGF0ZVRlc3Q+KGRlY29k
ZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnRlbXBsYXRlVGVzdCk7CisgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6VGVtcGxhdGVUZXN0Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjp0ZW1wbGF0ZVRlc3QpOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6U2V0VmlkZW9MYXllcklEOjpuYW1l
KCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6U2V0VmlkZW9MYXllcklEPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhv
dXRBdHRyaWJ1dGVzOjpzZXRWaWRlb0xheWVySUQpOworICAgICAgICByZXR1cm4gSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNldFZpZGVvTGF5ZXJJ
RD4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6c2V0
VmlkZW9MYXllcklEKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKQotICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpkaWRDcmVh
dGVXZWJQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3Nh
Z2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKICNlbmRpZgogI2lmIEVOQUJMRShE
RVBSRUNBVEVEX0ZFQVRVUkUpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkp
Ci0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGVwcmVjYXRl
ZE9wZXJhdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmli
dXRlczo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7CiAjZW5kaWYKICNpZiBFTkFCTEUoRVhQRVJJTUVO
VEFMX0ZFQVRVUkUpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUoKSkKLSAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpFeHBlcmltZW50YWxPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RXhwZXJpbWVu
dGFsT3BlcmF0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpleHBlcmltZW50YWxPcGVyYXRpb24pOwogI2VuZGlmCiAgICAgVU5VU0VEX1BBUkFN
KGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKQEAgLTE0MiwxOCArMTQy
LDE4IEBAIGJvb2wgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyk7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpDcmVhdGVQbHVnaW46Om5hbWUoKSkKLSAgICAg
ICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpDcmVhdGVQbHVnaW4+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0
aG91dEF0dHJpYnV0ZXM6OmNyZWF0ZVBsdWdpbik7CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6Q3JlYXRlUGx1Z2luPihj
b25uZWN0aW9uLCBkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpjcmVhdGVQbHVnaW4pOwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpuYW1l
KCkpCi0gICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpydW5KYXZhU2NyaXB0QWxlcnQpOworICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OlJ1bkphdmFTY3JpcHRBbGVydD4oY29ubmVjdGlvbiwgZGVjb2RlciwgKnJlcGx5RW5j
b2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsK
ICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0
dHJpYnV0ZXM6OkdldFBsdWdpbnM6Om5hbWUoKSkKLSAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpHZXRQbHVnaW5zPihkZWNv
ZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpnZXRQbHVn
aW5zKTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpHZXRQbHVnaW5zPihjb25uZWN0aW9uLCBkZWNvZGVyLCAqcmVwbHlF
bmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpnZXRQbHVnaW5zKTsKICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpCiAgICAgICAgIHJldHVybiBJ
UEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpnZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbik7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpCiAg
ICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlv
bjxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
Pihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0
dHJpYnV0ZXM6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OkludGVycHJldEtleUV2ZW50OjpuYW1lKCkpCi0gICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6SW50ZXJwcmV0S2V5
RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OmludGVycHJldEtleUV2ZW50KTsKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpJbnRlcnByZXRLZXlFdmVudD4oY29u
bmVjdGlvbiwgZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmli
dXRlczo6aW50ZXJwcmV0S2V5RXZlbnQpOwogI2VuZGlmCiAgICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAzZGJhYmIxYzcxM2FiOTgy
NjEwYWFjYjg2ODc3MTQxNTc3ZWY4YzdkLi5lNjI1OGZiMDFiNmJiZTQ0ZjQ4M2E2YjkyMDQyZmQ3
OTExMzEwZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCkBAIC00NzksOTAgKzQ3OSw5MCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5
VG9rZW46Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuPihkZWNvZGVy
LCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2li
aWxpdHlUb2tlbik7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4+KGNvbm5lY3Rpb24s
IGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNz
QWNjZXNzaWJpbGl0eVRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCaW5kQWNjZXNzaWJpbGl0eVRyZWU6
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6QmluZEFjY2Vzc2liaWxpdHlUcmVlPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmJpbmRBY2Nlc3NpYmlsaXR5VHJlZSk7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCaW5kQWNjZXNzaWJpbGl0eVRyZWU+KGNvbm5l
Y3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6YmluZEFjY2Vzc2li
aWxpdHlUcmVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCiAgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2dEaWFnbm9z
dGljTWVzc2FnZUZyb21XZWJQcm9jZXNzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlRnJvbVdl
YlByb2Nlc3M+KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9nRGlhZ25v
c3RpY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyk7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZUZyb21XZWJQcm9jZXNz
Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvZ0Rp
YWdub3N0aWNNZXNzYWdlRnJvbVdlYlByb2Nlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhFbmhhbmNlZFByaXZhY3lGcm9tV2ViUHJvY2Vzczo6
bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhFbmhhbmNlZFByaXZhY3lGcm9tV2ViUHJvY2Vz
cz4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2dEaWFnbm9zdGljTWVz
c2FnZVdpdGhFbmhhbmNlZFByaXZhY3lGcm9tV2ViUHJvY2Vzcyk7CisgICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhFbmhhbmNlZFByaXZhY3lGcm9tV2ViUHJvY2Vzcz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhp
cywgJlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhFbmhhbmNl
ZFByaXZhY3lGcm9tV2ViUHJvY2Vzcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlRGljdGlvbmFyeUZyb21XZWJQcm9jZXNzOjpuYW1lKCkp
IHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okxv
Z0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlRGljdGlvbmFyeUZyb21XZWJQcm9jZXNzPihkZWNv
ZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlRGljdGlvbmFyeUZyb21XZWJQcm9jZXNzKTsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
RGljdGlvbmFyeUZyb21XZWJQcm9jZXNzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlRGljdGlvbmFy
eUZyb21XZWJQcm9jZXNzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnRVUkxTY2hl
bWVUYXNrOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlN0YXJ0VVJMU2NoZW1lVGFzaz4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lv
bmFsUGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZVRhc2spOworICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnRVUkxTY2hlbWVUYXNrPihjb25uZWN0
aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OnN0YXJ0VVJMU2NoZW1l
VGFzayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25Bc3luYzo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmM+
KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jKTsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYz4oY29u
bmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZT4oZGVj
b2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSk7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zp
c2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWU6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ2hh
bmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZT4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKTsKKyAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENoYW5nZVByb3Zpc2lvbmFs
VVJMRm9yRnJhbWU+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQ
cm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOjpuYW1lKCkpIHsKLSAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKTsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdD4oZGVj
b2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QpOworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFtZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVNYWluRnJh
bWU+KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZy
YW1lKTsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZENyZWF0ZU1haW5GcmFtZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlByb3Zpc2lv
bmFsUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOjpuYW1lKCkpIHsKLSAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWU+KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU+KGNv
bm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29t
bWl0TG9hZEZvckZyYW1lOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZT4oZGVjb2RlciwgdGhp
cywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOworICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9h
ZEZvckZyYW1lPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOjpuYW1lKCkp
IHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lPihkZWNvZGVy
LCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdD4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lv
bmFsUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpOworICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3
NSwxNCArNTc1LDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpECiAKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJhbWU6Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZSk7CisgICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDb250ZW50Rmls
dGVyRGlkQmxvY2tMb2FkRm9yRnJhbWU+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZQcm92
aXNpb25hbFBhZ2VQcm94eTo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BB
R0FUSU9OX1ZJRVcpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVBy
b3BhZ2F0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb24+KGRlY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3Jl
YXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbik7CisgICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVDb250
ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uPihjb25uZWN0aW9uLCBkZWNv
ZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZUNvbnRleHRJbldlYlBy
b2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
I2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>