<?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>239154</bug_id>
          
          <creation_ts>2022-04-12 13:31:13 -0700</creation_ts>
          <short_desc>[CoreIPC][WebGL] Heap Buffer Overflow from CoreIPC WebGL MultiDraw* due to discarded firsts/counts length in favour of attacker controlled drawcount</short_desc>
          <delta_ts>2022-04-21 23:09:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Cunningham">johncunningham</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-feeder</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gavin.p</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1860865</commentid>
    <comment_count>0</comment_count>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2022-04-12 13:31:13 -0700</bug_when>
    <thetext>multiDraw*ANGLE do not validate that the drawcount parameter does not exceed the length of the buffers passed in, where drawcount is later used as the maximum value to iterate through these buffers. While normal entry points to these functions do validate the drawcount, if an attacker gained control of the IPC and was able to send in arbitrary buffers + drawcounts, it could lead to out of bounds access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860866</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-12 13:31:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/91645934&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860872</commentid>
    <comment_count>2</comment_count>
      <attachid>457412</attachid>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2022-04-12 13:47:21 -0700</bug_when>
    <thetext>Created attachment 457412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860877</commentid>
    <comment_count>3</comment_count>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2022-04-12 13:59:27 -0700</bug_when>
    <thetext>Test is incoming, however, it&apos;s a bit tricky as it requires porting a year old fuzzing sample that uses the ipc test api, and a lot of it has changed. I have verified that if I removed the normal webgl validation, and change one of the existing webgl tests such that it gets to these functions with invalid drawcounts that would have exceeded the buffer sizes that it gets caught and corrected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861054</commentid>
    <comment_count>4</comment_count>
      <attachid>457412</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-13 01:08:52 -0700</bug_when>
    <thetext>Comment on attachment 457412
Patch

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

So we need to just remove drawcount, it is redundant.  Use the size of firsts, counts to deduct the draw count.

Move the auto-generated RemoteGraphicsContextGLProxy::multiDrawElementsANGLE to non-autogenerated
Implement RemoteGraphicsContextGLProxy::multiDrawElementsANGLE 
Implement RemoteGraphicsContextGL::multiDrawElementsANGLE 
 * Add the validation, assert and early return in here

Alternatively remove the drawcount and implement GCGLMultiSpan&lt;const GCGLsizei, const CGLint&gt; to obtain two arrays of equal length by design. This way we preserve the autogeneration.


For the IPC testing, you can see LayoutTests/ipc the general sequence of how to generate calls manually
However, it takes some doing to expose the IPC connection of a particular canvas, there&apos;s no example how to do it.

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:2844
&gt;  void GraphicsContextGLANGLE::multiDrawArraysANGLE(GCGLenum mode, GCGLSpan&lt;const GCGLint&gt; firsts, GCGLSpan&lt;const GCGLsizei&gt; counts, GCGLsizei drawcount)

so here just remove drawcount and have
ASSERT(firsts.size == counts.size);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861359</commentid>
    <comment_count>5</comment_count>
      <attachid>457585</attachid>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2022-04-13 18:55:53 -0700</bug_when>
    <thetext>Created attachment 457585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861374</commentid>
    <comment_count>6</comment_count>
      <attachid>457589</attachid>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2022-04-13 20:19:52 -0700</bug_when>
    <thetext>Created attachment 457589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861375</commentid>
    <comment_count>7</comment_count>
      <attachid>457590</attachid>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2022-04-13 20:22:44 -0700</bug_when>
    <thetext>Created attachment 457590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861437</commentid>
    <comment_count>8</comment_count>
      <attachid>457590</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-14 03:22:06 -0700</bug_when>
    <thetext>Comment on attachment 457590
Patch

need to implement the same thing for non-cocoa</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861438</commentid>
    <comment_count>9</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-14 03:24:46 -0700</bug_when>
    <thetext>Moving out of security, GPUP variant has not shipped anywhere. This is only a security problem for GPUP in case WP can run arbitrary code to select the arbitrary drawcount.

If WP variant has different threat model: if WP can already run arbitrary code to select arbitrary drawcount, it doesn&apos;t need an overflow in WP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861441</commentid>
    <comment_count>10</comment_count>
      <attachid>457590</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-14 04:00:04 -0700</bug_when>
    <thetext>Comment on attachment 457590
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsTypesGL.h:207
&gt; +        ASSERT(static_cast&lt;GCGLsizei&gt;(bufSize_) &gt;= 0);

this doesn&apos;t look good, e.g. we write generic code with size_t, and then out of the blue comes GCGLsizei cast.

If there&apos;s a IPC attack consideration, that needs to be handled at the IPC level, e.g. somewhere in the caller.

Alternatively if GCGLSpanTuple is something that is used to refer to data that will be sent to GL, and if GL uses GCGLsizei as the count, then the bufSize should be GCGLsizei..

&gt; Source/WebCore/platform/graphics/GraphicsTypesGL.h:211
&gt; +        : bufSize(std::min(data0_.size(), data1_.size()))

So this line doesn&apos;t make sense.
The contract is that GCGLSpanTuple is a tuple of arrays of same length.
Constructing such a tuple with arrays of not same length makes little sense, unless a programming error.
If it&apos;s a programming error, we typically catch them with the asserts.

If there&apos;s a IPC attack consideration, that needs to be handled at the IPC level, e.g. somewhere in the caller.

&gt; Source/WebCore/platform/graphics/GraphicsTypesGL.h:215
&gt; +        ASSERT(data0_.size() == data1_.size());

This explains the contract to the caller.

&gt; Source/WebCore/platform/graphics/GraphicsTypesGL.h:224
&gt; +        : bufSize(std::min({ data0_.size(), data1_.size(), minDataNSize }))

again, it&apos;s clearer to have one mode:
either it&apos;s correct to call with incompatible vectors
or it&apos;s incorrect to call with incompatible vectors

not that it&apos;s incorrect to call with incompatible vectors but it still works and arbitrary things happen.

&gt; Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:53
&gt; +    Vector&lt;S&gt; result;

this function maybe could be written as:
return { reinterpret_cast&lt;const S*&gt;(arrayReference.template data&lt;I&gt;()), arrayReference.size()); }

So it would get the reserveinitialcapacity call

&gt; Source/WebKit/Platform/IPC/ArgumentCoders.h:101
&gt; +        auto size = arrayReference.size();

UNLIKELY

&gt; Source/WebKit/Platform/IPC/ArgumentCoders.h:110
&gt; +        if (!decoder.decode(size))

UNLIKELY

&gt; Source/WebKit/Platform/IPC/ArgumentCoders.h:112
&gt; +        if (!size)

UNLIKELY

&gt; Source/WebKit/Platform/IPC/ArgumentCoders.h:138
&gt; +        if (!size)

UNLIKELY

&gt; Source/WebKit/Platform/IPC/ArgumentCoders.h:147
&gt; +        if (!decoder.decode(size))

UNLIKELY

&gt; Source/WebKit/Platform/IPC/ArgumentCoders.h:149
&gt; +        if (!size)

UNLIKELY

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:56
&gt; +        reinterpret_cast&lt;const int32_t*&gt;(spanTuple.data1),

needs the T1 cast

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:64
&gt; +        reinterpret_cast&lt;const int32_t*&gt;(spanTuple.data1),

Needs the T1 cast

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:65
&gt; +        reinterpret_cast&lt;const int32_t*&gt;(spanTuple.data2),

needs the T2 cast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862360</commentid>
    <comment_count>11</comment_count>
      <attachid>457590</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2022-04-18 16:28:43 -0700</bug_when>
    <thetext>Comment on attachment 457590
Patch

Would it be more straightforward to send the spans over IPC as specified by the web app, and verify that their size is &gt;= drawcount in GraphicsContextGLANGLE in the GPU process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863001</commentid>
    <comment_count>12</comment_count>
      <attachid>457999</attachid>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2022-04-20 11:33:31 -0700</bug_when>
    <thetext>Created attachment 457999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863011</commentid>
    <comment_count>13</comment_count>
      <attachid>458001</attachid>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2022-04-20 11:50:35 -0700</bug_when>
    <thetext>Created attachment 458001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863552</commentid>
    <comment_count>14</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-21 22:49:29 -0700</bug_when>
    <thetext>(In reply to Kenneth Russell from comment #11)
&gt; Comment on attachment 457590 [details]
&gt; Patch
&gt; 
&gt; Would it be more straightforward to send the spans over IPC as specified by
&gt; the web app, and verify that their size is &gt;= drawcount in
&gt; GraphicsContextGLANGLE in the GPU process?

The web app does not specify spans, it specifies
   (list, offset), (list, offset), drawcount.

We don&apos;t want to send the list as-is, naturally due to the case of big list, small drawcount.

So we anyway don&apos;t send anything as specified by the web app, at the moment.

I think it&apos;s better to use the type system to enforce that we send
 size_that_is_equal_to_data0size_and_data1size_and_drawcount, data0, data1

instead of 
 drawcount, data0size, data0, data1size, data1
where we ensure drawcount == data0size == data1size on the receiving side.


The API could change if we have the ability to do persistent no-copy client-side buffers in the IPC sometime in the future, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863555</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-21 23:09:49 -0700</bug_when>
    <thetext>Committed r293211 (249882@main): &lt;https://commits.webkit.org/249882@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458001.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457412</attachid>
            <date>2022-04-12 13:47:21 -0700</date>
            <delta_ts>2022-04-13 18:55:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239154-20220412134720.patch</filename>
            <type>text/plain</type>
            <size>5201</size>
            <attacher name="John Cunningham">johncunningham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlmNzQxY2Q1YjRhM2E0
MGU1Y2RmNjgyZWJhMzFlYWJkNGJjYzIyMi4uMzM1MWVkMmNmNzNiYzFjM2EzZWFkNjExZmQ2Mjgx
NzUwYjY2OTMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTA0LTEyICBKb2hu
IEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVmFsaWRh
dGUgdGhlIGRyYXdjb3VudCBhZ2FpbnN0IHRoZSBsZW5ndGggb2YgbXVsdGlkcmF3IGJ1ZmZlciBw
YXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzkxNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRh
dGVEcmF3Q291bnRXaXRoQnVmZmVyU2l6ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3RWxlbWVu
dHNBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKwogMjAyMi0wNC0xMSAgTmlrb2xhcyBaaW1t
ZXJtYW5uICA8bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbTEJTRV0gQWN0aXZh
dGUgU1ZHIHRyYW5zZm9ybSBzdXBwb3J0IHRocm91Z2ggbGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCmluZGV4IGZlMTg4NTRkNjMzMTczYTY4ZmJlMDJjZDhlZGFmYzcyZmZh
OGFmMzYuLmZkODI2NTEyMGJiYTI2YWQyMzM2YTQzNjEwMjE5NGEzM2ZmMjVlNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0yODMxLDEyICsyODMxLDIyIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTHVpbnQKICAgICBHTF9HZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFO
R0xFKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUsIG51
bGxwdHIsIHBhcmFtcy5kYXRhKTsKIH0KIAorc3RhdGljIGlubGluZSBHQ0dMc2l6ZWkgdmFsaWRh
dGVEcmF3Q291bnRXaXRoQnVmZmVyU2l6ZXMoR0NHTHNpemVpIGRyYXdjb3VudCwgc3RkOjppbml0
aWFsaXplcl9saXN0PHNpemVfdD4gYnVmU2l6ZXMpCit7CisgICAgQVNTRVJUKGRyYXdjb3VudCA+
PSAwKTsKKyAgICBpZiAoZHJhd2NvdW50IDwgMCkKKyAgICAgICAgZHJhd2NvdW50ID0gMDsKKyAg
ICBjb25zdCBzaXplX3QgdmFsaWREcmF3Y291bnQgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxzaXpl
X3Q+KGRyYXdjb3VudCksIHN0ZDo6bWluKGJ1ZlNpemVzKSk7CisgICAgQVNTRVJUKHZhbGlkRHJh
d2NvdW50ID09IHN0YXRpY19jYXN0PHNpemVfdD4oZHJhd2NvdW50KSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdDR0xzaXplaT4odmFsaWREcmF3Y291bnQpOworfQorCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3Vu
dHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR0xfTXVsdGlEcmF3QXJyYXlzQU5HTEUobW9kZSwg
Zmlyc3RzLmRhdGEsIGNvdW50cy5kYXRhLCBkcmF3Y291bnQpOworICAgIEdMX011bHRpRHJhd0Fy
cmF5c0FOR0xFKG1vZGUsIGZpcnN0cy5kYXRhLCBjb3VudHMuZGF0YSwgdmFsaWRhdGVEcmF3Q291
bnRXaXRoQnVmZmVyU2l6ZXMoZHJhd2NvdW50LCB7IGZpcnN0cy5idWZTaXplLCBjb3VudHMuYnVm
U2l6ZSB9KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
Zmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29uc3Qg
R0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkKQEAgLTI4NDQs
NyArMjg1NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwCiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR0xfTXVsdGlEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUobW9kZSwgZmlyc3RzLmRhdGEsIGNvdW50cy5kYXRhLCBpbnN0YW5jZUNvdW50
cy5kYXRhLCBkcmF3Y291bnQpOworICAgIEdMX011bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KG1vZGUsIGZpcnN0cy5kYXRhLCBjb3VudHMuZGF0YSwgaW5zdGFuY2VDb3VudHMuZGF0YSwgdmFs
aWRhdGVEcmF3Q291bnRXaXRoQnVmZmVyU2l6ZXMoZHJhd2NvdW50LCB7IGZpcnN0cy5idWZTaXpl
LCBjb3VudHMuYnVmU2l6ZSwgaW5zdGFuY2VDb3VudHMuYnVmU2l6ZSB9KSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkKQEAgLTI4
NTMsMTEgKzI4NjMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdF
bGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnMKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gTXVzdCBwZXJmb3JtIGNvbnZlcnNpb24gZnJvbSBpbnRlZ2VyIG9mZnNldHMg
dG8gdm9pZCogcG9pbnRlcnMgYmVmb3JlIHBhc3NpbmcgZG93biB0byBBTkdMRS4KLSAgICBWZWN0
b3I8dm9pZCo+IHBvaW50ZXJzOworICAgIFZlY3Rvcjx2b2lkKj4gb2Zmc2V0c1BvaW50ZXJzOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Zmc2V0cy5idWZTaXplOyArK2kpCi0gICAgICAg
IHBvaW50ZXJzLmFwcGVuZChyZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXRzW2ldKSk7Cisg
ICAgICAgIG9mZnNldHNQb2ludGVycy5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zm
c2V0c1tpXSkpOwogCi0gICAgR0xfTXVsdGlEcmF3RWxlbWVudHNBTkdMRShtb2RlLCBjb3VudHMu
ZGF0YSwgdHlwZSwgcG9pbnRlcnMuZGF0YSgpLCBkcmF3Y291bnQpOworICAgIEdMX011bHRpRHJh
d0VsZW1lbnRzQU5HTEUobW9kZSwgY291bnRzLmRhdGEsIHR5cGUsIG9mZnNldHNQb2ludGVycy5k
YXRhKCksIHZhbGlkYXRlRHJhd0NvdW50V2l0aEJ1ZmZlclNpemVzKGRyYXdjb3VudCwgeyBjb3Vu
dHMuYnVmU2l6ZSwgb2Zmc2V0c1BvaW50ZXJzLnNpemUoKSB9KSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVp
PiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkKQEAgLTI4NjYsMTEgKzI4NzYs
MTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0wKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
TXVzdCBwZXJmb3JtIGNvbnZlcnNpb24gZnJvbSBpbnRlZ2VyIG9mZnNldHMgdG8gdm9pZCogcG9p
bnRlcnMgYmVmb3JlIHBhc3NpbmcgZG93biB0byBBTkdMRS4KLSAgICBWZWN0b3I8dm9pZCo+IHBv
aW50ZXJzOworICAgIFZlY3Rvcjx2b2lkKj4gb2Zmc2V0c1BvaW50ZXJzOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb2Zmc2V0cy5idWZTaXplOyArK2kpCi0gICAgICAgIHBvaW50ZXJzLmFw
cGVuZChyZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXRzW2ldKSk7CisgICAgICAgIG9mZnNl
dHNQb2ludGVycy5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0c1tpXSkpOwog
Ci0gICAgR0xfTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudHMuZGF0
YSwgdHlwZSwgcG9pbnRlcnMuZGF0YSgpLCBpbnN0YW5jZUNvdW50cy5kYXRhLCBkcmF3Y291bnQp
OworICAgIEdMX011bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnRzLmRh
dGEsIHR5cGUsIG9mZnNldHNQb2ludGVycy5kYXRhKCksIGluc3RhbmNlQ291bnRzLmRhdGEsIHZh
bGlkYXRlRHJhd0NvdW50V2l0aEJ1ZmZlclNpemVzKGRyYXdjb3VudCwgeyBjb3VudHMuYnVmU2l6
ZSwgb2Zmc2V0c1BvaW50ZXJzLnNpemUoKSwgaW5zdGFuY2VDb3VudHMuYnVmU2l6ZSB9KSk7CiB9
CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBuYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457585</attachid>
            <date>2022-04-13 18:55:53 -0700</date>
            <delta_ts>2022-04-13 20:19:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239154-20220413185552.patch</filename>
            <type>text/plain</type>
            <size>53745</size>
            <attacher name="John Cunningham">johncunningham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlmNzQxY2Q1YjRhM2E0
MGU1Y2RmNjgyZWJhMzFlYWJkNGJjYzIyMi4uNjI4ZWI1ZmEwOTIzMzMyZTJhZWJhYjJiMjc1ZGI4
MjY2ZTM0NTZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTA0LTEzICBKb2hu
IEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVmFsaWRh
dGUgdGhlIGRyYXdjb3VudCBhZ2FpbnN0IHRoZSBsZW5ndGggb2YgbXVsdGlkcmF3IGJ1ZmZlciBw
YXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzkxNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVs
dGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdB
cnJheXNXRUJHTCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3
QXJyYXlzSW5zdGFuY2VkV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xNdWx0aURyYXc6
Om11bHRpRHJhd0VsZW1lbnRzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xNdWx0aURy
YXc6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6
bWFrZVNwYW5XaXRoT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIwMjItMDQtMTEgIE5pa29sYXMgWmlt
bWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0xCU0VdIEFjdGl2
YXRlIFNWRyB0cmFuc2Zvcm0gc3VwcG9ydCB0aHJvdWdoIGxheWVycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3ZTdl
NzEzYWNmNTY1ZGJhMTRhNzAyMDRjNzNmNmRiMzA2YmQ1MDE3Li5hNzI4MTU2NzBiMzhkM2Q3OTQ0
ZTZiNTRmOWFkM2VmMWRiMGY3NDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIyLTA0
LTEzICBKb2huIEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgVmFsaWRhdGUgdGhlIGRyYXdjb3VudCBhZ2FpbnN0IHRoZSBsZW5ndGggb2YgbXVsdGlkcmF3
IGJ1ZmZlciBwYXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM5MTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29yZTo6dmVjdG9yQ29weUNhc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bXVsdGlEcmF3QXJyYXlzQU5HTEUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bXVsdGlEcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRJbnRlcm5hbGZvcm1hdGl2KToK
KyAgICAgICAgKG11bHRpRHJhd0FycmF5c0FOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKG11bHRp
RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKG11bHRpRHJhd0Vs
ZW1lbnRzQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAobXVsdGlEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChjbGFz
c190ZW1wbGF0ZV9oZWFkZXJzKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJh
d0VsZW1lbnRzQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Om11bHRpRHJhd0FycmF5c0FOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50c0FOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSk6IERlbGV0ZWQuCisKIDIwMjItMDQtMTEgIEogUGFzY29lICA8al9wYXNj
b2VAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gRW5zdXJlIHJlcXVlc3RQaW4gY2Fs
bGJhY2sgb24gbWFpbiB0aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMTXVsdGlEcmF3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
TXVsdGlEcmF3LmNwcAppbmRleCA5NGRmY2M0N2E0NjEyNzJkOWFhZWEyY2NiMzQ1ZGMzNzczN2I3
YTM0Li44ZDFlYjFmYmQ3NDg0MWI2MWJmYTQzNzFmY2FhZDRhOWZhYTg5ODZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCkBAIC0zNCwxMSArMzQs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChX
ZWJHTE11bHRpRHJhdyk7CiAKLXN0YXRpYyBHQ0dMU3Bhbjxjb25zdCBpbnQ+IG1ha2VTcGFuV2l0
aE9mZnNldChXZWJHTE11bHRpRHJhdzo6SW50MzJMaXN0JiBsaXN0LCBHQ0dMdWludCBvZmZzZXQp
Ci17Ci0gICAgcmV0dXJuIG1ha2VHQ0dMU3BhbihsaXN0LmRhdGEoKSArIG9mZnNldCwgbGlzdC5s
ZW5ndGgoKSAtIG9mZnNldCk7Ci19Ci0KIFdlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24o
Y29udGV4dCkKIHsKQEAgLTcwLDcgKzY1LDcgQEAgdm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlE
cmF3QXJyYXlzV0VCR0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnN0c0xpc3QsIEcKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0wo
KS0+bXVsdGlEcmF3QXJyYXlzQU5HTEUobW9kZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGZpcnN0c0xp
c3QsIGZpcnN0c09mZnNldCksIG1ha2VTcGFuV2l0aE9mZnNldChjb3VudHNMaXN0LCBjb3VudHNP
ZmZzZXQpLCBkcmF3Y291bnQpOworICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+
bXVsdGlEcmF3QXJyYXlzQU5HTEUobW9kZSwgR0NHTFNwYW5UdXBsZSB7IGZpcnN0c0xpc3QuZGF0
YSgpICsgZmlyc3RzT2Zmc2V0LCBjb3VudHNMaXN0LmRhdGEoKSArIGNvdW50c09mZnNldCwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihkcmF3Y291bnQpIH0pOwogfQogCiB2b2lkIFdlYkdMTXVsdGlEcmF3
OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3Qg
Zmlyc3RzTGlzdCwgR0NHTHVpbnQgZmlyc3RzT2Zmc2V0LCBJbnQzMkxpc3QgY291bnRzTGlzdCwg
R0NHTHVpbnQgY291bnRzT2Zmc2V0LCBJbnQzMkxpc3QgaW5zdGFuY2VDb3VudHNMaXN0LCBHQ0dM
dWludCBpbnN0YW5jZUNvdW50c09mZnNldCwgR0NHTHNpemVpIGRyYXdjb3VudCkKQEAgLTg1LDcg
KzgwLDcgQEAgdm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkV0VC
R0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+bXVsdGlEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUobW9kZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGZpcnN0c0xpc3QsIGZpcnN0c09m
ZnNldCksIG1ha2VTcGFuV2l0aE9mZnNldChjb3VudHNMaXN0LCBjb3VudHNPZmZzZXQpLCBtYWtl
U3BhbldpdGhPZmZzZXQoaW5zdGFuY2VDb3VudHNMaXN0LCBpbnN0YW5jZUNvdW50c09mZnNldCks
IGRyYXdjb3VudCk7CisgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBHQ0dMU3BhblR1cGxlIHsgZmlyc3RzTGlzdC5k
YXRhKCkgKyAgZmlyc3RzT2Zmc2V0LCBjb3VudHNMaXN0LmRhdGEoKSArIGNvdW50c09mZnNldCwg
aW5zdGFuY2VDb3VudHNMaXN0LmRhdGEoKSArIGluc3RhbmNlQ291bnRzT2Zmc2V0LCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGRyYXdjb3VudCkgfSk7CiB9CiAKIHZvaWQgV2ViR0xNdWx0aURyYXc6Om11
bHRpRHJhd0VsZW1lbnRzV0VCR0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGNvdW50c0xpc3Qs
IEdDR0x1aW50IGNvdW50c09mZnNldCwgR0NHTGVudW0gdHlwZSwgSW50MzJMaXN0IG9mZnNldHNM
aXN0LCBHQ0dMdWludCBvZmZzZXRzT2Zmc2V0LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQpAQCAtOTks
NyArOTQsNyBAQCB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdFbGVtZW50c1dFQkdMKEdD
R0xlbnVtIG1vZGUsIEludDMyTGlzdCBjb3VudHNMaXN0LAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURyYXdFbGVtZW50
c0FOR0xFKG1vZGUsIG1ha2VTcGFuV2l0aE9mZnNldChjb3VudHNMaXN0LCBjb3VudHNPZmZzZXQp
LCB0eXBlLCBtYWtlU3BhbldpdGhPZmZzZXQob2Zmc2V0c0xpc3QsIG9mZnNldHNPZmZzZXQpLCBk
cmF3Y291bnQpOworICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+bXVsdGlEcmF3
RWxlbWVudHNBTkdMRShtb2RlLCBHQ0dMU3BhblR1cGxlIHsgY291bnRzTGlzdC5kYXRhKCkgKyBj
b3VudHNPZmZzZXQsIG9mZnNldHNMaXN0LmRhdGEoKSArIG9mZnNldHNPZmZzZXQsIHN0YXRpY19j
YXN0PHNpemVfdD4oZHJhd2NvdW50KSB9LCB0eXBlKTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJh
dzo6bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxp
c3QgY291bnRzTGlzdCwgR0NHTHVpbnQgY291bnRzT2Zmc2V0LCBHQ0dMZW51bSB0eXBlLCBJbnQz
Mkxpc3Qgb2Zmc2V0c0xpc3QsIEdDR0x1aW50IG9mZnNldHNPZmZzZXQsIEludDMyTGlzdCBpbnN0
YW5jZUNvdW50c0xpc3QsIEdDR0x1aW50IGluc3RhbmNlQ291bnRzT2Zmc2V0LCBHQ0dMc2l6ZWkg
ZHJhd2NvdW50KQpAQCAtMTE0LDcgKzEwOSw3IEBAIHZvaWQgV2ViR0xNdWx0aURyYXc6Om11bHRp
RHJhd0VsZW1lbnRzSW5zdGFuY2VkV0VCR0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGNvCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdM
KCktPm11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgbWFrZVNwYW5XaXRoT2Zm
c2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIHR5cGUsIG1ha2VTcGFuV2l0aE9mZnNldChv
ZmZzZXRzTGlzdCwgb2Zmc2V0c09mZnNldCksIG1ha2VTcGFuV2l0aE9mZnNldChpbnN0YW5jZUNv
dW50c0xpc3QsIGluc3RhbmNlQ291bnRzT2Zmc2V0KSwgZHJhd2NvdW50KTsKKyAgICBtX2NvbnRl
eHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPm11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
bW9kZSwgR0NHTFNwYW5UdXBsZSB7IGNvdW50c0xpc3QuZGF0YSgpICsgY291bnRzT2Zmc2V0LCBv
ZmZzZXRzTGlzdC5kYXRhKCkgKyBvZmZzZXRzT2Zmc2V0LCBpbnN0YW5jZUNvdW50c0xpc3QuZGF0
YSgpICsgaW5zdGFuY2VDb3VudHNPZmZzZXQsIHN0YXRpY19jYXN0PHNpemVfdD4oZHJhd2NvdW50
KSB9LCB0eXBlKTsKIH0KIAogYm9vbCBXZWJHTE11bHRpRHJhdzo6dmFsaWRhdGVEcmF3Y291bnQo
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5k
ZXggNjFmOTA4NWUzYjAwMzhlYTFjMzljNTNhNjYwZmU5OTlkY2RiYTZkMS4uM2FkOTFkMWU2Njg1
N2YxNThkM2I0YjY0MGZlOTU0Nzc3YzFlMDQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMzYwLDEwICsxMzYw
LDEwIEBAIHB1YmxpYzoKICAgICAvLyA9PT09PT09PT09IEV4dGVuc2lvbiByZWxhdGVkIGVudHJ5
IHBvaW50cy4KIAogICAgIC8vIEdMX0FOR0xFX211bHRpX2RyYXcKLSAgICB2aXJ0dWFsIHZvaWQg
bXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTHNpemVpIGRy
YXdjb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xT
cGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGlu
c3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NH
THNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9m
ZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbXVsdGlE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
b2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNp
emVpIGRyYXdjb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtdWx0aURyYXdBcnJheXNBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xz
aXplaT4gZmlyc3RzQW5kQ291bnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NH
TGludCwgY29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMc2l6ZWk+IGZpcnN0c0NvdW50c0FuZElu
c3RhbmNlQ291bnRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdD
R0xpbnQ+IGNvdW50c0FuZE9mZnNldHMsIEdDR0xlbnVtIHR5cGUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
U3BhblR1cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVp
PiBjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMsIEdDR0xlbnVtIHR5cGUpID0gMDsKIAog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dM
LmgKaW5kZXggOTY5ZTM5NTQ5ZTRkMTE3M2MwZDg5MDhkYzIzYjA2MjBiM2UxOTRiZi4uZmU3ZjM4
ZDZmMGMwNTNiZmM3OWRlYjMzMGFiNTk1ZWRjNWFmZTY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTE5MywzICsxOTMs
NjYgQEAgR0NHTFNwYW48VCwgRXh0ZW50PiBtYWtlR0NHTFNwYW4oVCogZGF0YSkKIHsKICAgICBy
ZXR1cm4gR0NHTFNwYW48VCwgRXh0ZW50PiB7IGRhdGEgfTsKIH0KKwordGVtcGxhdGU8dHlwZW5h
bWUuLi4gVHlwZXM+CitzdHJ1Y3QgR0NHTFNwYW5UdXBsZTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VDAsIHR5cGVuYW1lIFQxPgorc3RydWN0IEdDR0xTcGFuVHVwbGU8VDAsIFQxPiB7CisgICAgR0NH
TFNwYW5UdXBsZShUMCogZGF0YTBfLCBUMSogZGF0YTFfLCBzaXplX3QgYnVmU2l6ZV8pCisgICAg
ICAgIDogYnVmU2l6ZShidWZTaXplXykKKyAgICAgICAgLCBkYXRhMChkYXRhMF8pCisgICAgICAg
ICwgZGF0YTEoZGF0YTFfKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PEdDR0xz
aXplaT4oYnVmU2l6ZV8pID49IDApOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwg
dHlwZW5hbWUgVTE+CisgICAgR0NHTFNwYW5UdXBsZShjb25zdCBWZWN0b3I8VTA+JiBkYXRhMF8s
IGNvbnN0IFZlY3RvcjxVMT4mIGRhdGExXykKKyAgICAgICAgOiBidWZTaXplKHN0ZDo6bWluKGRh
dGEwXy5zaXplKCksIGRhdGExXy5zaXplKCkpKQorICAgICAgICAsIGRhdGEwKGRhdGEwXy5kYXRh
KCkpCisgICAgICAgICwgZGF0YTEoZGF0YTFfLmRhdGEoKSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChkYXRhMF8uc2l6ZSgpID09IGRhdGExXy5zaXplKCkpOworICAgIH0KKyAgICBjb25zdCBzaXpl
X3QgYnVmU2l6ZTsKKyAgICBUMCogY29uc3QgZGF0YTA7CisgICAgVDEqIGNvbnN0IGRhdGExOwor
Citwcm90ZWN0ZWQ6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgorICAg
IEdDR0xTcGFuVHVwbGUoY29uc3QgVmVjdG9yPFUwPiYgZGF0YTBfLCBjb25zdCBWZWN0b3I8VTE+
JiBkYXRhMV8sIHNpemVfdCBtaW5EYXRhTlNpemUpCisgICAgICAgIDogYnVmU2l6ZShzdGQ6Om1p
bih7IGRhdGEwXy5zaXplKCksIGRhdGExXy5zaXplKCksIG1pbkRhdGFOU2l6ZSB9KSkKKyAgICAg
ICAgLCBkYXRhMChkYXRhMF8uZGF0YSgpKQorICAgICAgICAsIGRhdGExKGRhdGExXy5kYXRhKCkp
CisgICAgeworICAgICAgICBBU1NFUlQoZGF0YTBfLnNpemUoKSA9PSBkYXRhMV8uc2l6ZSgpICYm
IGRhdGExXy5zaXplKCkgPT0gbWluRGF0YU5TaXplKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IEdDR0xTcGFuVHVw
bGU8VDAsIFQxLCBUMj4gOiBwdWJsaWMgR0NHTFNwYW5UdXBsZTxUMCwgVDE+IHsKKyAgICBHQ0dM
U3BhblR1cGxlKFQwKiBkYXRhMF8sIFQxKiBkYXRhMV8sIFQyKiBkYXRhMl8sIHNpemVfdCBidWZT
aXplXykKKyAgICAgICAgOiBHQ0dMU3BhblR1cGxlPFQwLCBUMT4oZGF0YTBfLCBkYXRhMV8sIGJ1
ZlNpemVfKQorICAgICAgICAsIGRhdGEyKGRhdGEyXykKKyAgICB7CisgICAgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+CisgICAgR0NHTFNwYW5U
dXBsZShjb25zdCBWZWN0b3I8VTA+JiBkYXRhMF8sIGNvbnN0IFZlY3RvcjxVMT4mIGRhdGExXywg
Y29uc3QgVmVjdG9yPFUyPiYgZGF0YTJfKQorICAgICAgICA6IEdDR0xTcGFuVHVwbGU8VDAsIFQx
PihkYXRhMF8sIGRhdGExXywgZGF0YTJfLnNpemUoKSkKKyAgICAgICAgLCBkYXRhMihkYXRhMl8u
ZGF0YSgpKQorICAgIHsKKyAgICB9CisgICAgVDIqIGNvbnN0IGRhdGEyOworfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxPgorR0NHTFNwYW5UdXBsZShUMCosIFQxKiwgc2l6
ZV90KSAtPiBHQ0dMU3BhblR1cGxlPFQwLCBUMT47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0
eXBlbmFtZSBUMT4KK0dDR0xTcGFuVHVwbGUoY29uc3QgVmVjdG9yPFQwPiYsIGNvbnN0IFZlY3Rv
cjxUMT4mKSAtPiBHQ0dMU3BhblR1cGxlPGNvbnN0IFQwLCBjb25zdCBUMT47CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitHQ0dMU3BhblR1cGxlKFQw
KiwgVDEqLCBUMiosIHNpemVfdCkgLT4gR0NHTFNwYW5UdXBsZTxUMCwgVDEsIFQyPjsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK0dDR0xTcGFuVHVw
bGUoY29uc3QgVmVjdG9yPFQwPiYsIGNvbnN0IFZlY3RvcjxUMT4mLCBjb25zdCBWZWN0b3I8VDI+
JikgLT4gR0NHTFNwYW5UdXBsZTxjb25zdCBUMCwgY29uc3QgVDEsIGNvbnN0IFQyPjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggZmUxODg1NGQ2MzMxNzNhNjhmYmUwMmNk
OGVkYWZjNzJmZmE4YWYzNi4uYzc4NmFlNzliMWMwYjNlZmI3NzkzY2MxNjU1M2VjNDhkYWU0MWFk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTI4MzEsNDYgKzI4MzEs
NDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludAogICAgIEdMX0dldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2Um9idXN0QU5HTEUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMu
YnVmU2l6ZSwgbnVsbHB0ciwgcGFyYW1zLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6Om11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdD
R0xzaXplaSBkcmF3Y291bnQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om11bHRpRHJh
d0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwg
Y29uc3QgR0NHTHNpemVpPiBmaXJzdHNBbmRDb3VudHMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR0xfTXVsdGlEcmF3QXJyYXlzQU5H
TEUobW9kZSwgZmlyc3RzLmRhdGEsIGNvdW50cy5kYXRhLCBkcmF3Y291bnQpOworICAgIEdMX011
bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUsIGZpcnN0c0FuZENvdW50cy5kYXRhMCwgZmlyc3RzQW5k
Q291bnRzLmRhdGExLCBmaXJzdHNBbmRDb3VudHMuYnVmU2l6ZSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
c2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywg
R0NHTHNpemVpIGRyYXdjb3VudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25z
dCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQ291bnRz
QW5kSW5zdGFuY2VDb3VudHMpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgR0xfTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9k
ZSwgZmlyc3RzLmRhdGEsIGNvdW50cy5kYXRhLCBpbnN0YW5jZUNvdW50cy5kYXRhLCBkcmF3Y291
bnQpOworICAgIEdMX011bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0c0Nv
dW50c0FuZEluc3RhbmNlQ291bnRzLmRhdGEwLCBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50
cy5kYXRhMSwgZmlyc3RzQ291bnRzQW5kSW5zdGFuY2VDb3VudHMuZGF0YTIsIGZpcnN0c0NvdW50
c0FuZEluc3RhbmNlQ291bnRzLmJ1ZlNpemUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBs
ZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQ+IGNvdW50c0FuZE9mZnNldHMsIEdDR0xl
bnVtIHR5cGUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gTXVzdCBwZXJmb3JtIGNvbnZlcnNpb24gZnJvbSBpbnRlZ2VyIG9mZnNl
dHMgdG8gdm9pZCogcG9pbnRlcnMgYmVmb3JlIHBhc3NpbmcgZG93biB0byBBTkdMRS4KLSAgICBW
ZWN0b3I8dm9pZCo+IHBvaW50ZXJzOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Zmc2V0
cy5idWZTaXplOyArK2kpCi0gICAgICAgIHBvaW50ZXJzLmFwcGVuZChyZWludGVycHJldF9jYXN0
PHZvaWQqPihvZmZzZXRzW2ldKSk7CisgICAgVmVjdG9yPHZvaWQqPiBvZmZzZXRzUG9pbnRlcnM7
CisgICAgb2Zmc2V0c1BvaW50ZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnRzQW5kT2Zm
c2V0cy5idWZTaXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50c0FuZE9mZnNl
dHMuYnVmU2l6ZTsgKytpKQorICAgICAgICBvZmZzZXRzUG9pbnRlcnMuYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGNvdW50c0FuZE9mZnNldHMuZGF0YTFbaV0pKTsKIAotICAgIEdMX011
bHRpRHJhd0VsZW1lbnRzQU5HTEUobW9kZSwgY291bnRzLmRhdGEsIHR5cGUsIHBvaW50ZXJzLmRh
dGEoKSwgZHJhd2NvdW50KTsKKyAgICBHTF9NdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIGNv
dW50c0FuZE9mZnNldHMuZGF0YTAsIHR5cGUsIG9mZnNldHNQb2ludGVycy5kYXRhKCksIGNvdW50
c0FuZE9mZnNldHMuYnVmU2l6ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywg
R0NHTHNpemVpIGRyYXdjb3VudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNv
bnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpPiBjb3VudHNPZmZz
ZXRzQW5kSW5zdGFuY2VDb3VudHMsIEdDR0xlbnVtIHR5cGUpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTXVzdCBwZXJmb3JtIGNv
bnZlcnNpb24gZnJvbSBpbnRlZ2VyIG9mZnNldHMgdG8gdm9pZCogcG9pbnRlcnMgYmVmb3JlIHBh
c3NpbmcgZG93biB0byBBTkdMRS4KLSAgICBWZWN0b3I8dm9pZCo+IHBvaW50ZXJzOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Zmc2V0cy5idWZTaXplOyArK2kpCi0gICAgICAgIHBvaW50
ZXJzLmFwcGVuZChyZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXRzW2ldKSk7CisgICAgVmVj
dG9yPHZvaWQqPiBvZmZzZXRzUG9pbnRlcnM7CisgICAgb2Zmc2V0c1BvaW50ZXJzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLmJ1ZlNpemUpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRz
LmJ1ZlNpemU7ICsraSkKKyAgICAgICAgb2Zmc2V0c1BvaW50ZXJzLmFwcGVuZChyZWludGVycHJl
dF9jYXN0PHZvaWQqPihjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMuZGF0YTFbaV0pKTsK
IAotICAgIEdMX011bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnRzLmRh
dGEsIHR5cGUsIHBvaW50ZXJzLmRhdGEoKSwgaW5zdGFuY2VDb3VudHMuZGF0YSwgZHJhd2NvdW50
KTsKKyAgICBHTF9NdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50c09m
ZnNldHNBbmRJbnN0YW5jZUNvdW50cy5kYXRhMCwgdHlwZSwgb2Zmc2V0c1BvaW50ZXJzLmRhdGEo
KSwgY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLmRhdGEyLCBjb3VudHNPZmZzZXRzQW5k
SW5zdGFuY2VDb3VudHMuYnVmU2l6ZSk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5oCmluZGV4IGZjZDU2M2E2NzMwODc2MTZmNjI0MzNlM2Q2NjhkNzgyZGI2NGY4
MjYuLjYzYzM5MmE0NmQ3NzdhMWJmM2JjNzgxNGIxOGJhOTBjNDJjZmFhODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTMwMiwxMCArMzAyLDEwIEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm1CbG9j
a0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJ
bmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7CiAgICAgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7
Ci0gICAgdm9pZCBtdWx0aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBH
Q0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIG11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0
cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwotICAg
IHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dM
c2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNp
emVpPiBmaXJzdHNBbmRDb3VudHMpIGZpbmFsOworICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBj
b25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQ291bnRzQW5kSW5zdGFuY2VD
b3VudHMpIGZpbmFsOworICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGludD4gY291bnRz
QW5kT2Zmc2V0cywgR0NHTGVudW0gdHlwZSkgZmluYWw7CisgICAgdm9pZCBtdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NH
THNpemVpLCBjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNvdW50c09mZnNldHNBbmRJ
bnN0YW5jZUNvdW50cywgR0NHTGVudW0gdHlwZSkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0V4
dGVuc2lvbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0V4dGVuc2lvbkVu
YWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCmluZGV4IGFmNzVlMGQwOTk5NjE2YmY2MzFiNTZmNWU1Mzc3OWJkYWYyZDcxNTEuLmY2
MjVjZmY5ZWJkNTA5NDFjOWNjZDk4NjZiNWQ2MTE4OTJjZjZiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCkBAIC0zNjQsMTAgKzM2NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykg
ZmluYWw7CiAKICAgICAvLyBHTF9BTkdMRV9tdWx0aV9kcmF3Ci0gICAgdm9pZCBtdWx0aURyYXdB
cnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMs
IEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBv
dmVycmlkZTsKLSAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVt
IG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NH
THNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMs
IEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVu
dHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVp
IGRyYXdjb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBH
Q0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVy
cmlkZTsKKyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xT
cGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpPiBmaXJzdHNBbmRDb3VudHMp
IG92ZXJyaWRlOworICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWksIGNv
bnN0IEdDR0xzaXplaT4gZmlyc3RzQ291bnRzQW5kSW5zdGFuY2VDb3VudHMpIG92ZXJyaWRlOwor
ICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1
cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGludD4gY291bnRzQW5kT2Zmc2V0cywgR0NH
TGVudW0gdHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25z
dCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50
cywgR0NHTGVudW0gdHlwZSkgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChj
b25zdCBTdHJpbmcmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IDZkYjY0
NDBjZjk2ZDkyYWMyZDdmNWJlMWQ1MjIzYWUwNWEwMTcxYjQuLmFhNTFhYWMzODQ0YWNlYmFmOGNh
YjZjNmZjYjBlNGFhMWJlYjBkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtNDYs
NiArNDYsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCituYW1lc3BhY2UgewordGVtcGxhdGU8dHlwZW5hbWUgUywgaW50IEksIHR5cGVuYW1lIFQ+
CitWZWN0b3I8Uz4gdmVjdG9yQ29weUNhc3QoY29uc3QgVCYgYXJyYXlSZWZlcmVuY2UpCit7Cisg
ICAgVmVjdG9yPFM+IHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgUyo+KGFycmF5UmVmZXJlbmNlLnRlbXBsYXRlIGRhdGE8ST4oKSksIGFycmF5UmVmZXJl
bmNlLnNpemUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KK30KKwogLy8gQ3VycmVudGx5IHdl
IGhhdmUgb25lIGdsb2JhbCBXZWJHTCBwcm9jZXNzaW5nIGluc3RhbmNlLgogSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlJiByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1
ZSgpCiB7CkBAIC0zMTMsNiArMzIzLDQ2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwKICAgICBt
X2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CiB9CiAKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Om11bHRpRHJhd0FycmF5c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJy
YXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90PiYmIGZpcnN0c0FuZENvdW50cykKK3sK
KyAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOworICAgIC8vIENvcHkgdGhlIGFycmF5
cy4gVGhlIGNvbnRlbnRzIGFyZSB0byBiZSB2ZXJpZmllZC4gVGhlIGRhdGEgbWlnaHQgYmUgaW4g
bWVtb3J5IHJlZ2lvbiBzaGFyZWQgYnkgdGhlIGNhbGxlci4KKyAgICBWZWN0b3I8R0NHTGludD4g
Zmlyc3RzID0gdmVjdG9yQ29weUNhc3Q8R0NHTGludCwgMD4oZmlyc3RzQW5kQ291bnRzKTsKKyAg
ICBWZWN0b3I8R0NHTHNpemVpPiBjb3VudHMgPSB2ZWN0b3JDb3B5Q2FzdDxHQ0dMc2l6ZWksIDE+
KGZpcnN0c0FuZENvdW50cyk7CisgICAgbV9jb250ZXh0LT5tdWx0aURyYXdBcnJheXNBTkdMRSht
b2RlLCBHQ0dMU3BhblR1cGxlIHsgZmlyc3RzLCBjb3VudHMgfSk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90
IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90
PiYmIGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRzKQoreworICAgIGFzc2VydElzQ3VycmVu
dCh3b3JrUXVldWUoKSk7CisgICAgLy8gQ29weSB0aGUgYXJyYXlzLiBUaGUgY29udGVudHMgYXJl
IHRvIGJlIHZlcmlmaWVkLiBUaGUgZGF0YSBtaWdodCBiZSBpbiBtZW1vcnkgcmVnaW9uIHNoYXJl
ZCBieSB0aGUgY2FsbGVyLgorICAgIFZlY3RvcjxHQ0dMaW50PiBmaXJzdHMgPSB2ZWN0b3JDb3B5
Q2FzdDxHQ0dMaW50LCAwPihmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cyk7CisgICAgVmVj
dG9yPEdDR0xzaXplaT4gY291bnRzID0gdmVjdG9yQ29weUNhc3Q8R0NHTHNpemVpLCAxPihmaXJz
dHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cyk7CisgICAgVmVjdG9yPEdDR0xzaXplaT4gaW5zdGFu
Y2VDb3VudHMgPSB2ZWN0b3JDb3B5Q2FzdDxHQ0dMc2l6ZWksIDI+KGZpcnN0c0NvdW50c0FuZElu
c3RhbmNlQ291bnRzKTsKKyAgICBtX2NvbnRleHQtPm11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBmaXJzdHMsIGNvdW50cywgaW5zdGFuY2VDb3VudHMg
fSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om11bHRpRHJhd0VsZW1lbnRz
QU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGlu
dDMyX3Q+JiYgY291bnRzQW5kT2Zmc2V0cywgdWludDMyX3QgdHlwZSkKK3sKKyAgICBhc3NlcnRJ
c0N1cnJlbnQod29ya1F1ZXVlKCkpOworICAgIC8vIENvcHkgdGhlIGFycmF5cy4gVGhlIGNvbnRl
bnRzIGFyZSB0byBiZSB2ZXJpZmllZC4gVGhlIGRhdGEgbWlnaHQgYmUgaW4gbWVtb3J5IHJlZ2lv
biBzaGFyZWQgYnkgdGhlIGNhbGxlci4KKyAgICBjb25zdCBWZWN0b3I8R0NHTHNpemVpPiBjb3Vu
dHMgPSB2ZWN0b3JDb3B5Q2FzdDxHQ0dMc2l6ZWksIDA+KGNvdW50c0FuZE9mZnNldHMpOworICAg
IC8vIEN1cnJlbnRseSBvZmZzZXRzIGFyZSBjb3BpZWQgaW4gdGhlIG1fY29udGV4dC4KKyAgICBj
b25zdCBHQ0dMaW50KiBvZmZzZXRzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4o
Y291bnRzQW5kT2Zmc2V0cy5kYXRhPDE+KCkpOworICAgIG1fY29udGV4dC0+bXVsdGlEcmF3RWxl
bWVudHNBTkdMRShtb2RlLCBHQ0dMU3BhblR1cGxlIHsgY291bnRzLmRhdGEoKSwgb2Zmc2V0cywg
Y291bnRzLnNpemUoKSB9LCB0eXBlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4mJiBjb3VudHNPZmZz
ZXRzQW5kSW5zdGFuY2VDb3VudHMsIHVpbnQzMl90IHR5cGUpCit7CisgICAgYXNzZXJ0SXNDdXJy
ZW50KHdvcmtRdWV1ZSgpKTsKKyAgICAvLyBDb3B5IHRoZSBhcnJheXMuIFRoZSBjb250ZW50cyBh
cmUgdG8gYmUgdmVyaWZpZWQuIFRoZSBkYXRhIG1pZ2h0IGJlIGluIG1lbW9yeSByZWdpb24gc2hh
cmVkIGJ5IHRoZSBjYWxsZXIuCisgICAgY29uc3QgVmVjdG9yPEdDR0xzaXplaT4gY291bnRzID0g
dmVjdG9yQ29weUNhc3Q8R0NHTHNpemVpLCAwPihjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3Vu
dHMpOworICAgIC8vIEN1cnJlbnRseSBvZmZzZXRzIGFyZSBjb3BpZWQgaW4gdGhlIG1fY29udGV4
dC4KKyAgICBjb25zdCBHQ0dMaW50KiBvZmZzZXRzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMaW50Kj4oY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLmRhdGE8MT4oKSk7CisgICAg
Y29uc3QgVmVjdG9yPEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMgPSB2ZWN0b3JDb3B5Q2FzdDxH
Q0dMc2l6ZWksIDI+KGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cyk7CisgICAgbV9jb250
ZXh0LT5tdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUg
eyBjb3VudHMuZGF0YSgpLCBvZmZzZXRzLCBpbnN0YW5jZUNvdW50cy5kYXRhKCksIGNvdW50cy5z
aXplKCkgfSwgdHlwZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZmZmNWU3MWMzNWIzMjEzODc3YTk2NTY5OTQxYTZmNWI4
ZDlmMzcxZC4uZTQyMGNkNDcwY2Y1ZmUxNmQxNzg2NDEyNzcwZTIzYTc5MDZlNWMxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmgKQEAgLTEyNyw2ICsxMjcsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNp
bXVsYXRlZEV2ZW50Rm9yVGVzdGluZyk7CiAgICAgdm9pZCByZWFkblBpeGVsczAoaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmKTsK
ICAgICB2b2lkIHJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0
X3Qgb2Zmc2V0KTsKKyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKHVpbnQzMl90IG1vZGUs
IElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90PiYmIGZpcnN0c0FuZENv
dW50cyk7CisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBt
b2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4m
JiBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cyk7CisgICAgdm9pZCBtdWx0aURyYXdFbGVt
ZW50c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90
LCBpbnQzMl90PiYmIGNvdW50c0FuZE9mZnNldHMsIHVpbnQzMl90IHR5cGUpOworICAgIHZvaWQg
bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5
UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4mJiBjb3VudHNPZmZzZXRz
QW5kSW5zdGFuY2VDb3VudHMsIHVpbnQzMl90IHR5cGUpOwogCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIgLy8gTk9MSU5UCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCA5NDhjYjM2MzAxNDhjODc4Nzdk
YjM0NWQ2MzEwNmFhNDU3N2ZkNzE4Li44MTY3ZGMwNzU0NTEyMGNkYTMxNDIzNGNhNDFmNjlmZjg2
ZWFhZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC01
MCw2ICs1MCwxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZD
b3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBTaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2ZW50KQogICAg
IHZvaWQgUmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
IGRhdGEpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBSZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIE11bHRpRHJhd0FycmF5c0FO
R0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQz
Ml90PiBmaXJzdHNBbmRDb3VudHMpCisgICAgdm9pZCBNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50
MzJfdCwgaW50MzJfdD4gZmlyc3RzQ291bnRzQWFuZEluc3RhbmNlQ291bnRzKQorICAgIHZvaWQg
TXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNl
VHVwbGU8aW50MzJfdCwgaW50MzJfdD4gY291bnRzQW5kT2Zmc2V0cywgdWludDMyX3QgdHlwZSkK
KyAgICB2b2lkIE11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwg
SVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3QsIGludDMyX3Q+IGNvdW50
c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgdWludDMyX3QgdHlwZSkKIAogICAgIHZvaWQgTW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCiAgICAgdm9pZCBBY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCkBAIC0yODcs
MTAgKzI5MSw2IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNv
dW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1
aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwogICAgIHZv
aWQgRHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKICAg
ICB2b2lkIEdldEludGVybmFsZm9ybWF0aXYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMKLSAgICB2b2lkIE11
bHRpRHJhd0FycmF5c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4gZmlyc3RzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGNvdW50cywgaW50MzJf
dCBkcmF3Y291bnQpCi0gICAgdm9pZCBNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50
MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGZpcnN0cywgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiBjb3VudHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4g
aW5zdGFuY2VDb3VudHMsIGludDMyX3QgZHJhd2NvdW50KQotICAgIHZvaWQgTXVsdGlEcmF3RWxl
bWVudHNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGNv
dW50cywgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBvZmZzZXRz
LCBpbnQzMl90IGRyYXdjb3VudCkKLSAgICB2b2lkIE11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBjb3VudHMs
IHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gb2Zmc2V0cywgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBpbnN0YW5jZUNvdW50cywgaW50MzJfdCBkcmF3Y291
bnQpCiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkgLT4gKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVy
YXRlZC5oCmluZGV4IDEwZWU5MjRmMDQ1MDZhOGFjYWQzNTI0YjJiMTE0ZDljMGE4OGEzMmIuLmM3
NWNlMGEyMTBjMTE4MWNkYjNhZTNmOGRkNTAxMjBlZjVmZjZlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0
aW9uc0dlbmVyYXRlZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0xMzQwLDI2ICsx
MzQwLDYgQEAKICAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwg
aW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+
KHBhcmFtcy5kYXRhKCkpLCBwYXJhbXMuc2l6ZSgpKSk7CiAgICAgfQotICAgIHZvaWQgbXVsdGlE
cmF3QXJyYXlzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PiYmIGZpcnN0cywgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIGNvdW50cywgaW50MzJf
dCBkcmF3Y291bnQpCi0gICAgewotICAgICAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkp
OwotICAgICAgICBtX2NvbnRleHQtPm11bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUsIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihmaXJzdHMuZGF0YSgpKSwgZmly
c3RzLnNpemUoKSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xzaXpl
aSo+KGNvdW50cy5kYXRhKCkpLCBjb3VudHMuc2l6ZSgpKSwgZHJhd2NvdW50KTsKLSAgICB9Ci0g
ICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgZmlyc3RzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+JiYgY291bnRzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgaW5zdGFuY2VD
b3VudHMsIGludDMyX3QgZHJhd2NvdW50KQotICAgIHsKLSAgICAgICAgYXNzZXJ0SXNDdXJyZW50
KHdvcmtRdWV1ZSgpKTsKLSAgICAgICAgbV9jb250ZXh0LT5tdWx0aURyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50
Kj4oZmlyc3RzLmRhdGEoKSksIGZpcnN0cy5zaXplKCkpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMc2l6ZWkqPihjb3VudHMuZGF0YSgpKSwgY291bnRzLnNpemUoKSks
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xzaXplaSo+KGluc3RhbmNl
Q291bnRzLmRhdGEoKSksIGluc3RhbmNlQ291bnRzLnNpemUoKSksIGRyYXdjb3VudCk7Ci0gICAg
fQotICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgY291bnRzLCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+JiYgb2Zmc2V0cywgaW50MzJfdCBkcmF3Y291bnQpCi0gICAgewot
ICAgICAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwotICAgICAgICBtX2NvbnRleHQt
Pm11bHRpRHJhd0VsZW1lbnRzQU5HTEUobW9kZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHNpemVpKj4oY291bnRzLmRhdGEoKSksIGNvdW50cy5zaXplKCkpLCB0eXBl
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4ob2Zmc2V0cy5k
YXRhKCkpLCBvZmZzZXRzLnNpemUoKSksIGRyYXdjb3VudCk7Ci0gICAgfQotICAgIHZvaWQgbXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+JiYgY291bnRzLCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+JiYgb2Zmc2V0cywgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIGlu
c3RhbmNlQ291bnRzLCBpbnQzMl90IGRyYXdjb3VudCkKLSAgICB7Ci0gICAgICAgIGFzc2VydElz
Q3VycmVudCh3b3JrUXVldWUoKSk7Ci0gICAgICAgIG1fY29udGV4dC0+bXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShtb2RlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMc2l6ZWkqPihjb3VudHMuZGF0YSgpKSwgY291bnRzLnNpemUoKSksIHR5cGUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihvZmZzZXRzLmRhdGEoKSks
IG9mZnNldHMuc2l6ZSgpKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THNpemVpKj4oaW5zdGFuY2VDb3VudHMuZGF0YSgpKSwgaW5zdGFuY2VDb3VudHMuc2l6ZSgpKSwg
ZHJhd2NvdW50KTsKLSAgICB9CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVs
QnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhl
bEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiByZXR1cm5WYWx1ZSA9IHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IDZkODE0ZDQxNTI4NmE5
NWFiY2Q5ODVkYmEwNGRiMGNiZDI2NGE4ZDQuLjA1YjY0M2U2ZjNmMmQxOWM1NjE1OTBmZTM4NmIz
ZDhmNDFjNTQwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2lu
Y2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2VUdXBsZS5o
IgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYv
Qm94Lmg+CkBAIC05MSw2ICs5Miw4NSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0
ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTcGFuPFQsIEV4dGVudD4+IHsKICAgICB9CiB9Owog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDE+IHN0cnVjdCBBcmd1bWVudENvZGVy
PEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxPj4geworICAgIHVzaW5nIEFycmF5UmVmZXJlbmNl
VHVwbGVUeXBlID0gQXJyYXlSZWZlcmVuY2VUdXBsZTxUMCwgVDE+OworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IEFycmF5UmVmZXJlbmNlVHVwbGVUeXBlJiBhcnJheVJlZmVyZW5jZSkKKyAgICB7Cisg
ICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5UmVmZXJlbmNlLnNp
emUoKSk7CisgICAgICAgIGF1dG8gc2l6ZSA9IGFycmF5UmVmZXJlbmNlLnNpemUoKTsKKyAgICAg
ICAgaWYgKCFzaXplKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJl
ZmVyZW5jZS50ZW1wbGF0ZSBkYXRhPDA+KCkpLCBzaXplICogc2l6ZW9mKFQwKSwgYWxpZ25vZihU
MCkpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS50ZW1wbGF0ZSBkYXRhPDE+KCkpLCBz
aXplICogc2l6ZW9mKFQxKSwgYWxpZ25vZihUMSkpOworICAgIH0KKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxBcnJheVJlZmVyZW5jZVR1cGxlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CisgICAgeworICAgICAgICB1aW50NjRfdCBzaXplOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYg
KCFzaXplKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHVwbGVUeXBlIHsgfTsK
KworICAgICAgICBhdXRvIGRhdGFTaXplID0gQ2hlY2tlZFNpemUgeyBzaXplIH0gKiBzaXplb2Yo
VDApOworICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEwID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShkYXRhU2l6ZSwgYWxpZ25v
ZihUMCkpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWRhdGEwKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGRhdGFTaXplID0gQ2hlY2tlZFNpemUgeyBzaXplIH0g
KiBzaXplb2YoVDEpOworICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZsb3dl
ZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGExID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShkYXRhU2l6
ZSwgYWxpZ25vZihUMSkpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWRhdGExKSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR1
cGxlVHlwZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVDAqPihkYXRhMCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVDEqPihkYXRhMSksIHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSkgfTsKKyAg
ICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMSwgVDI+PiB7
CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUgPSBBcnJheVJlZmVyZW5jZVR1cGxl
PFQwLCBUMSwgVDI+OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHVwbGVU
eXBlJiBhcnJheVJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KGFycmF5UmVmZXJlbmNlLnNpemUoKSk7CisgICAgICAgIGF1dG8gc2l6ZSA9
IGFycmF5UmVmZXJlbmNlLnNpemUoKTsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS50ZW1wbGF0ZSBkYXRhPDA+KCkp
LCBzaXplICogc2l6ZW9mKFQwKSwgYWxpZ25vZihUMCkpOworICAgICAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJl
ZmVyZW5jZS50ZW1wbGF0ZSBkYXRhPDE+KCkpLCBzaXplICogc2l6ZW9mKFQxKSwgYWxpZ25vZihU
MSkpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS50ZW1wbGF0ZSBkYXRhPDI+KCkpLCBz
aXplICogc2l6ZW9mKFQyKSwgYWxpZ25vZihUMikpOworICAgIH0KKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxBcnJheVJlZmVyZW5jZVR1cGxlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CisgICAgeworICAgICAgICB1aW50NjRfdCBzaXplOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYg
KCFzaXplKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHVwbGVUeXBlIHsgfTsK
KworICAgICAgICBhdXRvIGRhdGFTaXplID0gQ2hlY2tlZFNpemUgeyBzaXplIH0gKiBzaXplb2Yo
VDApOworICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEwID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShkYXRhU2l6ZSwgYWxpZ25v
ZihUMCkpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWRhdGEwKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGRhdGFTaXplID0gQ2hlY2tlZFNpemUgeyBzaXplIH0g
KiBzaXplb2YoVDEpOworICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZsb3dl
ZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGExID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShkYXRhU2l6
ZSwgYWxpZ25vZihUMSkpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWRhdGExKSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGRhdGFTaXplID0gQ2hlY2tlZFNpemUg
eyBzaXplIH0gKiBzaXplb2YoVDIpOworICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFz
T3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IGNvbnN0IHVpbnQ4X3QqIGRhdGEyID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5j
ZShkYXRhU2l6ZSwgYWxpZ25vZihUMikpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWRhdGEyKSkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJheVJl
ZmVyZW5jZVR1cGxlVHlwZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVDAqPihkYXRhMCksIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVDEqPihkYXRhMSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VDIqPihkYXRhMiksIHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSkgfTsKKyAgICB9Cit9OworCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25TZXQ8VD4+IHsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9wdGlvblNldCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDRhODgwOTgwOWE1NmYzY2VmMmFk
Y2UwMjBhMzBmNTBlNzc5NWQ3ODUuLjA4NThlYjZlMzYxNzFiM2M5OGE0ODNmNjUxMGM5ZjQ3NDlj
MWExMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjM5
LDYgKzYzOSw3IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRlX3N0cmluZyk6
CiAgICAgICAgICdzdGQ6Om9wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8b3B0aW9uYWw+J10sICdh
cmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAg
ICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJf
aGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnSVBDOjpBcnJheVJl
ZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1bWVudF9j
b2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdJUEM6OkFy
cmF5UmVmZXJlbmNlVHVwbGUnOiB7J2hlYWRlcnMnOiBbJyJBcnJheVJlZmVyZW5jZVR1cGxlLmgi
J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAg
ICAgICAgICdSZWYnOiB7J2hlYWRlcnMnOiBbJzx3dGYvUmVmLmg+J10sICdhcmd1bWVudF9jb2Rl
cl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdSZWZQdHInOiB7
J2hlYWRlcnMnOiBbJzx3dGYvUmVmQ291bnRlZC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVy
cyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnUmV0YWluUHRyJzogeydoZWFk
ZXJzJzogWyc8d3RmL1JldGFpblB0ci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsn
IkFyZ3VtZW50Q29kZXJzQ0YuaCInXX0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZWVlODA2YmVmYzIxODc1MjMyYjQ0ZjI0ODFhYjBk
YWY0NGYwMWY5Li41MzEwMDNkOTkzYmM2OWQwMDQ3OWU4Mjk4Y2IyOTliMWM2ZGRmNzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkx
NCw2ICs5MTQsNyBAQAogCQk0NkYzOEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJk
U2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5o
ICovOyB9OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNo
ZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87
IH07CiAJCTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNG
M0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovOyB9OworCQk0OTU1QTZFNjI4MDc2
RDREMDBCQjkxQzQgLyogQXJyYXlSZWZlcmVuY2VUdXBsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk1NUE2RTUyODA3NkQ0QzAwQkI5MUM0IC8qIEFy
cmF5UmVmZXJlbmNlVHVwbGUuaCAqLzsgfTsKIAkJNDk3M0RGNDgyNDIyOTQxRjAwRTRDMjZBIC8q
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTczREY0NzI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4uaCAqLzsgfTsKIAkJNDk5MDAwMjEyNEQyNDI5QzAwMDQ5Q0I0IC8q
IFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5OTAwMDFGMjREMjQyOUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDk5MDAwMjQyNEQy
NEMyOTAwMDQ5Q0I0IC8qIFdLUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTkwMDAyMzI0RDI0QzFDMDAwNDlDQjQgLyogV0tSZW5k
ZXJPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDY1Niw2ICs0NjU3LDcgQEAKIAkJNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1
bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4
NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcFByaXZhY3lSZXBvcnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk1NUE2RTUyODA3NkQ0QzAwQkI5MUM0
IC8qIEFycmF5UmVmZXJlbmNlVHVwbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXJyYXlSZWZlcmVuY2VUdXBsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OTczREY0NzI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDk5MDAwMUUyNEQyNDI5QzAwMDQ5Q0I0IC8qIFdLUmVuZGVyTGF5
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tSZW5kZXJMYXllci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ5OTAwMDFGMjREMjQyOUMwMDA0OUNCNCAvKiBXS1JlbmRlckxh
eWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVuZGVyTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTgzMDMsNiArODMwNSw3IEBACiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1
RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywKIAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5
RDMgLyogQXJndW1lbnRDb2RlcnMuaCAqLywKIAkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMg
LyogQXJyYXlSZWZlcmVuY2UuaCAqLywKKwkJCQk0OTU1QTZFNTI4MDc2RDRDMDBCQjkxQzQgLyog
QXJyYXlSZWZlcmVuY2VUdXBsZS5oICovLAogCQkJCUJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAv
KiBBdHRhY2htZW50LmNwcCAqLywKIAkJCQlCQ0VFOTY2QjExMkZBRjU3MDA2QkNDMjQgLyogQXR0
YWNobWVudC5oICovLAogCQkJCUJDMDMyREEyMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9u
LmNwcCAqLywKQEAgLTE0MDA2LDYgKzE0MDA5LDcgQEAKIAkJCQkxQUFGMEM0QTEyQjE2MzM0MDA4
RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3NUM0NEEy
MUFBMzE3MTAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDk1NUE2RTYyODA3NkQ0RDAwQkI5MUM0IC8qIEFycmF5UmVmZXJlbmNlVHVw
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRkE2MzRGMjM0RjdDNjQwMEZGQTg2NCAvKiBBc3lu
Y1JldmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJD
QzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODk3MTJBODgzODgw
MDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDVlOTIyZjc5
YThmZWJiNzM2NjIwZTg0ODE3MTNkN2NjZjhlNzQwNjguLjYyODZhYzFjN2RiOGY1ODZhYWE4N2M5
ZTNjYThlZjAyMTFhMjI5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcApAQCAtNDcsNiArNDcsMjYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0gMSA8PCAyMTsKIAorbmFt
ZXNwYWNlIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgUzAs
IHR5cGVuYW1lIFMxPgorSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMT4gdG9BcnJheVJl
ZmVyZW5jZVR1cGxlKEdDR0xTcGFuVHVwbGU8Y29uc3QgUzAsIGNvbnN0IFMxPiBzcGFuVHVwbGUp
Cit7CisgICAgcmV0dXJuIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZSB7CisgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVDAqPihzcGFuVHVwbGUuZGF0YTApLAorICAgICAgICByZWludGVy
cHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihzcGFuVHVwbGUuZGF0YTEpLAorICAgICAgICBzcGFu
VHVwbGUuYnVmU2l6ZSB9OworfQordGVtcGxhdGU8dHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgUzAsIHR5cGVuYW1lIFMxLCB0eXBlbmFtZSBTMj4KK0lQQzo6
QXJyYXlSZWZlcmVuY2VUdXBsZTxUMCwgVDEsIFQyPiB0b0FycmF5UmVmZXJlbmNlVHVwbGUoR0NH
TFNwYW5UdXBsZTxjb25zdCBTMCwgY29uc3QgUzEsIGNvbnN0IFMyPiBzcGFuVHVwbGUpCit7Cisg
ICAgcmV0dXJuIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZSB7CisgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVDAqPihzcGFuVHVwbGUuZGF0YTApLAorICAgICAgICByZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPihzcGFuVHVwbGUuZGF0YTEpLAorICAgICAgICByZWludGVycHJl
dF9jYXN0PGNvbnN0IGludDMyX3QqPihzcGFuVHVwbGUuZGF0YTIpLAorICAgICAgICBzcGFuVHVw
bGUuYnVmU2l6ZSB9OworfQorfQorCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNz
Q29ubmVjdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogICAgIDogR3Jh
cGhpY3NDb250ZXh0R0woYXR0cmlidXRlcykKICAgICAsIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
JmdwdVByb2Nlc3NDb25uZWN0aW9uKQpAQCAtMjU5LDYgKzI3OSw0MyBAQCB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgdwogICAgIH0KIH0KIAorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Om11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29u
c3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpPiBmaXJzdHNBbmRDb3VudHMpCit7CisgICAgaWYg
KCFpc0NvbnRleHRMb3N0KCkpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUs
IHRvQXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90PihmaXJzdHNBbmRDb3VudHMp
KSk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIG1hcmtDb250ZXh0TG9z
dCgpOworICAgIH0KK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0
aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNv
bnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTHNpemVpPiBmaXJzdHNDb3Vu
dHNBbmRJbnN0YW5jZUNvdW50cykKK3sKKyAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkgeworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6TXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgdG9BcnJheVJlZmVyZW5j
ZVR1cGxlPGludDMyX3QsIGludDMyX3QsIGludDMyX3Q+KGZpcnN0c0NvdW50c0FuZEluc3RhbmNl
Q291bnRzKSkpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICBtYXJrQ29u
dGV4dExvc3QoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNv
bnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGludD4gY291bnRzQW5kT2Zmc2V0cywgR0NHTGVudW0g
dHlwZSkKK3sKKyAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3
RWxlbWVudHNBTkdMRShtb2RlLCB0b0FycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJf
dD4oY291bnRzQW5kT2Zmc2V0cyksIHR5cGUpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQs
IGNvbnN0IEdDR0xzaXplaT4gY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLCBHQ0dMZW51
bSB0eXBlKQoreworICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7CisgICAgICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIHRvQXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQz
Ml90LCBpbnQzMl90LCBpbnQzMl90Pihjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMpLCB0
eXBlKSk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIG1hcmtDb250ZXh0
TG9zdCgpOworICAgIH0KK30KKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3
YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUsIFN0
cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMp
CiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmgKaW5kZXggMTA3OGQyZGYxZDNlZjFkNDc4ZDMzM2IwN2ExNmE0NTZkZmRmMWI2
NS4uNGI0ODcyMjY0YTg2YjRlMWYxM2U0YTY0NDlmNDgwNTJjNDg2ZWIzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTc5LDYgKzc5LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRlZEV2ZW50Rm9yVGVzdGlu
ZykgZmluYWw7CiAgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIHJlYWRuUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZp
bmFsOworICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNw
YW5UdXBsZTxjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGZpcnN0c0FuZENvdW50cykg
ZmluYWw7CisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaSwgY29uc3Qg
R0NHTHNpemVpPiBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cykgZmluYWw7CisgICAgdm9p
ZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29u
c3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50PiBjb3VudHNBbmRPZmZzZXRzLCBHQ0dMZW51bSB0
eXBlKSBmaW5hbDsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQs
IGNvbnN0IEdDR0xzaXplaT4gY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLCBHQ0dMZW51
bSB0eXBlKSBmaW5hbDsKIAogICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxl
bWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlw
dC4KICAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwpAQCAt
MzE3LDEwICszMjEsNiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwogICAgIHZvaWQgZHJhd0J1
ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOwogICAgIHZvaWQg
Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKLSAg
ICB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xz
aXplaSBkcmF3Y291bnQpIGZpbmFsOwotICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBp
bnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7Ci0gICAgdm9pZCBtdWx0
aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXpl
aT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRz
LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBmaW5hbDsKLSAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBj
b3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdD
R0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291
bnQpIGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSBmaW5hbDsKICAgICAvLyBFbmQgb2YgbGlz
dCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcAppbmRleCA0MzFhZGM5MzlhZGMyMzZhYzc3MjY1OWRhNTQ0MzNhMzIyZDMzZDMwLi44MjUw
YjY5MjQ4NmFhNDE5ZGVjZjQ2NzVkZmVhZThiZjk3NjViMWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHAKQEAgLTIyOTksNDIgKzIyOTksNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAg
IH0KIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJh
eXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdD
R0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQotewot
ICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7Ci0gICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURyYXdBcnJheXNBTkdM
RShtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50MzJfdCo+KGZpcnN0cy5kYXRhKSwgZmlyc3RzLmJ1ZlNpemUpLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGNvdW50cy5k
YXRhKSwgY291bnRzLmJ1ZlNpemUpLCBkcmF3Y291bnQpKTsKLSAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQotICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7Ci0gICAgfQotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48
Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFu
Y2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCi17Ci0gICAgaWYgKCFpc0NvbnRleHRMb3N0
KCkpIHsKLSAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4o
Zmlyc3RzLmRhdGEpLCBmaXJzdHMuYnVmU2l6ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRzLmRhdGEpLCBjb3VudHMu
YnVmU2l6ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBpbnQzMl90Kj4oaW5zdGFuY2VDb3VudHMuZGF0YSksIGluc3RhbmNlQ291bnRzLmJ1ZlNp
emUpLCBkcmF3Y291bnQpKTsKLSAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQotICAgICAgICAgICAg
bWFya0NvbnRleHRMb3N0KCk7Ci0gICAgfQotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCi17Ci0gICAgaWYgKCFpc0NvbnRl
eHRMb3N0KCkpIHsKLSAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0VsZW1lbnRzQU5HTEUobW9kZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihj
b3VudHMuZGF0YSksIGNvdW50cy5idWZTaXplKSwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihvZmZzZXRzLmRhdGEpLCBv
ZmZzZXRzLmJ1ZlNpemUpLCBkcmF3Y291bnQpKTsKLSAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQot
ICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7Ci0gICAgfQotfQotCi12b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCi17Ci0gICAgaWYgKCFp
c0NvbnRleHRMb3N0KCkpIHsKLSAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUobW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGludDMyX3QqPihjb3VudHMuZGF0YSksIGNvdW50cy5idWZTaXplKSwgdHlwZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihv
ZmZzZXRzLmRhdGEpLCBvZmZzZXRzLmJ1ZlNpemUpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGluc3RhbmNlQ291bnRzLmRhdGEp
LCBpbnN0YW5jZUNvdW50cy5idWZTaXplKSwgZHJhd2NvdW50KSk7Ci0gICAgICAgIGlmICghc2Vu
ZFJlc3VsdCkKLSAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgIH0KLX0KLQogc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpCiB7CiAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gcmV0dXJuVmFsdWUgPSB7IH07CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzViZGM5MmUyNzI4
YzQ1NGFhZTM3NmU2MzE1ZTYwNWYyZWRhMWMwOS4uYWM2NWI3MzNkODY4MzIxYjZmZTdhOGE0NmFm
OTA0Yjg4N2FiOGM2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIyLTA0LTEzICBKb2huIEN1bm5pbmdoYW0gIDxq
b2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVmFsaWRhdGUgdGhlIGRyYXdjb3Vu
dCBhZ2FpbnN0IHRoZSBsZW5ndGggb2YgbXVsdGlkcmF3IGJ1ZmZlciBwYXJhbWV0ZXJzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTU0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIwMjItMDQtMTEgIEFuZHJlcyBHb256YWxleiAgPGFuZHJl
c2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIFRlc3RSdW5uZXLigJlzIGNhbGxzIHRvIFtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3Vu
dDpdIG5lZWQgdG8gYmUgZGlzcGF0Y2ggdG8gdGhlIEFYIHNlY29uZGFyeSB0aHJlYWQuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2wKaW5kZXggOGVjYTVjNzIzM2Q5M2RkYzdhM2EwYzkyZDYzYjlm
OGZhZmM4M2U2OS4uNWQzZjVjYWQwZjZkOTkxNGI1NjIxMmM3ZGRhOWZlOWU1OGZlZTA0YiAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApAQCAtMTA5LDExICsxMDksMTUgQEAgbWVzc2FnZXMg
LT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2
b2lkIENvcHlUZXh0dXJlRnJvbVZpZGVvRnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVh
ZFJlZmVyZW5jZSB2aWRlb0ZyYW1lLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQs
IHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJv
b2wgc3VjY2VzcykgU3luY2hyb25vdXMKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0gICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIC0+IChzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBwcm9w
ZXJ0aWVzKSBTeW5jaHJvbm91cworICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvVmlk
ZW9GcmFtZSgpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBT
aW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxh
dGVkRXZlbnRGb3JUZXN0aW5nIGV2ZW50KQogICAgIHZvaWQgUmVhZG5QaXhlbHMwKGludDMyX3Qg
eCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9y
bWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIC0+
IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCiAgICAgdm9p
ZCBSZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIE11bHRpRHJhd0FycmF5c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJy
YXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90PiBmaXJzdHNBbmRDb3VudHMpCisgICAg
dm9pZCBNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4gZmlyc3RzQ291bnRz
QWFuZEluc3RhbmNlQ291bnRzKQorICAgIHZvaWQgTXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1aW50
MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdD4gY291
bnRzQW5kT2Zmc2V0cywgdWludDMyX3QgdHlwZSkKKyAgICB2b2lkIE11bHRpRHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGlu
dDMyX3QsIGludDMyX3QsIGludDMyX3Q+IGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywg
dWludDMyX3QgdHlwZSkKIHt9CiB9fQogCkBAIC0yMjQsNyArMjI4LDcgQEAgY2xhc3MgY3BwX3R5
cGVfY29udGFpbmVyKGNwcF90eXBlKToKICAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgog
ICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iCiAgICAgZGVm
IGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgotICAgICAgICByZXR1cm4gc2VsZi5jb250
YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iIGFuZCBzZWxmLmFyaXR5IGlzIE5vbmUKKyAgICAgICAg
cmV0dXJuIChzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJpdHkg
aXMgTm9uZSkgb3Igc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW5UdXBsZSIKICAgICBk
ZWYgZ2V0X2NvbnRhaW5lcl9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5jb250YWlu
ZXJfbmFtZQogICAgIGRlZiBnZXRfYXJpdHkoc2VsZikgLT4gT3B0aW9uYWxbaW50XToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457589</attachid>
            <date>2022-04-13 20:19:52 -0700</date>
            <delta_ts>2022-04-13 20:26:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239154-20220413201951.patch</filename>
            <type>text/plain</type>
            <size>57201</size>
            <attacher name="John Cunningham">johncunningham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWMxODJhZWY4ZTJiMTIw
ODFkZDc0NzNmODhiMDg2ODc3NzE2ZGVhZi4uZTg1ZGY0ZGY5OTAyZGQyYmNiY2E2Yjk0MGE5NzVm
OWMzZmUwYzBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTA0LTEzICBKb2hu
IEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVmFsaWRh
dGUgdGhlIGRyYXdjb3VudCBhZ2FpbnN0IHRoZSBsZW5ndGggb2YgbXVsdGlkcmF3IGJ1ZmZlciBw
YXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM5MTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11
bHRpRHJhdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3
QXJyYXlzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xNdWx0aURyYXc6Om11bHRpRHJh
d0FycmF5c0luc3RhbmNlZFdFQkdMKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVsdGlEcmF3
OjptdWx0aURyYXdFbGVtZW50c1dFQkdMKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVsdGlE
cmF3OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKToKKyAgICAgICAgKFdlYkNvcmU6
Om1ha2VTcGFuV2l0aE9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6Om11bHRpRHJhd0FycmF5c0FOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorCiAyMDIyLTA0LTEzICBFbGxpb3R0IFdp
bGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVdIEZpeCBwdWJsaWMgd2F0
Y2hPUyB3b3Jrc3BhY2UgYnVpbGQgYnkgdXBkYXRpbmcgc2NoZW1lIGFuZCBidWlsZCBzZXR0aW5n
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAwYmMyNzRjNmQwOTA1MmQ0YmI1Nzk2MjMwMGRkNjBjNGI2Nzc3MjA3Li4w
NjIwY2MzNGUzOWU2NzAxNTY2ZTNhNWIzNDNhNGEyODVhNGY5Y2Y3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQxIEBACisyMDIyLTA0LTEzICBKb2huIEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgVmFsaWRhdGUgdGhlIGRyYXdjb3VudCBhZ2FpbnN0IHRoZSBs
ZW5ndGggb2YgbXVsdGlkcmF3IGJ1ZmZlciBwYXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29yZTo6dmVjdG9y
Q29weUNhc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bXVs
dGlEcmF3QXJyYXlzQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptdWx0aURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRJ
bnRlcm5hbGZvcm1hdGl2KToKKyAgICAgICAgKG11bHRpRHJhd0FycmF5c0FOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKG11bHRpRHJhd0VsZW1lbnRzQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAobXVsdGlE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJl
bmNlVHVwbGUuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6
CisgICAgICAgIChjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKToKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0FycmF5c0FOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVs
dGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50c0FOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6IERlbGV0ZWQuCisKIDIwMjItMDQtMTMgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGp1
c3Qgd2hlbiBfc2V0UHJpdmFjeVByb3h5RmFpbENsb3NlZEZvclVucmVhY2hhYmxlTm9uTWFpbkhv
c3RzIGlzIGNhbGxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xNdWx0aURyYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURy
YXcuY3BwCmluZGV4IDk0ZGZjYzQ3YTQ2MTI3MmQ5YWFlYTJjY2IzNDVkYzM3NzM3YjdhMzQuLjhk
MWViMWZiZDc0ODQxYjYxYmZhNDM3MWZjYWFkNGE5ZmFhODk4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAKQEAgLTM0LDExICszNCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMTXVs
dGlEcmF3KTsKIAotc3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zmc2V0
KFdlYkdMTXVsdGlEcmF3OjpJbnQzMkxpc3QmIGxpc3QsIEdDR0x1aW50IG9mZnNldCkKLXsKLSAg
ICByZXR1cm4gbWFrZUdDR0xTcGFuKGxpc3QuZGF0YSgpICsgb2Zmc2V0LCBsaXN0Lmxlbmd0aCgp
IC0gb2Zmc2V0KTsKLX0KLQogV2ViR0xNdWx0aURyYXc6OldlYkdMTXVsdGlEcmF3KFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0
KQogewpAQCAtNzAsNyArNjUsNyBAQCB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdBcnJh
eXNXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgZmlyc3RzTGlzdCwgRwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0
aURyYXdBcnJheXNBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoZmlyc3RzTGlzdCwgZmly
c3RzT2Zmc2V0KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCks
IGRyYXdjb3VudCk7CisgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURy
YXdBcnJheXNBTkdMRShtb2RlLCBHQ0dMU3BhblR1cGxlIHsgZmlyc3RzTGlzdC5kYXRhKCkgKyBm
aXJzdHNPZmZzZXQsIGNvdW50c0xpc3QuZGF0YSgpICsgY291bnRzT2Zmc2V0LCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGRyYXdjb3VudCkgfSk7CiB9CiAKIHZvaWQgV2ViR0xNdWx0aURyYXc6Om11bHRp
RHJhd0FycmF5c0luc3RhbmNlZFdFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMyTGlzdCBmaXJzdHNM
aXN0LCBHQ0dMdWludCBmaXJzdHNPZmZzZXQsIEludDMyTGlzdCBjb3VudHNMaXN0LCBHQ0dMdWlu
dCBjb3VudHNPZmZzZXQsIEludDMyTGlzdCBpbnN0YW5jZUNvdW50c0xpc3QsIEdDR0x1aW50IGlu
c3RhbmNlQ291bnRzT2Zmc2V0LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQpAQCAtODUsNyArODAsNyBA
QCB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRXRUJHTChHQ0dM
ZW51bSBtb2RlLCBJbnQzMkxpc3QgZmlycwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoZmlyc3RzTGlzdCwgZmlyc3RzT2Zmc2V0KSwg
bWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIG1ha2VTcGFuV2l0
aE9mZnNldChpbnN0YW5jZUNvdW50c0xpc3QsIGluc3RhbmNlQ291bnRzT2Zmc2V0KSwgZHJhd2Nv
dW50KTsKKyAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPm11bHRpRHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBmaXJzdHNMaXN0LmRhdGEoKSAr
ICBmaXJzdHNPZmZzZXQsIGNvdW50c0xpc3QuZGF0YSgpICsgY291bnRzT2Zmc2V0LCBpbnN0YW5j
ZUNvdW50c0xpc3QuZGF0YSgpICsgaW5zdGFuY2VDb3VudHNPZmZzZXQsIHN0YXRpY19jYXN0PHNp
emVfdD4oZHJhd2NvdW50KSB9KTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3
RWxlbWVudHNXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgY291bnRzTGlzdCwgR0NHTHVp
bnQgY291bnRzT2Zmc2V0LCBHQ0dMZW51bSB0eXBlLCBJbnQzMkxpc3Qgb2Zmc2V0c0xpc3QsIEdD
R0x1aW50IG9mZnNldHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpCkBAIC05OSw3ICs5NCw3
IEBAIHZvaWQgV2ViR0xNdWx0aURyYXc6Om11bHRpRHJhd0VsZW1lbnRzV0VCR0woR0NHTGVudW0g
bW9kZSwgSW50MzJMaXN0IGNvdW50c0xpc3QsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPm11bHRpRHJhd0VsZW1lbnRzQU5HTEUo
bW9kZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIHR5cGUs
IG1ha2VTcGFuV2l0aE9mZnNldChvZmZzZXRzTGlzdCwgb2Zmc2V0c09mZnNldCksIGRyYXdjb3Vu
dCk7CisgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURyYXdFbGVtZW50
c0FOR0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBjb3VudHNMaXN0LmRhdGEoKSArIGNvdW50c09m
ZnNldCwgb2Zmc2V0c0xpc3QuZGF0YSgpICsgb2Zmc2V0c09mZnNldCwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihkcmF3Y291bnQpIH0sIHR5cGUpOwogfQogCiB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMyTGlzdCBjb3Vu
dHNMaXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xlbnVtIHR5cGUsIEludDMyTGlzdCBv
ZmZzZXRzTGlzdCwgR0NHTHVpbnQgb2Zmc2V0c09mZnNldCwgSW50MzJMaXN0IGluc3RhbmNlQ291
bnRzTGlzdCwgR0NHTHVpbnQgaW5zdGFuY2VDb3VudHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291
bnQpCkBAIC0xMTQsNyArMTA5LDcgQEAgdm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3RWxl
bWVudHNJbnN0YW5jZWRXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgY28KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+bXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoY291
bnRzTGlzdCwgY291bnRzT2Zmc2V0KSwgdHlwZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KG9mZnNldHNM
aXN0LCBvZmZzZXRzT2Zmc2V0KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGluc3RhbmNlQ291bnRzTGlz
dCwgaW5zdGFuY2VDb3VudHNPZmZzZXQpLCBkcmF3Y291bnQpOworICAgIG1fY29udGV4dC0+Z3Jh
cGhpY3NDb250ZXh0R0woKS0+bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBH
Q0dMU3BhblR1cGxlIHsgY291bnRzTGlzdC5kYXRhKCkgKyBjb3VudHNPZmZzZXQsIG9mZnNldHNM
aXN0LmRhdGEoKSArIG9mZnNldHNPZmZzZXQsIGluc3RhbmNlQ291bnRzTGlzdC5kYXRhKCkgKyBp
bnN0YW5jZUNvdW50c09mZnNldCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkcmF3Y291bnQpIH0sIHR5
cGUpOwogfQogCiBib29sIFdlYkdMTXVsdGlEcmF3Ojp2YWxpZGF0ZURyYXdjb3VudChjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xzaXplaSBkcmF3Y291bnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA2MWY5
MDg1ZTNiMDAzOGVhMWMzOWM1M2E2NjBmZTk5OWRjZGJhNmQxLi4zYWQ5MWQxZTY2ODU3ZjE1OGQz
YjRiNjQwZmU5NTQ3NzdjMWUwNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTEzNjAsMTAgKzEzNjAsMTAgQEAg
cHVibGljOgogICAgIC8vID09PT09PT09PT0gRXh0ZW5zaW9uIHJlbGF0ZWQgZW50cnkgcG9pbnRz
LgogCiAgICAgLy8gR0xfQU5HTEVfbXVsdGlfZHJhdwotICAgIHZpcnR1YWwgdm9pZCBtdWx0aURy
YXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJz
dHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VD
b3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbXVsdGlE
cmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywg
R0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXpl
aT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRz
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJh
d2NvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpPiBm
aXJzdHNBbmRDb3VudHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBj
b25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQ291bnRzQW5kSW5zdGFuY2VD
b3VudHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGludD4g
Y291bnRzQW5kT2Zmc2V0cywgR0NHTGVudW0gdHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBt
dWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVw
bGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNvdW50
c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgR0NHTGVudW0gdHlwZSkgPSAwOwogCiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpID0gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAppbmRl
eCA5NjllMzk1NDllNGQxMTczYzBkODkwOGRjMjNiMDYyMGIzZTE5NGJmLi5mZTdmMzhkNmYwYzA1
M2JmYzc5ZGViMzMwYWI1OTVlZGM1YWZlNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtMTkzLDMgKzE5Myw2NiBAQCBH
Q0dMU3BhbjxULCBFeHRlbnQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhKQogewogICAgIHJldHVybiBH
Q0dMU3BhbjxULCBFeHRlbnQ+IHsgZGF0YSB9OwogfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBU
eXBlcz4KK3N0cnVjdCBHQ0dMU3BhblR1cGxlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlw
ZW5hbWUgVDE+CitzdHJ1Y3QgR0NHTFNwYW5UdXBsZTxUMCwgVDE+IHsKKyAgICBHQ0dMU3BhblR1
cGxlKFQwKiBkYXRhMF8sIFQxKiBkYXRhMV8sIHNpemVfdCBidWZTaXplXykKKyAgICAgICAgOiBi
dWZTaXplKGJ1ZlNpemVfKQorICAgICAgICAsIGRhdGEwKGRhdGEwXykKKyAgICAgICAgLCBkYXRh
MShkYXRhMV8pCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8R0NHTHNpemVpPihi
dWZTaXplXykgPj0gMCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFt
ZSBVMT4KKyAgICBHQ0dMU3BhblR1cGxlKGNvbnN0IFZlY3RvcjxVMD4mIGRhdGEwXywgY29uc3Qg
VmVjdG9yPFUxPiYgZGF0YTFfKQorICAgICAgICA6IGJ1ZlNpemUoc3RkOjptaW4oZGF0YTBfLnNp
emUoKSwgZGF0YTFfLnNpemUoKSkpCisgICAgICAgICwgZGF0YTAoZGF0YTBfLmRhdGEoKSkKKyAg
ICAgICAgLCBkYXRhMShkYXRhMV8uZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRhdGEw
Xy5zaXplKCkgPT0gZGF0YTFfLnNpemUoKSk7CisgICAgfQorICAgIGNvbnN0IHNpemVfdCBidWZT
aXplOworICAgIFQwKiBjb25zdCBkYXRhMDsKKyAgICBUMSogY29uc3QgZGF0YTE7CisKK3Byb3Rl
Y3RlZDoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+CisgICAgR0NHTFNw
YW5UdXBsZShjb25zdCBWZWN0b3I8VTA+JiBkYXRhMF8sIGNvbnN0IFZlY3RvcjxVMT4mIGRhdGEx
Xywgc2l6ZV90IG1pbkRhdGFOU2l6ZSkKKyAgICAgICAgOiBidWZTaXplKHN0ZDo6bWluKHsgZGF0
YTBfLnNpemUoKSwgZGF0YTFfLnNpemUoKSwgbWluRGF0YU5TaXplIH0pKQorICAgICAgICAsIGRh
dGEwKGRhdGEwXy5kYXRhKCkpCisgICAgICAgICwgZGF0YTEoZGF0YTFfLmRhdGEoKSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChkYXRhMF8uc2l6ZSgpID09IGRhdGExXy5zaXplKCkgJiYgZGF0YTFf
LnNpemUoKSA9PSBtaW5EYXRhTlNpemUpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgR0NHTFNwYW5UdXBsZTxUMCwg
VDEsIFQyPiA6IHB1YmxpYyBHQ0dMU3BhblR1cGxlPFQwLCBUMT4geworICAgIEdDR0xTcGFuVHVw
bGUoVDAqIGRhdGEwXywgVDEqIGRhdGExXywgVDIqIGRhdGEyXywgc2l6ZV90IGJ1ZlNpemVfKQor
ICAgICAgICA6IEdDR0xTcGFuVHVwbGU8VDAsIFQxPihkYXRhMF8sIGRhdGExXywgYnVmU2l6ZV8p
CisgICAgICAgICwgZGF0YTIoZGF0YTJfKQorICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KKyAgICBHQ0dMU3BhblR1cGxlKGNv
bnN0IFZlY3RvcjxVMD4mIGRhdGEwXywgY29uc3QgVmVjdG9yPFUxPiYgZGF0YTFfLCBjb25zdCBW
ZWN0b3I8VTI+JiBkYXRhMl8pCisgICAgICAgIDogR0NHTFNwYW5UdXBsZTxUMCwgVDE+KGRhdGEw
XywgZGF0YTFfLCBkYXRhMl8uc2l6ZSgpKQorICAgICAgICAsIGRhdGEyKGRhdGEyXy5kYXRhKCkp
CisgICAgeworICAgIH0KKyAgICBUMiogY29uc3QgZGF0YTI7Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUMCwgdHlwZW5hbWUgVDE+CitHQ0dMU3BhblR1cGxlKFQwKiwgVDEqLCBzaXplX3QpIC0+
IEdDR0xTcGFuVHVwbGU8VDAsIFQxPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVDAsIHR5cGVuYW1l
IFQxPgorR0NHTFNwYW5UdXBsZShjb25zdCBWZWN0b3I8VDA+JiwgY29uc3QgVmVjdG9yPFQxPiYp
IC0+IEdDR0xTcGFuVHVwbGU8Y29uc3QgVDAsIGNvbnN0IFQxPjsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK0dDR0xTcGFuVHVwbGUoVDAqLCBUMSos
IFQyKiwgc2l6ZV90KSAtPiBHQ0dMU3BhblR1cGxlPFQwLCBUMSwgVDI+OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorR0NHTFNwYW5UdXBsZShjb25z
dCBWZWN0b3I8VDA+JiwgY29uc3QgVmVjdG9yPFQxPiYsIGNvbnN0IFZlY3RvcjxUMj4mKSAtPiBH
Q0dMU3BhblR1cGxlPGNvbnN0IFQwLCBjb25zdCBUMSwgY29uc3QgVDI+OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBmZTE4ODU0ZDYzMzE3M2E2OGZiZTAyY2Q4ZWRhZmM3
MmZmYThhZjM2Li5jNzg2YWU3OWIxYzBiM2VmYjc3OTNjYzE2NTUzZWM0OGRhZTQxYWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMjgzMSw0NiArMjgzMSw0OCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1
aW50IHByb2dyYW0sIEdDR0x1aW50CiAgICAgR0xfR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1
c3RBTkdMRShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcy5idWZTaXpl
LCBudWxscHRyLCBwYXJhbXMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTHNpemVp
IGRyYXdjb3VudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlz
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBjb25zdCBH
Q0dMc2l6ZWk+IGZpcnN0c0FuZENvdW50cykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHTF9NdWx0aURyYXdBcnJheXNBTkdMRShtb2Rl
LCBmaXJzdHMuZGF0YSwgY291bnRzLmRhdGEsIGRyYXdjb3VudCk7CisgICAgR0xfTXVsdGlEcmF3
QXJyYXlzQU5HTEUobW9kZSwgZmlyc3RzQW5kQ291bnRzLmRhdGEwLCBmaXJzdHNBbmRDb3VudHMu
ZGF0YTEsIGZpcnN0c0FuZENvdW50cy5idWZTaXplKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4g
Y291bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6
ZWkgZHJhd2NvdW50KQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xp
bnQsIGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTHNpemVpPiBmaXJzdHNDb3VudHNBbmRJbnN0
YW5jZUNvdW50cykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHTF9NdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJz
dHMuZGF0YSwgY291bnRzLmRhdGEsIGluc3RhbmNlQ291bnRzLmRhdGEsIGRyYXdjb3VudCk7Cisg
ICAgR0xfTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3RzQ291bnRzQW5k
SW5zdGFuY2VDb3VudHMuZGF0YTAsIGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRzLmRhdGEx
LCBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cy5kYXRhMiwgZmlyc3RzQ291bnRzQW5kSW5z
dGFuY2VDb3VudHMuYnVmU2l6ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
bXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
c2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zm
c2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
bXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0
IEdDR0xzaXplaSwgY29uc3QgR0NHTGludD4gY291bnRzQW5kT2Zmc2V0cywgR0NHTGVudW0gdHlw
ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBNdXN0IHBlcmZvcm0gY29udmVyc2lvbiBmcm9tIGludGVnZXIgb2Zmc2V0cyB0byB2
b2lkKiBwb2ludGVycyBiZWZvcmUgcGFzc2luZyBkb3duIHRvIEFOR0xFLgotICAgIFZlY3Rvcjx2
b2lkKj4gcG9pbnRlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvZmZzZXRzLmJ1ZlNp
emU7ICsraSkKLSAgICAgICAgcG9pbnRlcnMuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KG9mZnNldHNbaV0pKTsKKyAgICBWZWN0b3I8dm9pZCo+IG9mZnNldHNQb2ludGVyczsKKyAgICBv
ZmZzZXRzUG9pbnRlcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudHNBbmRPZmZzZXRzLmJ1
ZlNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnRzQW5kT2Zmc2V0cy5idWZT
aXplOyArK2kpCisgICAgICAgIG9mZnNldHNQb2ludGVycy5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oY291bnRzQW5kT2Zmc2V0cy5kYXRhMVtpXSkpOwogCi0gICAgR0xfTXVsdGlEcmF3
RWxlbWVudHNBTkdMRShtb2RlLCBjb3VudHMuZGF0YSwgdHlwZSwgcG9pbnRlcnMuZGF0YSgpLCBk
cmF3Y291bnQpOworICAgIEdMX011bHRpRHJhd0VsZW1lbnRzQU5HTEUobW9kZSwgY291bnRzQW5k
T2Zmc2V0cy5kYXRhMCwgdHlwZSwgb2Zmc2V0c1BvaW50ZXJzLmRhdGEoKSwgY291bnRzQW5kT2Zm
c2V0cy5idWZTaXplKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBv
ZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6
ZWkgZHJhd2NvdW50KQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NH
THNpemVpLCBjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNvdW50c09mZnNldHNBbmRJ
bnN0YW5jZUNvdW50cywgR0NHTGVudW0gdHlwZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNdXN0IHBlcmZvcm0gY29udmVyc2lv
biBmcm9tIGludGVnZXIgb2Zmc2V0cyB0byB2b2lkKiBwb2ludGVycyBiZWZvcmUgcGFzc2luZyBk
b3duIHRvIEFOR0xFLgotICAgIFZlY3Rvcjx2b2lkKj4gcG9pbnRlcnM7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBvZmZzZXRzLmJ1ZlNpemU7ICsraSkKLSAgICAgICAgcG9pbnRlcnMuYXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldHNbaV0pKTsKKyAgICBWZWN0b3I8dm9p
ZCo+IG9mZnNldHNQb2ludGVyczsKKyAgICBvZmZzZXRzUG9pbnRlcnMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMuYnVmU2l6ZSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMuYnVmU2l6
ZTsgKytpKQorICAgICAgICBvZmZzZXRzUG9pbnRlcnMuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cy5kYXRhMVtpXSkpOwogCi0gICAg
R0xfTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudHMuZGF0YSwgdHlw
ZSwgcG9pbnRlcnMuZGF0YSgpLCBpbnN0YW5jZUNvdW50cy5kYXRhLCBkcmF3Y291bnQpOworICAg
IEdMX011bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnRzT2Zmc2V0c0Fu
ZEluc3RhbmNlQ291bnRzLmRhdGEwLCB0eXBlLCBvZmZzZXRzUG9pbnRlcnMuZGF0YSgpLCBjb3Vu
dHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMuZGF0YTIsIGNvdW50c09mZnNldHNBbmRJbnN0YW5j
ZUNvdW50cy5idWZTaXplKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpzdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZmNkNTYzYTY3MzA4NzYxNmY2MjQzM2UzZDY2OGQ3ODJkYjY0ZjgyNi4uNjNj
MzkyYTQ2ZDc3N2ExYmYzYmM3ODE0YjE4YmE5MGM0MmNmYWE4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuaApAQCAtMzAyLDEwICszMDIsMTAgQEAgcHVibGljOgogICAgIFN0cmluZyBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGlu
ZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5hbDsKICAgICB2b2lkIGdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKLSAgICB2
b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xzaXpl
aSBkcmF3Y291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBp
bnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBt
dWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZz
ZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIG11bHRpRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNp
emVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNl
dHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBk
cmF3Y291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGZp
cnN0c0FuZENvdW50cykgZmluYWw7CisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdD
R0xzaXplaSwgY29uc3QgR0NHTHNpemVpPiBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cykg
ZmluYWw7CisgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xTcGFuVHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50PiBjb3VudHNBbmRPZmZz
ZXRzLCBHQ0dMZW51bSB0eXBlKSBmaW5hbDsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWks
IGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaT4gY291bnRzT2Zmc2V0c0FuZEluc3RhbmNl
Q291bnRzLCBHQ0dMZW51bSB0eXBlKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgK
aW5kZXggYWY3NWUwZDA5OTk2MTZiZjYzMWI1NmY1ZTUzNzc5YmRhZjJkNzE1MS4uZjYyNWNmZjll
YmQ1MDk0MWM5Y2NkOTg2NmI1ZDYxMTg5MmNmNmI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgKQEAgLTM2NCwxMCArMzY0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsK
IAogICAgIC8vIEdMX0FOR0xFX211bHRpX2RyYXcKLSAgICB2b2lkIG11bHRpRHJhd0FycmF5c0FO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNw
YW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRl
OwotICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNp
emVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2Nv
dW50KSBvdmVycmlkZTsKLSAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdD
R0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBs
ZTxjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGZpcnN0c0FuZENvdW50cykgb3ZlcnJp
ZGU7CisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2Rl
LCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NH
THNpemVpPiBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29u
c3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50PiBjb3VudHNBbmRPZmZzZXRzLCBHQ0dMZW51bSB0
eXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xp
bnQsIGNvbnN0IEdDR0xzaXplaT4gY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLCBHQ0dM
ZW51bSB0eXBlKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZjAyNDJhZjdhNDUw
MGE1MDQyNmMzYjIyNTU0MTQyMzY2ODM2YzczOS4uOWZiNjc3NDc4ZmM5NTcyYjRhOTQ0MWM1YmZm
Yzg3MDEyMjRlNTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC00Niw2ICs0Niwx
NiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25h
bWVzcGFjZSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTLCBpbnQgSSwgdHlwZW5hbWUgVD4KK1ZlY3Rv
cjxTPiB2ZWN0b3JDb3B5Q2FzdChjb25zdCBUJiBhcnJheVJlZmVyZW5jZSkKK3sKKyAgICBWZWN0
b3I8Uz4gcmVzdWx0OworICAgIHJlc3VsdC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBT
Kj4oYXJyYXlSZWZlcmVuY2UudGVtcGxhdGUgZGF0YTxJPigpKSwgYXJyYXlSZWZlcmVuY2Uuc2l6
ZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorfQorCiAvLyBDdXJyZW50bHkgd2UgaGF2ZSBv
bmUgZ2xvYmFsIFdlYkdMIHByb2Nlc3NpbmcgaW5zdGFuY2UuCiBJUEM6OlN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWUmIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkKIHsK
QEAgLTMxNSw2ICszMjUsNDYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVhZG5Q
aXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLAogICAgIG1fY29udGV4
dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKIH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6bXVsdGlEcmF3QXJyYXlzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3Q+JiYgZmlyc3RzQW5kQ291bnRzKQoreworICAgIGFz
c2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7CisgICAgLy8gQ29weSB0aGUgYXJyYXlzLiBUaGUg
Y29udGVudHMgYXJlIHRvIGJlIHZlcmlmaWVkLiBUaGUgZGF0YSBtaWdodCBiZSBpbiBtZW1vcnkg
cmVnaW9uIHNoYXJlZCBieSB0aGUgY2FsbGVyLgorICAgIFZlY3RvcjxHQ0dMaW50PiBmaXJzdHMg
PSB2ZWN0b3JDb3B5Q2FzdDxHQ0dMaW50LCAwPihmaXJzdHNBbmRDb3VudHMpOworICAgIFZlY3Rv
cjxHQ0dMc2l6ZWk+IGNvdW50cyA9IHZlY3RvckNvcHlDYXN0PEdDR0xzaXplaSwgMT4oZmlyc3Rz
QW5kQ291bnRzKTsKKyAgICBtX2NvbnRleHQtPm11bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUsIEdD
R0xTcGFuVHVwbGUgeyBmaXJzdHMsIGNvdW50cyB9KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwg
SVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3QsIGludDMyX3Q+JiYgZmly
c3RzQ291bnRzQW5kSW5zdGFuY2VDb3VudHMpCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtR
dWV1ZSgpKTsKKyAgICAvLyBDb3B5IHRoZSBhcnJheXMuIFRoZSBjb250ZW50cyBhcmUgdG8gYmUg
dmVyaWZpZWQuIFRoZSBkYXRhIG1pZ2h0IGJlIGluIG1lbW9yeSByZWdpb24gc2hhcmVkIGJ5IHRo
ZSBjYWxsZXIuCisgICAgVmVjdG9yPEdDR0xpbnQ+IGZpcnN0cyA9IHZlY3RvckNvcHlDYXN0PEdD
R0xpbnQsIDA+KGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRzKTsKKyAgICBWZWN0b3I8R0NH
THNpemVpPiBjb3VudHMgPSB2ZWN0b3JDb3B5Q2FzdDxHQ0dMc2l6ZWksIDE+KGZpcnN0c0NvdW50
c0FuZEluc3RhbmNlQ291bnRzKTsKKyAgICBWZWN0b3I8R0NHTHNpemVpPiBpbnN0YW5jZUNvdW50
cyA9IHZlY3RvckNvcHlDYXN0PEdDR0xzaXplaSwgMj4oZmlyc3RzQ291bnRzQW5kSW5zdGFuY2VD
b3VudHMpOworICAgIG1fY29udGV4dC0+bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9k
ZSwgR0NHTFNwYW5UdXBsZSB7IGZpcnN0cywgY291bnRzLCBpbnN0YW5jZUNvdW50cyB9KTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1
aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdD4m
JiBjb3VudHNBbmRPZmZzZXRzLCB1aW50MzJfdCB0eXBlKQoreworICAgIGFzc2VydElzQ3VycmVu
dCh3b3JrUXVldWUoKSk7CisgICAgLy8gQ29weSB0aGUgYXJyYXlzLiBUaGUgY29udGVudHMgYXJl
IHRvIGJlIHZlcmlmaWVkLiBUaGUgZGF0YSBtaWdodCBiZSBpbiBtZW1vcnkgcmVnaW9uIHNoYXJl
ZCBieSB0aGUgY2FsbGVyLgorICAgIGNvbnN0IFZlY3RvcjxHQ0dMc2l6ZWk+IGNvdW50cyA9IHZl
Y3RvckNvcHlDYXN0PEdDR0xzaXplaSwgMD4oY291bnRzQW5kT2Zmc2V0cyk7CisgICAgLy8gQ3Vy
cmVudGx5IG9mZnNldHMgYXJlIGNvcGllZCBpbiB0aGUgbV9jb250ZXh0LgorICAgIGNvbnN0IEdD
R0xpbnQqIG9mZnNldHMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihjb3VudHNB
bmRPZmZzZXRzLmRhdGE8MT4oKSk7CisgICAgbV9jb250ZXh0LT5tdWx0aURyYXdFbGVtZW50c0FO
R0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBjb3VudHMuZGF0YSgpLCBvZmZzZXRzLCBjb3VudHMu
c2l6ZSgpIH0sIHR5cGUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZl
cmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90PiYmIGNvdW50c09mZnNldHNBbmRJ
bnN0YW5jZUNvdW50cywgdWludDMyX3QgdHlwZSkKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQod29y
a1F1ZXVlKCkpOworICAgIC8vIENvcHkgdGhlIGFycmF5cy4gVGhlIGNvbnRlbnRzIGFyZSB0byBi
ZSB2ZXJpZmllZC4gVGhlIGRhdGEgbWlnaHQgYmUgaW4gbWVtb3J5IHJlZ2lvbiBzaGFyZWQgYnkg
dGhlIGNhbGxlci4KKyAgICBjb25zdCBWZWN0b3I8R0NHTHNpemVpPiBjb3VudHMgPSB2ZWN0b3JD
b3B5Q2FzdDxHQ0dMc2l6ZWksIDA+KGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cyk7Cisg
ICAgLy8gQ3VycmVudGx5IG9mZnNldHMgYXJlIGNvcGllZCBpbiB0aGUgbV9jb250ZXh0LgorICAg
IGNvbnN0IEdDR0xpbnQqIG9mZnNldHMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQq
Pihjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMuZGF0YTwxPigpKTsKKyAgICBjb25zdCBW
ZWN0b3I8R0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cyA9IHZlY3RvckNvcHlDYXN0PEdDR0xzaXpl
aSwgMj4oY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzKTsKKyAgICBtX2NvbnRleHQtPm11
bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgR0NHTFNwYW5UdXBsZSB7IGNvdW50
cy5kYXRhKCksIG9mZnNldHMsIGluc3RhbmNlQ291bnRzLmRhdGEoKSwgY291bnRzLnNpemUoKSB9
LCB0eXBlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaAppbmRleCBmZmY1ZTcxYzM1YjMyMTM4NzdhOTY1Njk5NDFhNmY1YjhkOWYzNzFk
Li5lNDIwY2Q0NzBjZjVmZTE2ZDE3ODY0MTI3NzBlMjNhNzkwNmU1YzExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaApAQCAtMTI3LDYgKzEyNywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzaW11
bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVk
RXZlbnRGb3JUZXN0aW5nKTsKICAgICB2b2lkIHJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMy
X3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+JiYpOwogICAgIHZv
aWQgcmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQpOworICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpB
cnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3Q+JiYgZmlyc3RzQW5kQ291bnRzKTsK
KyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90PiYmIGZpcnN0
c0NvdW50c0FuZEluc3RhbmNlQ291bnRzKTsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5H
TEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMy
X3Q+JiYgY291bnRzQW5kT2Zmc2V0cywgdWludDMyX3QgdHlwZSk7CisgICAgdm9pZCBtdWx0aURy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90PiYmIGNvdW50c09mZnNldHNBbmRJbnN0
YW5jZUNvdW50cywgdWludDMyX3QgdHlwZSk7CiAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IDk0OGNiMzYzMDE0OGM4Nzg3N2RiMzQ1ZDYz
MTA2YWE0NTc3ZmQ3MTguLjgxNjdkYzA3NTQ1MTIwY2RhMzE0MjM0Y2E0MWY2OWZmODZlYWFmMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTUwLDYgKzUw
LDEwIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQg
U3RyZWFtIHsKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCiAgICAgdm9pZCBS
ZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4gZGF0YSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkg
U3luY2hyb25vdXMKICAgICB2b2lkIFJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgTXVsdGlEcmF3QXJyYXlzQU5HTEUodWlu
dDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3Q+IGZp
cnN0c0FuZENvdW50cykKKyAgICB2b2lkIE11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVp
bnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBp
bnQzMl90PiBmaXJzdHNDb3VudHNBYW5kSW5zdGFuY2VDb3VudHMpCisgICAgdm9pZCBNdWx0aURy
YXdFbGVtZW50c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxp
bnQzMl90LCBpbnQzMl90PiBjb3VudHNBbmRPZmZzZXRzLCB1aW50MzJfdCB0eXBlKQorICAgIHZv
aWQgTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4gY291bnRzT2Zmc2V0
c0FuZEluc3RhbmNlQ291bnRzLCB1aW50MzJfdCB0eXBlKQogCiAgICAgdm9pZCBNb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
ICAgICB2b2lkIEFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKQEAgLTI4NywxMCArMjkx
LDYgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBT
dHJlYW0gewogICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90
IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBEcmF3
QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBidWZzKQogICAgIHZvaWQg
R2V0SW50ZXJuYWxmb3JtYXRpdih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9y
bWF0LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zKSBTeW5jaHJvbm91cwotICAgIHZvaWQgTXVsdGlEcmF3
QXJyYXlzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBm
aXJzdHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCBpbnQzMl90IGRyYXdj
b3VudCkKLSAgICB2b2lkIE11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1v
ZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gZmlyc3RzLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IGNvdW50cywgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBpbnN0YW5j
ZUNvdW50cywgaW50MzJfdCBkcmF3Y291bnQpCi0gICAgdm9pZCBNdWx0aURyYXdFbGVtZW50c0FO
R0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCB1
aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IG9mZnNldHMsIGludDMy
X3QgZHJhd2NvdW50KQotICAgIHZvaWQgTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1
aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGNvdW50cywgdWludDMy
X3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBvZmZzZXRzLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+IGluc3RhbmNlQ291bnRzLCBpbnQzMl90IGRyYXdjb3VudCkKICAg
ICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSAtPiAoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgK
aW5kZXggMTBlZTkyNGYwNDUwNmE4YWNhZDM1MjRiMmIxMTRkOWMwYTg4YTMyYi4uYzc1Y2UwYTIx
MGMxMTgxY2RiM2FlM2Y4ZGQ1MDEyMGVmNWZmNmUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTEzNDAsMjYgKzEzNDAsNiBA
QAogICAgICAgICBtX2NvbnRleHQtPmdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5h
bGZvcm1hdCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocGFyYW1z
LmRhdGEoKSksIHBhcmFtcy5zaXplKCkpKTsKICAgICB9Ci0gICAgdm9pZCBtdWx0aURyYXdBcnJh
eXNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgZmly
c3RzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgY291bnRzLCBpbnQzMl90IGRyYXdj
b3VudCkKLSAgICB7Ci0gICAgICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7Ci0gICAg
ICAgIG1fY29udGV4dC0+bXVsdGlEcmF3QXJyYXlzQU5HTEUobW9kZSwgbWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KGZpcnN0cy5kYXRhKCkpLCBmaXJzdHMuc2l6
ZSgpKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHNpemVpKj4oY291
bnRzLmRhdGEoKSksIGNvdW50cy5zaXplKCkpLCBkcmF3Y291bnQpOwotICAgIH0KLSAgICB2b2lk
IG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4mJiBmaXJzdHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4m
JiBjb3VudHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBpbnN0YW5jZUNvdW50cywg
aW50MzJfdCBkcmF3Y291bnQpCi0gICAgewotICAgICAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1
ZXVlKCkpOwotICAgICAgICBtX2NvbnRleHQtPm11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KG1vZGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihmaXJz
dHMuZGF0YSgpKSwgZmlyc3RzLnNpemUoKSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xzaXplaSo+KGNvdW50cy5kYXRhKCkpLCBjb3VudHMuc2l6ZSgpKSwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHNpemVpKj4oaW5zdGFuY2VDb3VudHMu
ZGF0YSgpKSwgaW5zdGFuY2VDb3VudHMuc2l6ZSgpKSwgZHJhd2NvdW50KTsKLSAgICB9Ci0gICAg
dm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4mJiBjb3VudHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4mJiBvZmZzZXRzLCBpbnQzMl90IGRyYXdjb3VudCkKLSAgICB7Ci0gICAgICAg
IGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7Ci0gICAgICAgIG1fY29udGV4dC0+bXVsdGlE
cmF3RWxlbWVudHNBTkdMRShtb2RlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMc2l6ZWkqPihjb3VudHMuZGF0YSgpKSwgY291bnRzLnNpemUoKSksIHR5cGUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihvZmZzZXRzLmRhdGEoKSks
IG9mZnNldHMuc2l6ZSgpKSwgZHJhd2NvdW50KTsKLSAgICB9Ci0gICAgdm9pZCBtdWx0aURyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4mJiBjb3VudHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4mJiBvZmZzZXRzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgaW5zdGFuY2VD
b3VudHMsIGludDMyX3QgZHJhd2NvdW50KQotICAgIHsKLSAgICAgICAgYXNzZXJ0SXNDdXJyZW50
KHdvcmtRdWV1ZSgpKTsKLSAgICAgICAgbV9jb250ZXh0LT5tdWx0aURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKG1vZGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xz
aXplaSo+KGNvdW50cy5kYXRhKCkpLCBjb3VudHMuc2l6ZSgpKSwgdHlwZSwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KG9mZnNldHMuZGF0YSgpKSwgb2Zmc2V0
cy5zaXplKCkpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMc2l6ZWkq
PihpbnN0YW5jZUNvdW50cy5kYXRhKCkpLCBpbnN0YW5jZUNvdW50cy5zaXplKCkpLCBkcmF3Y291
bnQpOwotICAgIH0KICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVy
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHJldHVyblZhbHVlID0geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggODdlOWM2MmJlOGE2ZGMxODk2NmM3
M2QzMWZmOGRkZTgyZTRiYWQ1OC4uMzZjNWZiNDI3YmUwMWU0ZDgyZWM1YjcyZDZhYTg4NjI5YzQy
MmUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAi
QXJyYXlSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZVR1cGxlLmgiCiAjaW5j
bHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4K
QEAgLTkxLDYgKzkyLDg1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFNwYW48VCwgRXh0ZW50Pj4gewogICAgIH0KIH07CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlS
ZWZlcmVuY2VUdXBsZTxUMCwgVDE+PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUdXBsZVR5
cGUgPSBBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMT47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RW5jb2Rlcj4KKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
QXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUmIGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsK
KyAgICAgICAgYXV0byBzaXplID0gYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpOworICAgICAgICBpZiAo
IXNpemUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNl
LnRlbXBsYXRlIGRhdGE8MD4oKSksIHNpemUgKiBzaXplb2YoVDApLCBhbGlnbm9mKFQwKSk7Cisg
ICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLnRlbXBsYXRlIGRhdGE8MT4oKSksIHNpemUgKiBz
aXplb2YoVDEpLCBhbGlnbm9mKFQxKSk7CisgICAgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEFycmF5UmVmZXJlbmNlVHVwbGVUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoIXNpemUp
CisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUgeyB9OworCisgICAg
ICAgIGF1dG8gZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVvZihUMCk7Cisg
ICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YTAgPSBk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGlnbm9mKFQwKSk7
CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTApKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVv
ZihUMSk7CisgICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhfdCog
ZGF0YTEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGln
bm9mKFQxKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTEpKQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHVwbGVUeXBl
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMCo+KGRhdGEwKSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBUMSo+KGRhdGExKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSB9OworICAgIH0KK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+IHN0cnVj
dCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxLCBUMj4+IHsKKyAgICB1
c2luZyBBcnJheVJlZmVyZW5jZVR1cGxlVHlwZSA9IEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQx
LCBUMj47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUmIGFy
cmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBzaXplID0gYXJyYXlS
ZWZlcmVuY2Uuc2l6ZSgpOworICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLnRlbXBsYXRlIGRhdGE8MD4oKSksIHNpemUg
KiBzaXplb2YoVDApLCBhbGlnbm9mKFQwKSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNl
LnRlbXBsYXRlIGRhdGE8MT4oKSksIHNpemUgKiBzaXplb2YoVDEpLCBhbGlnbm9mKFQxKSk7Cisg
ICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLnRlbXBsYXRlIGRhdGE8Mj4oKSksIHNpemUgKiBz
aXplb2YoVDIpLCBhbGlnbm9mKFQyKSk7CisgICAgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEFycmF5UmVmZXJlbmNlVHVwbGVUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoIXNpemUp
CisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUgeyB9OworCisgICAg
ICAgIGF1dG8gZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVvZihUMCk7Cisg
ICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YTAgPSBk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGlnbm9mKFQwKSk7
CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTApKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVv
ZihUMSk7CisgICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhfdCog
ZGF0YTEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGln
bm9mKFQxKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTEpKQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUg
fSAqIHNpemVvZihUMik7CisgICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxv
d2VkKCkpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3Qg
dWludDhfdCogZGF0YTIgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFT
aXplLCBhbGlnbm9mKFQyKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTIpKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNl
VHVwbGVUeXBlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMCo+KGRhdGEwKSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBUMSo+KGRhdGExKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMio+KGRh
dGEyKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSB9OworICAgIH0KK307CisKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IE9wdGlvblNldDxUPiYgb3B0aW9uU2V0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2VUdXBsZS5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2VUdXBsZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNGYx
NmM3YjdhMDc2NDZhMjY2ZTJhN2IyYzYxZjA0OWRjMTM2YWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZVR1cGxlLmgKQEAgLTAsMCAr
MSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgSVBDIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPiBj
bGFzcyBBcnJheVJlZmVyZW5jZVR1cGxlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5h
bWUgVDE+CitjbGFzcyBBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMT4geworcHVibGljOgorICAg
IEFycmF5UmVmZXJlbmNlVHVwbGUoKSA9IGRlZmF1bHQ7CisgICAgQXJyYXlSZWZlcmVuY2VUdXBs
ZShjb25zdCBUMCogZGF0YTAsIGNvbnN0IFQxKiBkYXRhMSwgc2l6ZV90IHNpemUpCisgICAgICAg
IDogbV9zaXplKHNpemUpCisgICAgICAgICwgbV9kYXRhMChzaXplID8gZGF0YTAgOiBudWxscHRy
KQorICAgICAgICAsIG1fZGF0YTEoc2l6ZSA/IGRhdGExIDogbnVsbHB0cikKKyAgICB7CisgICAg
fQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemU7IH0KKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHRlbXBsYXRlPGludCBJPgor
ICAgIGF1dG8gZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIoSSkKKyAg
ICAgICAgICAgIHJldHVybiBtX2RhdGExOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwcighSSkK
KyAgICAgICAgICAgIHJldHVybiBtX2RhdGEwOworICAgIH0KK3ByaXZhdGU6CisgICAgc2l6ZV90
IG1fc2l6ZSB7IDAgfTsKKyAgICBjb25zdCBUMCogbV9kYXRhMCB7IG51bGxwdHIgfTsKKyAgICBj
b25zdCBUMSogbV9kYXRhMSB7IG51bGxwdHIgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQw
LCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitjbGFzcyBBcnJheVJlZmVyZW5jZVR1cGxlPFQw
LCBUMSwgVDI+IDogcHVibGljIEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxPiB7CitwdWJsaWM6
CisgICAgQXJyYXlSZWZlcmVuY2VUdXBsZSgpID0gZGVmYXVsdDsKKyAgICBBcnJheVJlZmVyZW5j
ZVR1cGxlKGNvbnN0IFQwKiBkYXRhMCwgY29uc3QgVDEqIGRhdGExLCBjb25zdCBUMiogZGF0YTIs
IHNpemVfdCBzaXplKQorICAgICAgICA6IEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxPihkYXRh
MCwgZGF0YTEsIHNpemUpCisgICAgICAgICwgbV9kYXRhMihzaXplID8gZGF0YTIgOiBudWxscHRy
KQorICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGU8aW50IEk+CisgICAgYXV0byBkYXRhKCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwcihJID09IDIpCisgICAgICAgICAgICByZXR1
cm4gbV9kYXRhMjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJl
bmNlVHVwbGU8VDAsIFQxPjo6dGVtcGxhdGUgZGF0YTxJPigpOworICAgIH0KK3ByaXZhdGU6Cisg
ICAgY29uc3QgVDIqIG1fZGF0YTIgeyBudWxscHRyIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUMCwgdHlwZW5hbWUgVDE+CitBcnJheVJlZmVyZW5jZVR1cGxlKGNvbnN0IFQwKiwgY29uc3Qg
VDEqLCBzaXplX3QpIC0+IEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxPjsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK0FycmF5UmVmZXJlbmNlVHVw
bGUoY29uc3QgVDAqLCBjb25zdCBUMSosIGNvbnN0IFQyKiwgc2l6ZV90KSAtPiBBcnJheVJlZmVy
ZW5jZVR1cGxlPFQwLCBUMSwgVDI+OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCA0YTg4MDk4MDlhNTZmM2NlZjJhZGNlMDIwYTMwZjUwZTc3OTVkNzg1
Li4wODU4ZWI2ZTM2MTcxYjNjOThhNDgzZjY1MTBjOWY0NzQ5YzFhMTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTYzOSw2ICs2MzksNyBAQCBkZWYgY2xh
c3NfdGVtcGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAgICAgICAnc3RkOjpvcHRp
b25hbCc6IHsnaGVhZGVycyc6IFsnPG9wdGlvbmFsPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVy
cyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzogeydoZWFk
ZXJzJzogWyc8dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVu
dENvZGVycy5oIiddfSwKICAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hlYWRlcnMn
OiBbJyJBcnJheVJlZmVyZW5jZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFy
Z3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlJzog
eydoZWFkZXJzJzogWyciQXJyYXlSZWZlcmVuY2VUdXBsZS5oIiddLCAnYXJndW1lbnRfY29kZXJf
aGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnUmVmJzogeydoZWFk
ZXJzJzogWyc8d3RmL1JlZi5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3Vt
ZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnUmVmUHRyJzogeydoZWFkZXJzJzogWyc8d3RmL1Jl
ZkNvdW50ZWQuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVy
cy5oIiddfSwKICAgICAgICAgJ1JldGFpblB0cic6IHsnaGVhZGVycyc6IFsnPHd0Zi9SZXRhaW5Q
dHIuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVyc0NGLmgi
J119LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggN2VlZTgwNmJlZmMyMTg3NTIzMmI0NGYyNDgxYWIwZGFmNDRmMDFmOS4uNTMxMDAzZDk5
M2JjNjlkMDA0NzllODI5OGNiMjk5YjFjNmRkZjc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTQsNiArOTE0LDcgQEAKIAkJNDZG
MzhFOEMyNDE2RTY3MzAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkYzOEU4QjI0MTZFNjZE
MDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJNDZGOUIyNjMy
MzUyNkVGMzAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGOUIyNjIyMzUyNkVEMDAwNkZF
NUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovOyB9OwogCQk0OTMxMDJCRDI2ODNG
M0QwMDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFBy
aXZhY3lSZXBvcnQuaCAqLzsgfTsKKwkJNDk1NUE2RTYyODA3NkQ0RDAwQkI5MUM0IC8qIEFycmF5
UmVmZXJlbmNlVHVwbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5NTVBNkU1MjgwNzZENEMwMEJCOTFDNCAvKiBBcnJheVJlZmVyZW5jZVR1cGxlLmgg
Ki87IH07CiAJCTQ5NzNERjQ4MjQyMjk0MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDk3M0RGNDcyNDIyOTQxRjAwRTRDMjZBIC8qIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgg
Ki87IH07CiAJCTQ5OTAwMDIxMjREMjQyOUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTkwMDAxRjI0RDI0
MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5OTAwMDI0MjREMjRDMjkwMDA0OUNCNCAvKiBXS1Jl
bmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDk5MDAwMjMyNEQyNEMxQzAwMDQ5Q0I0IC8qIFdLUmVuZGVyT2JqZWN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ2NTYsNiArNDY1Nyw3
IEBACiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5uaW5nQm9hcmRTZXJ2aWNl
c1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2
RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0OTMxMDJCQzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9y
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ5NTVBNkU1MjgwNzZENEMwMEJCOTFDNCAvKiBBcnJheVJlZmVyZW5jZVR1
cGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5UmVmZXJlbmNlVHVw
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk3M0RGNDcyNDIyOTQxRjAwRTRD
MjZBIC8qIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5
OTAwMDFFMjREMjQyOUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLUmVuZGVyTGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OTkwMDAxRjI0RDI0MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1JlbmRlckxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzAzLDYg
KzgzMDUsNyBAQAogCQkJCTFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVy
cy5jcHAgKi8sCiAJCQkJMUFFRkQyRjYxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJz
LmggKi8sCiAJCQkJN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmgg
Ki8sCisJCQkJNDk1NUE2RTUyODA3NkQ0QzAwQkI5MUM0IC8qIEFycmF5UmVmZXJlbmNlVHVwbGUu
aCAqLywKIAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8s
CiAJCQkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlC
QzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCkBAIC0xNDAwNiw2
ICsxNDAwOSw3IEBACiAJCQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29k
ZXJzQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBB
cmd1bWVudENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjFEQjI2NjI1NjY4Q0Ux
MDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5NTVBNkU2
MjgwNzZENEQwMEJCOTFDNCAvKiBBcnJheVJlZmVyZW5jZVR1cGxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBQUZBNjM0RjIzNEY3QzY0MDBGRkE4NjQgLyogQXN5bmNSZXZhbGlkYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5NzEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCBhNWNmYzE3MDQ4YWYwMGIzODM2YmRmOTg0N2Q1
MGNhNTM2NjNlYzdhLi5iMTEwYWFiOTc4Mzc5YWU2Y2Y3ODk5ZDM1ODhmNzQyYzhlMzczMzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTQ3LDYgKzQ3
LDI2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjE7CiAKK25hbWVzcGFjZSB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFMwLCB0eXBlbmFtZSBTMT4KK0lQQzo6
QXJyYXlSZWZlcmVuY2VUdXBsZTxUMCwgVDE+IHRvQXJyYXlSZWZlcmVuY2VUdXBsZShHQ0dMU3Bh
blR1cGxlPGNvbnN0IFMwLCBjb25zdCBTMT4gc3BhblR1cGxlKQoreworICAgIHJldHVybiBJUEM6
OkFycmF5UmVmZXJlbmNlVHVwbGUgeworICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFQw
Kj4oc3BhblR1cGxlLmRhdGEwKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4oc3BhblR1cGxlLmRhdGExKSwKKyAgICAgICAgc3BhblR1cGxlLmJ1ZlNpemUgfTsKK30K
K3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFMwLCB0eXBlbmFtZSBTMSwgdHlwZW5hbWUgUzI+CitJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8
VDAsIFQxLCBUMj4gdG9BcnJheVJlZmVyZW5jZVR1cGxlKEdDR0xTcGFuVHVwbGU8Y29uc3QgUzAs
IGNvbnN0IFMxLCBjb25zdCBTMj4gc3BhblR1cGxlKQoreworICAgIHJldHVybiBJUEM6OkFycmF5
UmVmZXJlbmNlVHVwbGUgeworICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFQwKj4oc3Bh
blR1cGxlLmRhdGEwKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4o
c3BhblR1cGxlLmRhdGExKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90
Kj4oc3BhblR1cGxlLmRhdGEyKSwKKyAgICAgICAgc3BhblR1cGxlLmJ1ZlNpemUgfTsKK30KK30K
KwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMpCiAgICAgLCBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKCZncHVQcm9jZXNzQ29ubmVjdGlv
bikKQEAgLTI2MCw2ICsyODAsNDMgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHcKICAgICB9CiB9
CiAKKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdD
R0xzaXplaT4gZmlyc3RzQW5kQ291bnRzKQoreworICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpNdWx0aURyYXdBcnJheXNBTkdMRShtb2RlLCB0b0FycmF5UmVmZXJlbmNlVHVw
bGU8aW50MzJfdCwgaW50MzJfdD4oZmlyc3RzQW5kQ291bnRzKSkpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICB9Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBjb25zdCBH
Q0dMc2l6ZWksIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQ291bnRzQW5kSW5zdGFuY2VDb3VudHMp
Cit7CisgICAgaWYgKCFpc0NvbnRleHRMb3N0KCkpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKG1vZGUsIHRvQXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQz
Ml90LCBpbnQzMl90PihmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cykpKTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRz
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0
IEdDR0xpbnQ+IGNvdW50c0FuZE9mZnNldHMsIEdDR0xlbnVtIHR5cGUpCit7CisgICAgaWYgKCFp
c0NvbnRleHRMb3N0KCkpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0VsZW1lbnRzQU5HTEUobW9kZSwg
dG9BcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3Q+KGNvdW50c0FuZE9mZnNldHMp
LCB0eXBlKSk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIG1hcmtDb250
ZXh0TG9zdCgpOworICAgIH0KK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
VHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNv
dW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgR0NHTGVudW0gdHlwZSkKK3sKKyAgICBpZiAo
IWlzQ29udGV4dExvc3QoKSkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShtb2RlLCB0b0FycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJf
dD4oY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzKSwgdHlwZSkpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICB9Cit9CisK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1
Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRl
bnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQogewogICAgIGlmIChpc0NvbnRl
eHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDEw
NzhkMmRmMWQzZWYxZDQ3OGQzMzNiMDdhMTZhNDU2ZGZkZjFiNjUuLjRiNDg3MjI2NGE4NmI0ZTFm
MTNlNGE2NDQ5ZjQ4MDUyYzQ4NmViMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCkBAIC03OSw2ICs3OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0ZUV2
ZW50Rm9yVGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcpIGZpbmFsOwogICAgIHZvaWQg
cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dM
dm9pZD4gZGF0YSkgZmluYWw7CiAgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIG11bHRp
RHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGlu
dCwgY29uc3QgR0NHTHNpemVpPiBmaXJzdHNBbmRDb3VudHMpIGZpbmFsOworICAgIHZvaWQgbXVs
dGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxj
b25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQ291
bnRzQW5kSW5zdGFuY2VDb3VudHMpIGZpbmFsOworICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3Qg
R0NHTGludD4gY291bnRzQW5kT2Zmc2V0cywgR0NHTGVudW0gdHlwZSkgZmluYWw7CisgICAgdm9p
ZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
VHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNv
dW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgR0NHTGVudW0gdHlwZSkgZmluYWw7CiAKICAg
ICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0
IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCiAgICAgYm9vbCBtb3ZlRXJy
b3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKQEAgLTMxNywxMCArMzIxLDYgQEAgcHVi
bGljOgogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBtdWx0aURyYXdBcnJh
eXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdD
R0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBmaW5h
bDsKLSAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVp
PiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xz
aXplaSBkcmF3Y291bnQpIGZpbmFsOwotICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3Vu
dCkgZmluYWw7Ci0gICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6
ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBmaW5hbDsKICAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1Bp
eGVsQnVmZmVyKCkgZmluYWw7CiAgICAgLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1n
cHVwLXdlYmdsIHNjcmlwdC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJh
dGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKaW5kZXggNDMxYWRjOTM5
YWRjMjM2YWM3NzI2NTlkYTU0NDMzYTMyMmQzM2QzMC4uODI1MGI2OTI0ODZhYTQxOWRlY2Y0Njc1
ZGZlYWU4YmY5NzY1YjFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0yMjk5LDQyICsy
Mjk5LDYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZv
cm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0KICAgICB9CiB9CiAKLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6
ZWk+IGNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkKLXsKLSAgICBpZiAoIWlzQ29udGV4dExv
c3QoKSkgewotICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3QXJyYXlzQU5HTEUobW9kZSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihmaXJzdHMu
ZGF0YSksIGZpcnN0cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihjb3VudHMuZGF0YSksIGNvdW50cy5idWZTaXpl
KSwgZHJhd2NvdW50KSk7Ci0gICAgICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgICAgIG1h
cmtDb250ZXh0TG9zdCgpOwotICAgIH0KLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkg
ZHJhd2NvdW50KQotewotICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7Ci0gICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0
aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGZpcnN0cy5kYXRhKSwgZmlyc3Rz
LmJ1ZlNpemUpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50MzJfdCo+KGNvdW50cy5kYXRhKSwgY291bnRzLmJ1ZlNpemUpLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGluc3Rh
bmNlQ291bnRzLmRhdGEpLCBpbnN0YW5jZUNvdW50cy5idWZTaXplKSwgZHJhd2NvdW50KSk7Ci0g
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwot
ICAgIH0KLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdF
bGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dM
c2l6ZWkgZHJhd2NvdW50KQotewotICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7Ci0gICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpNdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRzLmRhdGEpLCBjb3VudHMu
YnVmU2l6ZSksIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4ob2Zmc2V0cy5kYXRhKSwgb2Zmc2V0cy5idWZTaXplKSwgZHJh
d2NvdW50KSk7Ci0gICAgICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgICAgIG1hcmtDb250
ZXh0TG9zdCgpOwotICAgIH0KLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRz
LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQotewotICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7Ci0g
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRz
LmRhdGEpLCBjb3VudHMuYnVmU2l6ZSksIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4ob2Zmc2V0cy5kYXRhKSwgb2Zmc2V0
cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGludDMyX3QqPihpbnN0YW5jZUNvdW50cy5kYXRhKSwgaW5zdGFuY2VDb3VudHMuYnVm
U2l6ZSksIGRyYXdjb3VudCkpOwotICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgICAg
ICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICB9Ci19Ci0KIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGl4ZWxCdWZmZXI+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvUGl4ZWxCdWZmZXIoKQogewogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4
ZWxCdWZmZXI+IHJldHVyblZhbHVlID0geyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ1MzhjOGZmM2FiODUxZGU3NWQ5MTQ2YjMxYzhiNzVk
OGMxMjY1ZmEuLjNhMzJiMTJmOGQyMzcwZTVmMjZhNmRhOGY3OTUwYTFjZjJlZjkzOTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAyMi0wNC0xMyAgSm9obiBDdW5uaW5naGFtICA8am9obmN1bm5pbmdoYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIFZhbGlkYXRlIHRoZSBkcmF3Y291bnQgYWdhaW5zdCB0aGUgbGVuZ3Ro
IG9mIG11bHRpZHJhdyBidWZmZXIgcGFyYW1ldGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgor
CiAyMDIyLTA0LTEzICBNYXR0ZW8gRmxvcmVzICA8bWF0dGVvX2Zsb3Jlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgWyBpT1MgXSBUZXN0V2ViS2l0QVBJLldlYktpdDIuQ3Jhc2hHUFVQcm9jZXNzV2hp
bGVDYXB0dXJpbmcgaXMgYSBmbGFreSB0aW1lb3V0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wK
aW5kZXggOGVjYTVjNzIzM2Q5M2RkYzdhM2EwYzkyZDYzYjlmOGZhZmM4M2U2OS4uNWQzZjVjYWQw
ZjZkOTkxNGI1NjIxMmM3ZGRhOWZlOWU1OGZlZTA0YiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbApAQCAtMTA5LDExICsxMDksMTUgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIENvcHlUZXh0dXJlRnJvbVZp
ZGVvRnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSB2aWRlb0ZyYW1l
LCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25v
dXMKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgdm9pZCBQYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvVmlkZW9GcmFtZSgpIC0+IChzdGQ6Om9w
dGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBwcm9wZXJ0
aWVzKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBTaW11bGF0ZUV2ZW50Rm9yVGVzdGlu
ZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2
ZW50KQogICAgIHZvaWQgUmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBSZWFkblBpeGVsczEoaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIE11bHRpRHJh
d0FycmF5c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQz
Ml90LCBpbnQzMl90PiBmaXJzdHNBbmRDb3VudHMpCisgICAgdm9pZCBNdWx0aURyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50
MzJfdCwgaW50MzJfdCwgaW50MzJfdD4gZmlyc3RzQ291bnRzQWFuZEluc3RhbmNlQ291bnRzKQor
ICAgIHZvaWQgTXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5
UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdD4gY291bnRzQW5kT2Zmc2V0cywgdWludDMy
X3QgdHlwZSkKKyAgICB2b2lkIE11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMy
X3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3QsIGludDMy
X3Q+IGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgdWludDMyX3QgdHlwZSkKIHt9CiB9
fQogCkBAIC0yMjQsNyArMjI4LDcgQEAgY2xhc3MgY3BwX3R5cGVfY29udGFpbmVyKGNwcF90eXBl
KToKICAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgogICAgICAgICByZXR1cm4gc2VsZi5j
b250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iCiAgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxm
KSAtPiBib29sOgotICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNw
YW4iIGFuZCBzZWxmLmFyaXR5IGlzIE5vbmUKKyAgICAgICAgcmV0dXJuIChzZWxmLmNvbnRhaW5l
cl9uYW1lID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJpdHkgaXMgTm9uZSkgb3Igc2VsZi5jb250
YWluZXJfbmFtZSA9PSAiR0NHTFNwYW5UdXBsZSIKICAgICBkZWYgZ2V0X2NvbnRhaW5lcl9uYW1l
KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZQogICAgIGRlZiBnZXRf
YXJpdHkoc2VsZikgLT4gT3B0aW9uYWxbaW50XToK
</data>
<flag name="commit-queue"
          id="486244"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457590</attachid>
            <date>2022-04-13 20:22:44 -0700</date>
            <delta_ts>2022-04-20 11:33:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239154-20220413202244.patch</filename>
            <type>text/plain</type>
            <size>57201</size>
            <attacher name="John Cunningham">johncunningham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWMxODJhZWY4ZTJiMTIw
ODFkZDc0NzNmODhiMDg2ODc3NzE2ZGVhZi4uZTg1ZGY0ZGY5OTAyZGQyYmNiY2E2Yjk0MGE5NzVm
OWMzZmUwYzBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTA0LTEzICBKb2hu
IEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVmFsaWRh
dGUgdGhlIGRyYXdjb3VudCBhZ2FpbnN0IHRoZSBsZW5ndGggb2YgbXVsdGlkcmF3IGJ1ZmZlciBw
YXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM5MTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11
bHRpRHJhdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3
QXJyYXlzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xNdWx0aURyYXc6Om11bHRpRHJh
d0FycmF5c0luc3RhbmNlZFdFQkdMKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVsdGlEcmF3
OjptdWx0aURyYXdFbGVtZW50c1dFQkdMKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVsdGlE
cmF3OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKToKKyAgICAgICAgKFdlYkNvcmU6
Om1ha2VTcGFuV2l0aE9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6Om11bHRpRHJhd0FycmF5c0FOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorCiAyMDIyLTA0LTEzICBFbGxpb3R0IFdp
bGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVdIEZpeCBwdWJsaWMgd2F0
Y2hPUyB3b3Jrc3BhY2UgYnVpbGQgYnkgdXBkYXRpbmcgc2NoZW1lIGFuZCBidWlsZCBzZXR0aW5n
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAwYmMyNzRjNmQwOTA1MmQ0YmI1Nzk2MjMwMGRkNjBjNGI2Nzc3MjA3Li4w
NjIwY2MzNGUzOWU2NzAxNTY2ZTNhNWIzNDNhNGEyODVhNGY5Y2Y3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQxIEBACisyMDIyLTA0LTEzICBKb2huIEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgVmFsaWRhdGUgdGhlIGRyYXdjb3VudCBhZ2FpbnN0IHRoZSBs
ZW5ndGggb2YgbXVsdGlkcmF3IGJ1ZmZlciBwYXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29yZTo6dmVjdG9y
Q29weUNhc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bXVs
dGlEcmF3QXJyYXlzQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptdWx0aURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRJ
bnRlcm5hbGZvcm1hdGl2KToKKyAgICAgICAgKG11bHRpRHJhd0FycmF5c0FOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKG11bHRpRHJhd0VsZW1lbnRzQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAobXVsdGlE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJl
bmNlVHVwbGUuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6
CisgICAgICAgIChjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKToKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0FycmF5c0FOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVs
dGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50c0FOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6IERlbGV0ZWQuCisKIDIwMjItMDQtMTMgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGp1
c3Qgd2hlbiBfc2V0UHJpdmFjeVByb3h5RmFpbENsb3NlZEZvclVucmVhY2hhYmxlTm9uTWFpbkhv
c3RzIGlzIGNhbGxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xNdWx0aURyYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURy
YXcuY3BwCmluZGV4IDk0ZGZjYzQ3YTQ2MTI3MmQ5YWFlYTJjY2IzNDVkYzM3NzM3YjdhMzQuLjhk
MWViMWZiZDc0ODQxYjYxYmZhNDM3MWZjYWFkNGE5ZmFhODk4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAKQEAgLTM0LDExICszNCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMTXVs
dGlEcmF3KTsKIAotc3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zmc2V0
KFdlYkdMTXVsdGlEcmF3OjpJbnQzMkxpc3QmIGxpc3QsIEdDR0x1aW50IG9mZnNldCkKLXsKLSAg
ICByZXR1cm4gbWFrZUdDR0xTcGFuKGxpc3QuZGF0YSgpICsgb2Zmc2V0LCBsaXN0Lmxlbmd0aCgp
IC0gb2Zmc2V0KTsKLX0KLQogV2ViR0xNdWx0aURyYXc6OldlYkdMTXVsdGlEcmF3KFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0
KQogewpAQCAtNzAsNyArNjUsNyBAQCB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdBcnJh
eXNXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgZmlyc3RzTGlzdCwgRwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0
aURyYXdBcnJheXNBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoZmlyc3RzTGlzdCwgZmly
c3RzT2Zmc2V0KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCks
IGRyYXdjb3VudCk7CisgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURy
YXdBcnJheXNBTkdMRShtb2RlLCBHQ0dMU3BhblR1cGxlIHsgZmlyc3RzTGlzdC5kYXRhKCkgKyBm
aXJzdHNPZmZzZXQsIGNvdW50c0xpc3QuZGF0YSgpICsgY291bnRzT2Zmc2V0LCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGRyYXdjb3VudCkgfSk7CiB9CiAKIHZvaWQgV2ViR0xNdWx0aURyYXc6Om11bHRp
RHJhd0FycmF5c0luc3RhbmNlZFdFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMyTGlzdCBmaXJzdHNM
aXN0LCBHQ0dMdWludCBmaXJzdHNPZmZzZXQsIEludDMyTGlzdCBjb3VudHNMaXN0LCBHQ0dMdWlu
dCBjb3VudHNPZmZzZXQsIEludDMyTGlzdCBpbnN0YW5jZUNvdW50c0xpc3QsIEdDR0x1aW50IGlu
c3RhbmNlQ291bnRzT2Zmc2V0LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQpAQCAtODUsNyArODAsNyBA
QCB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRXRUJHTChHQ0dM
ZW51bSBtb2RlLCBJbnQzMkxpc3QgZmlycwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoZmlyc3RzTGlzdCwgZmlyc3RzT2Zmc2V0KSwg
bWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIG1ha2VTcGFuV2l0
aE9mZnNldChpbnN0YW5jZUNvdW50c0xpc3QsIGluc3RhbmNlQ291bnRzT2Zmc2V0KSwgZHJhd2Nv
dW50KTsKKyAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPm11bHRpRHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBmaXJzdHNMaXN0LmRhdGEoKSAr
ICBmaXJzdHNPZmZzZXQsIGNvdW50c0xpc3QuZGF0YSgpICsgY291bnRzT2Zmc2V0LCBpbnN0YW5j
ZUNvdW50c0xpc3QuZGF0YSgpICsgaW5zdGFuY2VDb3VudHNPZmZzZXQsIHN0YXRpY19jYXN0PHNp
emVfdD4oZHJhd2NvdW50KSB9KTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3
RWxlbWVudHNXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgY291bnRzTGlzdCwgR0NHTHVp
bnQgY291bnRzT2Zmc2V0LCBHQ0dMZW51bSB0eXBlLCBJbnQzMkxpc3Qgb2Zmc2V0c0xpc3QsIEdD
R0x1aW50IG9mZnNldHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpCkBAIC05OSw3ICs5NCw3
IEBAIHZvaWQgV2ViR0xNdWx0aURyYXc6Om11bHRpRHJhd0VsZW1lbnRzV0VCR0woR0NHTGVudW0g
bW9kZSwgSW50MzJMaXN0IGNvdW50c0xpc3QsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPm11bHRpRHJhd0VsZW1lbnRzQU5HTEUo
bW9kZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIHR5cGUs
IG1ha2VTcGFuV2l0aE9mZnNldChvZmZzZXRzTGlzdCwgb2Zmc2V0c09mZnNldCksIGRyYXdjb3Vu
dCk7CisgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURyYXdFbGVtZW50
c0FOR0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBjb3VudHNMaXN0LmRhdGEoKSArIGNvdW50c09m
ZnNldCwgb2Zmc2V0c0xpc3QuZGF0YSgpICsgb2Zmc2V0c09mZnNldCwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihkcmF3Y291bnQpIH0sIHR5cGUpOwogfQogCiB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMyTGlzdCBjb3Vu
dHNMaXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xlbnVtIHR5cGUsIEludDMyTGlzdCBv
ZmZzZXRzTGlzdCwgR0NHTHVpbnQgb2Zmc2V0c09mZnNldCwgSW50MzJMaXN0IGluc3RhbmNlQ291
bnRzTGlzdCwgR0NHTHVpbnQgaW5zdGFuY2VDb3VudHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291
bnQpCkBAIC0xMTQsNyArMTA5LDcgQEAgdm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3RWxl
bWVudHNJbnN0YW5jZWRXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgY28KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+bXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoY291
bnRzTGlzdCwgY291bnRzT2Zmc2V0KSwgdHlwZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KG9mZnNldHNM
aXN0LCBvZmZzZXRzT2Zmc2V0KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGluc3RhbmNlQ291bnRzTGlz
dCwgaW5zdGFuY2VDb3VudHNPZmZzZXQpLCBkcmF3Y291bnQpOworICAgIG1fY29udGV4dC0+Z3Jh
cGhpY3NDb250ZXh0R0woKS0+bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBH
Q0dMU3BhblR1cGxlIHsgY291bnRzTGlzdC5kYXRhKCkgKyBjb3VudHNPZmZzZXQsIG9mZnNldHNM
aXN0LmRhdGEoKSArIG9mZnNldHNPZmZzZXQsIGluc3RhbmNlQ291bnRzTGlzdC5kYXRhKCkgKyBp
bnN0YW5jZUNvdW50c09mZnNldCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkcmF3Y291bnQpIH0sIHR5
cGUpOwogfQogCiBib29sIFdlYkdMTXVsdGlEcmF3Ojp2YWxpZGF0ZURyYXdjb3VudChjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xzaXplaSBkcmF3Y291bnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA2MWY5
MDg1ZTNiMDAzOGVhMWMzOWM1M2E2NjBmZTk5OWRjZGJhNmQxLi4zYWQ5MWQxZTY2ODU3ZjE1OGQz
YjRiNjQwZmU5NTQ3NzdjMWUwNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTEzNjAsMTAgKzEzNjAsMTAgQEAg
cHVibGljOgogICAgIC8vID09PT09PT09PT0gRXh0ZW5zaW9uIHJlbGF0ZWQgZW50cnkgcG9pbnRz
LgogCiAgICAgLy8gR0xfQU5HTEVfbXVsdGlfZHJhdwotICAgIHZpcnR1YWwgdm9pZCBtdWx0aURy
YXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJz
dHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VD
b3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbXVsdGlE
cmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywg
R0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXpl
aT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRz
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJh
d2NvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpPiBm
aXJzdHNBbmRDb3VudHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBj
b25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQ291bnRzQW5kSW5zdGFuY2VD
b3VudHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGludD4g
Y291bnRzQW5kT2Zmc2V0cywgR0NHTGVudW0gdHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBt
dWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVw
bGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNvdW50
c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgR0NHTGVudW0gdHlwZSkgPSAwOwogCiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpID0gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAppbmRl
eCA5NjllMzk1NDllNGQxMTczYzBkODkwOGRjMjNiMDYyMGIzZTE5NGJmLi5mZTdmMzhkNmYwYzA1
M2JmYzc5ZGViMzMwYWI1OTVlZGM1YWZlNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtMTkzLDMgKzE5Myw2NiBAQCBH
Q0dMU3BhbjxULCBFeHRlbnQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhKQogewogICAgIHJldHVybiBH
Q0dMU3BhbjxULCBFeHRlbnQ+IHsgZGF0YSB9OwogfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBU
eXBlcz4KK3N0cnVjdCBHQ0dMU3BhblR1cGxlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlw
ZW5hbWUgVDE+CitzdHJ1Y3QgR0NHTFNwYW5UdXBsZTxUMCwgVDE+IHsKKyAgICBHQ0dMU3BhblR1
cGxlKFQwKiBkYXRhMF8sIFQxKiBkYXRhMV8sIHNpemVfdCBidWZTaXplXykKKyAgICAgICAgOiBi
dWZTaXplKGJ1ZlNpemVfKQorICAgICAgICAsIGRhdGEwKGRhdGEwXykKKyAgICAgICAgLCBkYXRh
MShkYXRhMV8pCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8R0NHTHNpemVpPihi
dWZTaXplXykgPj0gMCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFt
ZSBVMT4KKyAgICBHQ0dMU3BhblR1cGxlKGNvbnN0IFZlY3RvcjxVMD4mIGRhdGEwXywgY29uc3Qg
VmVjdG9yPFUxPiYgZGF0YTFfKQorICAgICAgICA6IGJ1ZlNpemUoc3RkOjptaW4oZGF0YTBfLnNp
emUoKSwgZGF0YTFfLnNpemUoKSkpCisgICAgICAgICwgZGF0YTAoZGF0YTBfLmRhdGEoKSkKKyAg
ICAgICAgLCBkYXRhMShkYXRhMV8uZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRhdGEw
Xy5zaXplKCkgPT0gZGF0YTFfLnNpemUoKSk7CisgICAgfQorICAgIGNvbnN0IHNpemVfdCBidWZT
aXplOworICAgIFQwKiBjb25zdCBkYXRhMDsKKyAgICBUMSogY29uc3QgZGF0YTE7CisKK3Byb3Rl
Y3RlZDoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+CisgICAgR0NHTFNw
YW5UdXBsZShjb25zdCBWZWN0b3I8VTA+JiBkYXRhMF8sIGNvbnN0IFZlY3RvcjxVMT4mIGRhdGEx
Xywgc2l6ZV90IG1pbkRhdGFOU2l6ZSkKKyAgICAgICAgOiBidWZTaXplKHN0ZDo6bWluKHsgZGF0
YTBfLnNpemUoKSwgZGF0YTFfLnNpemUoKSwgbWluRGF0YU5TaXplIH0pKQorICAgICAgICAsIGRh
dGEwKGRhdGEwXy5kYXRhKCkpCisgICAgICAgICwgZGF0YTEoZGF0YTFfLmRhdGEoKSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChkYXRhMF8uc2l6ZSgpID09IGRhdGExXy5zaXplKCkgJiYgZGF0YTFf
LnNpemUoKSA9PSBtaW5EYXRhTlNpemUpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgR0NHTFNwYW5UdXBsZTxUMCwg
VDEsIFQyPiA6IHB1YmxpYyBHQ0dMU3BhblR1cGxlPFQwLCBUMT4geworICAgIEdDR0xTcGFuVHVw
bGUoVDAqIGRhdGEwXywgVDEqIGRhdGExXywgVDIqIGRhdGEyXywgc2l6ZV90IGJ1ZlNpemVfKQor
ICAgICAgICA6IEdDR0xTcGFuVHVwbGU8VDAsIFQxPihkYXRhMF8sIGRhdGExXywgYnVmU2l6ZV8p
CisgICAgICAgICwgZGF0YTIoZGF0YTJfKQorICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KKyAgICBHQ0dMU3BhblR1cGxlKGNv
bnN0IFZlY3RvcjxVMD4mIGRhdGEwXywgY29uc3QgVmVjdG9yPFUxPiYgZGF0YTFfLCBjb25zdCBW
ZWN0b3I8VTI+JiBkYXRhMl8pCisgICAgICAgIDogR0NHTFNwYW5UdXBsZTxUMCwgVDE+KGRhdGEw
XywgZGF0YTFfLCBkYXRhMl8uc2l6ZSgpKQorICAgICAgICAsIGRhdGEyKGRhdGEyXy5kYXRhKCkp
CisgICAgeworICAgIH0KKyAgICBUMiogY29uc3QgZGF0YTI7Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUMCwgdHlwZW5hbWUgVDE+CitHQ0dMU3BhblR1cGxlKFQwKiwgVDEqLCBzaXplX3QpIC0+
IEdDR0xTcGFuVHVwbGU8VDAsIFQxPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVDAsIHR5cGVuYW1l
IFQxPgorR0NHTFNwYW5UdXBsZShjb25zdCBWZWN0b3I8VDA+JiwgY29uc3QgVmVjdG9yPFQxPiYp
IC0+IEdDR0xTcGFuVHVwbGU8Y29uc3QgVDAsIGNvbnN0IFQxPjsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK0dDR0xTcGFuVHVwbGUoVDAqLCBUMSos
IFQyKiwgc2l6ZV90KSAtPiBHQ0dMU3BhblR1cGxlPFQwLCBUMSwgVDI+OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorR0NHTFNwYW5UdXBsZShjb25z
dCBWZWN0b3I8VDA+JiwgY29uc3QgVmVjdG9yPFQxPiYsIGNvbnN0IFZlY3RvcjxUMj4mKSAtPiBH
Q0dMU3BhblR1cGxlPGNvbnN0IFQwLCBjb25zdCBUMSwgY29uc3QgVDI+OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBmZTE4ODU0ZDYzMzE3M2E2OGZiZTAyY2Q4ZWRhZmM3
MmZmYThhZjM2Li5jNzg2YWU3OWIxYzBiM2VmYjc3OTNjYzE2NTUzZWM0OGRhZTQxYWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMjgzMSw0NiArMjgzMSw0OCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1
aW50IHByb2dyYW0sIEdDR0x1aW50CiAgICAgR0xfR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1
c3RBTkdMRShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcy5idWZTaXpl
LCBudWxscHRyLCBwYXJhbXMuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTHNpemVp
IGRyYXdjb3VudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlz
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBjb25zdCBH
Q0dMc2l6ZWk+IGZpcnN0c0FuZENvdW50cykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHTF9NdWx0aURyYXdBcnJheXNBTkdMRShtb2Rl
LCBmaXJzdHMuZGF0YSwgY291bnRzLmRhdGEsIGRyYXdjb3VudCk7CisgICAgR0xfTXVsdGlEcmF3
QXJyYXlzQU5HTEUobW9kZSwgZmlyc3RzQW5kQ291bnRzLmRhdGEwLCBmaXJzdHNBbmRDb3VudHMu
ZGF0YTEsIGZpcnN0c0FuZENvdW50cy5idWZTaXplKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4g
Y291bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6
ZWkgZHJhd2NvdW50KQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xp
bnQsIGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTHNpemVpPiBmaXJzdHNDb3VudHNBbmRJbnN0
YW5jZUNvdW50cykKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHTF9NdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJz
dHMuZGF0YSwgY291bnRzLmRhdGEsIGluc3RhbmNlQ291bnRzLmRhdGEsIGRyYXdjb3VudCk7Cisg
ICAgR0xfTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3RzQ291bnRzQW5k
SW5zdGFuY2VDb3VudHMuZGF0YTAsIGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRzLmRhdGEx
LCBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cy5kYXRhMiwgZmlyc3RzQ291bnRzQW5kSW5z
dGFuY2VDb3VudHMuYnVmU2l6ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
bXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
c2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zm
c2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
bXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0
IEdDR0xzaXplaSwgY29uc3QgR0NHTGludD4gY291bnRzQW5kT2Zmc2V0cywgR0NHTGVudW0gdHlw
ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBNdXN0IHBlcmZvcm0gY29udmVyc2lvbiBmcm9tIGludGVnZXIgb2Zmc2V0cyB0byB2
b2lkKiBwb2ludGVycyBiZWZvcmUgcGFzc2luZyBkb3duIHRvIEFOR0xFLgotICAgIFZlY3Rvcjx2
b2lkKj4gcG9pbnRlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvZmZzZXRzLmJ1ZlNp
emU7ICsraSkKLSAgICAgICAgcG9pbnRlcnMuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KG9mZnNldHNbaV0pKTsKKyAgICBWZWN0b3I8dm9pZCo+IG9mZnNldHNQb2ludGVyczsKKyAgICBv
ZmZzZXRzUG9pbnRlcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudHNBbmRPZmZzZXRzLmJ1
ZlNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnRzQW5kT2Zmc2V0cy5idWZT
aXplOyArK2kpCisgICAgICAgIG9mZnNldHNQb2ludGVycy5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oY291bnRzQW5kT2Zmc2V0cy5kYXRhMVtpXSkpOwogCi0gICAgR0xfTXVsdGlEcmF3
RWxlbWVudHNBTkdMRShtb2RlLCBjb3VudHMuZGF0YSwgdHlwZSwgcG9pbnRlcnMuZGF0YSgpLCBk
cmF3Y291bnQpOworICAgIEdMX011bHRpRHJhd0VsZW1lbnRzQU5HTEUobW9kZSwgY291bnRzQW5k
T2Zmc2V0cy5kYXRhMCwgdHlwZSwgb2Zmc2V0c1BvaW50ZXJzLmRhdGEoKSwgY291bnRzQW5kT2Zm
c2V0cy5idWZTaXplKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBv
ZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6
ZWkgZHJhd2NvdW50KQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NH
THNpemVpLCBjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNvdW50c09mZnNldHNBbmRJ
bnN0YW5jZUNvdW50cywgR0NHTGVudW0gdHlwZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNdXN0IHBlcmZvcm0gY29udmVyc2lv
biBmcm9tIGludGVnZXIgb2Zmc2V0cyB0byB2b2lkKiBwb2ludGVycyBiZWZvcmUgcGFzc2luZyBk
b3duIHRvIEFOR0xFLgotICAgIFZlY3Rvcjx2b2lkKj4gcG9pbnRlcnM7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBvZmZzZXRzLmJ1ZlNpemU7ICsraSkKLSAgICAgICAgcG9pbnRlcnMuYXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldHNbaV0pKTsKKyAgICBWZWN0b3I8dm9p
ZCo+IG9mZnNldHNQb2ludGVyczsKKyAgICBvZmZzZXRzUG9pbnRlcnMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMuYnVmU2l6ZSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMuYnVmU2l6
ZTsgKytpKQorICAgICAgICBvZmZzZXRzUG9pbnRlcnMuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cy5kYXRhMVtpXSkpOwogCi0gICAg
R0xfTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudHMuZGF0YSwgdHlw
ZSwgcG9pbnRlcnMuZGF0YSgpLCBpbnN0YW5jZUNvdW50cy5kYXRhLCBkcmF3Y291bnQpOworICAg
IEdMX011bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnRzT2Zmc2V0c0Fu
ZEluc3RhbmNlQ291bnRzLmRhdGEwLCB0eXBlLCBvZmZzZXRzUG9pbnRlcnMuZGF0YSgpLCBjb3Vu
dHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMuZGF0YTIsIGNvdW50c09mZnNldHNBbmRJbnN0YW5j
ZUNvdW50cy5idWZTaXplKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpzdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZmNkNTYzYTY3MzA4NzYxNmY2MjQzM2UzZDY2OGQ3ODJkYjY0ZjgyNi4uNjNj
MzkyYTQ2ZDc3N2ExYmYzYmM3ODE0YjE4YmE5MGM0MmNmYWE4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuaApAQCAtMzAyLDEwICszMDIsMTAgQEAgcHVibGljOgogICAgIFN0cmluZyBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGlu
ZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5hbDsKICAgICB2b2lkIGdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKLSAgICB2
b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xzaXpl
aSBkcmF3Y291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBp
bnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBt
dWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZz
ZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIG11bHRpRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNp
emVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNl
dHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBk
cmF3Y291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGZp
cnN0c0FuZENvdW50cykgZmluYWw7CisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdD
R0xzaXplaSwgY29uc3QgR0NHTHNpemVpPiBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cykg
ZmluYWw7CisgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xTcGFuVHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50PiBjb3VudHNBbmRPZmZz
ZXRzLCBHQ0dMZW51bSB0eXBlKSBmaW5hbDsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWks
IGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaT4gY291bnRzT2Zmc2V0c0FuZEluc3RhbmNl
Q291bnRzLCBHQ0dMZW51bSB0eXBlKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgK
aW5kZXggYWY3NWUwZDA5OTk2MTZiZjYzMWI1NmY1ZTUzNzc5YmRhZjJkNzE1MS4uZjYyNWNmZjll
YmQ1MDk0MWM5Y2NkOTg2NmI1ZDYxMTg5MmNmNmI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgKQEAgLTM2NCwxMCArMzY0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsK
IAogICAgIC8vIEdMX0FOR0xFX211bHRpX2RyYXcKLSAgICB2b2lkIG11bHRpRHJhd0FycmF5c0FO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNw
YW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRl
OwotICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNp
emVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2Nv
dW50KSBvdmVycmlkZTsKLSAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdD
R0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBs
ZTxjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGZpcnN0c0FuZENvdW50cykgb3ZlcnJp
ZGU7CisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2Rl
LCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NH
THNpemVpPiBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29u
c3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50PiBjb3VudHNBbmRPZmZzZXRzLCBHQ0dMZW51bSB0
eXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xp
bnQsIGNvbnN0IEdDR0xzaXplaT4gY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLCBHQ0dM
ZW51bSB0eXBlKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZjAyNDJhZjdhNDUw
MGE1MDQyNmMzYjIyNTU0MTQyMzY2ODM2YzczOS4uOWZiNjc3NDc4ZmM5NTcyYjRhOTQ0MWM1YmZm
Yzg3MDEyMjRlNTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC00Niw2ICs0Niwx
NiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25h
bWVzcGFjZSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTLCBpbnQgSSwgdHlwZW5hbWUgVD4KK1ZlY3Rv
cjxTPiB2ZWN0b3JDb3B5Q2FzdChjb25zdCBUJiBhcnJheVJlZmVyZW5jZSkKK3sKKyAgICBWZWN0
b3I8Uz4gcmVzdWx0OworICAgIHJlc3VsdC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBT
Kj4oYXJyYXlSZWZlcmVuY2UudGVtcGxhdGUgZGF0YTxJPigpKSwgYXJyYXlSZWZlcmVuY2Uuc2l6
ZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorfQorCiAvLyBDdXJyZW50bHkgd2UgaGF2ZSBv
bmUgZ2xvYmFsIFdlYkdMIHByb2Nlc3NpbmcgaW5zdGFuY2UuCiBJUEM6OlN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWUmIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkKIHsK
QEAgLTMxNSw2ICszMjUsNDYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVhZG5Q
aXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLAogICAgIG1fY29udGV4
dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKIH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6bXVsdGlEcmF3QXJyYXlzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3Q+JiYgZmlyc3RzQW5kQ291bnRzKQoreworICAgIGFz
c2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7CisgICAgLy8gQ29weSB0aGUgYXJyYXlzLiBUaGUg
Y29udGVudHMgYXJlIHRvIGJlIHZlcmlmaWVkLiBUaGUgZGF0YSBtaWdodCBiZSBpbiBtZW1vcnkg
cmVnaW9uIHNoYXJlZCBieSB0aGUgY2FsbGVyLgorICAgIFZlY3RvcjxHQ0dMaW50PiBmaXJzdHMg
PSB2ZWN0b3JDb3B5Q2FzdDxHQ0dMaW50LCAwPihmaXJzdHNBbmRDb3VudHMpOworICAgIFZlY3Rv
cjxHQ0dMc2l6ZWk+IGNvdW50cyA9IHZlY3RvckNvcHlDYXN0PEdDR0xzaXplaSwgMT4oZmlyc3Rz
QW5kQ291bnRzKTsKKyAgICBtX2NvbnRleHQtPm11bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUsIEdD
R0xTcGFuVHVwbGUgeyBmaXJzdHMsIGNvdW50cyB9KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwg
SVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3QsIGludDMyX3Q+JiYgZmly
c3RzQ291bnRzQW5kSW5zdGFuY2VDb3VudHMpCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtR
dWV1ZSgpKTsKKyAgICAvLyBDb3B5IHRoZSBhcnJheXMuIFRoZSBjb250ZW50cyBhcmUgdG8gYmUg
dmVyaWZpZWQuIFRoZSBkYXRhIG1pZ2h0IGJlIGluIG1lbW9yeSByZWdpb24gc2hhcmVkIGJ5IHRo
ZSBjYWxsZXIuCisgICAgVmVjdG9yPEdDR0xpbnQ+IGZpcnN0cyA9IHZlY3RvckNvcHlDYXN0PEdD
R0xpbnQsIDA+KGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRzKTsKKyAgICBWZWN0b3I8R0NH
THNpemVpPiBjb3VudHMgPSB2ZWN0b3JDb3B5Q2FzdDxHQ0dMc2l6ZWksIDE+KGZpcnN0c0NvdW50
c0FuZEluc3RhbmNlQ291bnRzKTsKKyAgICBWZWN0b3I8R0NHTHNpemVpPiBpbnN0YW5jZUNvdW50
cyA9IHZlY3RvckNvcHlDYXN0PEdDR0xzaXplaSwgMj4oZmlyc3RzQ291bnRzQW5kSW5zdGFuY2VD
b3VudHMpOworICAgIG1fY29udGV4dC0+bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9k
ZSwgR0NHTFNwYW5UdXBsZSB7IGZpcnN0cywgY291bnRzLCBpbnN0YW5jZUNvdW50cyB9KTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1
aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdD4m
JiBjb3VudHNBbmRPZmZzZXRzLCB1aW50MzJfdCB0eXBlKQoreworICAgIGFzc2VydElzQ3VycmVu
dCh3b3JrUXVldWUoKSk7CisgICAgLy8gQ29weSB0aGUgYXJyYXlzLiBUaGUgY29udGVudHMgYXJl
IHRvIGJlIHZlcmlmaWVkLiBUaGUgZGF0YSBtaWdodCBiZSBpbiBtZW1vcnkgcmVnaW9uIHNoYXJl
ZCBieSB0aGUgY2FsbGVyLgorICAgIGNvbnN0IFZlY3RvcjxHQ0dMc2l6ZWk+IGNvdW50cyA9IHZl
Y3RvckNvcHlDYXN0PEdDR0xzaXplaSwgMD4oY291bnRzQW5kT2Zmc2V0cyk7CisgICAgLy8gQ3Vy
cmVudGx5IG9mZnNldHMgYXJlIGNvcGllZCBpbiB0aGUgbV9jb250ZXh0LgorICAgIGNvbnN0IEdD
R0xpbnQqIG9mZnNldHMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihjb3VudHNB
bmRPZmZzZXRzLmRhdGE8MT4oKSk7CisgICAgbV9jb250ZXh0LT5tdWx0aURyYXdFbGVtZW50c0FO
R0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBjb3VudHMuZGF0YSgpLCBvZmZzZXRzLCBjb3VudHMu
c2l6ZSgpIH0sIHR5cGUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZl
cmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90PiYmIGNvdW50c09mZnNldHNBbmRJ
bnN0YW5jZUNvdW50cywgdWludDMyX3QgdHlwZSkKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQod29y
a1F1ZXVlKCkpOworICAgIC8vIENvcHkgdGhlIGFycmF5cy4gVGhlIGNvbnRlbnRzIGFyZSB0byBi
ZSB2ZXJpZmllZC4gVGhlIGRhdGEgbWlnaHQgYmUgaW4gbWVtb3J5IHJlZ2lvbiBzaGFyZWQgYnkg
dGhlIGNhbGxlci4KKyAgICBjb25zdCBWZWN0b3I8R0NHTHNpemVpPiBjb3VudHMgPSB2ZWN0b3JD
b3B5Q2FzdDxHQ0dMc2l6ZWksIDA+KGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cyk7Cisg
ICAgLy8gQ3VycmVudGx5IG9mZnNldHMgYXJlIGNvcGllZCBpbiB0aGUgbV9jb250ZXh0LgorICAg
IGNvbnN0IEdDR0xpbnQqIG9mZnNldHMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQq
Pihjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMuZGF0YTwxPigpKTsKKyAgICBjb25zdCBW
ZWN0b3I8R0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cyA9IHZlY3RvckNvcHlDYXN0PEdDR0xzaXpl
aSwgMj4oY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzKTsKKyAgICBtX2NvbnRleHQtPm11
bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgR0NHTFNwYW5UdXBsZSB7IGNvdW50
cy5kYXRhKCksIG9mZnNldHMsIGluc3RhbmNlQ291bnRzLmRhdGEoKSwgY291bnRzLnNpemUoKSB9
LCB0eXBlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaAppbmRleCBmZmY1ZTcxYzM1YjMyMTM4NzdhOTY1Njk5NDFhNmY1YjhkOWYzNzFk
Li5lNDIwY2Q0NzBjZjVmZTE2ZDE3ODY0MTI3NzBlMjNhNzkwNmU1YzExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaApAQCAtMTI3LDYgKzEyNywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzaW11
bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVk
RXZlbnRGb3JUZXN0aW5nKTsKICAgICB2b2lkIHJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMy
X3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+JiYpOwogICAgIHZv
aWQgcmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQpOworICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpB
cnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3Q+JiYgZmlyc3RzQW5kQ291bnRzKTsK
KyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90PiYmIGZpcnN0
c0NvdW50c0FuZEluc3RhbmNlQ291bnRzKTsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5H
TEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMy
X3Q+JiYgY291bnRzQW5kT2Zmc2V0cywgdWludDMyX3QgdHlwZSk7CisgICAgdm9pZCBtdWx0aURy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90PiYmIGNvdW50c09mZnNldHNBbmRJbnN0
YW5jZUNvdW50cywgdWludDMyX3QgdHlwZSk7CiAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IDk0OGNiMzYzMDE0OGM4Nzg3N2RiMzQ1ZDYz
MTA2YWE0NTc3ZmQ3MTguLjgxNjdkYzA3NTQ1MTIwY2RhMzE0MjM0Y2E0MWY2OWZmODZlYWFmMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTUwLDYgKzUw
LDEwIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQg
U3RyZWFtIHsKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCiAgICAgdm9pZCBS
ZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4gZGF0YSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkg
U3luY2hyb25vdXMKICAgICB2b2lkIFJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgTXVsdGlEcmF3QXJyYXlzQU5HTEUodWlu
dDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3Q+IGZp
cnN0c0FuZENvdW50cykKKyAgICB2b2lkIE11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVp
bnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBp
bnQzMl90PiBmaXJzdHNDb3VudHNBYW5kSW5zdGFuY2VDb3VudHMpCisgICAgdm9pZCBNdWx0aURy
YXdFbGVtZW50c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxp
bnQzMl90LCBpbnQzMl90PiBjb3VudHNBbmRPZmZzZXRzLCB1aW50MzJfdCB0eXBlKQorICAgIHZv
aWQgTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4gY291bnRzT2Zmc2V0
c0FuZEluc3RhbmNlQ291bnRzLCB1aW50MzJfdCB0eXBlKQogCiAgICAgdm9pZCBNb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
ICAgICB2b2lkIEFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKQEAgLTI4NywxMCArMjkx
LDYgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBT
dHJlYW0gewogICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90
IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBEcmF3
QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBidWZzKQogICAgIHZvaWQg
R2V0SW50ZXJuYWxmb3JtYXRpdih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9y
bWF0LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zKSBTeW5jaHJvbm91cwotICAgIHZvaWQgTXVsdGlEcmF3
QXJyYXlzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBm
aXJzdHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCBpbnQzMl90IGRyYXdj
b3VudCkKLSAgICB2b2lkIE11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1v
ZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gZmlyc3RzLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IGNvdW50cywgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBpbnN0YW5j
ZUNvdW50cywgaW50MzJfdCBkcmF3Y291bnQpCi0gICAgdm9pZCBNdWx0aURyYXdFbGVtZW50c0FO
R0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCB1
aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IG9mZnNldHMsIGludDMy
X3QgZHJhd2NvdW50KQotICAgIHZvaWQgTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1
aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGNvdW50cywgdWludDMy
X3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBvZmZzZXRzLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+IGluc3RhbmNlQ291bnRzLCBpbnQzMl90IGRyYXdjb3VudCkKICAg
ICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSAtPiAoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgK
aW5kZXggMTBlZTkyNGYwNDUwNmE4YWNhZDM1MjRiMmIxMTRkOWMwYTg4YTMyYi4uYzc1Y2UwYTIx
MGMxMTgxY2RiM2FlM2Y4ZGQ1MDEyMGVmNWZmNmUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTEzNDAsMjYgKzEzNDAsNiBA
QAogICAgICAgICBtX2NvbnRleHQtPmdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5h
bGZvcm1hdCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocGFyYW1z
LmRhdGEoKSksIHBhcmFtcy5zaXplKCkpKTsKICAgICB9Ci0gICAgdm9pZCBtdWx0aURyYXdBcnJh
eXNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgZmly
c3RzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgY291bnRzLCBpbnQzMl90IGRyYXdj
b3VudCkKLSAgICB7Ci0gICAgICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7Ci0gICAg
ICAgIG1fY29udGV4dC0+bXVsdGlEcmF3QXJyYXlzQU5HTEUobW9kZSwgbWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KGZpcnN0cy5kYXRhKCkpLCBmaXJzdHMuc2l6
ZSgpKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHNpemVpKj4oY291
bnRzLmRhdGEoKSksIGNvdW50cy5zaXplKCkpLCBkcmF3Y291bnQpOwotICAgIH0KLSAgICB2b2lk
IG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4mJiBmaXJzdHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4m
JiBjb3VudHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBpbnN0YW5jZUNvdW50cywg
aW50MzJfdCBkcmF3Y291bnQpCi0gICAgewotICAgICAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1
ZXVlKCkpOwotICAgICAgICBtX2NvbnRleHQtPm11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KG1vZGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihmaXJz
dHMuZGF0YSgpKSwgZmlyc3RzLnNpemUoKSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xzaXplaSo+KGNvdW50cy5kYXRhKCkpLCBjb3VudHMuc2l6ZSgpKSwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHNpemVpKj4oaW5zdGFuY2VDb3VudHMu
ZGF0YSgpKSwgaW5zdGFuY2VDb3VudHMuc2l6ZSgpKSwgZHJhd2NvdW50KTsKLSAgICB9Ci0gICAg
dm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4mJiBjb3VudHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4mJiBvZmZzZXRzLCBpbnQzMl90IGRyYXdjb3VudCkKLSAgICB7Ci0gICAgICAg
IGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7Ci0gICAgICAgIG1fY29udGV4dC0+bXVsdGlE
cmF3RWxlbWVudHNBTkdMRShtb2RlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMc2l6ZWkqPihjb3VudHMuZGF0YSgpKSwgY291bnRzLnNpemUoKSksIHR5cGUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihvZmZzZXRzLmRhdGEoKSks
IG9mZnNldHMuc2l6ZSgpKSwgZHJhd2NvdW50KTsKLSAgICB9Ci0gICAgdm9pZCBtdWx0aURyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4mJiBjb3VudHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4mJiBvZmZzZXRzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgaW5zdGFuY2VD
b3VudHMsIGludDMyX3QgZHJhd2NvdW50KQotICAgIHsKLSAgICAgICAgYXNzZXJ0SXNDdXJyZW50
KHdvcmtRdWV1ZSgpKTsKLSAgICAgICAgbV9jb250ZXh0LT5tdWx0aURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKG1vZGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xz
aXplaSo+KGNvdW50cy5kYXRhKCkpLCBjb3VudHMuc2l6ZSgpKSwgdHlwZSwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KG9mZnNldHMuZGF0YSgpKSwgb2Zmc2V0
cy5zaXplKCkpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMc2l6ZWkq
PihpbnN0YW5jZUNvdW50cy5kYXRhKCkpLCBpbnN0YW5jZUNvdW50cy5zaXplKCkpLCBkcmF3Y291
bnQpOwotICAgIH0KICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVy
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHJldHVyblZhbHVlID0geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggODdlOWM2MmJlOGE2ZGMxODk2NmM3
M2QzMWZmOGRkZTgyZTRiYWQ1OC4uMzZjNWZiNDI3YmUwMWU0ZDgyZWM1YjcyZDZhYTg4NjI5YzQy
MmUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAi
QXJyYXlSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZVR1cGxlLmgiCiAjaW5j
bHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4K
QEAgLTkxLDYgKzkyLDg1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFNwYW48VCwgRXh0ZW50Pj4gewogICAgIH0KIH07CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlS
ZWZlcmVuY2VUdXBsZTxUMCwgVDE+PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUdXBsZVR5
cGUgPSBBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMT47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RW5jb2Rlcj4KKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
QXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUmIGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsK
KyAgICAgICAgYXV0byBzaXplID0gYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpOworICAgICAgICBpZiAo
IXNpemUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNl
LnRlbXBsYXRlIGRhdGE8MD4oKSksIHNpemUgKiBzaXplb2YoVDApLCBhbGlnbm9mKFQwKSk7Cisg
ICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLnRlbXBsYXRlIGRhdGE8MT4oKSksIHNpemUgKiBz
aXplb2YoVDEpLCBhbGlnbm9mKFQxKSk7CisgICAgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEFycmF5UmVmZXJlbmNlVHVwbGVUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoIXNpemUp
CisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUgeyB9OworCisgICAg
ICAgIGF1dG8gZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVvZihUMCk7Cisg
ICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YTAgPSBk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGlnbm9mKFQwKSk7
CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTApKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVv
ZihUMSk7CisgICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhfdCog
ZGF0YTEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGln
bm9mKFQxKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTEpKQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHVwbGVUeXBl
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMCo+KGRhdGEwKSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBUMSo+KGRhdGExKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSB9OworICAgIH0KK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+IHN0cnVj
dCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxLCBUMj4+IHsKKyAgICB1
c2luZyBBcnJheVJlZmVyZW5jZVR1cGxlVHlwZSA9IEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQx
LCBUMj47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUmIGFy
cmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBzaXplID0gYXJyYXlS
ZWZlcmVuY2Uuc2l6ZSgpOworICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLnRlbXBsYXRlIGRhdGE8MD4oKSksIHNpemUg
KiBzaXplb2YoVDApLCBhbGlnbm9mKFQwKSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNl
LnRlbXBsYXRlIGRhdGE8MT4oKSksIHNpemUgKiBzaXplb2YoVDEpLCBhbGlnbm9mKFQxKSk7Cisg
ICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLnRlbXBsYXRlIGRhdGE8Mj4oKSksIHNpemUgKiBz
aXplb2YoVDIpLCBhbGlnbm9mKFQyKSk7CisgICAgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEFycmF5UmVmZXJlbmNlVHVwbGVUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoIXNpemUp
CisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUgeyB9OworCisgICAg
ICAgIGF1dG8gZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVvZihUMCk7Cisg
ICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YTAgPSBk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGlnbm9mKFQwKSk7
CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTApKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVv
ZihUMSk7CisgICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhfdCog
ZGF0YTEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGln
bm9mKFQxKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTEpKQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUg
fSAqIHNpemVvZihUMik7CisgICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxv
d2VkKCkpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3Qg
dWludDhfdCogZGF0YTIgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFT
aXplLCBhbGlnbm9mKFQyKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTIpKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNl
VHVwbGVUeXBlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMCo+KGRhdGEwKSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBUMSo+KGRhdGExKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMio+KGRh
dGEyKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSB9OworICAgIH0KK307CisKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IE9wdGlvblNldDxUPiYgb3B0aW9uU2V0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2VUdXBsZS5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2VUdXBsZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMTA2
Y2U0N2M5M2Q5NjM0OTYxODlmZjRiZjEzYThkODBmMDdiODcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZVR1cGxlLmgKQEAgLTAsMCAr
MSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgSVBDIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPiBj
bGFzcyBBcnJheVJlZmVyZW5jZVR1cGxlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5h
bWUgVDE+CitjbGFzcyBBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMT4geworcHVibGljOgorICAg
IEFycmF5UmVmZXJlbmNlVHVwbGUoKSA9IGRlZmF1bHQ7CisgICAgQXJyYXlSZWZlcmVuY2VUdXBs
ZShjb25zdCBUMCogZGF0YTAsIGNvbnN0IFQxKiBkYXRhMSwgc2l6ZV90IHNpemUpCisgICAgICAg
IDogbV9zaXplKHNpemUpCisgICAgICAgICwgbV9kYXRhMChzaXplID8gZGF0YTAgOiBudWxscHRy
KQorICAgICAgICAsIG1fZGF0YTEoc2l6ZSA/IGRhdGExIDogbnVsbHB0cikKKyAgICB7CisgICAg
fQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemU7IH0KKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHRlbXBsYXRlPGludCBJPgor
ICAgIGF1dG8gZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIoSSkKKyAg
ICAgICAgICAgIHJldHVybiBtX2RhdGExOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwcighSSkK
KyAgICAgICAgICAgIHJldHVybiBtX2RhdGEwOworICAgIH0KK3ByaXZhdGU6CisgICAgc2l6ZV90
IG1fc2l6ZSB7IDAgfTsKKyAgICBjb25zdCBUMCogbV9kYXRhMCB7IG51bGxwdHIgfTsKKyAgICBj
b25zdCBUMSogbV9kYXRhMSB7IG51bGxwdHIgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQw
LCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitjbGFzcyBBcnJheVJlZmVyZW5jZVR1cGxlPFQw
LCBUMSwgVDI+IDogcHVibGljIEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxPiB7CitwdWJsaWM6
CisgICAgQXJyYXlSZWZlcmVuY2VUdXBsZSgpID0gZGVmYXVsdDsKKyAgICBBcnJheVJlZmVyZW5j
ZVR1cGxlKGNvbnN0IFQwKiBkYXRhMCwgY29uc3QgVDEqIGRhdGExLCBjb25zdCBUMiogZGF0YTIs
IHNpemVfdCBzaXplKQorICAgICAgICA6IEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxPihkYXRh
MCwgZGF0YTEsIHNpemUpCisgICAgICAgICwgbV9kYXRhMihzaXplID8gZGF0YTIgOiBudWxscHRy
KQorICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGU8aW50IEk+CisgICAgYXV0byBkYXRhKCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwcihJID09IDIpCisgICAgICAgICAgICByZXR1
cm4gbV9kYXRhMjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJl
bmNlVHVwbGU8VDAsIFQxPjo6dGVtcGxhdGUgZGF0YTxJPigpOworICAgIH0KK3ByaXZhdGU6Cisg
ICAgY29uc3QgVDIqIG1fZGF0YTIgeyBudWxscHRyIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUMCwgdHlwZW5hbWUgVDE+CitBcnJheVJlZmVyZW5jZVR1cGxlKGNvbnN0IFQwKiwgY29uc3Qg
VDEqLCBzaXplX3QpIC0+IEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxPjsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK0FycmF5UmVmZXJlbmNlVHVw
bGUoY29uc3QgVDAqLCBjb25zdCBUMSosIGNvbnN0IFQyKiwgc2l6ZV90KSAtPiBBcnJheVJlZmVy
ZW5jZVR1cGxlPFQwLCBUMSwgVDI+OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCA0YTg4MDk4MDlhNTZmM2NlZjJhZGNlMDIwYTMwZjUwZTc3OTVkNzg1
Li4wODU4ZWI2ZTM2MTcxYjNjOThhNDgzZjY1MTBjOWY0NzQ5YzFhMTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTYzOSw2ICs2MzksNyBAQCBkZWYgY2xh
c3NfdGVtcGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAgICAgICAnc3RkOjpvcHRp
b25hbCc6IHsnaGVhZGVycyc6IFsnPG9wdGlvbmFsPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVy
cyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzogeydoZWFk
ZXJzJzogWyc8dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVu
dENvZGVycy5oIiddfSwKICAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hlYWRlcnMn
OiBbJyJBcnJheVJlZmVyZW5jZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFy
Z3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlJzog
eydoZWFkZXJzJzogWyciQXJyYXlSZWZlcmVuY2VUdXBsZS5oIiddLCAnYXJndW1lbnRfY29kZXJf
aGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnUmVmJzogeydoZWFk
ZXJzJzogWyc8d3RmL1JlZi5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3Vt
ZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnUmVmUHRyJzogeydoZWFkZXJzJzogWyc8d3RmL1Jl
ZkNvdW50ZWQuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVy
cy5oIiddfSwKICAgICAgICAgJ1JldGFpblB0cic6IHsnaGVhZGVycyc6IFsnPHd0Zi9SZXRhaW5Q
dHIuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVyc0NGLmgi
J119LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggN2VlZTgwNmJlZmMyMTg3NTIzMmI0NGYyNDgxYWIwZGFmNDRmMDFmOS4uNTMxMDAzZDk5
M2JjNjlkMDA0NzllODI5OGNiMjk5YjFjNmRkZjc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTQsNiArOTE0LDcgQEAKIAkJNDZG
MzhFOEMyNDE2RTY3MzAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkYzOEU4QjI0MTZFNjZE
MDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJNDZGOUIyNjMy
MzUyNkVGMzAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGOUIyNjIyMzUyNkVEMDAwNkZF
NUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovOyB9OwogCQk0OTMxMDJCRDI2ODNG
M0QwMDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFBy
aXZhY3lSZXBvcnQuaCAqLzsgfTsKKwkJNDk1NUE2RTYyODA3NkQ0RDAwQkI5MUM0IC8qIEFycmF5
UmVmZXJlbmNlVHVwbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5NTVBNkU1MjgwNzZENEMwMEJCOTFDNCAvKiBBcnJheVJlZmVyZW5jZVR1cGxlLmgg
Ki87IH07CiAJCTQ5NzNERjQ4MjQyMjk0MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDk3M0RGNDcyNDIyOTQxRjAwRTRDMjZBIC8qIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgg
Ki87IH07CiAJCTQ5OTAwMDIxMjREMjQyOUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTkwMDAxRjI0RDI0
MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5OTAwMDI0MjREMjRDMjkwMDA0OUNCNCAvKiBXS1Jl
bmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDk5MDAwMjMyNEQyNEMxQzAwMDQ5Q0I0IC8qIFdLUmVuZGVyT2JqZWN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ2NTYsNiArNDY1Nyw3
IEBACiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5uaW5nQm9hcmRTZXJ2aWNl
c1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2
RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0OTMxMDJCQzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9y
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ5NTVBNkU1MjgwNzZENEMwMEJCOTFDNCAvKiBBcnJheVJlZmVyZW5jZVR1
cGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5UmVmZXJlbmNlVHVw
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk3M0RGNDcyNDIyOTQxRjAwRTRD
MjZBIC8qIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5
OTAwMDFFMjREMjQyOUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLUmVuZGVyTGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OTkwMDAxRjI0RDI0MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1JlbmRlckxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzAzLDYg
KzgzMDUsNyBAQAogCQkJCTFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVy
cy5jcHAgKi8sCiAJCQkJMUFFRkQyRjYxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJz
LmggKi8sCiAJCQkJN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmgg
Ki8sCisJCQkJNDk1NUE2RTUyODA3NkQ0QzAwQkI5MUM0IC8qIEFycmF5UmVmZXJlbmNlVHVwbGUu
aCAqLywKIAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8s
CiAJCQkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlC
QzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCkBAIC0xNDAwNiw2
ICsxNDAwOSw3IEBACiAJCQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29k
ZXJzQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBB
cmd1bWVudENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjFEQjI2NjI1NjY4Q0Ux
MDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5NTVBNkU2
MjgwNzZENEQwMEJCOTFDNCAvKiBBcnJheVJlZmVyZW5jZVR1cGxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBQUZBNjM0RjIzNEY3QzY0MDBGRkE4NjQgLyogQXN5bmNSZXZhbGlkYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5NzEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCBhNWNmYzE3MDQ4YWYwMGIzODM2YmRmOTg0N2Q1
MGNhNTM2NjNlYzdhLi5iMTEwYWFiOTc4Mzc5YWU2Y2Y3ODk5ZDM1ODhmNzQyYzhlMzczMzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTQ3LDYgKzQ3
LDI2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjE7CiAKK25hbWVzcGFjZSB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFMwLCB0eXBlbmFtZSBTMT4KK0lQQzo6
QXJyYXlSZWZlcmVuY2VUdXBsZTxUMCwgVDE+IHRvQXJyYXlSZWZlcmVuY2VUdXBsZShHQ0dMU3Bh
blR1cGxlPGNvbnN0IFMwLCBjb25zdCBTMT4gc3BhblR1cGxlKQoreworICAgIHJldHVybiBJUEM6
OkFycmF5UmVmZXJlbmNlVHVwbGUgeworICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFQw
Kj4oc3BhblR1cGxlLmRhdGEwKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4oc3BhblR1cGxlLmRhdGExKSwKKyAgICAgICAgc3BhblR1cGxlLmJ1ZlNpemUgfTsKK30K
K3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFMwLCB0eXBlbmFtZSBTMSwgdHlwZW5hbWUgUzI+CitJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8
VDAsIFQxLCBUMj4gdG9BcnJheVJlZmVyZW5jZVR1cGxlKEdDR0xTcGFuVHVwbGU8Y29uc3QgUzAs
IGNvbnN0IFMxLCBjb25zdCBTMj4gc3BhblR1cGxlKQoreworICAgIHJldHVybiBJUEM6OkFycmF5
UmVmZXJlbmNlVHVwbGUgeworICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFQwKj4oc3Bh
blR1cGxlLmRhdGEwKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4o
c3BhblR1cGxlLmRhdGExKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90
Kj4oc3BhblR1cGxlLmRhdGEyKSwKKyAgICAgICAgc3BhblR1cGxlLmJ1ZlNpemUgfTsKK30KK30K
KwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMpCiAgICAgLCBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKCZncHVQcm9jZXNzQ29ubmVjdGlv
bikKQEAgLTI2MCw2ICsyODAsNDMgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHcKICAgICB9CiB9
CiAKKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdD
R0xzaXplaT4gZmlyc3RzQW5kQ291bnRzKQoreworICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpNdWx0aURyYXdBcnJheXNBTkdMRShtb2RlLCB0b0FycmF5UmVmZXJlbmNlVHVw
bGU8aW50MzJfdCwgaW50MzJfdD4oZmlyc3RzQW5kQ291bnRzKSkpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICB9Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBjb25zdCBH
Q0dMc2l6ZWksIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQ291bnRzQW5kSW5zdGFuY2VDb3VudHMp
Cit7CisgICAgaWYgKCFpc0NvbnRleHRMb3N0KCkpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKG1vZGUsIHRvQXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQz
Ml90LCBpbnQzMl90PihmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cykpKTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRz
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0
IEdDR0xpbnQ+IGNvdW50c0FuZE9mZnNldHMsIEdDR0xlbnVtIHR5cGUpCit7CisgICAgaWYgKCFp
c0NvbnRleHRMb3N0KCkpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0VsZW1lbnRzQU5HTEUobW9kZSwg
dG9BcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3Q+KGNvdW50c0FuZE9mZnNldHMp
LCB0eXBlKSk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIG1hcmtDb250
ZXh0TG9zdCgpOworICAgIH0KK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
VHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNv
dW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgR0NHTGVudW0gdHlwZSkKK3sKKyAgICBpZiAo
IWlzQ29udGV4dExvc3QoKSkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShtb2RlLCB0b0FycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJf
dD4oY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzKSwgdHlwZSkpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICB9Cit9CisK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1
Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRl
bnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQogewogICAgIGlmIChpc0NvbnRl
eHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDEw
NzhkMmRmMWQzZWYxZDQ3OGQzMzNiMDdhMTZhNDU2ZGZkZjFiNjUuLjRiNDg3MjI2NGE4NmI0ZTFm
MTNlNGE2NDQ5ZjQ4MDUyYzQ4NmViMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCkBAIC03OSw2ICs3OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0ZUV2
ZW50Rm9yVGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcpIGZpbmFsOwogICAgIHZvaWQg
cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dM
dm9pZD4gZGF0YSkgZmluYWw7CiAgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIG11bHRp
RHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGlu
dCwgY29uc3QgR0NHTHNpemVpPiBmaXJzdHNBbmRDb3VudHMpIGZpbmFsOworICAgIHZvaWQgbXVs
dGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxj
b25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQ291
bnRzQW5kSW5zdGFuY2VDb3VudHMpIGZpbmFsOworICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3Qg
R0NHTGludD4gY291bnRzQW5kT2Zmc2V0cywgR0NHTGVudW0gdHlwZSkgZmluYWw7CisgICAgdm9p
ZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
VHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNv
dW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgR0NHTGVudW0gdHlwZSkgZmluYWw7CiAKICAg
ICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0
IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCiAgICAgYm9vbCBtb3ZlRXJy
b3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKQEAgLTMxNywxMCArMzIxLDYgQEAgcHVi
bGljOgogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBtdWx0aURyYXdBcnJh
eXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdD
R0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBmaW5h
bDsKLSAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVp
PiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xz
aXplaSBkcmF3Y291bnQpIGZpbmFsOwotICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3Vu
dCkgZmluYWw7Ci0gICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6
ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBmaW5hbDsKICAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1Bp
eGVsQnVmZmVyKCkgZmluYWw7CiAgICAgLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1n
cHVwLXdlYmdsIHNjcmlwdC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJh
dGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKaW5kZXggNDMxYWRjOTM5
YWRjMjM2YWM3NzI2NTlkYTU0NDMzYTMyMmQzM2QzMC4uODI1MGI2OTI0ODZhYTQxOWRlY2Y0Njc1
ZGZlYWU4YmY5NzY1YjFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0yMjk5LDQyICsy
Mjk5LDYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZv
cm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0KICAgICB9CiB9CiAKLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6
ZWk+IGNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkKLXsKLSAgICBpZiAoIWlzQ29udGV4dExv
c3QoKSkgewotICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3QXJyYXlzQU5HTEUobW9kZSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihmaXJzdHMu
ZGF0YSksIGZpcnN0cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihjb3VudHMuZGF0YSksIGNvdW50cy5idWZTaXpl
KSwgZHJhd2NvdW50KSk7Ci0gICAgICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgICAgIG1h
cmtDb250ZXh0TG9zdCgpOwotICAgIH0KLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkg
ZHJhd2NvdW50KQotewotICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7Ci0gICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0
aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGZpcnN0cy5kYXRhKSwgZmlyc3Rz
LmJ1ZlNpemUpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50MzJfdCo+KGNvdW50cy5kYXRhKSwgY291bnRzLmJ1ZlNpemUpLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGluc3Rh
bmNlQ291bnRzLmRhdGEpLCBpbnN0YW5jZUNvdW50cy5idWZTaXplKSwgZHJhd2NvdW50KSk7Ci0g
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwot
ICAgIH0KLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdF
bGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dM
c2l6ZWkgZHJhd2NvdW50KQotewotICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7Ci0gICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpNdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRzLmRhdGEpLCBjb3VudHMu
YnVmU2l6ZSksIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4ob2Zmc2V0cy5kYXRhKSwgb2Zmc2V0cy5idWZTaXplKSwgZHJh
d2NvdW50KSk7Ci0gICAgICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgICAgIG1hcmtDb250
ZXh0TG9zdCgpOwotICAgIH0KLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRz
LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQotewotICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7Ci0g
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRz
LmRhdGEpLCBjb3VudHMuYnVmU2l6ZSksIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4ob2Zmc2V0cy5kYXRhKSwgb2Zmc2V0
cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGludDMyX3QqPihpbnN0YW5jZUNvdW50cy5kYXRhKSwgaW5zdGFuY2VDb3VudHMuYnVm
U2l6ZSksIGRyYXdjb3VudCkpOwotICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgICAg
ICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICB9Ci19Ci0KIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGl4ZWxCdWZmZXI+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvUGl4ZWxCdWZmZXIoKQogewogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4
ZWxCdWZmZXI+IHJldHVyblZhbHVlID0geyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ1MzhjOGZmM2FiODUxZGU3NWQ5MTQ2YjMxYzhiNzVk
OGMxMjY1ZmEuLjNhMzJiMTJmOGQyMzcwZTVmMjZhNmRhOGY3OTUwYTFjZjJlZjkzOTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAyMi0wNC0xMyAgSm9obiBDdW5uaW5naGFtICA8am9obmN1bm5pbmdoYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIFZhbGlkYXRlIHRoZSBkcmF3Y291bnQgYWdhaW5zdCB0aGUgbGVuZ3Ro
IG9mIG11bHRpZHJhdyBidWZmZXIgcGFyYW1ldGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgor
CiAyMDIyLTA0LTEzICBNYXR0ZW8gRmxvcmVzICA8bWF0dGVvX2Zsb3Jlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgWyBpT1MgXSBUZXN0V2ViS2l0QVBJLldlYktpdDIuQ3Jhc2hHUFVQcm9jZXNzV2hp
bGVDYXB0dXJpbmcgaXMgYSBmbGFreSB0aW1lb3V0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wK
aW5kZXggOGVjYTVjNzIzM2Q5M2RkYzdhM2EwYzkyZDYzYjlmOGZhZmM4M2U2OS4uNWQzZjVjYWQw
ZjZkOTkxNGI1NjIxMmM3ZGRhOWZlOWU1OGZlZTA0YiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbApAQCAtMTA5LDExICsxMDksMTUgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIENvcHlUZXh0dXJlRnJvbVZp
ZGVvRnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSB2aWRlb0ZyYW1l
LCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25v
dXMKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgdm9pZCBQYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvVmlkZW9GcmFtZSgpIC0+IChzdGQ6Om9w
dGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBwcm9wZXJ0
aWVzKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBTaW11bGF0ZUV2ZW50Rm9yVGVzdGlu
ZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2
ZW50KQogICAgIHZvaWQgUmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBSZWFkblBpeGVsczEoaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIE11bHRpRHJh
d0FycmF5c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQz
Ml90LCBpbnQzMl90PiBmaXJzdHNBbmRDb3VudHMpCisgICAgdm9pZCBNdWx0aURyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50
MzJfdCwgaW50MzJfdCwgaW50MzJfdD4gZmlyc3RzQ291bnRzQWFuZEluc3RhbmNlQ291bnRzKQor
ICAgIHZvaWQgTXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5
UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdD4gY291bnRzQW5kT2Zmc2V0cywgdWludDMy
X3QgdHlwZSkKKyAgICB2b2lkIE11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMy
X3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3QsIGludDMy
X3Q+IGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgdWludDMyX3QgdHlwZSkKIHt9CiB9
fQogCkBAIC0yMjQsNyArMjI4LDcgQEAgY2xhc3MgY3BwX3R5cGVfY29udGFpbmVyKGNwcF90eXBl
KToKICAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgogICAgICAgICByZXR1cm4gc2VsZi5j
b250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iCiAgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxm
KSAtPiBib29sOgotICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNw
YW4iIGFuZCBzZWxmLmFyaXR5IGlzIE5vbmUKKyAgICAgICAgcmV0dXJuIChzZWxmLmNvbnRhaW5l
cl9uYW1lID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJpdHkgaXMgTm9uZSkgb3Igc2VsZi5jb250
YWluZXJfbmFtZSA9PSAiR0NHTFNwYW5UdXBsZSIKICAgICBkZWYgZ2V0X2NvbnRhaW5lcl9uYW1l
KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZQogICAgIGRlZiBnZXRf
YXJpdHkoc2VsZikgLT4gT3B0aW9uYWxbaW50XToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457999</attachid>
            <date>2022-04-20 11:33:31 -0700</date>
            <delta_ts>2022-04-20 12:50:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239154-20220420113331.patch</filename>
            <type>text/plain</type>
            <size>56060</size>
            <attacher name="John Cunningham">johncunningham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2ODNiMmRhNzJkM2Rm
Y2JmMDNjNDg3NWZlNjJlNGJmYWIzZTgwYy4uNTcyZGYzOWRhOTJlODAxZjY5Y2ViOWIxNWVkZGFl
Y2JmZGE4ZmViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTA0LTIwICBKb2hu
IEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIEdD
R0xTcGFuVHVwbGUgdG8gcGFzcyBidWZmZXIgcGFyYW1ldGVycyB0byBtdWx0aWRyYXcgY2FsbHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxNTQK
KworICAgICAgICBSZXZpZXdlZCBieSBLaW1tbyBLaW5udW5lbi4KKworICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVsdGlE
cmF3OjptdWx0aURyYXdBcnJheXNXRUJHTCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTE11bHRp
RHJhdzo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xNdWx0aURyYXc6Om11bHRpRHJhd0VsZW1lbnRzV0VCR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xNdWx0aURyYXc6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkV0VCR0wpOgorICAg
ICAgICAoV2ViQ29yZTo6bWFrZVNwYW5XaXRoT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3
RWxlbWVudHNBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIwMjItMDQt
MTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2Ug
bWFrZUF0b21TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2YmUzYjBkMWUzNTY5NzZhMDBjZjdmMmIwNjQ4
M2M0YTUxMjM2MDg5Li4xODc0NGMwOWJlN2E0MTIxMzY4MjgwNTY0NGNhMjkzNTljNDQ5ZGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTA0LTIwICBKb2huIEN1bm5pbmdoYW0gIDxq
b2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIEdDR0xTcGFuVHVwbGUgdG8g
cGFzcyBidWZmZXIgcGFyYW1ldGVycyB0byBtdWx0aWRyYXcgY2FsbHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxNTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBLaW1tbyBLaW5udW5lbi4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb3JlOjp2
ZWN0b3JDb3B5Q2FzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjptdWx0aURyYXdBcnJheXNBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptdWx0aURyYXdFbGVtZW50c0FOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om11bHRpRHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDoKKyAgICAgICAg
KGdldEludGVybmFsZm9ybWF0aXYpOgorICAgICAgICAobXVsdGlEcmF3QXJyYXlzQU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAobXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAobXVsdGlEcmF3RWxlbWVudHNBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICht
dWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJyYXlS
ZWZlcmVuY2VUdXBsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKGNsYXNzX3RlbXBsYXRlX2hlYWRlcnMpOgorICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKTogRGVsZXRlZC4KKwogMjAyMi0wNC0x
OSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ug
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpVbnJlc3BvbnNpdmUgZm9yIHVucmVzcG9uc2l2ZSBu
ZXR3b3JrIHByb2Nlc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xNdWx0aURyYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0
aURyYXcuY3BwCmluZGV4IDk0ZGZjYzQ3YTQ2MTI3MmQ5YWFlYTJjY2IzNDVkYzM3NzM3YjdhMzQu
LjhkMWViMWZiZDc0ODQxYjYxYmZhNDM3MWZjYWFkNGE5ZmFhODk4NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAKQEAgLTM0LDExICszNCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdM
TXVsdGlEcmF3KTsKIAotc3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zm
c2V0KFdlYkdMTXVsdGlEcmF3OjpJbnQzMkxpc3QmIGxpc3QsIEdDR0x1aW50IG9mZnNldCkKLXsK
LSAgICByZXR1cm4gbWFrZUdDR0xTcGFuKGxpc3QuZGF0YSgpICsgb2Zmc2V0LCBsaXN0Lmxlbmd0
aCgpIC0gb2Zmc2V0KTsKLX0KLQogV2ViR0xNdWx0aURyYXc6OldlYkdMTXVsdGlEcmF3KFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewpAQCAtNzAsNyArNjUsNyBAQCB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdB
cnJheXNXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgZmlyc3RzTGlzdCwgRwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5t
dWx0aURyYXdBcnJheXNBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoZmlyc3RzTGlzdCwg
Zmlyc3RzT2Zmc2V0KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNl
dCksIGRyYXdjb3VudCk7CisgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0
aURyYXdBcnJheXNBTkdMRShtb2RlLCBHQ0dMU3BhblR1cGxlIHsgZmlyc3RzTGlzdC5kYXRhKCkg
KyBmaXJzdHNPZmZzZXQsIGNvdW50c0xpc3QuZGF0YSgpICsgY291bnRzT2Zmc2V0LCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGRyYXdjb3VudCkgfSk7CiB9CiAKIHZvaWQgV2ViR0xNdWx0aURyYXc6Om11
bHRpRHJhd0FycmF5c0luc3RhbmNlZFdFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMyTGlzdCBmaXJz
dHNMaXN0LCBHQ0dMdWludCBmaXJzdHNPZmZzZXQsIEludDMyTGlzdCBjb3VudHNMaXN0LCBHQ0dM
dWludCBjb3VudHNPZmZzZXQsIEludDMyTGlzdCBpbnN0YW5jZUNvdW50c0xpc3QsIEdDR0x1aW50
IGluc3RhbmNlQ291bnRzT2Zmc2V0LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQpAQCAtODUsNyArODAs
NyBAQCB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRXRUJHTChH
Q0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgZmlycwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoZmlyc3RzTGlzdCwgZmlyc3RzT2Zmc2V0
KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIG1ha2VTcGFu
V2l0aE9mZnNldChpbnN0YW5jZUNvdW50c0xpc3QsIGluc3RhbmNlQ291bnRzT2Zmc2V0KSwgZHJh
d2NvdW50KTsKKyAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPm11bHRpRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBmaXJzdHNMaXN0LmRhdGEo
KSArICBmaXJzdHNPZmZzZXQsIGNvdW50c0xpc3QuZGF0YSgpICsgY291bnRzT2Zmc2V0LCBpbnN0
YW5jZUNvdW50c0xpc3QuZGF0YSgpICsgaW5zdGFuY2VDb3VudHNPZmZzZXQsIHN0YXRpY19jYXN0
PHNpemVfdD4oZHJhd2NvdW50KSB9KTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlE
cmF3RWxlbWVudHNXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgY291bnRzTGlzdCwgR0NH
THVpbnQgY291bnRzT2Zmc2V0LCBHQ0dMZW51bSB0eXBlLCBJbnQzMkxpc3Qgb2Zmc2V0c0xpc3Qs
IEdDR0x1aW50IG9mZnNldHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpCkBAIC05OSw3ICs5
NCw3IEBAIHZvaWQgV2ViR0xNdWx0aURyYXc6Om11bHRpRHJhd0VsZW1lbnRzV0VCR0woR0NHTGVu
dW0gbW9kZSwgSW50MzJMaXN0IGNvdW50c0xpc3QsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPm11bHRpRHJhd0VsZW1lbnRzQU5H
TEUobW9kZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIHR5
cGUsIG1ha2VTcGFuV2l0aE9mZnNldChvZmZzZXRzTGlzdCwgb2Zmc2V0c09mZnNldCksIGRyYXdj
b3VudCk7CisgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURyYXdFbGVt
ZW50c0FOR0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBjb3VudHNMaXN0LmRhdGEoKSArIGNvdW50
c09mZnNldCwgb2Zmc2V0c0xpc3QuZGF0YSgpICsgb2Zmc2V0c09mZnNldCwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihkcmF3Y291bnQpIH0sIHR5cGUpOwogfQogCiB2b2lkIFdlYkdMTXVsdGlEcmF3Ojpt
dWx0aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMyTGlzdCBj
b3VudHNMaXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xlbnVtIHR5cGUsIEludDMyTGlz
dCBvZmZzZXRzTGlzdCwgR0NHTHVpbnQgb2Zmc2V0c09mZnNldCwgSW50MzJMaXN0IGluc3RhbmNl
Q291bnRzTGlzdCwgR0NHTHVpbnQgaW5zdGFuY2VDb3VudHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3
Y291bnQpCkBAIC0xMTQsNyArMTA5LDcgQEAgdm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3
RWxlbWVudHNJbnN0YW5jZWRXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgY28KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+
bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQo
Y291bnRzTGlzdCwgY291bnRzT2Zmc2V0KSwgdHlwZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KG9mZnNl
dHNMaXN0LCBvZmZzZXRzT2Zmc2V0KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGluc3RhbmNlQ291bnRz
TGlzdCwgaW5zdGFuY2VDb3VudHNPZmZzZXQpLCBkcmF3Y291bnQpOworICAgIG1fY29udGV4dC0+
Z3JhcGhpY3NDb250ZXh0R0woKS0+bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBHQ0dMU3BhblR1cGxlIHsgY291bnRzTGlzdC5kYXRhKCkgKyBjb3VudHNPZmZzZXQsIG9mZnNl
dHNMaXN0LmRhdGEoKSArIG9mZnNldHNPZmZzZXQsIGluc3RhbmNlQ291bnRzTGlzdC5kYXRhKCkg
KyBpbnN0YW5jZUNvdW50c09mZnNldCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkcmF3Y291bnQpIH0s
IHR5cGUpOwogfQogCiBib29sIFdlYkdMTXVsdGlEcmF3Ojp2YWxpZGF0ZURyYXdjb3VudChjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xzaXplaSBkcmF3Y291bnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA2
MWY5MDg1ZTNiMDAzOGVhMWMzOWM1M2E2NjBmZTk5OWRjZGJhNmQxLi4zYWQ5MWQxZTY2ODU3ZjE1
OGQzYjRiNjQwZmU5NTQ3NzdjMWUwNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTEzNjAsMTAgKzEzNjAsMTAg
QEAgcHVibGljOgogICAgIC8vID09PT09PT09PT0gRXh0ZW5zaW9uIHJlbGF0ZWQgZW50cnkgcG9p
bnRzLgogCiAgICAgLy8gR0xfQU5HTEVfbXVsdGlfZHJhdwotICAgIHZpcnR1YWwgdm9pZCBtdWx0
aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBm
aXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2Nv
dW50KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48
Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFu
Y2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbXVs
dGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6
ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0
cywgR0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtdWx0aURyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZz
ZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkg
ZHJhd2NvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVp
PiBmaXJzdHNBbmRDb3VudHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50
LCBjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQ291bnRzQW5kSW5zdGFu
Y2VDb3VudHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGlu
dD4gY291bnRzQW5kT2Zmc2V0cywgR0NHTGVudW0gdHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
VHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNv
dW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgR0NHTGVudW0gdHlwZSkgPSAwOwogCiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApp
bmRleCA5NjllMzk1NDllNGQxMTczYzBkODkwOGRjMjNiMDYyMGIzZTE5NGJmLi5lMjUyMGFmNjg5
ODkwMTBmMGJhMDNiNmM0NTA2YzczYmRmNmRhYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtMTkzLDMgKzE5Myw1NiBA
QCBHQ0dMU3BhbjxULCBFeHRlbnQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhKQogewogICAgIHJldHVy
biBHQ0dMU3BhbjxULCBFeHRlbnQ+IHsgZGF0YSB9OwogfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBUeXBlcz4KK3N0cnVjdCBHQ0dMU3BhblR1cGxlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwg
dHlwZW5hbWUgVDE+CitzdHJ1Y3QgR0NHTFNwYW5UdXBsZTxUMCwgVDE+IHsKKyAgICBHQ0dMU3Bh
blR1cGxlKFQwKiBkYXRhMF8sIFQxKiBkYXRhMV8sIHNpemVfdCBidWZTaXplXykKKyAgICAgICAg
OiBidWZTaXplKGJ1ZlNpemVfKQorICAgICAgICAsIGRhdGEwKGRhdGEwXykKKyAgICAgICAgLCBk
YXRhMShkYXRhMV8pCisgICAgeworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlw
ZW5hbWUgVTE+CisgICAgR0NHTFNwYW5UdXBsZShjb25zdCBWZWN0b3I8VTA+JiBkYXRhMF8sIGNv
bnN0IFZlY3RvcjxVMT4mIGRhdGExXykKKyAgICAgICAgOiBidWZTaXplKGRhdGEwXy5zaXplKCkp
CisgICAgICAgICwgZGF0YTAoZGF0YTBfLmRhdGEoKSkKKyAgICAgICAgLCBkYXRhMShkYXRhMV8u
ZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRhdGEwXy5zaXplKCkgPT0gZGF0YTFfLnNp
emUoKSk7CisgICAgfQorICAgIGNvbnN0IHNpemVfdCBidWZTaXplOworICAgIFQwKiBjb25zdCBk
YXRhMDsKKyAgICBUMSogY29uc3QgZGF0YTE7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwg
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IEdDR0xTcGFuVHVwbGU8VDAsIFQxLCBU
Mj4gOiBwdWJsaWMgR0NHTFNwYW5UdXBsZTxUMCwgVDE+IHsKKyAgICBHQ0dMU3BhblR1cGxlKFQw
KiBkYXRhMF8sIFQxKiBkYXRhMV8sIFQyKiBkYXRhMl8sIHNpemVfdCBidWZTaXplXykKKyAgICAg
ICAgOiBHQ0dMU3BhblR1cGxlPFQwLCBUMT4oZGF0YTBfLCBkYXRhMV8sIGJ1ZlNpemVfKQorICAg
ICAgICAsIGRhdGEyKGRhdGEyXykKKyAgICB7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+CisgICAgR0NHTFNwYW5UdXBsZShjb25zdCBW
ZWN0b3I8VTA+JiBkYXRhMF8sIGNvbnN0IFZlY3RvcjxVMT4mIGRhdGExXywgY29uc3QgVmVjdG9y
PFUyPiYgZGF0YTJfKQorICAgICAgICA6IEdDR0xTcGFuVHVwbGU8VDAsIFQxPihkYXRhMF8sIGRh
dGExXykKKyAgICAgICAgLCBkYXRhMihkYXRhMl8uZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGRhdGEyXy5zaXplKCkgPT0gZGF0YTBfLnNpemUoKSk7CisgICAgfQorICAgIFQyKiBjb25z
dCBkYXRhMjsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMT4KK0dDR0xT
cGFuVHVwbGUoVDAqLCBUMSosIHNpemVfdCkgLT4gR0NHTFNwYW5UdXBsZTxUMCwgVDE+OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDE+CitHQ0dMU3BhblR1cGxlKGNvbnN0IFZl
Y3RvcjxUMD4mLCBjb25zdCBWZWN0b3I8VDE+JikgLT4gR0NHTFNwYW5UdXBsZTxjb25zdCBUMCwg
Y29uc3QgVDE+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgorR0NHTFNwYW5UdXBsZShUMCosIFQxKiwgVDIqLCBzaXplX3QpIC0+IEdDR0xTcGFuVHVw
bGU8VDAsIFQxLCBUMj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+CitHQ0dMU3BhblR1cGxlKGNvbnN0IFZlY3RvcjxUMD4mLCBjb25zdCBWZWN0b3I8
VDE+JiwgY29uc3QgVmVjdG9yPFQyPiYpIC0+IEdDR0xTcGFuVHVwbGU8Y29uc3QgVDAsIGNvbnN0
IFQxLCBjb25zdCBUMj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IGQ2
NzdiM2M2ZmNmM2M5ZTM3MTdlNTczZThiZDk5ZWE0NDc3OWJmZTUuLmY5NzFlNDc5NDc0ZmZiOGU2
ODI1NGI3NDQxYzA3Y2YxNDU1MTQ2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCkBAIC0yODMxLDQ2ICsyODMxLDQ4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQKICAgICBH
TF9HZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHVuaWZvcm1CbG9j
a0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUsIG51bGxwdHIsIHBhcmFtcy5kYXRhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdBcnJheXNBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0
IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjptdWx0aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
blR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQW5kQ291bnRzKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEdMX011bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUsIGZpcnN0cy5kYXRhLCBjb3VudHMuZGF0YSwg
ZHJhd2NvdW50KTsKKyAgICBHTF9NdWx0aURyYXdBcnJheXNBTkdMRShtb2RlLCBmaXJzdHNBbmRD
b3VudHMuZGF0YTAsIGZpcnN0c0FuZENvdW50cy5kYXRhMSwgZmlyc3RzQW5kQ291bnRzLmJ1ZlNp
emUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0
cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpLCBjb25zdCBH
Q0dMc2l6ZWk+IGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRzKQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdMX011bHRpRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0cy5kYXRhLCBjb3VudHMuZGF0YSwgaW5zdGFu
Y2VDb3VudHMuZGF0YSwgZHJhd2NvdW50KTsKKyAgICBHTF9NdWx0aURyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cy5kYXRhMCwgZmlyc3Rz
Q291bnRzQW5kSW5zdGFuY2VDb3VudHMuZGF0YTEsIGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291
bnRzLmRhdGEyLCBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cy5idWZTaXplKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50PiBj
b3VudHNBbmRPZmZzZXRzLCBHQ0dMZW51bSB0eXBlKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE11c3QgcGVyZm9ybSBjb252ZXJz
aW9uIGZyb20gaW50ZWdlciBvZmZzZXRzIHRvIHZvaWQqIHBvaW50ZXJzIGJlZm9yZSBwYXNzaW5n
IGRvd24gdG8gQU5HTEUuCi0gICAgVmVjdG9yPHZvaWQqPiBwb2ludGVyczsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG9mZnNldHMuYnVmU2l6ZTsgKytpKQotICAgICAgICBwb2ludGVycy5h
cHBlbmQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0c1tpXSkpOworICAgIFZlY3Rvcjx2
b2lkKj4gb2Zmc2V0c1BvaW50ZXJzOworICAgIG9mZnNldHNQb2ludGVycy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGNvdW50c0FuZE9mZnNldHMuYnVmU2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudHNBbmRPZmZzZXRzLmJ1ZlNpemU7ICsraSkKKyAgICAgICAgb2Zmc2V0c1Bv
aW50ZXJzLmFwcGVuZChyZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudHNBbmRPZmZzZXRzLmRh
dGExW2ldKSk7CiAKLSAgICBHTF9NdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIGNvdW50cy5k
YXRhLCB0eXBlLCBwb2ludGVycy5kYXRhKCksIGRyYXdjb3VudCk7CisgICAgR0xfTXVsdGlEcmF3
RWxlbWVudHNBTkdMRShtb2RlLCBjb3VudHNBbmRPZmZzZXRzLmRhdGEwLCB0eXBlLCBvZmZzZXRz
UG9pbnRlcnMuZGF0YSgpLCBjb3VudHNBbmRPZmZzZXRzLmJ1ZlNpemUpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQsIGNvbnN0
IEdDR0xzaXplaT4gY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLCBHQ0dMZW51bSB0eXBl
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIE11c3QgcGVyZm9ybSBjb252ZXJzaW9uIGZyb20gaW50ZWdlciBvZmZzZXRzIHRvIHZv
aWQqIHBvaW50ZXJzIGJlZm9yZSBwYXNzaW5nIGRvd24gdG8gQU5HTEUuCi0gICAgVmVjdG9yPHZv
aWQqPiBwb2ludGVyczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9mZnNldHMuYnVmU2l6
ZTsgKytpKQotICAgICAgICBwb2ludGVycy5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
b2Zmc2V0c1tpXSkpOworICAgIFZlY3Rvcjx2b2lkKj4gb2Zmc2V0c1BvaW50ZXJzOworICAgIG9m
ZnNldHNQb2ludGVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50c09mZnNldHNBbmRJbnN0
YW5jZUNvdW50cy5idWZTaXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50c09m
ZnNldHNBbmRJbnN0YW5jZUNvdW50cy5idWZTaXplOyArK2kpCisgICAgICAgIG9mZnNldHNQb2lu
dGVycy5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY291bnRzT2Zmc2V0c0FuZEluc3Rh
bmNlQ291bnRzLmRhdGExW2ldKSk7CiAKLSAgICBHTF9NdWx0aURyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKG1vZGUsIGNvdW50cy5kYXRhLCB0eXBlLCBwb2ludGVycy5kYXRhKCksIGluc3RhbmNl
Q291bnRzLmRhdGEsIGRyYXdjb3VudCk7CisgICAgR0xfTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMuZGF0YTAsIHR5cGUs
IG9mZnNldHNQb2ludGVycy5kYXRhKCksIGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cy5k
YXRhMiwgY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLmJ1ZlNpemUpOwogfQogCiBib29s
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCBmY2Q1NjNhNjczMDg3NjE2
ZjYyNDMzZTNkNjY4ZDc4MmRiNjRmODI2Li42M2MzOTJhNDZkNzc3YTFiZjNiYzc4MTRiMThiYTkw
YzQyY2ZhYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zMDIsMTAgKzMw
MiwxMCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgZmluYWw7
CiAgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcp
IGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMaW50PiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRz
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJh
d2NvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92
ZXJyaWRlOwotICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVp
PiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBtdWx0aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0
IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQW5kQ291bnRzKSBmaW5hbDsKKyAgICB2
b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
VHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMc2l6ZWk+IGZp
cnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRzKSBmaW5hbDsKKyAgICB2b2lkIG11bHRpRHJhd0Vs
ZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWks
IGNvbnN0IEdDR0xpbnQ+IGNvdW50c0FuZE9mZnNldHMsIEdDR0xlbnVtIHR5cGUpIGZpbmFsOwor
ICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMU3BhblR1cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNp
emVpPiBjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMsIEdDR0xlbnVtIHR5cGUpIGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBhZjc1ZTBkMDk5OTYxNmJmNjMxYjU2
ZjVlNTM3NzliZGFmMmQ3MTUxLi5mNjI1Y2ZmOWViZDUwOTQxYzljY2Q5ODY2YjVkNjExODkyY2Y2
YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMzY0LDEwICszNjQs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAgICAgLy8gR0xfQU5HTEVfbXVsdGlfZHJh
dwotICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywg
R0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtdWx0aURyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJz
dHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
c2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKLSAg
ICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgbXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NH
THNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xz
aXplaT4gZmlyc3RzQW5kQ291bnRzKSBvdmVycmlkZTsKKyAgICB2b2lkIG11bHRpRHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGlu
dCwgY29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMc2l6ZWk+IGZpcnN0c0NvdW50c0FuZEluc3Rh
bmNlQ291bnRzKSBvdmVycmlkZTsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQ+
IGNvdW50c0FuZE9mZnNldHMsIEdDR0xlbnVtIHR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgbXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxl
PGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpPiBjb3VudHNP
ZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMsIEdDR0xlbnVtIHR5cGUpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmNwcAppbmRleCA2NDg3MjM4YmUxMTAyNjkzMGFhNDM3YjU4ZTFmMzA4MGQ4MjhjYjE5
Li5lNGJhNjAzMjhhYjFkZDU1OGIxYzk3MmMyY2JmNTNmZTM2NTZlOGFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5jcHAKQEAgLTQ2LDYgKzQ2LDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIHsKK3RlbXBsYXRlPHR5cGVuYW1l
IFMsIGludCBJLCB0eXBlbmFtZSBUPgorVmVjdG9yPFM+IHZlY3RvckNvcHlDYXN0KGNvbnN0IFQm
IGFycmF5UmVmZXJlbmNlKQoreworICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Uyo+KGFycmF5UmVmZXJlbmNlLnRlbXBsYXRlIGRhdGE8ST4oKSksIGFycmF5UmVmZXJlbmNlLnNp
emUoKSB9OworfQorfQorCiAvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUgZ2xvYmFsIFdlYkdMIHBy
b2Nlc3NpbmcgaW5zdGFuY2UuCiBJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkKIHsKQEAgLTMxNSw2ICszMjMsNDYg
QEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVhZG5QaXhlbHMxKGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLAogICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihv
ZmZzZXQpKTsKIH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bXVsdGlEcmF3QXJy
YXlzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3Qs
IGludDMyX3Q+JiYgZmlyc3RzQW5kQ291bnRzKQoreworICAgIGFzc2VydElzQ3VycmVudCh3b3Jr
UXVldWUoKSk7CisgICAgLy8gQ29weSB0aGUgYXJyYXlzLiBUaGUgY29udGVudHMgYXJlIHRvIGJl
IHZlcmlmaWVkLiBUaGUgZGF0YSBtaWdodCBiZSBpbiBtZW1vcnkgcmVnaW9uIHNoYXJlZCBieSB0
aGUgY2FsbGVyLgorICAgIFZlY3RvcjxHQ0dMaW50PiBmaXJzdHMgPSB2ZWN0b3JDb3B5Q2FzdDxH
Q0dMaW50LCAwPihmaXJzdHNBbmRDb3VudHMpOworICAgIFZlY3RvcjxHQ0dMc2l6ZWk+IGNvdW50
cyA9IHZlY3RvckNvcHlDYXN0PEdDR0xzaXplaSwgMT4oZmlyc3RzQW5kQ291bnRzKTsKKyAgICBt
X2NvbnRleHQtPm11bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBmaXJz
dHMsIGNvdW50cyB9KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bXVsdGlE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZVR1cGxlPGludDMyX3QsIGludDMyX3QsIGludDMyX3Q+JiYgZmlyc3RzQ291bnRzQW5kSW5zdGFu
Y2VDb3VudHMpCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsKKyAgICAvLyBD
b3B5IHRoZSBhcnJheXMuIFRoZSBjb250ZW50cyBhcmUgdG8gYmUgdmVyaWZpZWQuIFRoZSBkYXRh
IG1pZ2h0IGJlIGluIG1lbW9yeSByZWdpb24gc2hhcmVkIGJ5IHRoZSBjYWxsZXIuCisgICAgVmVj
dG9yPEdDR0xpbnQ+IGZpcnN0cyA9IHZlY3RvckNvcHlDYXN0PEdDR0xpbnQsIDA+KGZpcnN0c0Nv
dW50c0FuZEluc3RhbmNlQ291bnRzKTsKKyAgICBWZWN0b3I8R0NHTHNpemVpPiBjb3VudHMgPSB2
ZWN0b3JDb3B5Q2FzdDxHQ0dMc2l6ZWksIDE+KGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRz
KTsKKyAgICBWZWN0b3I8R0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cyA9IHZlY3RvckNvcHlDYXN0
PEdDR0xzaXplaSwgMj4oZmlyc3RzQ291bnRzQW5kSW5zdGFuY2VDb3VudHMpOworICAgIG1fY29u
dGV4dC0+bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgR0NHTFNwYW5UdXBsZSB7
IGZpcnN0cywgY291bnRzLCBpbnN0YW5jZUNvdW50cyB9KTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6
OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdD4mJiBjb3VudHNBbmRPZmZzZXRz
LCB1aW50MzJfdCB0eXBlKQoreworICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7Cisg
ICAgLy8gQ29weSB0aGUgYXJyYXlzLiBUaGUgY29udGVudHMgYXJlIHRvIGJlIHZlcmlmaWVkLiBU
aGUgZGF0YSBtaWdodCBiZSBpbiBtZW1vcnkgcmVnaW9uIHNoYXJlZCBieSB0aGUgY2FsbGVyLgor
ICAgIGNvbnN0IFZlY3RvcjxHQ0dMc2l6ZWk+IGNvdW50cyA9IHZlY3RvckNvcHlDYXN0PEdDR0xz
aXplaSwgMD4oY291bnRzQW5kT2Zmc2V0cyk7CisgICAgLy8gQ3VycmVudGx5IG9mZnNldHMgYXJl
IGNvcGllZCBpbiB0aGUgbV9jb250ZXh0LgorICAgIGNvbnN0IEdDR0xpbnQqIG9mZnNldHMgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihjb3VudHNBbmRPZmZzZXRzLmRhdGE8MT4o
KSk7CisgICAgbV9jb250ZXh0LT5tdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIEdDR0xTcGFu
VHVwbGUgeyBjb3VudHMuZGF0YSgpLCBvZmZzZXRzLCBjb3VudHMuc2l6ZSgpIH0sIHR5cGUpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptdWx0aURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90
LCBpbnQzMl90LCBpbnQzMl90PiYmIGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgdWlu
dDMyX3QgdHlwZSkKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOworICAgIC8v
IENvcHkgdGhlIGFycmF5cy4gVGhlIGNvbnRlbnRzIGFyZSB0byBiZSB2ZXJpZmllZC4gVGhlIGRh
dGEgbWlnaHQgYmUgaW4gbWVtb3J5IHJlZ2lvbiBzaGFyZWQgYnkgdGhlIGNhbGxlci4KKyAgICBj
b25zdCBWZWN0b3I8R0NHTHNpemVpPiBjb3VudHMgPSB2ZWN0b3JDb3B5Q2FzdDxHQ0dMc2l6ZWks
IDA+KGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cyk7CisgICAgLy8gQ3VycmVudGx5IG9m
ZnNldHMgYXJlIGNvcGllZCBpbiB0aGUgbV9jb250ZXh0LgorICAgIGNvbnN0IEdDR0xpbnQqIG9m
ZnNldHMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihjb3VudHNPZmZzZXRzQW5k
SW5zdGFuY2VDb3VudHMuZGF0YTwxPigpKTsKKyAgICBjb25zdCBWZWN0b3I8R0NHTHNpemVpPiBp
bnN0YW5jZUNvdW50cyA9IHZlY3RvckNvcHlDYXN0PEdDR0xzaXplaSwgMj4oY291bnRzT2Zmc2V0
c0FuZEluc3RhbmNlQ291bnRzKTsKKyAgICBtX2NvbnRleHQtPm11bHRpRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUobW9kZSwgR0NHTFNwYW5UdXBsZSB7IGNvdW50cy5kYXRhKCksIG9mZnNldHMs
IGluc3RhbmNlQ291bnRzLmRhdGEoKSwgY291bnRzLnNpemUoKSB9LCB0eXBlKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBk
ZDFkYTc5ZmUwMDMwYWRmZDgyODJiODYxMmRiNWVkNThhNDZjZjc3Li5jMzFlNjUxMDY1MTUxNmUz
YTQzY2I0ZTZjNmY0NTdjYWEzMTZhMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTMx
LDYgKzEzMSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGlu
ZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKTsK
ICAgICB2b2lkIHJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+JiYpOwogICAgIHZvaWQgcmVhZG5QaXhlbHMxKGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMy
X3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpOworICAgIHZvaWQgbXVs
dGlEcmF3QXJyYXlzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxl
PGludDMyX3QsIGludDMyX3Q+JiYgZmlyc3RzQW5kQ291bnRzKTsKKyAgICB2b2lkIG11bHRpRHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VU
dXBsZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90PiYmIGZpcnN0c0NvdW50c0FuZEluc3RhbmNl
Q291bnRzKTsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUodWludDMyX3QgbW9kZSwg
SVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3Q+JiYgY291bnRzQW5kT2Zm
c2V0cywgdWludDMyX3QgdHlwZSk7CisgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBp
bnQzMl90LCBpbnQzMl90PiYmIGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgdWludDMy
X3QgdHlwZSk7CiAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dl
bmVyYXRlZC5oIiAvLyBOT0xJTlQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3Nh
Z2VzLmluCmluZGV4IDI5ZmUyMTQxZmVkYzhlMDMxYjEwZDIwMTNmNmY3YTA4ZGRlZDE3ZWIuLjc2
NjdkODM2MWFhZjNiODc4ZDMzMDQxZjgyY2NhZmVmZDQ2NDcxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTUzLDYgKzUzLDEwIEBAIG1lc3NhZ2VzIC0+
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lk
IFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11
bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCiAgICAgdm9pZCBSZWFkblBpeGVsczAoaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkg
LT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKICAgICB2
b2lkIFJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zm
c2V0KQorICAgIHZvaWQgTXVsdGlEcmF3QXJyYXlzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpB
cnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3Q+IGZpcnN0c0FuZENvdW50cykKKyAg
ICB2b2lkIE11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6
QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90PiBmaXJzdHNDb3Vu
dHNBYW5kSW5zdGFuY2VDb3VudHMpCisgICAgdm9pZCBNdWx0aURyYXdFbGVtZW50c0FOR0xFKHVp
bnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90PiBj
b3VudHNBbmRPZmZzZXRzLCB1aW50MzJfdCB0eXBlKQorICAgIHZvaWQgTXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8
aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4gY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRz
LCB1aW50MzJfdCB0eXBlKQogCiAgICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIEFjdGl2ZVRl
eHR1cmUodWludDMyX3QgdGV4dHVyZSkKQEAgLTI5MCwxMCArMjk0LDYgQEAgbWVzc2FnZXMgLT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQg
R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBEcmF3QnVmZmVyc0VYVChJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiBidWZzKQogICAgIHZvaWQgR2V0SW50ZXJuYWxmb3JtYXRp
dih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCB1aW50MzJfdCBwbmFt
ZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4g
cGFyYW1zKSBTeW5jaHJvbm91cwotICAgIHZvaWQgTXVsdGlEcmF3QXJyYXlzQU5HTEUodWludDMy
X3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBmaXJzdHMsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCBpbnQzMl90IGRyYXdjb3VudCkKLSAgICB2b2lkIE11
bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4gZmlyc3RzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGNvdW50
cywgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBpbnN0YW5jZUNvdW50cywgaW50MzJfdCBk
cmF3Y291bnQpCi0gICAgdm9pZCBNdWx0aURyYXdFbGVtZW50c0FOR0xFKHVpbnQzMl90IG1vZGUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCB1aW50MzJfdCB0eXBlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IG9mZnNldHMsIGludDMyX3QgZHJhd2NvdW50KQotICAg
IHZvaWQgTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGNvdW50cywgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiBvZmZzZXRzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
IGluc3RhbmNlQ291bnRzLCBpbnQzMl90IGRyYXdjb3VudCkKICAgICB2b2lkIFBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhl
bEJ1ZmZlcj4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0
aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKaW5kZXggMTBlZTkyNGYwNDUw
NmE4YWNhZDM1MjRiMmIxMTRkOWMwYTg4YTMyYi4uYzc1Y2UwYTIxMGMxMTgxY2RiM2FlM2Y4ZGQ1
MDEyMGVmNWZmNmUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVu
Y3Rpb25zR2VuZXJhdGVkLmgKQEAgLTEzNDAsMjYgKzEzNDAsNiBAQAogICAgICAgICBtX2NvbnRl
eHQtPmdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBh
cmFtcyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocGFyYW1zLmRhdGEoKSksIHBhcmFtcy5z
aXplKCkpKTsKICAgICB9Ci0gICAgdm9pZCBtdWx0aURyYXdBcnJheXNBTkdMRSh1aW50MzJfdCBt
b2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgZmlyc3RzLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+JiYgY291bnRzLCBpbnQzMl90IGRyYXdjb3VudCkKLSAgICB7Ci0gICAg
ICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7Ci0gICAgICAgIG1fY29udGV4dC0+bXVs
dGlEcmF3QXJyYXlzQU5HTEUobW9kZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTGludCo+KGZpcnN0cy5kYXRhKCkpLCBmaXJzdHMuc2l6ZSgpKSwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHNpemVpKj4oY291bnRzLmRhdGEoKSksIGNvdW50
cy5zaXplKCkpLCBkcmF3Y291bnQpOwotICAgIH0KLSAgICB2b2lkIG11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4m
JiBmaXJzdHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBjb3VudHMsIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4mJiBpbnN0YW5jZUNvdW50cywgaW50MzJfdCBkcmF3Y291bnQp
Ci0gICAgewotICAgICAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwotICAgICAgICBt
X2NvbnRleHQtPm11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihmaXJzdHMuZGF0YSgpKSwgZmlyc3Rz
LnNpemUoKSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xzaXplaSo+
KGNvdW50cy5kYXRhKCkpLCBjb3VudHMuc2l6ZSgpKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTHNpemVpKj4oaW5zdGFuY2VDb3VudHMuZGF0YSgpKSwgaW5zdGFuY2VD
b3VudHMuc2l6ZSgpKSwgZHJhd2NvdW50KTsKLSAgICB9Ci0gICAgdm9pZCBtdWx0aURyYXdFbGVt
ZW50c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBj
b3VudHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBvZmZz
ZXRzLCBpbnQzMl90IGRyYXdjb3VudCkKLSAgICB7Ci0gICAgICAgIGFzc2VydElzQ3VycmVudCh3
b3JrUXVldWUoKSk7Ci0gICAgICAgIG1fY29udGV4dC0+bXVsdGlEcmF3RWxlbWVudHNBTkdMRSht
b2RlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMc2l6ZWkqPihjb3Vu
dHMuZGF0YSgpKSwgY291bnRzLnNpemUoKSksIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0xpbnQqPihvZmZzZXRzLmRhdGEoKSksIG9mZnNldHMuc2l6ZSgpKSwg
ZHJhd2NvdW50KTsKLSAgICB9Ci0gICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBjb3VudHMs
IHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBvZmZzZXRzLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgaW5zdGFuY2VDb3VudHMsIGludDMyX3QgZHJh
d2NvdW50KQotICAgIHsKLSAgICAgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsKLSAg
ICAgICAgbV9jb250ZXh0LT5tdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xzaXplaSo+KGNvdW50cy5kYXRh
KCkpLCBjb3VudHMuc2l6ZSgpKSwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGludCo+KG9mZnNldHMuZGF0YSgpKSwgb2Zmc2V0cy5zaXplKCkpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMc2l6ZWkqPihpbnN0YW5jZUNvdW50cy5k
YXRhKCkpLCBpbnN0YW5jZUNvdW50cy5zaXplKCkpLCBkcmF3Y291bnQpOwotICAgIH0KICAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKICAgICB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZm
ZXI+IHJldHVyblZhbHVlID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggODdlOWM2MmJlOGE2ZGMxODk2NmM3M2QzMWZmOGRkZTgyZTRiYWQ1
OC4uNzIzMzEyYzdlZGIwNTkyZGQ2OGU3NWY2ZGEzMDkzODYyZTIzZTA3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIK
KyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZVR1cGxlLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KICNp
bmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KQEAgLTkxLDYgKzkyLDg1IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFNwYW48VCwgRXh0ZW50Pj4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0
eXBlbmFtZSBUMT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2VUdXBsZTxUMCwg
VDE+PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUgPSBBcnJheVJlZmVyZW5j
ZVR1cGxlPFQwLCBUMT47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUdXBs
ZVR5cGUmIGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBzaXpl
ID0gYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXNpemUpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS50ZW1wbGF0
ZSBkYXRhPDA+KCkpLCBzaXplICogc2l6ZW9mKFQwKSwgYWxpZ25vZihUMCkpOworICAgICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhcnJheVJlZmVyZW5jZS50ZW1wbGF0ZSBkYXRhPDE+KCkpLCBzaXplICogc2l6ZW9mKFQx
KSwgYWxpZ25vZihUMSkpOworICAgIH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcnJheVJl
ZmVyZW5jZVR1cGxlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAg
ICB1aW50NjRfdCBzaXplOworICAgICAgICBpZiAoVU5MSUtFTFkoIWRlY29kZXIuZGVjb2RlKHNp
emUpKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChVTkxJ
S0VMWSghc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUg
eyB9OworCisgICAgICAgIGF1dG8gZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNp
emVvZihUMCk7CisgICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkp
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhf
dCogZGF0YTAgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBh
bGlnbm9mKFQwKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTApKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNp
emUgfSAqIHNpemVvZihUMSk7CisgICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVy
Zmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29u
c3QgdWludDhfdCogZGF0YTEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRh
dGFTaXplLCBhbGlnbm9mKFQxKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTEpKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJl
bmNlVHVwbGVUeXBlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMCo+KGRhdGEwKSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBUMSo+KGRhdGExKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSB9
OworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDI+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxLCBU
Mj4+IHsKKyAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR1cGxlVHlwZSA9IEFycmF5UmVmZXJlbmNl
VHVwbGU8VDAsIFQxLCBUMj47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VU
dXBsZVR5cGUmIGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBz
aXplID0gYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXNpemUp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS50ZW1w
bGF0ZSBkYXRhPDA+KCkpLCBzaXplICogc2l6ZW9mKFQwKSwgYWxpZ25vZihUMCkpOworICAgICAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihhcnJheVJlZmVyZW5jZS50ZW1wbGF0ZSBkYXRhPDE+KCkpLCBzaXplICogc2l6ZW9m
KFQxKSwgYWxpZ25vZihUMSkpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS50ZW1wbGF0
ZSBkYXRhPDI+KCkpLCBzaXplICogc2l6ZW9mKFQyKSwgYWxpZ25vZihUMikpOworICAgIH0KKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcnJheVJlZmVyZW5jZVR1cGxlVHlwZT4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICB1aW50NjRfdCBzaXplOworICAgICAgICBp
ZiAoVU5MSUtFTFkoIWRlY29kZXIuZGVjb2RlKHNpemUpKSkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChVTkxJS0VMWSghc2l6ZSkpCisgICAgICAgICAgICBy
ZXR1cm4gQXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUgeyB9OworCisgICAgICAgIGF1dG8gZGF0YVNp
emUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVvZihUMCk7CisgICAgICAgIGlmIChVTkxJ
S0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YTAgPSBkZWNvZGVyLmRlY29kZUZp
eGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGlnbm9mKFQwKSk7CisgICAgICAgIGlmIChV
TkxJS0VMWSghZGF0YTApKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVvZihUMSk7CisgICAgICAg
IGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YTEgPSBkZWNvZGVy
LmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGlnbm9mKFQxKSk7CisgICAg
ICAgIGlmIChVTkxJS0VMWSghZGF0YTEpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVvZihUMik7
CisgICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YTIg
PSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGlnbm9mKFQy
KSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0YTIpKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHVwbGVUeXBlIHsgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBUMCo+KGRhdGEwKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBU
MSo+KGRhdGExKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMio+KGRhdGEyKSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihzaXplKSB9OworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IE9wdGlvblNldDxUPiYgb3B0aW9uU2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2VUdXBsZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQXJyYXlSZWZlcmVuY2VUdXBsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMTA2Y2U0N2M5M2Q5NjM0OTYx
ODlmZjRiZjEzYThkODBmMDdiODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZVR1cGxlLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgSVBDIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPiBjbGFzcyBBcnJheVJlZmVy
ZW5jZVR1cGxlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDE+CitjbGFzcyBB
cnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMT4geworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNl
VHVwbGUoKSA9IGRlZmF1bHQ7CisgICAgQXJyYXlSZWZlcmVuY2VUdXBsZShjb25zdCBUMCogZGF0
YTAsIGNvbnN0IFQxKiBkYXRhMSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUp
CisgICAgICAgICwgbV9kYXRhMChzaXplID8gZGF0YTAgOiBudWxscHRyKQorICAgICAgICAsIG1f
ZGF0YTEoc2l6ZSA/IGRhdGExIDogbnVsbHB0cikKKyAgICB7CisgICAgfQorICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemU7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHRlbXBsYXRlPGludCBJPgorICAgIGF1dG8gZGF0YSgp
IGNvbnN0CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIoSSkKKyAgICAgICAgICAgIHJldHVy
biBtX2RhdGExOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwcighSSkKKyAgICAgICAgICAgIHJl
dHVybiBtX2RhdGEwOworICAgIH0KK3ByaXZhdGU6CisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsK
KyAgICBjb25zdCBUMCogbV9kYXRhMCB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBUMSogbV9kYXRh
MSB7IG51bGxwdHIgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDI+CitjbGFzcyBBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMSwgVDI+IDogcHVi
bGljIEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxPiB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZl
cmVuY2VUdXBsZSgpID0gZGVmYXVsdDsKKyAgICBBcnJheVJlZmVyZW5jZVR1cGxlKGNvbnN0IFQw
KiBkYXRhMCwgY29uc3QgVDEqIGRhdGExLCBjb25zdCBUMiogZGF0YTIsIHNpemVfdCBzaXplKQor
ICAgICAgICA6IEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxPihkYXRhMCwgZGF0YTEsIHNpemUp
CisgICAgICAgICwgbV9kYXRhMihzaXplID8gZGF0YTIgOiBudWxscHRyKQorICAgIHsKKyAgICB9
CisgICAgdGVtcGxhdGU8aW50IEk+CisgICAgYXV0byBkYXRhKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIGNvbnN0ZXhwcihJID09IDIpCisgICAgICAgICAgICByZXR1cm4gbV9kYXRhMjsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQx
Pjo6dGVtcGxhdGUgZGF0YTxJPigpOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgVDIqIG1f
ZGF0YTIgeyBudWxscHRyIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5hbWUg
VDE+CitBcnJheVJlZmVyZW5jZVR1cGxlKGNvbnN0IFQwKiwgY29uc3QgVDEqLCBzaXplX3QpIC0+
IEFycmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVDAsIHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK0FycmF5UmVmZXJlbmNlVHVwbGUoY29uc3QgVDAqLCBj
b25zdCBUMSosIGNvbnN0IFQyKiwgc2l6ZV90KSAtPiBBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBU
MSwgVDI+OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRl
eCA2NGYxMzYwMWMyMDlkOGE3OWE2NjczZGJiMDc4ODk4ZmQ5MzQ4NWYyLi5hMzE4YTUzYjFlYzky
NTE3MTgwMDE5ZDVjYzRlYzk1MjAwMGYyNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKQEAgLTYzNCw2ICs2MzQsNyBAQCBkZWYgY2xhc3NfdGVtcGxhdGVfaGVh
ZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAgICAgICAnc3RkOjpvcHRpb25hbCc6IHsnaGVhZGVy
cyc6IFsnPG9wdGlvbmFsPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50
Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzogeydoZWFkZXJzJzogWyc8dXRpbGl0
eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwK
ICAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hlYWRlcnMnOiBbJyJBcnJheVJlZmVy
ZW5jZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgi
J119LAorICAgICAgICAnSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlJzogeydoZWFkZXJzJzogWyci
QXJyYXlSZWZlcmVuY2VUdXBsZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFy
Z3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnUmVmJzogeydoZWFkZXJzJzogWyc8d3RmL1Jl
Zi5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119
LAogICAgICAgICAnUmVmUHRyJzogeydoZWFkZXJzJzogWyc8d3RmL1JlZkNvdW50ZWQuaD4nXSwg
J2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICAg
ICAgJ1JldGFpblB0cic6IHsnaGVhZGVycyc6IFsnPHd0Zi9SZXRhaW5QdHIuaD4nXSwgJ2FyZ3Vt
ZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVyc0NGLmgiJ119LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWEzZTE3ZTJi
NTRiMDY4MTdhNWMwZDMyYmRmYzYwODkzZmI2NWIzYi4uNjg3MzI0ZjJhNGMyYjAwMDkyNjljMGEx
MGVlNDYzMTFmY2ZlMDEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05MTMsNiArOTEzLDcgQEAKIAkJNDZGMzhFOEMyNDE2RTY3MzAw
NTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVu
bmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJNDZGOUIyNjMyMzUyNkVGMzAwNkZFNUZB
IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tG
b3J3YXJkQ2FjaGVFbnRyeS5oICovOyB9OwogCQk0OTMxMDJCRDI2ODNGM0QwMDAyQkI4ODUgLyog
QXBwUHJpdmFjeVJlcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAq
LzsgfTsKKwkJNDk1NUE2RTYyODA3NkQ0RDAwQkI5MUM0IC8qIEFycmF5UmVmZXJlbmNlVHVwbGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NTVBNkU1
MjgwNzZENEMwMEJCOTFDNCAvKiBBcnJheVJlZmVyZW5jZVR1cGxlLmggKi87IH07CiAJCTQ5NzNE
RjQ4MjQyMjk0MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk3M0RGNDcyNDIyOTQx
RjAwRTRDMjZBIC8qIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmggKi87IH07CiAJCTQ5OTAw
MDIxMjREMjQyOUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTkwMDAxRjI0RDI0MjlDMDAwNDlDQjQgLyog
V0tSZW5kZXJMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ5OTAwMDI0MjREMjRDMjkwMDA0OUNCNCAvKiBXS1JlbmRlck9iamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5MDAwMjMyNEQy
NEMxQzAwMDQ5Q0I0IC8qIFdLUmVuZGVyT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ2MjAsNiArNDYyMSw3IEBACiAJCTQ2RjM4RThC
MjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFj
a0ZvcndhcmRDYWNoZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OTMxMDJCQzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcHBQcml2YWN5UmVwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5
NTVBNkU1MjgwNzZENEMwMEJCOTFDNCAvKiBBcnJheVJlZmVyZW5jZVR1cGxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5UmVmZXJlbmNlVHVwbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk3M0RGNDcyNDIyOTQxRjAwRTRDMjZBIC8qIE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OTAwMDFFMjREMjQyOUMw
MDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUmVuZGVy
TGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTkwMDAxRjI0RDI0MjlD
MDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1JlbmRlckxheWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjU1LDYgKzgyNTcsNyBAQAogCQkJ
CTFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi8sCiAJCQkJ
MUFFRkQyRjYxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggKi8sCiAJCQkJN0Ix
REIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8sCisJCQkJNDk1NUE2
RTUyODA3NkQ0QzAwQkI5MUM0IC8qIEFycmF5UmVmZXJlbmNlVHVwbGUuaCAqLywKIAkJCQlCQ0VF
OTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2NkIx
MTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQzN0Qx
MDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCkBAIC0xMzg4Miw2ICsxMzg4NSw3IEBACiAJ
CQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0Nv
Y29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJy
YXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5NTVBNkU2MjgwNzZENEQwMEJCOTFD
NCAvKiBBcnJheVJlZmVyZW5jZVR1cGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUZBNjM0RjIz
NEY3QzY0MDBGRkE4NjQgLyogQXN5bmNSZXZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTJGNTg5NzEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcAppbmRleCBhNWNmYzE3MDQ4YWYwMGIzODM2YmRmOTg0N2Q1MGNhNTM2NjNlYzdhLi5j
ZmRlMGI4MGQ4YWVlZjYzNDUxM2MwMWY5NTkxYjY1MzI1NjAyMDNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTQ3LDYgKzQ3LDI2IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0U3RyZWFt
U2l6ZSA9IDEgPDwgMjE7CiAKK25hbWVzcGFjZSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFMwLCB0eXBlbmFtZSBTMT4KK0lQQzo6QXJyYXlSZWZlcmVuY2VU
dXBsZTxUMCwgVDE+IHRvQXJyYXlSZWZlcmVuY2VUdXBsZShHQ0dMU3BhblR1cGxlPGNvbnN0IFMw
LCBjb25zdCBTMT4gc3BhblR1cGxlKQoreworICAgIHJldHVybiBJUEM6OkFycmF5UmVmZXJlbmNl
VHVwbGUgeworICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFQwKj4oc3BhblR1cGxlLmRh
dGEwKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMSo+KHNwYW5UdXBsZS5kYXRh
MSksCisgICAgICAgIHNwYW5UdXBsZS5idWZTaXplIH07Cit9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
MCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBTMCwgdHlwZW5hbWUgUzEsIHR5
cGVuYW1lIFMyPgorSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMSwgVDI+IHRvQXJyYXlS
ZWZlcmVuY2VUdXBsZShHQ0dMU3BhblR1cGxlPGNvbnN0IFMwLCBjb25zdCBTMSwgY29uc3QgUzI+
IHNwYW5UdXBsZSkKK3sKKyAgICByZXR1cm4gSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlIHsKKyAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMCo+KHNwYW5UdXBsZS5kYXRhMCksCisgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVDEqPihzcGFuVHVwbGUuZGF0YTEpLAorICAgICAg
ICByZWludGVycHJldF9jYXN0PGNvbnN0IFQyKj4oc3BhblR1cGxlLmRhdGEyKSwKKyAgICAgICAg
c3BhblR1cGxlLmJ1ZlNpemUgfTsKK30KK30KKwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKICAg
ICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpCiAgICAgLCBtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uKCZncHVQcm9jZXNzQ29ubmVjdGlvbikKQEAgLTI2MCw2ICsyODAsNDMgQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHcKICAgICB9CiB9CiAKKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1
cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQW5kQ291bnRzKQorewor
ICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURyYXdBcnJheXNBTkdM
RShtb2RlLCB0b0FycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdD4oZmlyc3RzQW5k
Q291bnRzKSkpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICBtYXJrQ29u
dGV4dExvc3QoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5U
dXBsZTxjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xzaXplaT4gZmly
c3RzQ291bnRzQW5kSW5zdGFuY2VDb3VudHMpCit7CisgICAgaWYgKCFpc0NvbnRleHRMb3N0KCkp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Ok11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIHRvQXJyYXlS
ZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90PihmaXJzdHNDb3VudHNBbmRJ
bnN0YW5jZUNvdW50cykpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAg
bWFya0NvbnRleHRMb3N0KCk7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5U
dXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQ+IGNvdW50c0FuZE9mZnNldHMsIEdD
R0xlbnVtIHR5cGUpCit7CisgICAgaWYgKCFpc0NvbnRleHRMb3N0KCkpIHsKKyAgICAgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11
bHRpRHJhd0VsZW1lbnRzQU5HTEUobW9kZSwgdG9BcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3Qs
IGludDMyX3Q+KGNvdW50c0FuZE9mZnNldHMpLCB0eXBlKSk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgIH0KK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBH
Q0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywg
R0NHTGVudW0gdHlwZSkKK3sKKyAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkgeworICAgICAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
TXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCB0b0FycmF5UmVmZXJlbmNlVHVw
bGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4oY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291
bnRzKSwgdHlwZSkpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICBtYXJr
Q29udGV4dExvc3QoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYgc2VtYXBo
b3JlLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRl
bnNpb25zKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDEwNzhkMmRmMWQzZWYxZDQ3OGQzMzNiMDdhMTZhNDU2
ZGZkZjFiNjUuLjRiNDg3MjI2NGE4NmI0ZTFmMTNlNGE2NDQ5ZjQ4MDUyYzQ4NmViMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC03OSw2ICs3OSwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTaW11bGF0ZWRFdmVudEZv
clRlc3RpbmcpIGZpbmFsOwogICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAgICAgdm9pZCBy
ZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbDsKKyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpPiBmaXJzdHNBbmRD
b3VudHMpIGZpbmFsOworICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWks
IGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQ291bnRzQW5kSW5zdGFuY2VDb3VudHMpIGZpbmFsOwor
ICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1
cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGludD4gY291bnRzQW5kT2Zmc2V0cywgR0NH
TGVudW0gdHlwZSkgZmluYWw7CisgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBH
Q0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywg
R0NHTGVudW0gdHlwZSkgZmluYWw7CiAKICAgICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRl
ZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCBzY3JpcHQuCiAgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5h
bDsKQEAgLTMxNywxMCArMzIxLDYgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKICAgICB2b2lk
IGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKICAg
ICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmlu
YWw7Ci0gICAgdm9pZCBtdWx0aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRz
LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBmaW5hbDsKLSAgICB2b2lkIG11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0
cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIGZpbmFsOwotICAgIHZv
aWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
b2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7Ci0gICAgdm9pZCBtdWx0aURyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZz
ZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkg
ZHJhd2NvdW50KSBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVy
PiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkgZmluYWw7CiAgICAgLy8gRW5k
IG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dl
bmVyYXRlZC5jcHAKaW5kZXggNDMxYWRjOTM5YWRjMjM2YWM3NzI2NTlkYTU0NDMzYTMyMmQzM2Qz
MC4uODI1MGI2OTI0ODZhYTQxOWRlY2Y0Njc1ZGZlYWU4YmY5NzY1YjFlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNH
ZW5lcmF0ZWQuY3BwCkBAIC0yMjk5LDQyICsyMjk5LDYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0KICAgICB9CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlE
cmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmly
c3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTHNpemVpIGRyYXdjb3Vu
dCkKLXsKLSAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkgewotICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3QXJy
YXlzQU5HTEUobW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPihmaXJzdHMuZGF0YSksIGZpcnN0cy5idWZTaXplKSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihj
b3VudHMuZGF0YSksIGNvdW50cy5idWZTaXplKSwgZHJhd2NvdW50KSk7Ci0gICAgICAgIGlmICgh
c2VuZFJlc3VsdCkKLSAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgIH0KLX0KLQot
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdD
R0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQotewotICAgIGlmICghaXNDb250
ZXh0TG9zdCgpKSB7Ci0gICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50
MzJfdCo+KGZpcnN0cy5kYXRhKSwgZmlyc3RzLmJ1ZlNpemUpLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGNvdW50cy5kYXRhKSwg
Y291bnRzLmJ1ZlNpemUpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGluc3RhbmNlQ291bnRzLmRhdGEpLCBpbnN0YW5jZUNvdW50
cy5idWZTaXplKSwgZHJhd2NvdW50KSk7Ci0gICAgICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAg
ICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgIH0KLX0KLQotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQotewotICAgIGlmICgh
aXNDb250ZXh0TG9zdCgpKSB7Ci0gICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4oY291bnRzLmRhdGEpLCBjb3VudHMuYnVmU2l6ZSksIHR5cGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4ob2Zmc2V0cy5k
YXRhKSwgb2Zmc2V0cy5idWZTaXplKSwgZHJhd2NvdW50KSk7Ci0gICAgICAgIGlmICghc2VuZFJl
c3VsdCkKLSAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgIH0KLX0KLQotdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQotewotICAg
IGlmICghaXNDb250ZXh0TG9zdCgpKSB7Ci0gICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRzLmRhdGEpLCBjb3VudHMuYnVmU2l6ZSksIHR5cGUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4ob2Zmc2V0cy5kYXRhKSwgb2Zmc2V0cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihpbnN0YW5jZUNvdW50
cy5kYXRhKSwgaW5zdGFuY2VDb3VudHMuYnVmU2l6ZSksIGRyYXdjb3VudCkpOwotICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICB9Ci19
Ci0KIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKQogewogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHJldHVyblZhbHVlID0geyB9Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU1MGFj
MGVlZmQxYTA0ODMzM2ZlNzg0OTVlNGJiZGQ5M2U2NWNhM2EuLjZmYjAwN2JjMmQzMjJlNjcyMDY5
NDJmMWJjNGNiMGMwY2U1ZDhlMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wNC0yMCAgSm9obiBDdW5uaW5n
aGFtICA8am9obmN1bm5pbmdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBHQ0dMU3BhblR1
cGxlIHRvIHBhc3MgYnVmZmVyIHBhcmFtZXRlcnMgdG8gbXVsdGlkcmF3IGNhbGxzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTU0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgS2ltbW8gS2lubnVuZW4uCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2w6CisKIDIwMjItMDQtMTkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtld3MtYnVpbGQud2Via2l0Lm9yZ10gUmVzb2x2ZSBjb25m
bGljdGluZyBNaXhpbiBpbmhlcml0YW5jZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4
IDY4NjJmYzY2OTgxMDhiOTc5ZmJkYmY5YjhkYWJkYzM4ZTJhYWJmODAuLjVkM2Y1Y2FkMGY2ZDk5
MTRiNTYyMTJjN2RkYTlmZTllNThmZWUwNGIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wK
QEAgLTExNCw2ICsxMTQsMTAgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wg
Tm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5n
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZl
bnQpCiAgICAgdm9pZCBSZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKICAgICB2b2lkIFJlYWRuUGl4ZWxzMShpbnQzMl90
IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgTXVsdGlEcmF3
QXJyYXlzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMy
X3QsIGludDMyX3Q+IGZpcnN0c0FuZENvdW50cykKKyAgICB2b2lkIE11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQz
Ml90LCBpbnQzMl90LCBpbnQzMl90PiBmaXJzdHNDb3VudHNBYW5kSW5zdGFuY2VDb3VudHMpCisg
ICAgdm9pZCBNdWx0aURyYXdFbGVtZW50c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90PiBjb3VudHNBbmRPZmZzZXRzLCB1aW50MzJf
dCB0eXBlKQorICAgIHZvaWQgTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJf
dCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJf
dD4gY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLCB1aW50MzJfdCB0eXBlKQoge30KIH19
CiAKQEAgLTIyNCw3ICsyMjgsNyBAQCBjbGFzcyBjcHBfdHlwZV9jb250YWluZXIoY3BwX3R5cGUp
OgogICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CiAgICAgICAgIHJldHVybiBzZWxmLmNv
bnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIKICAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYp
IC0+IGJvb2w6Ci0gICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3Bh
biIgYW5kIHNlbGYuYXJpdHkgaXMgTm9uZQorICAgICAgICByZXR1cm4gKHNlbGYuY29udGFpbmVy
X25hbWUgPT0gIkdDR0xTcGFuIiBhbmQgc2VsZi5hcml0eSBpcyBOb25lKSBvciBzZWxmLmNvbnRh
aW5lcl9uYW1lID09ICJHQ0dMU3BhblR1cGxlIgogICAgIGRlZiBnZXRfY29udGFpbmVyX25hbWUo
c2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lCiAgICAgZGVmIGdldF9h
cml0eShzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgo=
</data>
<flag name="commit-queue"
          id="486756"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458001</attachid>
            <date>2022-04-20 11:50:35 -0700</date>
            <delta_ts>2022-04-21 23:09:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239154-20220420115034.patch</filename>
            <type>text/plain</type>
            <size>57954</size>
            <attacher name="John Cunningham">johncunningham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2ODNiMmRhNzJkM2Rm
Y2JmMDNjNDg3NWZlNjJlNGJmYWIzZTgwYy4uNTcyZGYzOWRhOTJlODAxZjY5Y2ViOWIxNWVkZGFl
Y2JmZGE4ZmViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTA0LTIwICBKb2hu
IEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIEdD
R0xTcGFuVHVwbGUgdG8gcGFzcyBidWZmZXIgcGFyYW1ldGVycyB0byBtdWx0aWRyYXcgY2FsbHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxNTQK
KworICAgICAgICBSZXZpZXdlZCBieSBLaW1tbyBLaW5udW5lbi4KKworICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVsdGlE
cmF3OjptdWx0aURyYXdBcnJheXNXRUJHTCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTE11bHRp
RHJhdzo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xNdWx0aURyYXc6Om11bHRpRHJhd0VsZW1lbnRzV0VCR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xNdWx0aURyYXc6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkV0VCR0wpOgorICAg
ICAgICAoV2ViQ29yZTo6bWFrZVNwYW5XaXRoT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3
RWxlbWVudHNBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIwMjItMDQt
MTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2Ug
bWFrZUF0b21TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2YmUzYjBkMWUzNTY5NzZhMDBjZjdmMmIwNjQ4
M2M0YTUxMjM2MDg5Li4xODc0NGMwOWJlN2E0MTIxMzY4MjgwNTY0NGNhMjkzNTljNDQ5ZGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTA0LTIwICBKb2huIEN1bm5pbmdoYW0gIDxq
b2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIEdDR0xTcGFuVHVwbGUgdG8g
cGFzcyBidWZmZXIgcGFyYW1ldGVycyB0byBtdWx0aWRyYXcgY2FsbHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxNTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBLaW1tbyBLaW5udW5lbi4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb3JlOjp2
ZWN0b3JDb3B5Q2FzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjptdWx0aURyYXdBcnJheXNBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptdWx0aURyYXdFbGVtZW50c0FOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om11bHRpRHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDoKKyAgICAgICAg
KGdldEludGVybmFsZm9ybWF0aXYpOgorICAgICAgICAobXVsdGlEcmF3QXJyYXlzQU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAobXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAobXVsdGlEcmF3RWxlbWVudHNBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICht
dWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJyYXlS
ZWZlcmVuY2VUdXBsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKGNsYXNzX3RlbXBsYXRlX2hlYWRlcnMpOgorICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKTogRGVsZXRlZC4KKwogMjAyMi0wNC0x
OSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ug
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpVbnJlc3BvbnNpdmUgZm9yIHVucmVzcG9uc2l2ZSBu
ZXR3b3JrIHByb2Nlc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xNdWx0aURyYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0
aURyYXcuY3BwCmluZGV4IDk0ZGZjYzQ3YTQ2MTI3MmQ5YWFlYTJjY2IzNDVkYzM3NzM3YjdhMzQu
LjhkMWViMWZiZDc0ODQxYjYxYmZhNDM3MWZjYWFkNGE5ZmFhODk4NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAKQEAgLTM0LDExICszNCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdM
TXVsdGlEcmF3KTsKIAotc3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zm
c2V0KFdlYkdMTXVsdGlEcmF3OjpJbnQzMkxpc3QmIGxpc3QsIEdDR0x1aW50IG9mZnNldCkKLXsK
LSAgICByZXR1cm4gbWFrZUdDR0xTcGFuKGxpc3QuZGF0YSgpICsgb2Zmc2V0LCBsaXN0Lmxlbmd0
aCgpIC0gb2Zmc2V0KTsKLX0KLQogV2ViR0xNdWx0aURyYXc6OldlYkdMTXVsdGlEcmF3KFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewpAQCAtNzAsNyArNjUsNyBAQCB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdB
cnJheXNXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgZmlyc3RzTGlzdCwgRwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5t
dWx0aURyYXdBcnJheXNBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoZmlyc3RzTGlzdCwg
Zmlyc3RzT2Zmc2V0KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNl
dCksIGRyYXdjb3VudCk7CisgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0
aURyYXdBcnJheXNBTkdMRShtb2RlLCBHQ0dMU3BhblR1cGxlIHsgZmlyc3RzTGlzdC5kYXRhKCkg
KyBmaXJzdHNPZmZzZXQsIGNvdW50c0xpc3QuZGF0YSgpICsgY291bnRzT2Zmc2V0LCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGRyYXdjb3VudCkgfSk7CiB9CiAKIHZvaWQgV2ViR0xNdWx0aURyYXc6Om11
bHRpRHJhd0FycmF5c0luc3RhbmNlZFdFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMyTGlzdCBmaXJz
dHNMaXN0LCBHQ0dMdWludCBmaXJzdHNPZmZzZXQsIEludDMyTGlzdCBjb3VudHNMaXN0LCBHQ0dM
dWludCBjb3VudHNPZmZzZXQsIEludDMyTGlzdCBpbnN0YW5jZUNvdW50c0xpc3QsIEdDR0x1aW50
IGluc3RhbmNlQ291bnRzT2Zmc2V0LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQpAQCAtODUsNyArODAs
NyBAQCB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRXRUJHTChH
Q0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgZmlycwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoZmlyc3RzTGlzdCwgZmlyc3RzT2Zmc2V0
KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIG1ha2VTcGFu
V2l0aE9mZnNldChpbnN0YW5jZUNvdW50c0xpc3QsIGluc3RhbmNlQ291bnRzT2Zmc2V0KSwgZHJh
d2NvdW50KTsKKyAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPm11bHRpRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBmaXJzdHNMaXN0LmRhdGEo
KSArICBmaXJzdHNPZmZzZXQsIGNvdW50c0xpc3QuZGF0YSgpICsgY291bnRzT2Zmc2V0LCBpbnN0
YW5jZUNvdW50c0xpc3QuZGF0YSgpICsgaW5zdGFuY2VDb3VudHNPZmZzZXQsIHN0YXRpY19jYXN0
PHNpemVfdD4oZHJhd2NvdW50KSB9KTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlE
cmF3RWxlbWVudHNXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgY291bnRzTGlzdCwgR0NH
THVpbnQgY291bnRzT2Zmc2V0LCBHQ0dMZW51bSB0eXBlLCBJbnQzMkxpc3Qgb2Zmc2V0c0xpc3Qs
IEdDR0x1aW50IG9mZnNldHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpCkBAIC05OSw3ICs5
NCw3IEBAIHZvaWQgV2ViR0xNdWx0aURyYXc6Om11bHRpRHJhd0VsZW1lbnRzV0VCR0woR0NHTGVu
dW0gbW9kZSwgSW50MzJMaXN0IGNvdW50c0xpc3QsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPm11bHRpRHJhd0VsZW1lbnRzQU5H
TEUobW9kZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIHR5
cGUsIG1ha2VTcGFuV2l0aE9mZnNldChvZmZzZXRzTGlzdCwgb2Zmc2V0c09mZnNldCksIGRyYXdj
b3VudCk7CisgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURyYXdFbGVt
ZW50c0FOR0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBjb3VudHNMaXN0LmRhdGEoKSArIGNvdW50
c09mZnNldCwgb2Zmc2V0c0xpc3QuZGF0YSgpICsgb2Zmc2V0c09mZnNldCwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihkcmF3Y291bnQpIH0sIHR5cGUpOwogfQogCiB2b2lkIFdlYkdMTXVsdGlEcmF3Ojpt
dWx0aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMyTGlzdCBj
b3VudHNMaXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xlbnVtIHR5cGUsIEludDMyTGlz
dCBvZmZzZXRzTGlzdCwgR0NHTHVpbnQgb2Zmc2V0c09mZnNldCwgSW50MzJMaXN0IGluc3RhbmNl
Q291bnRzTGlzdCwgR0NHTHVpbnQgaW5zdGFuY2VDb3VudHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3
Y291bnQpCkBAIC0xMTQsNyArMTA5LDcgQEAgdm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3
RWxlbWVudHNJbnN0YW5jZWRXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgY28KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+
bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQo
Y291bnRzTGlzdCwgY291bnRzT2Zmc2V0KSwgdHlwZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KG9mZnNl
dHNMaXN0LCBvZmZzZXRzT2Zmc2V0KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGluc3RhbmNlQ291bnRz
TGlzdCwgaW5zdGFuY2VDb3VudHNPZmZzZXQpLCBkcmF3Y291bnQpOworICAgIG1fY29udGV4dC0+
Z3JhcGhpY3NDb250ZXh0R0woKS0+bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBHQ0dMU3BhblR1cGxlIHsgY291bnRzTGlzdC5kYXRhKCkgKyBjb3VudHNPZmZzZXQsIG9mZnNl
dHNMaXN0LmRhdGEoKSArIG9mZnNldHNPZmZzZXQsIGluc3RhbmNlQ291bnRzTGlzdC5kYXRhKCkg
KyBpbnN0YW5jZUNvdW50c09mZnNldCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkcmF3Y291bnQpIH0s
IHR5cGUpOwogfQogCiBib29sIFdlYkdMTXVsdGlEcmF3Ojp2YWxpZGF0ZURyYXdjb3VudChjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xzaXplaSBkcmF3Y291bnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA2
MWY5MDg1ZTNiMDAzOGVhMWMzOWM1M2E2NjBmZTk5OWRjZGJhNmQxLi4zYWQ5MWQxZTY2ODU3ZjE1
OGQzYjRiNjQwZmU5NTQ3NzdjMWUwNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTEzNjAsMTAgKzEzNjAsMTAg
QEAgcHVibGljOgogICAgIC8vID09PT09PT09PT0gRXh0ZW5zaW9uIHJlbGF0ZWQgZW50cnkgcG9p
bnRzLgogCiAgICAgLy8gR0xfQU5HTEVfbXVsdGlfZHJhdwotICAgIHZpcnR1YWwgdm9pZCBtdWx0
aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBm
aXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2Nv
dW50KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48
Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFu
Y2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbXVs
dGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6
ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0
cywgR0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtdWx0aURyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZz
ZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkg
ZHJhd2NvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVp
PiBmaXJzdHNBbmRDb3VudHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50
LCBjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQ291bnRzQW5kSW5zdGFu
Y2VDb3VudHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGlu
dD4gY291bnRzQW5kT2Zmc2V0cywgR0NHTGVudW0gdHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
VHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGNv
dW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgR0NHTGVudW0gdHlwZSkgPSAwOwogCiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApp
bmRleCA5NjllMzk1NDllNGQxMTczYzBkODkwOGRjMjNiMDYyMGIzZTE5NGJmLi5lMjUyMGFmNjg5
ODkwMTBmMGJhMDNiNmM0NTA2YzczYmRmNmRhYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtMTkzLDMgKzE5Myw1NiBA
QCBHQ0dMU3BhbjxULCBFeHRlbnQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhKQogewogICAgIHJldHVy
biBHQ0dMU3BhbjxULCBFeHRlbnQ+IHsgZGF0YSB9OwogfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBUeXBlcz4KK3N0cnVjdCBHQ0dMU3BhblR1cGxlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwg
dHlwZW5hbWUgVDE+CitzdHJ1Y3QgR0NHTFNwYW5UdXBsZTxUMCwgVDE+IHsKKyAgICBHQ0dMU3Bh
blR1cGxlKFQwKiBkYXRhMF8sIFQxKiBkYXRhMV8sIHNpemVfdCBidWZTaXplXykKKyAgICAgICAg
OiBidWZTaXplKGJ1ZlNpemVfKQorICAgICAgICAsIGRhdGEwKGRhdGEwXykKKyAgICAgICAgLCBk
YXRhMShkYXRhMV8pCisgICAgeworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlw
ZW5hbWUgVTE+CisgICAgR0NHTFNwYW5UdXBsZShjb25zdCBWZWN0b3I8VTA+JiBkYXRhMF8sIGNv
bnN0IFZlY3RvcjxVMT4mIGRhdGExXykKKyAgICAgICAgOiBidWZTaXplKGRhdGEwXy5zaXplKCkp
CisgICAgICAgICwgZGF0YTAoZGF0YTBfLmRhdGEoKSkKKyAgICAgICAgLCBkYXRhMShkYXRhMV8u
ZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRhdGEwXy5zaXplKCkgPT0gZGF0YTFfLnNp
emUoKSk7CisgICAgfQorICAgIGNvbnN0IHNpemVfdCBidWZTaXplOworICAgIFQwKiBjb25zdCBk
YXRhMDsKKyAgICBUMSogY29uc3QgZGF0YTE7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwg
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IEdDR0xTcGFuVHVwbGU8VDAsIFQxLCBU
Mj4gOiBwdWJsaWMgR0NHTFNwYW5UdXBsZTxUMCwgVDE+IHsKKyAgICBHQ0dMU3BhblR1cGxlKFQw
KiBkYXRhMF8sIFQxKiBkYXRhMV8sIFQyKiBkYXRhMl8sIHNpemVfdCBidWZTaXplXykKKyAgICAg
ICAgOiBHQ0dMU3BhblR1cGxlPFQwLCBUMT4oZGF0YTBfLCBkYXRhMV8sIGJ1ZlNpemVfKQorICAg
ICAgICAsIGRhdGEyKGRhdGEyXykKKyAgICB7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+CisgICAgR0NHTFNwYW5UdXBsZShjb25zdCBW
ZWN0b3I8VTA+JiBkYXRhMF8sIGNvbnN0IFZlY3RvcjxVMT4mIGRhdGExXywgY29uc3QgVmVjdG9y
PFUyPiYgZGF0YTJfKQorICAgICAgICA6IEdDR0xTcGFuVHVwbGU8VDAsIFQxPihkYXRhMF8sIGRh
dGExXykKKyAgICAgICAgLCBkYXRhMihkYXRhMl8uZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGRhdGEyXy5zaXplKCkgPT0gZGF0YTBfLnNpemUoKSk7CisgICAgfQorICAgIFQyKiBjb25z
dCBkYXRhMjsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMT4KK0dDR0xT
cGFuVHVwbGUoVDAqLCBUMSosIHNpemVfdCkgLT4gR0NHTFNwYW5UdXBsZTxUMCwgVDE+OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDE+CitHQ0dMU3BhblR1cGxlKGNvbnN0IFZl
Y3RvcjxUMD4mLCBjb25zdCBWZWN0b3I8VDE+JikgLT4gR0NHTFNwYW5UdXBsZTxjb25zdCBUMCwg
Y29uc3QgVDE+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgorR0NHTFNwYW5UdXBsZShUMCosIFQxKiwgVDIqLCBzaXplX3QpIC0+IEdDR0xTcGFuVHVw
bGU8VDAsIFQxLCBUMj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+CitHQ0dMU3BhblR1cGxlKGNvbnN0IFZlY3RvcjxUMD4mLCBjb25zdCBWZWN0b3I8
VDE+JiwgY29uc3QgVmVjdG9yPFQyPiYpIC0+IEdDR0xTcGFuVHVwbGU8Y29uc3QgVDAsIGNvbnN0
IFQxLCBjb25zdCBUMj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IGQ2
NzdiM2M2ZmNmM2M5ZTM3MTdlNTczZThiZDk5ZWE0NDc3OWJmZTUuLmY5NzFlNDc5NDc0ZmZiOGU2
ODI1NGI3NDQxYzA3Y2YxNDU1MTQ2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCkBAIC0yODMxLDQ2ICsyODMxLDQ4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQKICAgICBH
TF9HZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHVuaWZvcm1CbG9j
a0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUsIG51bGxwdHIsIHBhcmFtcy5kYXRhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdBcnJheXNBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0
IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjptdWx0aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
blR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQW5kQ291bnRzKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEdMX011bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUsIGZpcnN0cy5kYXRhLCBjb3VudHMuZGF0YSwg
ZHJhd2NvdW50KTsKKyAgICBHTF9NdWx0aURyYXdBcnJheXNBTkdMRShtb2RlLCBmaXJzdHNBbmRD
b3VudHMuZGF0YTAsIGZpcnN0c0FuZENvdW50cy5kYXRhMSwgZmlyc3RzQW5kQ291bnRzLmJ1ZlNp
emUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0
cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpLCBjb25zdCBH
Q0dMc2l6ZWk+IGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRzKQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdMX011bHRpRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0cy5kYXRhLCBjb3VudHMuZGF0YSwgaW5zdGFu
Y2VDb3VudHMuZGF0YSwgZHJhd2NvdW50KTsKKyAgICBHTF9NdWx0aURyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cy5kYXRhMCwgZmlyc3Rz
Q291bnRzQW5kSW5zdGFuY2VDb3VudHMuZGF0YTEsIGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291
bnRzLmRhdGEyLCBmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cy5idWZTaXplKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50PiBj
b3VudHNBbmRPZmZzZXRzLCBHQ0dMZW51bSB0eXBlKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE11c3QgcGVyZm9ybSBjb252ZXJz
aW9uIGZyb20gaW50ZWdlciBvZmZzZXRzIHRvIHZvaWQqIHBvaW50ZXJzIGJlZm9yZSBwYXNzaW5n
IGRvd24gdG8gQU5HTEUuCi0gICAgVmVjdG9yPHZvaWQqPiBwb2ludGVyczsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG9mZnNldHMuYnVmU2l6ZTsgKytpKQotICAgICAgICBwb2ludGVycy5h
cHBlbmQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0c1tpXSkpOworICAgIFZlY3Rvcjx2
b2lkKj4gb2Zmc2V0c1BvaW50ZXJzOworICAgIG9mZnNldHNQb2ludGVycy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGNvdW50c0FuZE9mZnNldHMuYnVmU2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudHNBbmRPZmZzZXRzLmJ1ZlNpemU7ICsraSkKKyAgICAgICAgb2Zmc2V0c1Bv
aW50ZXJzLmFwcGVuZChyZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudHNBbmRPZmZzZXRzLmRh
dGExW2ldKSk7CiAKLSAgICBHTF9NdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIGNvdW50cy5k
YXRhLCB0eXBlLCBwb2ludGVycy5kYXRhKCksIGRyYXdjb3VudCk7CisgICAgR0xfTXVsdGlEcmF3
RWxlbWVudHNBTkdMRShtb2RlLCBjb3VudHNBbmRPZmZzZXRzLmRhdGEwLCB0eXBlLCBvZmZzZXRz
UG9pbnRlcnMuZGF0YSgpLCBjb3VudHNBbmRPZmZzZXRzLmJ1ZlNpemUpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQsIGNvbnN0
IEdDR0xzaXplaT4gY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLCBHQ0dMZW51bSB0eXBl
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIE11c3QgcGVyZm9ybSBjb252ZXJzaW9uIGZyb20gaW50ZWdlciBvZmZzZXRzIHRvIHZv
aWQqIHBvaW50ZXJzIGJlZm9yZSBwYXNzaW5nIGRvd24gdG8gQU5HTEUuCi0gICAgVmVjdG9yPHZv
aWQqPiBwb2ludGVyczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9mZnNldHMuYnVmU2l6
ZTsgKytpKQotICAgICAgICBwb2ludGVycy5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
b2Zmc2V0c1tpXSkpOworICAgIFZlY3Rvcjx2b2lkKj4gb2Zmc2V0c1BvaW50ZXJzOworICAgIG9m
ZnNldHNQb2ludGVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50c09mZnNldHNBbmRJbnN0
YW5jZUNvdW50cy5idWZTaXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50c09m
ZnNldHNBbmRJbnN0YW5jZUNvdW50cy5idWZTaXplOyArK2kpCisgICAgICAgIG9mZnNldHNQb2lu
dGVycy5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY291bnRzT2Zmc2V0c0FuZEluc3Rh
bmNlQ291bnRzLmRhdGExW2ldKSk7CiAKLSAgICBHTF9NdWx0aURyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKG1vZGUsIGNvdW50cy5kYXRhLCB0eXBlLCBwb2ludGVycy5kYXRhKCksIGluc3RhbmNl
Q291bnRzLmRhdGEsIGRyYXdjb3VudCk7CisgICAgR0xfTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMuZGF0YTAsIHR5cGUs
IG9mZnNldHNQb2ludGVycy5kYXRhKCksIGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cy5k
YXRhMiwgY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLmJ1ZlNpemUpOwogfQogCiBib29s
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCBmY2Q1NjNhNjczMDg3NjE2
ZjYyNDMzZTNkNjY4ZDc4MmRiNjRmODI2Li42M2MzOTJhNDZkNzc3YTFiZjNiYzc4MTRiMThiYTkw
YzQyY2ZhYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zMDIsMTAgKzMw
MiwxMCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgZmluYWw7
CiAgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcp
IGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMaW50PiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRz
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJh
d2NvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92
ZXJyaWRlOwotICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVp
PiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBtdWx0aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0
IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaT4gZmlyc3RzQW5kQ291bnRzKSBmaW5hbDsKKyAgICB2
b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
VHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMc2l6ZWk+IGZp
cnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRzKSBmaW5hbDsKKyAgICB2b2lkIG11bHRpRHJhd0Vs
ZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWks
IGNvbnN0IEdDR0xpbnQ+IGNvdW50c0FuZE9mZnNldHMsIEdDR0xlbnVtIHR5cGUpIGZpbmFsOwor
ICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMU3BhblR1cGxlPGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNp
emVpPiBjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMsIEdDR0xlbnVtIHR5cGUpIGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggNDgzODAyMjM1N2Y4NWVlMzQ3
NDIzMDNmMjM3Y2FhNGUyMTcxNGM1NC4uYzkyMjE3MjBiNDViYzhkOTkyYjBjNGM5NGI4OTk2OTUy
YjZiNTEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zMDM2
LDIyICszMDM2LDIyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50CiB7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50PiwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiwgR0NHTHNpemVp
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NH
TGVudW0sIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpPikKIHsK
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJ
T04pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptdWx0aURyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4sIEdDR0xTcGFu
PGNvbnN0IEdDR0xzaXplaT4sIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4sIEdDR0xzaXplaSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXpl
aSwgY29uc3QgR0NHTHNpemVpPikKIHsKICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjptdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMc2l6ZWk+LCBHQ0dMZW51bSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4sIEdDR0xzaXplaSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NH
TGVudW0sIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50PiwgR0NH
TGVudW0pCiB7CiAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bXVsdGlE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSwgR0NHTFNwYW48Y29uc3QgR0NHTHNp
emVpPiwgR0NHTGVudW0sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMc2l6ZWk+LCBHQ0dMc2l6ZWkpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtLCBHQ0dMU3BhblR1cGxlPGNvbnN0
IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpPiwgR0NHTGVudW0pCiB7
CiAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFU
SU9OKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYWY3NWUwZDA5
OTk2MTZiZjYzMWI1NmY1ZTUzNzc5YmRhZjJkNzE1MS4uZjYyNWNmZjllYmQ1MDk0MWM5Y2NkOTg2
NmI1ZDYxMTg5MmNmNmI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTM2NCwxMCArMzY0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKIAogICAgIC8vIEdMX0FO
R0xFX211bHRpX2RyYXcKLSAgICB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNp
emVpPiBjb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgbXVs
dGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTFNw
YW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsK
LSAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFu
Y2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgbXVsdGlE
cmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50
LCBjb25zdCBHQ0dMc2l6ZWk+IGZpcnN0c0FuZENvdW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCBt
dWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxl
PGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXplaSwgY29uc3QgR0NHTHNpemVpPiBmaXJzdHND
b3VudHNBbmRJbnN0YW5jZUNvdW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCBtdWx0aURyYXdFbGVt
ZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTHNpemVpLCBj
b25zdCBHQ0dMaW50PiBjb3VudHNBbmRPZmZzZXRzLCBHQ0dMZW51bSB0eXBlKSBvdmVycmlkZTsK
KyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xz
aXplaT4gY291bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLCBHQ0dMZW51bSB0eXBlKSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggNjQ4NzIzOGJlMTEwMjY5MzBhYTQzN2I1OGUx
ZjMwODBkODI4Y2IxOS4uZTRiYTYwMzI4YWIxZGQ1NThiMWM5NzJjMmNiZjUzZmUzNjU2ZThhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC00Niw2ICs0NiwxNCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSB7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBTLCBpbnQgSSwgdHlwZW5hbWUgVD4KK1ZlY3RvcjxTPiB2ZWN0b3JDb3B5
Q2FzdChjb25zdCBUJiBhcnJheVJlZmVyZW5jZSkKK3sKKyAgICByZXR1cm4geyByZWludGVycHJl
dF9jYXN0PGNvbnN0IFMqPihhcnJheVJlZmVyZW5jZS50ZW1wbGF0ZSBkYXRhPEk+KCkpLCBhcnJh
eVJlZmVyZW5jZS5zaXplKCkgfTsKK30KK30KKwogLy8gQ3VycmVudGx5IHdlIGhhdmUgb25lIGds
b2JhbCBXZWJHTCBwcm9jZXNzaW5nIGluc3RhbmNlLgogSVBDOjpTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlJiByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCiB7CkBAIC0z
MTUsNiArMzIzLDQ2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlYWRuUGl4ZWxz
MShpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwKICAgICBtX2NvbnRleHQtPnJl
YWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8
R0NHTGludHB0cj4ob2Zmc2V0KSk7CiB9CiAKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
Om11bHRpRHJhd0FycmF5c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VU
dXBsZTxpbnQzMl90LCBpbnQzMl90PiYmIGZpcnN0c0FuZENvdW50cykKK3sKKyAgICBhc3NlcnRJ
c0N1cnJlbnQod29ya1F1ZXVlKCkpOworICAgIC8vIENvcHkgdGhlIGFycmF5cy4gVGhlIGNvbnRl
bnRzIGFyZSB0byBiZSB2ZXJpZmllZC4gVGhlIGRhdGEgbWlnaHQgYmUgaW4gbWVtb3J5IHJlZ2lv
biBzaGFyZWQgYnkgdGhlIGNhbGxlci4KKyAgICBWZWN0b3I8R0NHTGludD4gZmlyc3RzID0gdmVj
dG9yQ29weUNhc3Q8R0NHTGludCwgMD4oZmlyc3RzQW5kQ291bnRzKTsKKyAgICBWZWN0b3I8R0NH
THNpemVpPiBjb3VudHMgPSB2ZWN0b3JDb3B5Q2FzdDxHQ0dMc2l6ZWksIDE+KGZpcnN0c0FuZENv
dW50cyk7CisgICAgbV9jb250ZXh0LT5tdWx0aURyYXdBcnJheXNBTkdMRShtb2RlLCBHQ0dMU3Bh
blR1cGxlIHsgZmlyc3RzLCBjb3VudHMgfSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6
QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90LCBpbnQzMl90PiYmIGZpcnN0c0Nv
dW50c0FuZEluc3RhbmNlQ291bnRzKQoreworICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUo
KSk7CisgICAgLy8gQ29weSB0aGUgYXJyYXlzLiBUaGUgY29udGVudHMgYXJlIHRvIGJlIHZlcmlm
aWVkLiBUaGUgZGF0YSBtaWdodCBiZSBpbiBtZW1vcnkgcmVnaW9uIHNoYXJlZCBieSB0aGUgY2Fs
bGVyLgorICAgIFZlY3RvcjxHQ0dMaW50PiBmaXJzdHMgPSB2ZWN0b3JDb3B5Q2FzdDxHQ0dMaW50
LCAwPihmaXJzdHNDb3VudHNBbmRJbnN0YW5jZUNvdW50cyk7CisgICAgVmVjdG9yPEdDR0xzaXpl
aT4gY291bnRzID0gdmVjdG9yQ29weUNhc3Q8R0NHTHNpemVpLCAxPihmaXJzdHNDb3VudHNBbmRJ
bnN0YW5jZUNvdW50cyk7CisgICAgVmVjdG9yPEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMgPSB2
ZWN0b3JDb3B5Q2FzdDxHQ0dMc2l6ZWksIDI+KGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRz
KTsKKyAgICBtX2NvbnRleHQtPm11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIEdD
R0xTcGFuVHVwbGUgeyBmaXJzdHMsIGNvdW50cywgaW5zdGFuY2VDb3VudHMgfSk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUodWludDMy
X3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3Q+JiYgY291
bnRzQW5kT2Zmc2V0cywgdWludDMyX3QgdHlwZSkKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQod29y
a1F1ZXVlKCkpOworICAgIC8vIENvcHkgdGhlIGFycmF5cy4gVGhlIGNvbnRlbnRzIGFyZSB0byBi
ZSB2ZXJpZmllZC4gVGhlIGRhdGEgbWlnaHQgYmUgaW4gbWVtb3J5IHJlZ2lvbiBzaGFyZWQgYnkg
dGhlIGNhbGxlci4KKyAgICBjb25zdCBWZWN0b3I8R0NHTHNpemVpPiBjb3VudHMgPSB2ZWN0b3JD
b3B5Q2FzdDxHQ0dMc2l6ZWksIDA+KGNvdW50c0FuZE9mZnNldHMpOworICAgIC8vIEN1cnJlbnRs
eSBvZmZzZXRzIGFyZSBjb3BpZWQgaW4gdGhlIG1fY29udGV4dC4KKyAgICBjb25zdCBHQ0dMaW50
KiBvZmZzZXRzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4oY291bnRzQW5kT2Zm
c2V0cy5kYXRhPDE+KCkpOworICAgIG1fY29udGV4dC0+bXVsdGlEcmF3RWxlbWVudHNBTkdMRSht
b2RlLCBHQ0dMU3BhblR1cGxlIHsgY291bnRzLmRhdGEoKSwgb2Zmc2V0cywgY291bnRzLnNpemUo
KSB9LCB0eXBlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bXVsdGlEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNl
VHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4mJiBjb3VudHNPZmZzZXRzQW5kSW5zdGFu
Y2VDb3VudHMsIHVpbnQzMl90IHR5cGUpCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1
ZSgpKTsKKyAgICAvLyBDb3B5IHRoZSBhcnJheXMuIFRoZSBjb250ZW50cyBhcmUgdG8gYmUgdmVy
aWZpZWQuIFRoZSBkYXRhIG1pZ2h0IGJlIGluIG1lbW9yeSByZWdpb24gc2hhcmVkIGJ5IHRoZSBj
YWxsZXIuCisgICAgY29uc3QgVmVjdG9yPEdDR0xzaXplaT4gY291bnRzID0gdmVjdG9yQ29weUNh
c3Q8R0NHTHNpemVpLCAwPihjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VDb3VudHMpOworICAgIC8v
IEN1cnJlbnRseSBvZmZzZXRzIGFyZSBjb3BpZWQgaW4gdGhlIG1fY29udGV4dC4KKyAgICBjb25z
dCBHQ0dMaW50KiBvZmZzZXRzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4oY291
bnRzT2Zmc2V0c0FuZEluc3RhbmNlQ291bnRzLmRhdGE8MT4oKSk7CisgICAgY29uc3QgVmVjdG9y
PEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMgPSB2ZWN0b3JDb3B5Q2FzdDxHQ0dMc2l6ZWksIDI+
KGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cyk7CisgICAgbV9jb250ZXh0LT5tdWx0aURy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIEdDR0xTcGFuVHVwbGUgeyBjb3VudHMuZGF0
YSgpLCBvZmZzZXRzLCBpbnN0YW5jZUNvdW50cy5kYXRhKCksIGNvdW50cy5zaXplKCkgfSwgdHlw
ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKaW5kZXggZGQxZGE3OWZlMDAzMGFkZmQ4MjgyYjg2MTJkYjVlZDU4YTQ2Y2Y3Ny4uYzMx
ZTY1MTA2NTE1MTZlM2E0M2NiNGU2YzZmNDU3Y2FhMzE2YTE5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKQEAgLTEzMSw2ICsxMzEsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2ltdWxhdGVF
dmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50
Rm9yVGVzdGluZyk7CiAgICAgdm9pZCByZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHks
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90
IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmKTsKICAgICB2b2lkIHJl
YWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KTsK
KyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90PiYmIGZpcnN0c0FuZENvdW50cyk7CisgICAg
dm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4mJiBmaXJzdHNDb3Vu
dHNBbmRJbnN0YW5jZUNvdW50cyk7CisgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKHVp
bnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90PiYm
IGNvdW50c0FuZE9mZnNldHMsIHVpbnQzMl90IHR5cGUpOworICAgIHZvaWQgbXVsdGlEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVw
bGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4mJiBjb3VudHNPZmZzZXRzQW5kSW5zdGFuY2VD
b3VudHMsIHVpbnQzMl90IHR5cGUpOwogCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIgLy8gTk9MSU5UCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCAyOWZlMjE0MWZlZGM4ZTAzMWIxMGQyMDEzZjZmN2Ew
OGRkZWQxN2ViLi43NjY3ZDgzNjFhYWYzYjg3OGQzMzA0MWY4MmNjYWZlZmQ0NjQ3MTZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC01Myw2ICs1MywxMCBA
QCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVh
bSB7CiAgICAgdm9pZCBTaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2ZW50KQogICAgIHZvaWQgUmVhZG5Q
aXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+IGRhdGEpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNo
cm9ub3VzCiAgICAgdm9pZCBSZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIE11bHRpRHJhd0FycmF5c0FOR0xFKHVpbnQzMl90
IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxpbnQzMl90LCBpbnQzMl90PiBmaXJzdHNB
bmRDb3VudHMpCisgICAgdm9pZCBNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJf
dCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJf
dD4gZmlyc3RzQ291bnRzQWFuZEluc3RhbmNlQ291bnRzKQorICAgIHZvaWQgTXVsdGlEcmF3RWxl
bWVudHNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJf
dCwgaW50MzJfdD4gY291bnRzQW5kT2Zmc2V0cywgdWludDMyX3QgdHlwZSkKKyAgICB2b2lkIE11
bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJl
ZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3QsIGludDMyX3Q+IGNvdW50c09mZnNldHNBbmRJ
bnN0YW5jZUNvdW50cywgdWludDMyX3QgdHlwZSkKIAogICAgIHZvaWQgTW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAg
dm9pZCBBY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCkBAIC0yOTAsMTAgKzI5NCw2IEBA
IG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFt
IHsKICAgICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcw
KSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwogICAgIHZvaWQgRHJhd0J1ZmZl
cnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKICAgICB2b2lkIEdldElu
dGVybmFsZm9ybWF0aXYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwg
dWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMKLSAgICB2b2lkIE11bHRpRHJhd0FycmF5
c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gZmlyc3Rz
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGNvdW50cywgaW50MzJfdCBkcmF3Y291bnQp
Ci0gICAgdm9pZCBNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGZpcnN0cywgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiBjb3VudHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gaW5zdGFuY2VDb3Vu
dHMsIGludDMyX3QgZHJhd2NvdW50KQotICAgIHZvaWQgTXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1
aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGNvdW50cywgdWludDMy
X3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBvZmZzZXRzLCBpbnQzMl90IGRy
YXdjb3VudCkKLSAgICB2b2lkIE11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMy
X3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBjb3VudHMsIHVpbnQzMl90IHR5
cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gb2Zmc2V0cywgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PiBpbnN0YW5jZUNvdW50cywgaW50MzJfdCBkcmF3Y291bnQpCiAgICAgdm9p
ZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCmluZGV4
IDEwZWU5MjRmMDQ1MDZhOGFjYWQzNTI0YjJiMTE0ZDljMGE4OGEzMmIuLmM3NWNlMGEyMTBjMTE4
MWNkYjNhZTNmOGRkNTAxMjBlZjVmZjZlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0xMzQwLDI2ICsxMzQwLDYgQEAKICAg
ICAgICAgbV9jb250ZXh0LT5nZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRh
KCkpLCBwYXJhbXMuc2l6ZSgpKSk7CiAgICAgfQotICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5H
TEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIGZpcnN0cywg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIGNvdW50cywgaW50MzJfdCBkcmF3Y291bnQp
Ci0gICAgewotICAgICAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwotICAgICAgICBt
X2NvbnRleHQtPm11bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUsIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihmaXJzdHMuZGF0YSgpKSwgZmlyc3RzLnNpemUoKSks
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xzaXplaSo+KGNvdW50cy5k
YXRhKCkpLCBjb3VudHMuc2l6ZSgpKSwgZHJhd2NvdW50KTsKLSAgICB9Ci0gICAgdm9pZCBtdWx0
aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+JiYgZmlyc3RzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgY291
bnRzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgaW5zdGFuY2VDb3VudHMsIGludDMy
X3QgZHJhd2NvdW50KQotICAgIHsKLSAgICAgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgp
KTsKLSAgICAgICAgbV9jb250ZXh0LT5tdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4oZmlyc3RzLmRh
dGEoKSksIGZpcnN0cy5zaXplKCkpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMc2l6ZWkqPihjb3VudHMuZGF0YSgpKSwgY291bnRzLnNpemUoKSksIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xzaXplaSo+KGluc3RhbmNlQ291bnRzLmRhdGEo
KSksIGluc3RhbmNlQ291bnRzLnNpemUoKSksIGRyYXdjb3VudCk7Ci0gICAgfQotICAgIHZvaWQg
bXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+JiYgY291bnRzLCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+JiYgb2Zmc2V0cywgaW50MzJfdCBkcmF3Y291bnQpCi0gICAgewotICAgICAgICBhc3Nl
cnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwotICAgICAgICBtX2NvbnRleHQtPm11bHRpRHJhd0Vs
ZW1lbnRzQU5HTEUobW9kZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THNpemVpKj4oY291bnRzLmRhdGEoKSksIGNvdW50cy5zaXplKCkpLCB0eXBlLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4ob2Zmc2V0cy5kYXRhKCkpLCBvZmZz
ZXRzLnNpemUoKSksIGRyYXdjb3VudCk7Ci0gICAgfQotICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+JiYgY291bnRzLCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
JiYgb2Zmc2V0cywgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIGluc3RhbmNlQ291bnRz
LCBpbnQzMl90IGRyYXdjb3VudCkKLSAgICB7Ci0gICAgICAgIGFzc2VydElzQ3VycmVudCh3b3Jr
UXVldWUoKSk7Ci0gICAgICAgIG1fY29udGV4dC0+bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShtb2RlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMc2l6ZWkq
Pihjb3VudHMuZGF0YSgpKSwgY291bnRzLnNpemUoKSksIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihvZmZzZXRzLmRhdGEoKSksIG9mZnNldHMuc2l6
ZSgpKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHNpemVpKj4oaW5z
dGFuY2VDb3VudHMuZGF0YSgpKSwgaW5zdGFuY2VDb3VudHMuc2l6ZSgpKSwgZHJhd2NvdW50KTsK
LSAgICB9CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBpeGVsQnVmZmVyPiByZXR1cm5WYWx1ZSA9IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IDg3ZTljNjJiZThhNmRjMTg5NjZjNzNkMzFm
ZjhkZGU4MmU0YmFkNTguLjcyMzMxMmM3ZWRiMDU5MmRkNjhlNzVmNmRhMzA5Mzg2MmUyM2UwNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkFycmF5
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2VUdXBsZS5oIgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvQm94Lmg+CkBAIC05
MSw2ICs5Miw4NSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxTcGFuPFQsIEV4dGVudD4+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDE+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJl
bmNlVHVwbGU8VDAsIFQxPj4geworICAgIHVzaW5nIEFycmF5UmVmZXJlbmNlVHVwbGVUeXBlID0g
QXJyYXlSZWZlcmVuY2VUdXBsZTxUMCwgVDE+OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5
UmVmZXJlbmNlVHVwbGVUeXBlJiBhcnJheVJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5UmVmZXJlbmNlLnNpemUoKSk7CisgICAg
ICAgIGF1dG8gc2l6ZSA9IGFycmF5UmVmZXJlbmNlLnNpemUoKTsKKyAgICAgICAgaWYgKFVOTElL
RUxZKCFzaXplKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZl
cmVuY2UudGVtcGxhdGUgZGF0YTwwPigpKSwgc2l6ZSAqIHNpemVvZihUMCksIGFsaWdub2YoVDAp
KTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UudGVtcGxhdGUgZGF0YTwxPigpKSwgc2l6
ZSAqIHNpemVvZihUMSksIGFsaWdub2YoVDEpKTsKKyAgICB9CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QXJyYXlSZWZlcmVuY2VUdXBsZVR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFkZWNv
ZGVyLmRlY29kZShzaXplKSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICBpZiAoVU5MSUtFTFkoIXNpemUpKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJl
bmNlVHVwbGVUeXBlIHsgfTsKKworICAgICAgICBhdXRvIGRhdGFTaXplID0gQ2hlY2tlZFNpemUg
eyBzaXplIH0gKiBzaXplb2YoVDApOworICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFz
T3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IGNvbnN0IHVpbnQ4X3QqIGRhdGEwID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5j
ZShkYXRhU2l6ZSwgYWxpZ25vZihUMCkpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWRhdGEwKSkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGRhdGFTaXplID0gQ2hl
Y2tlZFNpemUgeyBzaXplIH0gKiBzaXplb2YoVDEpOworICAgICAgICBpZiAoVU5MSUtFTFkoZGF0
YVNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGExID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aFJlZmVyZW5jZShkYXRhU2l6ZSwgYWxpZ25vZihUMSkpOworICAgICAgICBpZiAoVU5MSUtFTFko
IWRhdGExKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBBcnJheVJlZmVyZW5jZVR1cGxlVHlwZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVDAqPihk
YXRhMCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVDEqPihkYXRhMSksIHN0YXRpY19jYXN0PHNp
emVfdD4oc2l6ZSkgfTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZVR1
cGxlPFQwLCBUMSwgVDI+PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUdXBsZVR5cGUgPSBB
cnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMSwgVDI+OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFy
cmF5UmVmZXJlbmNlVHVwbGVUeXBlJiBhcnJheVJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5UmVmZXJlbmNlLnNpemUoKSk7Cisg
ICAgICAgIGF1dG8gc2l6ZSA9IGFycmF5UmVmZXJlbmNlLnNpemUoKTsKKyAgICAgICAgaWYgKFVO
TElLRUxZKCFzaXplKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlS
ZWZlcmVuY2UudGVtcGxhdGUgZGF0YTwwPigpKSwgc2l6ZSAqIHNpemVvZihUMCksIGFsaWdub2Yo
VDApKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UudGVtcGxhdGUgZGF0YTwxPigpKSwg
c2l6ZSAqIHNpemVvZihUMSksIGFsaWdub2YoVDEpKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZl
cmVuY2UudGVtcGxhdGUgZGF0YTwyPigpKSwgc2l6ZSAqIHNpemVvZihUMiksIGFsaWdub2YoVDIp
KTsKKyAgICB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUdXBsZVR5
cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgdWludDY0X3Qgc2l6
ZTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFkZWNvZGVyLmRlY29kZShzaXplKSkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoVU5MSUtFTFkoIXNpemUpKQor
ICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHVwbGVUeXBlIHsgfTsKKworICAgICAg
ICBhdXRvIGRhdGFTaXplID0gQ2hlY2tlZFNpemUgeyBzaXplIH0gKiBzaXplb2YoVDApOworICAg
ICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEwID0gZGVj
b2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShkYXRhU2l6ZSwgYWxpZ25vZihUMCkpOwor
ICAgICAgICBpZiAoVU5MSUtFTFkoIWRhdGEwKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIGRhdGFTaXplID0gQ2hlY2tlZFNpemUgeyBzaXplIH0gKiBzaXplb2Yo
VDEpOworICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGExID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShkYXRhU2l6ZSwgYWxpZ25v
ZihUMSkpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWRhdGExKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGRhdGFTaXplID0gQ2hlY2tlZFNpemUgeyBzaXplIH0g
KiBzaXplb2YoVDIpOworICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZsb3dl
ZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEyID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShkYXRhU2l6
ZSwgYWxpZ25vZihUMikpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWRhdGEyKSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR1
cGxlVHlwZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVDAqPihkYXRhMCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVDEqPihkYXRhMSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVDIqPihkYXRh
MiksIHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSkgfTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25TZXQ8VD4+IHsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9wdGlvblNldCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlVHVwbGUuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlVHVwbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzEwNmNl
NDdjOTNkOTYzNDk2MTg5ZmY0YmYxM2E4ZDgwZjA3Yjg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2VUdXBsZS5oCkBAIC0wLDAgKzEs
ODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIElQQyB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUeXBlcz4gY2xh
c3MgQXJyYXlSZWZlcmVuY2VUdXBsZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVDAsIHR5cGVuYW1l
IFQxPgorY2xhc3MgQXJyYXlSZWZlcmVuY2VUdXBsZTxUMCwgVDE+IHsKK3B1YmxpYzoKKyAgICBB
cnJheVJlZmVyZW5jZVR1cGxlKCkgPSBkZWZhdWx0OworICAgIEFycmF5UmVmZXJlbmNlVHVwbGUo
Y29uc3QgVDAqIGRhdGEwLCBjb25zdCBUMSogZGF0YTEsIHNpemVfdCBzaXplKQorICAgICAgICA6
IG1fc2l6ZShzaXplKQorICAgICAgICAsIG1fZGF0YTAoc2l6ZSA/IGRhdGEwIDogbnVsbHB0cikK
KyAgICAgICAgLCBtX2RhdGExKHNpemUgPyBkYXRhMSA6IG51bGxwdHIpCisgICAgeworICAgIH0K
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zaXplOyB9CisgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICB0ZW1wbGF0ZTxpbnQgST4KKyAg
ICBhdXRvIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByKEkpCisgICAg
ICAgICAgICByZXR1cm4gbV9kYXRhMTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIoIUkpCisg
ICAgICAgICAgICByZXR1cm4gbV9kYXRhMDsKKyAgICB9Citwcml2YXRlOgorICAgIHNpemVfdCBt
X3NpemUgeyAwIH07CisgICAgY29uc3QgVDAqIG1fZGF0YTAgeyBudWxscHRyIH07CisgICAgY29u
c3QgVDEqIG1fZGF0YTEgeyBudWxscHRyIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwg
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorY2xhc3MgQXJyYXlSZWZlcmVuY2VUdXBsZTxUMCwg
VDEsIFQyPiA6IHB1YmxpYyBBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMT4geworcHVibGljOgor
ICAgIEFycmF5UmVmZXJlbmNlVHVwbGUoKSA9IGRlZmF1bHQ7CisgICAgQXJyYXlSZWZlcmVuY2VU
dXBsZShjb25zdCBUMCogZGF0YTAsIGNvbnN0IFQxKiBkYXRhMSwgY29uc3QgVDIqIGRhdGEyLCBz
aXplX3Qgc2l6ZSkKKyAgICAgICAgOiBBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMT4oZGF0YTAs
IGRhdGExLCBzaXplKQorICAgICAgICAsIG1fZGF0YTIoc2l6ZSA/IGRhdGEyIDogbnVsbHB0cikK
KyAgICB7CisgICAgfQorICAgIHRlbXBsYXRlPGludCBJPgorICAgIGF1dG8gZGF0YSgpIGNvbnN0
CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIoSSA9PSAyKQorICAgICAgICAgICAgcmV0dXJu
IG1fZGF0YTI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5j
ZVR1cGxlPFQwLCBUMT46OnRlbXBsYXRlIGRhdGE8ST4oKTsKKyAgICB9Citwcml2YXRlOgorICAg
IGNvbnN0IFQyKiBtX2RhdGEyIHsgbnVsbHB0ciB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VDAsIHR5cGVuYW1lIFQxPgorQXJyYXlSZWZlcmVuY2VUdXBsZShjb25zdCBUMCosIGNvbnN0IFQx
Kiwgc2l6ZV90KSAtPiBBcnJheVJlZmVyZW5jZVR1cGxlPFQwLCBUMT47CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitBcnJheVJlZmVyZW5jZVR1cGxl
KGNvbnN0IFQwKiwgY29uc3QgVDEqLCBjb25zdCBUMiosIHNpemVfdCkgLT4gQXJyYXlSZWZlcmVu
Y2VUdXBsZTxUMCwgVDEsIFQyPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggNjRmMTM2MDFjMjA5ZDhhNzlhNjY3M2RiYjA3ODg5OGZkOTM0ODVmMi4u
YTMxOGE1M2IxZWM5MjUxNzE4MDAxOWQ1Y2M0ZWM5NTIwMDBmMjVhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC02MzQsNiArNjM0LDcgQEAgZGVmIGNsYXNz
X3RlbXBsYXRlX2hlYWRlcnModGVtcGxhdGVfc3RyaW5nKToKICAgICAgICAgJ3N0ZDo6b3B0aW9u
YWwnOiB7J2hlYWRlcnMnOiBbJzxvcHRpb25hbD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMn
OiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICAgICAgJ3N0ZDo6cGFpcic6IHsnaGVhZGVy
cyc6IFsnPHV0aWxpdHk+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRD
b2RlcnMuaCInXX0sCiAgICAgICAgICdJUEM6OkFycmF5UmVmZXJlbmNlJzogeydoZWFkZXJzJzog
WyciQXJyYXlSZWZlcmVuY2UuaCInXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1
bWVudENvZGVycy5oIiddfSwKKyAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZSc6IHsn
aGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlVHVwbGUuaCInXSwgJ2FyZ3VtZW50X2NvZGVyX2hl
YWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICAgICAgJ1JlZic6IHsnaGVhZGVy
cyc6IFsnPHd0Zi9SZWYuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVu
dENvZGVycy5oIiddfSwKICAgICAgICAgJ1JlZlB0cic6IHsnaGVhZGVycyc6IFsnPHd0Zi9SZWZD
b3VudGVkLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMu
aCInXX0sCiAgICAgICAgICdSZXRhaW5QdHInOiB7J2hlYWRlcnMnOiBbJzx3dGYvUmV0YWluUHRy
Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnNDRi5oIidd
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDlhM2UxN2UyYjU0YjA2ODE3YTVjMGQzMmJkZmM2MDg5M2ZiNjViM2IuLjY4NzMyNGYyYTRj
MmIwMDA5MjY5YzBhMTBlZTQ2MzExZmNmZTAxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTEzLDYgKzkxMyw3IEBACiAJCTQ2RjM4
RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAw
NTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1
MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVG
QSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJNDkzMTAyQkQyNjgzRjNE
MDAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2
YWN5UmVwb3J0LmggKi87IH07CisJCTQ5NTVBNkU2MjgwNzZENEQwMEJCOTFDNCAvKiBBcnJheVJl
ZmVyZW5jZVR1cGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OTU1QTZFNTI4MDc2RDRDMDBCQjkxQzQgLyogQXJyYXlSZWZlcmVuY2VUdXBsZS5oICov
OyB9OwogCQk0OTczREY0ODI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
NzNERjQ3MjQyMjk0MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oICov
OyB9OwogCQk0OTkwMDAyMTI0RDI0MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5MDAwMUYyNEQyNDI5
QzAwMDQ5Q0I0IC8qIFdLUmVuZGVyTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTkwMDAyNDI0RDI0QzI5MDAwNDlDQjQgLyogV0tSZW5k
ZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5OTAwMDIzMjREMjRDMUMwMDA0OUNCNCAvKiBXS1JlbmRlck9iamVjdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NjIwLDYgKzQ2MjEsNyBA
QAogCQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVubmluZ0JvYXJkU2VydmljZXNT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGOUIyNjIyMzUyNkVEMDAwNkZF
NUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0OTU1QTZFNTI4MDc2RDRDMDBCQjkxQzQgLyogQXJyYXlSZWZlcmVuY2VUdXBs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZVR1cGxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NzNERjQ3MjQyMjk0MUYwMEU0QzI2
QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTkw
MDAxRTI0RDI0MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS1JlbmRlckxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5
MDAwMUYyNEQyNDI5QzAwMDQ5Q0I0IC8qIFdLUmVuZGVyTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tSZW5kZXJMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI1NSw2ICs4
MjU3LDcgQEAKIAkJCQkxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRDb2RlcnMu
Y3BwICovLAogCQkJCTFBRUZEMkY2MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5o
ICovLAogCQkJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICov
LAorCQkJCTQ5NTVBNkU1MjgwNzZENEMwMEJCOTFDNCAvKiBBcnJheVJlZmVyZW5jZVR1cGxlLmgg
Ki8sCiAJCQkJQkNFRTk2NkExMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3BwICovLAog
CQkJCUJDRUU5NjZCMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggKi8sCiAJCQkJQkMw
MzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovLApAQCAtMTM4ODIsNiAr
MTM4ODUsNyBAQAogCQkJCTFBQUYwQzRBMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVy
c0NGLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTc1QzQ0QTIxQUEzMTcxMDAwMDM3RDAgLyogQXJn
dW1lbnRDb2RlcnNDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0IxREIyNjYyNTY2OENFMTAw
MEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTU1QTZFNjI4
MDc2RDREMDBCQjkxQzQgLyogQXJyYXlSZWZlcmVuY2VUdXBsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQUFGQTYzNEYyMzRGN0M2NDAwRkZBODY0IC8qIEFzeW5jUmV2YWxpZGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0VFOTY2RDExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OTcxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggYTVjZmMxNzA0OGFmMDBiMzgzNmJkZjk4NDdkNTBj
YTUzNjYzZWM3YS4uY2ZkZTBiODBkOGFlZWY2MzQ1MTNjMDFmOTU5MWI2NTMyNTYwMjAzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC00Nyw2ICs0Nywy
NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
ZGVmYXVsdFN0cmVhbVNpemUgPSAxIDw8IDIxOwogCituYW1lc3BhY2UgewordGVtcGxhdGU8dHlw
ZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBTMCwgdHlwZW5hbWUgUzE+CitJUEM6OkFy
cmF5UmVmZXJlbmNlVHVwbGU8VDAsIFQxPiB0b0FycmF5UmVmZXJlbmNlVHVwbGUoR0NHTFNwYW5U
dXBsZTxjb25zdCBTMCwgY29uc3QgUzE+IHNwYW5UdXBsZSkKK3sKKyAgICByZXR1cm4gSVBDOjpB
cnJheVJlZmVyZW5jZVR1cGxlIHsKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMCo+
KHNwYW5UdXBsZS5kYXRhMCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVDEqPihz
cGFuVHVwbGUuZGF0YTEpLAorICAgICAgICBzcGFuVHVwbGUuYnVmU2l6ZSB9OworfQordGVtcGxh
dGU8dHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgUzAsIHR5
cGVuYW1lIFMxLCB0eXBlbmFtZSBTMj4KK0lQQzo6QXJyYXlSZWZlcmVuY2VUdXBsZTxUMCwgVDEs
IFQyPiB0b0FycmF5UmVmZXJlbmNlVHVwbGUoR0NHTFNwYW5UdXBsZTxjb25zdCBTMCwgY29uc3Qg
UzEsIGNvbnN0IFMyPiBzcGFuVHVwbGUpCit7CisgICAgcmV0dXJuIElQQzo6QXJyYXlSZWZlcmVu
Y2VUdXBsZSB7CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVDAqPihzcGFuVHVwbGUu
ZGF0YTApLAorICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFQxKj4oc3BhblR1cGxlLmRh
dGExKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUMio+KHNwYW5UdXBsZS5kYXRh
MiksCisgICAgICAgIHNwYW5UdXBsZS5idWZTaXplIH07Cit9Cit9CisKIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmlu
Z0JhY2tlbmQpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKQogICAgICwgbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCkBAIC0yNjAsNiArMjgw
LDQzIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3CiAgICAgfQogfQogCisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMaW50LCBjb25zdCBHQ0dMc2l6ZWk+IGZpcnN0c0Fu
ZENvdW50cykKK3sKKyAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlE
cmF3QXJyYXlzQU5HTEUobW9kZSwgdG9BcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMy
X3Q+KGZpcnN0c0FuZENvdW50cykpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpLCBjb25zdCBH
Q0dMc2l6ZWk+IGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291bnRzKQoreworICAgIGlmICghaXND
b250ZXh0TG9zdCgpKSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSht
b2RlLCB0b0FycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4oZmly
c3RzQ291bnRzQW5kSW5zdGFuY2VDb3VudHMpKSk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgIH0KK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50PiBjb3VudHNB
bmRPZmZzZXRzLCBHQ0dMZW51bSB0eXBlKQoreworICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpNdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIHRvQXJyYXlSZWZlcmVuY2VU
dXBsZTxpbnQzMl90LCBpbnQzMl90Pihjb3VudHNBbmRPZmZzZXRzKSwgdHlwZSkpOworICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICB9
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xz
aXplaSwgY29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpPiBjb3VudHNPZmZzZXRzQW5kSW5z
dGFuY2VDb3VudHMsIEdDR0xlbnVtIHR5cGUpCit7CisgICAgaWYgKCFpc0NvbnRleHRMb3N0KCkp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Ok11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgdG9BcnJh
eVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGludDMyX3QsIGludDMyX3Q+KGNvdW50c09mZnNldHNB
bmRJbnN0YW5jZUNvdW50cyksIHR5cGUpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAg
ICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQorfQorCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFw
aG9yZSYmIHNlbWFwaG9yZSwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYg
cmVxdWVzdGVkRXh0ZW5zaW9ucykKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCAxMDc4ZDJkZjFkM2VmMWQ0Nzhk
MzMzYjA3YTE2YTQ1NmRmZGYxYjY1Li40YjQ4NzIyNjRhODZiNGUxZjEzZTRhNjQ0OWY0ODA1MmM0
ODZlYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtNzks
NiArNzksMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoU2lt
dWxhdGVkRXZlbnRGb3JUZXN0aW5nKSBmaW5hbDsKICAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFs
OwogICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xpbnQsIGNvbnN0IEdDR0xzaXpl
aT4gZmlyc3RzQW5kQ291bnRzKSBmaW5hbDsKKyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuVHVwbGU8Y29uc3QgR0NHTGludCwgY29u
c3QgR0NHTHNpemVpLCBjb25zdCBHQ0dMc2l6ZWk+IGZpcnN0c0NvdW50c0FuZEluc3RhbmNlQ291
bnRzKSBmaW5hbDsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTFNwYW5UdXBsZTxjb25zdCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQ+IGNvdW50c0Fu
ZE9mZnNldHMsIEdDR0xlbnVtIHR5cGUpIGZpbmFsOworICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3BhblR1cGxlPGNvbnN0IEdDR0xz
aXplaSwgY29uc3QgR0NHTGludCwgY29uc3QgR0NHTHNpemVpPiBjb3VudHNPZmZzZXRzQW5kSW5z
dGFuY2VDb3VudHMsIEdDR0xlbnVtIHR5cGUpIGZpbmFsOwogCiAgICAgLy8gRnVuY3Rpb25zIHdp
dGggYSBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVy
YXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgogICAgIGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJy
b3JMaXN0KCkgZmluYWw7CkBAIC0zMTcsMTAgKzMyMSw2IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWw7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVm
cykgZmluYWw7CiAgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50
PiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
c2l6ZWk+IGNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7Ci0gICAgdm9pZCBtdWx0
aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBm
aW5hbDsKLSAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIGZpbmFsOwotICAgIHZv
aWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50
cywgR0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFs
OwogICAgIC8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQu
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCmluZGV4IDQzMWFkYzkzOWFkYzIzNmFjNzcyNjU5ZGE1
NDQzM2EzMjJkMzNkMzAuLjgyNTBiNjkyNDg2YWE0MTlkZWNmNDY3NWRmZWFlOGJmOTc2NWIxZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMjI5OSw0MiArMjI5OSw2IEBAIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Om11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xz
aXplaSBkcmF3Y291bnQpCi17Ci0gICAgaWYgKCFpc0NvbnRleHRMb3N0KCkpIHsKLSAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
Ok11bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oZmlyc3RzLmRhdGEpLCBmaXJzdHMuYnVm
U2l6ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBpbnQzMl90Kj4oY291bnRzLmRhdGEpLCBjb3VudHMuYnVmU2l6ZSksIGRyYXdjb3VudCkpOwot
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsK
LSAgICB9Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkKLXsKLSAg
ICBpZiAoIWlzQ29udGV4dExvc3QoKSkgewotICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUobW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPihmaXJzdHMuZGF0YSksIGZpcnN0cy5idWZTaXplKSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihj
b3VudHMuZGF0YSksIGNvdW50cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihpbnN0YW5jZUNvdW50cy5kYXRhKSwg
aW5zdGFuY2VDb3VudHMuYnVmU2l6ZSksIGRyYXdjb3VudCkpOwotICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCi0gICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICB9Ci19Ci0KLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlw
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkK
LXsKLSAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkgewotICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3RWxlbWVu
dHNBTkdMRShtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgaW50MzJfdCo+KGNvdW50cy5kYXRhKSwgY291bnRzLmJ1ZlNpemUpLCB0eXBlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJf
dCo+KG9mZnNldHMuZGF0YSksIG9mZnNldHMuYnVmU2l6ZSksIGRyYXdjb3VudCkpOwotICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICB9
Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywg
R0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdj
b3VudCkKLXsKLSAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkgewotICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGNvdW50cy5kYXRhKSwgY291bnRzLmJ1
ZlNpemUpLCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgaW50MzJfdCo+KG9mZnNldHMuZGF0YSksIG9mZnNldHMuYnVmU2l6ZSksIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4o
aW5zdGFuY2VDb3VudHMuZGF0YSksIGluc3RhbmNlQ291bnRzLmJ1ZlNpemUpLCBkcmF3Y291bnQp
KTsKLSAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQotICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0
KCk7Ci0gICAgfQotfQotCiBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVm
ZmVyKCkKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiByZXR1cm5W
YWx1ZSA9IHsgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA1NTBhYzBlZWZkMWEwNDgzMzNmZTc4NDk1ZTRiYmRkOTNlNjVjYTNhLi42ZmIwMDdi
YzJkMzIyZTY3MjA2OTQyZjFiYzRjYjBjMGNlNWQ4ZTJhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDQtMjAg
IEpvaG4gQ3VubmluZ2hhbSAgPGpvaG5jdW5uaW5naGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgR0NHTFNwYW5UdXBsZSB0byBwYXNzIGJ1ZmZlciBwYXJhbWV0ZXJzIHRvIG11bHRpZHJhdyBj
YWxscy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
OTE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IEtpbW1vIEtpbm51bmVuLgorCisgICAgICAgICog
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIyLTA0LTE5ICBKb25hdGhhbiBCZWRh
cmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzLWJ1aWxkLndlYmtpdC5vcmdd
IFJlc29sdmUgY29uZmxpY3RpbmcgTWl4aW4gaW5oZXJpdGFuY2UKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbAppbmRleCA2ODYyZmM2Njk4MTA4Yjk3OWZiZGJmOWI4ZGFiZGMzOGUyYWFiZjgwLi41
ZDNmNWNhZDBmNmQ5OTE0YjU2MjEyYzdkZGE5ZmU5ZTU4ZmVlMDRiIDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsCkBAIC0xMTQsNiArMTE0LDEwIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBTaW11bGF0ZUV2
ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRG
b3JUZXN0aW5nIGV2ZW50KQogICAgIHZvaWQgUmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50
MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIC0+IChJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBSZWFkblBp
eGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIE11bHRpRHJhd0FycmF5c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2VUdXBsZTxpbnQzMl90LCBpbnQzMl90PiBmaXJzdHNBbmRDb3VudHMpCisgICAgdm9pZCBNdWx0
aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJl
bmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdD4gZmlyc3RzQ291bnRzQWFuZEluc3Rh
bmNlQ291bnRzKQorICAgIHZvaWQgTXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1aW50MzJfdCBtb2Rl
LCBJUEM6OkFycmF5UmVmZXJlbmNlVHVwbGU8aW50MzJfdCwgaW50MzJfdD4gY291bnRzQW5kT2Zm
c2V0cywgdWludDMyX3QgdHlwZSkKKyAgICB2b2lkIE11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZVR1cGxlPGludDMyX3QsIGlu
dDMyX3QsIGludDMyX3Q+IGNvdW50c09mZnNldHNBbmRJbnN0YW5jZUNvdW50cywgdWludDMyX3Qg
dHlwZSkKIHt9CiB9fQogCkBAIC0yMjQsNyArMjI4LDcgQEAgY2xhc3MgY3BwX3R5cGVfY29udGFp
bmVyKGNwcF90eXBlKToKICAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgogICAgICAgICBy
ZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iCiAgICAgZGVmIGlzX2R5bmFt
aWNfc3BhbihzZWxmKSAtPiBib29sOgotICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFt
ZSA9PSAiR0NHTFNwYW4iIGFuZCBzZWxmLmFyaXR5IGlzIE5vbmUKKyAgICAgICAgcmV0dXJuIChz
ZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJpdHkgaXMgTm9uZSkg
b3Igc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW5UdXBsZSIKICAgICBkZWYgZ2V0X2Nv
bnRhaW5lcl9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZQog
ICAgIGRlZiBnZXRfYXJpdHkoc2VsZikgLT4gT3B0aW9uYWxbaW50XToK
</data>

          </attachment>
      

    </bug>

</bugzilla>