<?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>218976</bug_id>
          
          <creation_ts>2020-11-16 05:11:22 -0800</creation_ts>
          <short_desc>GraphicsContextGL should have robust multivalue getters</short_desc>
          <delta_ts>2020-11-18 04:26:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219069</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jdarpinian</cc>
    
    <cc>kbr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1707770</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 05:11:22 -0800</bug_when>
    <thetext>GraphicsContextGL should have robust multivalue getters, otherwise:
1) The GPUP is harder to implement
2) The code contains uninitialised variables and miscalculated receive buffer sizes

The getters such as getUniformiv should contain the info about the amount of data in the receive buffer.
Currently ANGLE_robust_client_memory has this form of API. We should just use this pattern in the main GraphicsContextGL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707775</commentid>
    <comment_count>1</comment_count>
      <attachid>414219</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 05:22:29 -0800</bug_when>
    <thetext>Created attachment 414219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707776</commentid>
    <comment_count>2</comment_count>
      <attachid>414220</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 05:25:05 -0800</bug_when>
    <thetext>Created attachment 414220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707781</commentid>
    <comment_count>3</comment_count>
      <attachid>414223</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 05:31:08 -0800</bug_when>
    <thetext>Created attachment 414223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707784</commentid>
    <comment_count>4</comment_count>
      <attachid>414226</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 05:38:12 -0800</bug_when>
    <thetext>Created attachment 414226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707785</commentid>
    <comment_count>5</comment_count>
      <attachid>414227</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 05:48:04 -0800</bug_when>
    <thetext>Created attachment 414227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707787</commentid>
    <comment_count>6</comment_count>
      <attachid>414228</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 06:06:08 -0800</bug_when>
    <thetext>Created attachment 414228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707789</commentid>
    <comment_count>7</comment_count>
      <attachid>414229</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 06:09:03 -0800</bug_when>
    <thetext>Created attachment 414229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707823</commentid>
    <comment_count>8</comment_count>
      <attachid>414229</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-16 08:24:46 -0800</bug_when>
    <thetext>Comment on attachment 414229
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        the value is a normal the return value. This reduces the risk
&gt; +        of having uninitialized receive location.

Some words missing here.

&gt; Source/WebCore/ChangeLog:17
&gt; +        Add GCGLSpan type that is used to communicate pair: ptr, number of

&quot;Span&quot; is a really odd name for this. Does no existing WTF type work here?

&gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:994
&gt; +    virtual void getFloatv(GCGLenum pname, GCGLSpan&lt;GCGLfloat&gt; value) = 0;
&gt; +    virtual void getIntegerv(GCGLenum pname, GCGLSpan&lt;GCGLint&gt; value) = 0;

Can we rely on the return-value optimization to just return GCGLSpan&lt;&gt;?

&gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:998
&gt; +    virtual void getBooleanv(GCGLenum pname, GCGLSpan&lt;GCGLboolean&gt; value) = 0;

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707918</commentid>
    <comment_count>9</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 11:40:00 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #8)
&gt; &gt; Source/WebCore/ChangeLog:17
&gt; &gt; +        Add GCGLSpan type that is used to communicate pair: ptr, number of
&gt; 
&gt; &quot;Span&quot; is a really odd name for this. Does no existing WTF type work here?

I&apos;ve always interpreted it so that a &apos;span&apos; is a standard name to a view into array memory. Standard as in std::span. As in, if you&apos;re going to implement the concept, it&apos;s going to be called &quot;span&quot;. I couldn&apos;t find a corresponding type..

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:994
&gt; &gt; +    virtual void getFloatv(GCGLenum pname, GCGLSpan&lt;GCGLfloat&gt; value) = 0;
&gt; &gt; +    virtual void getIntegerv(GCGLenum pname, GCGLSpan&lt;GCGLint&gt; value) = 0;
&gt; 
&gt; Can we rely on the return-value optimization to just return GCGLSpan&lt;&gt;?

Span doesn&apos;t own anything. It&apos;s a view into something owned by somebody.
With this and previous comment, do you mean following:

GCGLuint value[4] = {0};
m_context-&gt;getUniformuiv(program.object(), location, value);

-&gt;

WTF::Vector&lt;GCGLuint&gt; value = m_context-&gt;getUniformuiv(program.object(), location, 4);

It&apos;s a bit redundant, but if you think that&apos;s the way to go, I can do it that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707924</commentid>
    <comment_count>10</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 11:51:13 -0800</bug_when>
    <thetext>Also, the related but not strictly related to this patch:

Output calls are going to be of form 
  uniform4fv(..., GCGLSpan&lt;GCGLfloat, 4&gt; value)

Having those as WTF::Vectors is a bit redundant
Having those as std::array&lt;GCGLfloat, 4&gt; is copying a bit

Then there are call like
  bufferData(..., GCGLSpan&lt;GCGLvoid&gt;) 
Having this as WTF::Vector might be a quite a bit copying..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707927</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-16 11:56:11 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #9)
&gt; (In reply to Simon Fraser (smfr) from comment #8)
&gt; &gt; &gt; Source/WebCore/ChangeLog:17
&gt; &gt; &gt; +        Add GCGLSpan type that is used to communicate pair: ptr, number of
&gt; &gt; 
&gt; &gt; &quot;Span&quot; is a really odd name for this. Does no existing WTF type work here?
&gt; 
&gt; I&apos;ve always interpreted it so that a &apos;span&apos; is a standard name to a view
&gt; into array memory. Standard as in std::span. As in, if you&apos;re going to
&gt; implement the concept, it&apos;s going to be called &quot;span&quot;. I couldn&apos;t find a
&gt; corresponding type..

OK, I wasn&apos;t familiar with std::span.

&gt; &gt; &gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:994
&gt; &gt; &gt; +    virtual void getFloatv(GCGLenum pname, GCGLSpan&lt;GCGLfloat&gt; value) = 0;
&gt; &gt; &gt; +    virtual void getIntegerv(GCGLenum pname, GCGLSpan&lt;GCGLint&gt; value) = 0;
&gt; &gt; 
&gt; &gt; Can we rely on the return-value optimization to just return GCGLSpan&lt;&gt;?
&gt; 
&gt; Span doesn&apos;t own anything. It&apos;s a view into something owned by somebody.
&gt; With this and previous comment, do you mean following:
&gt; 
&gt; GCGLuint value[4] = {0};
&gt; m_context-&gt;getUniformuiv(program.object(), location, value);

I meant changing the signatures to:

virtual GCGLSpan&lt;GCGLfloat&gt; getFloatv(GCGLenum pname) = 0;
virtual GCGLSpan&lt;GCGLint&gt; getIntegerv(GCGLenum pname) = 0;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707952</commentid>
    <comment_count>12</comment_count>
      <attachid>414269</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 12:34:44 -0800</bug_when>
    <thetext>Created attachment 414269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708020</commentid>
    <comment_count>13</comment_count>
      <attachid>414269</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-11-16 15:22:27 -0800</bug_when>
    <thetext>Comment on attachment 414269
Patch

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

The failures of gl-object-get-calls and some of the other conformance tests indicate something&apos;s going wrong with the multi-value getters - could you investigate those and comment here when this patch is fixed?

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2521
&gt; +        m_context-&gt;getActiveUniformBlockiv(program.object(), uniformBlockIndex, pname, params);

As discussed on the Slack channel - good catch on this fix. Did this fix any WebGL conformance tests? If not then could you please file an issue about expanding the conformance tests around UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES on https://github.com/KhronosGroup/WebGL ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708121</commentid>
    <comment_count>14</comment_count>
      <attachid>414307</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 22:02:43 -0800</bug_when>
    <thetext>Created attachment 414307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708134</commentid>
    <comment_count>15</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 22:45:02 -0800</bug_when>
    <thetext>(In reply to Kenneth Russell from comment #13)
&gt; &gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2521
&gt; &gt; +        m_context-&gt;getActiveUniformBlockiv(program.object(), uniformBlockIndex, pname, params);
&gt; 
&gt; As discussed on the Slack channel - good catch on this fix. Did this fix any
&gt; WebGL conformance tests? If not then could you please file an issue about
&gt; expanding the conformance tests around UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
&gt; on https://github.com/KhronosGroup/WebGL ?

I think it&apos;s just a cosmetic fix -- there was no real bug.
So the case was in the spirit of:
 We have one int slot.
 We want a uniform property that fills one in int slot.
 We give the int slot to ANGLE: &quot;Here are int slots, write the property here, the amount of int slots is 4&quot;. (&lt;-- bug here, we thought we say &quot;one slot&quot;, but actually said &quot;4 slots&quot;.).
 ANGLE checks that 4 is bigger than one and writes one int in one slot.

So the case was that we claimed our buffer is bigger than it was, but it does not matter since the value written to the buffer is the size of the buffer.

I&apos;m not sure the bug would be testable from webgl level. 


There is inverse of this bug marked in the patch as FIXME:s : 
ANGLE validates bufSize of Uniform*vRobustANGLE with the logic of bufSize of nUniformEXT. That shouldn&apos;t be testable from webgl level either. I&apos;ll submit a patch for that if nobody does that before I get around doing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708136</commentid>
    <comment_count>16</comment_count>
      <attachid>414310</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 23:12:28 -0800</bug_when>
    <thetext>Created attachment 414310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708137</commentid>
    <comment_count>17</comment_count>
      <attachid>414311</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 23:25:10 -0800</bug_when>
    <thetext>Created attachment 414311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708139</commentid>
    <comment_count>18</comment_count>
      <attachid>414313</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 23:37:41 -0800</bug_when>
    <thetext>Created attachment 414313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708250</commentid>
    <comment_count>19</comment_count>
      <attachid>414313</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-17 08:47:36 -0800</bug_when>
    <thetext>Comment on attachment 414313
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsTypesGL.h:72
&gt; +    T&amp; operator*() {  ASSERT(data); return *data; }

Extra space. Should these be release asserts?

&gt; Source/WebCore/platform/graphics/GraphicsTypesGL.h:92
&gt; +    T&amp; operator[](size_t i) { ASSERT(data); ASSERT(i &lt; bufSize); return data[i]; }
&gt; +    T&amp; operator*() { ASSERT(data); return *data; }

Release asserts?

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:1973
&gt; +    // FIXME: Bug in ANGLE bufSize validation for uniforms.

Reference a bug number?

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:1982
&gt; +    // FIXME: Bug in ANGLE bufSize validation for uniforms.

Reference a bug number?

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:1991
&gt; +    // FIXME: Bug in ANGLE bufSize validation for uniforms.

Reference a bug number?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708284</commentid>
    <comment_count>20</comment_count>
      <attachid>414313</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-17 10:30:27 -0800</bug_when>
    <thetext>Comment on attachment 414313
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsTypesGL.h:72
&gt;&gt; +    T&amp; operator*() {  ASSERT(data); return *data; }
&gt; 
&gt; Extra space. Should these be release asserts?

Likely valuable to have a buffer overrun assertion be a release assertion. Perhaps less helpful to have the null check be a release assertion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708377</commentid>
    <comment_count>21</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-11-17 14:06:46 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #15)
&gt; (In reply to Kenneth Russell from comment #13)
&gt; &gt; &gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2521
&gt; &gt; &gt; +        m_context-&gt;getActiveUniformBlockiv(program.object(), uniformBlockIndex, pname, params);
&gt; &gt; 
&gt; &gt; As discussed on the Slack channel - good catch on this fix. Did this fix any
&gt; &gt; WebGL conformance tests? If not then could you please file an issue about
&gt; &gt; expanding the conformance tests around UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
&gt; &gt; on https://github.com/KhronosGroup/WebGL ?
&gt; 
&gt; I think it&apos;s just a cosmetic fix -- there was no real bug.
&gt; So the case was in the spirit of:
&gt;  We have one int slot.
&gt;  We want a uniform property that fills one in int slot.
&gt;  We give the int slot to ANGLE: &quot;Here are int slots, write the property
&gt; here, the amount of int slots is 4&quot;. (&lt;-- bug here, we thought we say &quot;one
&gt; slot&quot;, but actually said &quot;4 slots&quot;.).
&gt;  ANGLE checks that 4 is bigger than one and writes one int in one slot.
&gt; 
&gt; So the case was that we claimed our buffer is bigger than it was, but it
&gt; does not matter since the value written to the buffer is the size of the
&gt; buffer.
&gt; 
&gt; I&apos;m not sure the bug would be testable from webgl level. 
&gt; 
&gt; 
&gt; There is inverse of this bug marked in the patch as FIXME:s : 
&gt; ANGLE validates bufSize of Uniform*vRobustANGLE with the logic of bufSize of
&gt; nUniformEXT. That shouldn&apos;t be testable from webgl level either. I&apos;ll submit
&gt; a patch for that if nobody does that before I get around doing it.

Thanks for the clarification - I see. Given that, don&apos;t worry about new tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708524</commentid>
    <comment_count>22</comment_count>
      <attachid>414427</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-18 00:58:24 -0800</bug_when>
    <thetext>Created attachment 414427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708525</commentid>
    <comment_count>23</comment_count>
      <attachid>414428</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-18 00:59:54 -0800</bug_when>
    <thetext>Created attachment 414428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708558</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-18 04:26:00 -0800</bug_when>
    <thetext>Committed r269952: &lt;https://trac.webkit.org/changeset/269952&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414428.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708559</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-18 04:26:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/71533455&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414219</attachid>
            <date>2020-11-16 05:22:29 -0800</date>
            <delta_ts>2020-11-16 05:24:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201116152227.patch</filename>
            <type>text/plain</type>
            <size>131730</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg0YWYwMDZmZDM3ZGQx
MmM5MmE5MzUxMDc3MzBjZTg2Y2QzN2ZiOC4uMzBmMjJhYzM2NzYyZDc2NTJlYjI5NTg4NmYwNmVj
MTQ0YzYyMTExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyNiBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRo
ZSB2YWx1ZSBpcyBhIG5vcm1hbCB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIHJlZHVjZXMgdGhlIHJp
c2sKKyAgICAgICAgb2YgaGF2aW5nIHVuaW5pdGlhbGl6ZWQgcmVjZWl2ZSBsb2NhdGlvbi4KKwor
ICAgICAgICBDaGFuZ2UgdGhlIGdldHRlcnMgdGhhdCBhcmUgb25seSB1c2VkIHRvIG9idGFpbiBz
aW5nbGUgdmFsdWVzIHNvCisgICAgICAgIHRoYXQgdGhlIGdldHRlciBpdHNlbGYgaGFzIHRoZSBy
ZXR1cm4gdmFsdWUuCisgICAgICAgIEFkZCBhIHNpbmdsZS12YWx1ZSBnZXR0ZXIgZm9yIGdldHRl
cnMgdGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gYWxzbworICAgICAgICBtdWx0aXBsZSB2YWx1ZXMu
CisKKyAgICAgICAgQWRkIEdDR0xTcGFuIHR5cGUgdGhhdCBpcyB1c2VkIHRvIGNvbW11bmljYXRl
IHBhaXI6IHB0ciwgbnVtYmVyIG9mCisgICAgICAgIGVsZW1lbnRzLgorCisgICAgICAgIFVzZSB0
aGUgUm9idXN0QU5HTEUgdmFyaWFudHMgb2YgdGhlIEdMIEFQSSBpbXBsZW1lbnRhdGlvbiB0byBv
YnRhaW4KKyAgICAgICAgdGhlIHZhbHVlcy4KKworICAgICAgICBSZW1vdmUgdGhlIGNvcnJlc3Bv
bmRpbmcgUm9idXN0QU5HTEUgdmFyaWFudHMgZnJvbSBFeHRlbnNpb25zR0wsIHRoZXkgYXJlCisg
ICAgICAgIGRlYWQgY29kZSBhbmQgdW51c2VkLgorCisgICAgICAgIFRoZSB0eXBlIEdDR0xTcGFu
IHdpbGwgYmUgdXNlZCB0byBzaW1wbGlmeSB0aGUgR1BVIHByb2Nlc3MgaW1wbGVtZW50YXRpb24s
CisgICAgICAgIHNpbmNlIHRoZSBidWZTaXplIHdpbGwgYmUgZXhwbGljaXRseSBhc3NvY2lhdGVk
IGluIHRoZSBwYXNzZWQgZGF0YSBwdHIsCisgICAgICAgIGluc2lkZSB0aGUgR0NHTFNwYW4gdHlw
ZS4KKworICAgICAgICBGaXhlcyBidWdzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFsdWUgd2FzIHVz
ZWQgdG8gc3RvcmUgdGhlIGxvY2F0aW9uIG9mIHRoZQorICAgICAgICBnb3R0ZW4gcHJvcGVyeS4g
VGhpcyB2YWx1ZSB3b3VsZCBiZSB1bndyaXR0ZW4gaW4gZWRnZS1jYXNlcyBsaWtlIEdMIGVycm9y
cywgYW5kCisgICAgICAgIHRodXMgdGhlIHJlYWQgd291bGQgdG91Y2ggdW51aW5pdGlhbGl6ZWQg
dmFsdWUuCisKKyAgICAgICAgRml4ZXMgYSBidWcgd2hlcmUgdW5pZm9ybSBibG9jayB2YXJpYWJs
ZXMgY29kZSB3b3VsZCBwYXNzIGluIHRvbyBsYXJnZSBidWZmZXIKKyAgICAgICAgc2l6ZSB0byB0
aGUgUm9idXN0QU5HTEUgY2FsbC4gVGhlIGJ1ZlNpemUgcmVmZXJzIHRvIHRoZSBudW1iZXIgb2Yg
ZWxlbWVudHMsIGJ1dAorICAgICAgICB0aGUgY29kZSBwYXNzZWQgaW4gdGhlIHNpemUgb2YgdGhl
IGJ1ZmZlciAoaS5lLiBudW1iZXIgb2YgZWxlbWVudHMgKiBzaXplIG9mCisgICAgICAgIGVsZW1l
bnQpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSByZWZhY3Rvci4KKworICAgICAgICAqIGh0
bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZh
czo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEludDY0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja1Bh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmNh
Y2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3Jh
bTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxl
U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVjaXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQ
cm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCb29s
ZWFuUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldEZsb2F0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldEludFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdFZlcnRleEF0
dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9h
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0Qm9vbGVhbik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0SW50ZWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChH
Q0dMU3Bhbjo6R0NHTFNwYW4pOgorICAgICAgICAoR0NHTFNwYW46Om9wZXJhdG9yW10pOgorICAg
ICAgICAoR0NHTFNwYW46Om9wZXJhdG9yKik6CisgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Rmxv
YXR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFk
ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlm
b3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0
dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJpX3ZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjRpX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcmkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1m
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9y
bWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlm
b3JtdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRW
ZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3YpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBh
cmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRJbnRlZ2VyNjR2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJp
dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VGV4UGFyYW1ldGVyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFudlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXJ2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZv
cm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJp
Yml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdl
cmlfdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0aV92Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmxlbmRGdW5jKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21waWxlU2hhZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVB
dHRyaWJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpvcmlnaW5hbFN5bWJvbE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVZlcnRleEFycmF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1ZlcnRleEFycmF5KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2
NGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pdik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFj
dGl2ZVN5bWJvbENvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRVbm1hbmdsZWRJbmZvTG9nKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFRleFBhcmFtZXRlcmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtaXYpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm11aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJEKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlUHJvZ3JhbSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3Jl
YXRlUmVuZGVyYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRleHR1cmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZUJ1ZmZlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlRnJh
bWVidWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmRlbGV0ZVByb2dyYW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlU2hhZGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUZXh0
dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpzeW50aGVzaXplR0xFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6bWFya0NvbnRleHRDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrTGF5ZXJDb21wb3NpdGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpsYXll
ckNvbXBvc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmZvcmNlQ29udGV4dExvc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlY3ljbGVDb250ZXh0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwYXRjaENvbnRl
eHRDaGFuZ2VkTm90aWZpY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJERGlyZWN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
RWxlbWVudHNJbnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByaW1pdGl2ZVJlc3RhcnRJbmRleCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29w
eUJ1ZmZlclN1YkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmxpdEZy
YW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dGV4U3RvcmFnZTJEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlM0QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXhTdWJJbWFnZTNEKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRG
cmFnRGF0YUxvY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
MXVpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTJ1aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
TWF0cml4M3gyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
M3g0ZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm1NYXRyaXg0eDNmdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWJJNHVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSVBvaW50ZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdSYW5nZUVsZW1l
bnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpkcmF3QnVmZmVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVm
ZmVyZmkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZVF1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpkZWxldGVRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5RdWVyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRR
dWVyeU9iamVjdHVpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlU2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlU2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNTYW1wbGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kU2FtcGxlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2Ft
cGxlclBhcmFtZXRlcmkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZmVuY2VTeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjppc1N5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVN5bmMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsaWVudFdhaXRTeW5jKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
U3luY2l2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVHJhbnNm
b3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRCdWZm
ZXJCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpiaW5kQnVmZmVyUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jtcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5p
Zm9ybUJsb2NrSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRQaXhlbHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vydik6CisKIDIwMjAtMTEtMTYgIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5hbCByZWZhY3RvciBmb3Ig
V2ViR0wgaW1wbGVtZW50YXRpb24gdG8gdXNlIG9ubHkgR3JhcGhpY3NDb250ZXh0R0wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAppbmRleCAyZWYxMGIwYTRmMzQ2ZWZlMWI5
MzhlNDZlMDA1M2E4YTMzOTQ1MzQ0Li4wNGIzMGY4ZjY0NjQxNDY4MDY3ZTMwOTI2ZTc0ZTRmMmQ5
YzE4YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC0yODUs
NyArMjg1LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zmc2NyZWVuQ2Fu
dmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKQogICAgICAgICAvLyBjcmVhdGVzIGEgbmV3IGJh
Y2tpbmcgc3RvcmUuIFNpbmNlIHdlJ3JlIG5vdCBkb2luZyB0aGF0IHlldCwgd2UKICAgICAgICAg
Ly8gbmVlZCB0byBlcmFzZSB3aGF0J3MgdGhlcmUuCiAKLSAgICAgICAgR0NHTGZsb2F0IGNsZWFy
Q29sb3JbNF07CisgICAgICAgIEdDR0xmbG9hdCBjbGVhckNvbG9yWzRdIHsgfTsKICAgICAgICAg
Z2MzZC0+Z2V0RmxvYXR2KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9DTEVBUl9WQUxVRSwgY2xl
YXJDb2xvcik7CiAgICAgICAgIGdjM2QtPmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAgICAgICAg
IGdjM2QtPmNsZWFyKEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhp
Y3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJ
TF9CVUZGRVJfQklUKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggODA3M2FkYzExMTQ5MjE1ZjU2ZDFlNDVkYTY4
NGRlODI4NTgxN2U5Mi4uNTViYzFmOGRiMjQ5ZDMzODIyZTc4ODljYTc4M2Y1YmVjMDI1YTI5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTE1OSw5ICsxNTksOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX3VucGFja1NraXBSb3dzID0gMDsKICAg
ICBtX3VucGFja1NraXBJbWFnZXMgPSAwOwogCi0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihH
cmFwaGljc0NvbnRleHRHTDo6TUFYXzNEX1RFWFRVUkVfU0laRSwgJm1fbWF4M0RUZXh0dXJlU2l6
ZSk7CisgICAgbV9tYXgzRFRleHR1cmVTaXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBo
aWNzQ29udGV4dEdMOjpNQVhfM0RfVEVYVFVSRV9TSVpFKTsKICAgICBtX21heDNEVGV4dHVyZUxl
dmVsID0gV2ViR0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heDNEVGV4dHVyZVNpemUs
IG1fbWF4M0RUZXh0dXJlU2l6ZSk7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGlj
c0NvbnRleHRHTDo6TUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTLCAmbV9tYXhBcnJheVRleHR1cmVM
YXllcnMpOworICAgIG1fbWF4QXJyYXlUZXh0dXJlTGF5ZXJzID0gbV9jb250ZXh0LT5nZXRJbnRl
Z2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMpOwogCiAgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKIApAQCAt
MjA4LDkgKzIwOCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVzdG9yZVVucGFj
a1BhcmFtZXRlcnMoKQogCiBsb25nIGxvbmcgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50
NjRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludDY0IHZhbHVlID0gMDsK
LSAgICBtX2NvbnRleHQtPmdldEludGVnZXI2NHYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJu
IHZhbHVlOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXI2NChwbmFtZSk7CiB9CiAK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0
cygpCkBAIC0xMDU1LDIzICsxMDUzLDE0IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldFRleFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lCiAgICAg
ICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfSU1N
VVRBQkxFX0xFVkVMUzoKICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9XUkFQX1I6IHsKLSAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVl
KTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQ6IHsKLSAgICAgICAgR0NHTGludCB2YWx1ZSA9
IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwg
JnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlKTsKLSAgICB9
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1I6CisgICAgICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUOgorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdl
dCwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6
CiAgICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRV
UkVfTUFYX0xPRDogewotICAgICAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwOwotICAgICAgICBtX2Nv
bnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV9NQVhfTE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRh
cmdldCwgcG5hbWUpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRUZXhQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSk7CiAgICAgfQpAQCAt
MjQ0NSwxMSArMjQzNCw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldElu
ZGV4ZWRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpCiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQ6CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZGRVJfU0laRToKLSAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZFUl9TVEFSVDogewotICAgICAgICBHQ0dMaW50
NjQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXI2NGlfdih0YXJnZXQs
IGluZGV4LCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX1NUQVJUOgorICAgICAgICByZXR1cm4g
bV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpKHRhcmdldCwgaW5kZXgpOwogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgIGlmIChpbmRleCA+
PSBtX2JvdW5kSW5kZXhlZFVuaWZvcm1CdWZmZXJzLnNpemUoKSkgewogICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJnZXRJbmRl
eGVkUGFyYW1ldGVyIiwgImluZGV4IG91dCBvZiByYW5nZSIpOwpAQCAtMjUyNCwyNCArMjUxMCwy
MCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtQmxv
Y2tQYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcgogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIEdDR0xpbnQgcmVzdWx0ID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19CSU5ESU5HOgogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFOgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TOgotICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJv
YnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgc2l6
ZW9mKHJlc3VsdCksIG51bGxwdHIsICZyZXN1bHQpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R0NHTHVpbnQ+KHJlc3VsdCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWlu
dD4obV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVu
aWZvcm1CbG9ja0luZGV4LCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVO
SUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUzogewotICAgICAgICBHQ0dMaW50IHNp
emUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4
LCBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVMsIHNpemVv
ZihzaXplKSwgbnVsbHB0ciwgJnNpemUpOworICAgICAgICBHQ0dMaW50IHNpemUgPSBtX2NvbnRl
eHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2kocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2Nr
SW5kZXgsIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUyk7
CiAgICAgICAgIFZlY3RvcjxHQ0dMaW50PiBwYXJhbXMoc2l6ZSwgMCk7Ci0gICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUo
cHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBzaXplb2YocGFyYW1z
WzBdKSAqIHBhcmFtcy5zaXplKCksIG51bGxwdHIsIHBhcmFtcy5kYXRhKCkpOworICAgICAgICBt
X2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0ub2JqZWN0KCksIHVuaWZv
cm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgcmV0dXJuIHBhcmFtcy5tYXAo
W10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4oeCk7IH0pOwogICAgIH0K
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllf
VkVSVEVYX1NIQURFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NL
X1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSOgotICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2Jq
ZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgc2l6ZW9mKHJlc3VsdCksIG51bGxwdHIs
ICZyZXN1bHQpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ocmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bUJsb2NraShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUpKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9FTlVNLCAiZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwgImludmFsaWQg
cGFyYW1ldGVyIG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzcyLDkgKzI3
NTQsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZwogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52
YWxpZCBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQotICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAm
dmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQt
PmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBw
bmFtZSk7CiAgICAgfQogICAgIGlmICghdmFsaWRhdGVOb25EZWZhdWx0RnJhbWVidWZmZXJBdHRh
Y2htZW50KGZ1bmN0aW9uTmFtZSwgYXR0YWNobWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjc5NiwxMSArMjc3Niw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnCiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhf
U0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X1NURU5DSUxfU0laRToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwot
ICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRh
cmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsK
LSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9DT01QT05FTlRfVFlQRToKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICB9
CiAKICAgICBpZiAob2JqZWN0LT5pc1RleHR1cmUoKSkgewpAQCAtMjgxMSwxMSArMjc4OCw4IEBA
IFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnCiAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihy
ZWludGVycHJldF9jYXN0PFdlYkdMVGV4dHVyZSY+KCpvYmplY3QpKTsKICAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMOgog
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RF
WFRVUkVfQ1VCRV9NQVBfRkFDRToKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORzogewotICAgICAgICAgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0KKyAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORzoKKyAgICAgICAg
ICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5j
dGlvbk5hbWUsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciB0ZXh0dXJlIGF0dGFjaG1lbnQi
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg5Nyw3ICsyODcxLDcgQEAgYm9v
bCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZU5vbkRlZmF1bHRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQoY29uc3QgY2hhcioKIEdDR0xpbnQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
TWF4RHJhd0J1ZmZlcnMoKQogewogICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVS
UywgJm1fbWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250
ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTKTsKICAg
ICByZXR1cm4gbV9tYXhEcmF3QnVmZmVyczsKIH0KIApAQCAtMjkwNSw3ICsyODc5LDcgQEAgR0NH
TGludCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKIHsK
ICAgICAvLyBEcmF3QnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVOVFMgPT0gTUFY
X0RSQVdfQlVGRkVSUwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBt
X2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJT
LCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRz
ID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZG
RVJTKTsKICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IDljYjBmODU2
YjU4ZTEwZTZmNDczMDllNmZlM2MxMGUyNjcwOTcxNjYuLjQ5NDE1NmUxZTY1YjYwMjkxOTBkYjdj
MWMwMjZhZGY4MDNkZGE4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC05OCwxMCArOTgsOCBAQCBib29sIFdlYkdMRHJhd0J1ZmZl
cnM6OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IHdlYgogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0ID0gd2ViZ2xDb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCk7CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhZnRlciB3ZSBtYWtlIHN1
cmUgR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBzdXBwb3J0ZWQuCi0gICAgR0NHTGludCBtYXhEcmF3
QnVmZmVycyA9IDA7Ci0gICAgR0NHTGludCBtYXhDb2xvckF0dGFjaG1lbnRzID0gMDsKLSAgICBj
b250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAm
bWF4RHJhd0J1ZmZlcnMpOwotICAgIGNvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6
TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1heENvbG9yQXR0YWNobWVudHMpOworICAgIEdD
R0xpbnQgbWF4RHJhd0J1ZmZlcnMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6
TUFYX0RSQVdfQlVGRkVSU19FWFQpOworICAgIEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50cyA9
IGNvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNf
RVhUKTsKICAgICBpZiAobWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0YWNobWVudHMg
PCA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggMDFhMDJmNTFkNzJkODkyZWFiOGU4YzI3
MDUwNmNiZmM0ZTczNjU0YS4uYWY0ZjA0MTdiMWIzZDg4OTRlYTVmOTBmMzRhZGI0MjRhN2EzNWFm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5j
cHAKQEAgLTYxMywyMCArNjEzLDIwIEBAIGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6
ZUF0dGFjaG1lbnRzKEdyYXBoaWNzQ29udGV4dEdMKiBnM2QsIGNvbnN0IGNoYXIqCiAgICAgR0NH
TGJvb2xlYW4gaXNTY2lzc29yRW5hYmxlZCA9IDA7CiAgICAgR0NHTGJvb2xlYW4gaXNEaXRoZXJF
bmFibGVkID0gMDsKICAgICBpZiAoaW5pdENvbG9yKSB7Ci0gICAgICAgIGczZC0+Z2V0RmxvYXR2
KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9DTEVBUl9WQUxVRSwgY29sb3JDbGVhclZhbHVlKTsK
LSAgICAgICAgZzNkLT5nZXRCb29sZWFudihHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfV1JJVEVN
QVNLLCBjb2xvck1hc2spOworICAgICAgICBjb2xvckNsZWFyVmFsdWUgPSBnM2QtPmdldEZsb2F0
KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9DTEVBUl9WQUxVRSk7CisgICAgICAgIGNvbG9yTWFz
ayA9IGczZC0+Z2V0Qm9vbGVhbihHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfV1JJVEVNQVNLKTsK
ICAgICAgICAgZzNkLT5jbGVhckNvbG9yKDAsIDAsIDAsIDApOwogICAgICAgICBnM2QtPmNvbG9y
TWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICB9CiAgICAgaWYgKGluaXREZXB0aCkg
ewotICAgICAgICBnM2QtPmdldEZsb2F0dihHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ0xFQVJf
VkFMVUUsICZkZXB0aENsZWFyVmFsdWUpOwotICAgICAgICBnM2QtPmdldEJvb2xlYW52KEdyYXBo
aWNzQ29udGV4dEdMOjpERVBUSF9XUklURU1BU0ssICZkZXB0aE1hc2spOworICAgICAgICBkZXB0
aENsZWFyVmFsdWUgPSBnM2QtPmdldEZsb2F0KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9DTEVB
Ul9WQUxVRSk7CisgICAgICAgIGRlcHRoTWFzayA9IGczZC0+Z2V0Qm9vbGVhbihHcmFwaGljc0Nv
bnRleHRHTDo6REVQVEhfV1JJVEVNQVNLKTsKICAgICAgICAgZzNkLT5jbGVhckRlcHRoKDEuMGYp
OwogICAgICAgICBnM2QtPmRlcHRoTWFzayh0cnVlKTsKICAgICB9CiAgICAgaWYgKGluaXRTdGVu
Y2lsKSB7Ci0gICAgICAgIGczZC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5D
SUxfQ0xFQVJfVkFMVUUsICZzdGVuY2lsQ2xlYXJWYWx1ZSk7Ci0gICAgICAgIGczZC0+Z2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfV1JJVEVNQVNLLCByZWludGVycHJldF9j
YXN0PEdDR0xpbnQqPigmc3RlbmNpbE1hc2spKTsKKyAgICAgICAgc3RlbmNpbENsZWFyVmFsdWUg
PSBnM2QtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQ0xFQVJfVkFMVUUp
OworICAgICAgICBzdGVuY2lsTWFzayA9IGczZC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRH
TDo6U1RFTkNJTF9XUklURU1BU0spOwogICAgICAgICBnM2QtPmNsZWFyU3RlbmNpbCgwKTsKICAg
ICAgICAgZzNkLT5zdGVuY2lsTWFzaygweGZmZmZmZmZmKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAppbmRleCBjOGMzYjgyMjY1MjUzYzBlMDRl
ZTAxYTZiNDEyOWM5YzVmMTgwNTI5Li4zZTQ2YzVlNTZkMTNkY2ZjZjJlY2MyZGFkMmFjMTk2YTVm
N2NlYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAK
QEAgLTIxNiw4ICsyMTYsNyBAQCB2b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJM
b2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCkKIHsKICAgICBtX2FjdGl2ZUF0
dHJpYkxvY2F0aW9ucy5jbGVhcigpOwogCi0gICAgR0NHTGludCBudW1BdHRyaWJzID0gMDsKLSAg
ICBjb250ZXh0M2QtPmdldFByb2dyYW1pdihvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFD
VElWRV9BVFRSSUJVVEVTLCAmbnVtQXR0cmlicyk7CisgICAgR0NHTGludCBudW1BdHRyaWJzID0g
Y29udGV4dDNkLT5nZXRQcm9ncmFtaShvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElW
RV9BVFRSSUJVVEVTKTsKICAgICBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9ucy5yZXNpemUoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihudW1BdHRyaWJzKSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1B
dHRyaWJzOyArK2kpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gaW5m
bzsKQEAgLTI0MSw4ICsyNDAsNyBAQCB2b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVk
ZWQoKQogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0ID0gZ2V0QUdyYXBoaWNzQ29udGV4
dEdMKCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47Ci0gICAgR0NHTGludCBs
aW5rU3RhdHVzID0gMDsKLSAgICBjb250ZXh0LT5nZXRQcm9ncmFtaXYob2JqZWN0KCksIEdyYXBo
aWNzQ29udGV4dEdMOjpMSU5LX1NUQVRVUywgJmxpbmtTdGF0dXMpOworICAgIEdDR0xpbnQgbGlu
a1N0YXR1cyA9IGNvbnRleHQtPmdldFByb2dyYW1pKG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRH
TDo6TElOS19TVEFUVVMpOwogICAgIG1fbGlua1N0YXR1cyA9IGxpbmtTdGF0dXM7CiAgICAgaWYg
KG1fbGlua1N0YXR1cykgewogICAgICAgICBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhjb250
ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCmluZGV4IGQyZmFjMjAzNjI0OTk1ODVlMGQ1MTU1NmNjNWNhNGUzYWFjMzNk
YWYuLjY5M2Q2MjA2ZjJjOTBmOTVmZGE5NzNiOTk4ZWI5NjQ2N2RjZmVhOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApA
QCAtMzA3LDExICszMDcsOCBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAg
cmV0dXJuIG1ha2VSZWZQdHIocmVpbnRlcnByZXRfY2FzdDxXZWJHTFRleHR1cmUmPigqb2JqZWN0
KSk7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfVEVYVFVSRV9MRVZFTDoKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6Ci0gICAgICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDogewot
ICAgICAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5h
bWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0KKyAgICAg
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJ
TkdfRVhUOgorICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX0VOVU0sICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAiaW52YWxp
ZCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTM0Nyw5ICszNDQsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVy
cygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMpCi0gICAg
ICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJT
X0VYVCwgJm1fbWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9j
b250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwog
ICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldElu
dGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29s
b3JBdHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4
dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwog
ICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVOVFMg
Pj0gTUFYX0RSQVdfQlVGRkVSUy4KICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhEcmF3QnVmZmVy
cywgbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKIH0KQEAgLTM1OSw3ICszNTYsNyBAQCBHQ0dMaW50
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygpCiAgICAgaWYg
KCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9t
YXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVu
c2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JBdHRhY2htZW50
cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdl
cihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIHJldHVybiBt
X21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggNmMzNzI5OWQ0
Mzc3YWEwM2MyOTUxYzI0MDUwNTg5ZThiM2MzMGZhNy4uMDE3YWJjMDE2ZDJjNmYwN2NjNWI5YzYy
ZWQ2YWJhYTBiN2I5YjA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtMTM3LDcgKzEzNyw3
IEBAIGNvbnN0IGludCBtYXhHTEVycm9yc0FsbG93ZWRUb0NvbnNvbGUgPSAyNTY7CiBzdGF0aWMg
Y29uc3QgU2Vjb25kcyBjaGVja0NvbnRleHRMb3NzSGFuZGxpbmdEZWxheSB7IDNfcyB9OwogCiBu
YW1lc3BhY2UgewotICAgIAorCiAgICAgR0NHTGludCBjbGFtcChHQ0dMaW50IHZhbHVlLCBHQ0dM
aW50IG1pbiwgR0NHTGludCBtYXgpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPCBtaW4pCkBA
IC04NjUsMzQgKzg2NSwyOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRp
YWxpemVOZXdDb250ZXh0KCkKICAgICBtX3N0ZW5jaWxGdW5jTWFza0JhY2sgPSAweEZGRkZGRkZG
OwogICAgIG1fbGF5ZXJDbGVhcmVkID0gZmFsc2U7CiAgICAgbV9udW1HTEVycm9yc1RvQ29uc29s
ZUFsbG93ZWQgPSBtYXhHTEVycm9yc0FsbG93ZWRUb0NvbnNvbGU7Ci0gICAgCisKICAgICBtX2Ns
ZWFyQ29sb3JbMF0gPSBtX2NsZWFyQ29sb3JbMV0gPSBtX2NsZWFyQ29sb3JbMl0gPSBtX2NsZWFy
Q29sb3JbM10gPSAwOwogICAgIG1fc2Npc3NvckVuYWJsZWQgPSBmYWxzZTsKICAgICBtX2NsZWFy
RGVwdGggPSAxOwogICAgIG1fY2xlYXJTdGVuY2lsID0gMDsKICAgICBtX2NvbG9yTWFza1swXSA9
IG1fY29sb3JNYXNrWzFdID0gbV9jb2xvck1hc2tbMl0gPSBtX2NvbG9yTWFza1szXSA9IHRydWU7
CiAKLSAgICBHQ0dMaW50IG51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgPSAwOwotICAgIG1f
Y29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT01CSU5FRF9URVhU
VVJFX0lNQUdFX1VOSVRTLCAmbnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgR0NH
TGludCBudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyk7CiAg
ICAgbV90ZXh0dXJlVW5pdHMuY2xlYXIoKTsKICAgICBtX3RleHR1cmVVbml0cy5yZXNpemUobnVt
Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7CiAjaWYgIVVTRShBTkdMRSkKICAgICBmb3IgKEdD
R0xpbnQgaSA9IDA7IGkgPCBudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzOyArK2kpCiAgICAg
ICAgIG1fdW5yZW5kZXJhYmxlVGV4dHVyZVVuaXRzLmFkZChpKTsKICNlbmRpZgotICAgIAotICAg
IEdDR0xpbnQgbnVtVmVydGV4QXR0cmlicyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAmbnVtVmVydGV4QXR0cmli
cyk7CisKKyAgICBHQ0dMaW50IG51bVZlcnRleEF0dHJpYnMgPSBtX2NvbnRleHQtPmdldEludGVn
ZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9WRVJURVhfQVRUUklCUyk7CiAgICAgbV9tYXhWZXJ0
ZXhBdHRyaWJzID0gbnVtVmVydGV4QXR0cmliczsKLSAgICAKLSAgICBtX21heFRleHR1cmVTaXpl
ID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhf
VEVYVFVSRV9TSVpFLCAmbV9tYXhUZXh0dXJlU2l6ZSk7CisKKyAgICBtX21heFRleHR1cmVTaXpl
ID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9T
SVpFKTsKICAgICBtX21heFRleHR1cmVMZXZlbCA9IFdlYkdMVGV4dHVyZTo6Y29tcHV0ZUxldmVs
Q291bnQobV9tYXhUZXh0dXJlU2l6ZSwgbV9tYXhUZXh0dXJlU2l6ZSk7Ci0gICAgbV9tYXhDdWJl
TWFwVGV4dHVyZVNpemUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsICZtX21heEN1YmVNYXBUZXh0dXJl
U2l6ZSk7CisgICAgbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUgPSBtX2NvbnRleHQtPmdldEludGVn
ZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUpOwogICAgIG1f
bWF4Q3ViZU1hcFRleHR1cmVMZXZlbCA9IFdlYkdMVGV4dHVyZTo6Y29tcHV0ZUxldmVsQ291bnQo
bV9tYXhDdWJlTWFwVGV4dHVyZVNpemUsIG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplKTsKLSAgICBt
X21heFJlbmRlcmJ1ZmZlclNpemUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3Jh
cGhpY3NDb250ZXh0R0w6Ok1BWF9SRU5ERVJCVUZGRVJfU0laRSwgJm1fbWF4UmVuZGVyYnVmZmVy
U2l6ZSk7CisgICAgbV9tYXhSZW5kZXJidWZmZXJTaXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfUkVOREVSQlVGRkVSX1NJWkUpOwogCiAgICAgLy8gVGhl
c2UgdHdvIHZhbHVlcyBmcm9tIEVYVF9kcmF3X2J1ZmZlcnMgYXJlIGxhemlseSBxdWVyaWVkLgog
ICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSAwOwpAQCAtOTAxLDcgKzg5Niw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQogICAgIG1fYmFja0Ry
YXdCdWZmZXIgPSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSzsKICAgICBtX2RyYXdCdWZmZXJzV2Vi
R0xSZXF1aXJlbWVudHNDaGVja2VkID0gZmFsc2U7CiAgICAgbV9kcmF3QnVmZmVyc1N1cHBvcnRl
ZCA9IGZhbHNlOwotICAgIAorCiAgICAgbV92ZXJ0ZXhBdHRyaWJWYWx1ZS5yZXNpemUobV9tYXhW
ZXJ0ZXhBdHRyaWJzKTsKIAogI2lmICFVU0UoQU5HTEUpCkBAIC0xNzQxLDggKzE3MzYsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIm
IHNoYWRlcikKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdl
YkdMUHJvZ3JhbU9yU2hhZGVyKCJjb21waWxlU2hhZGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoc2hhZGVyLm9iamVjdCgpKTsKLSAg
ICBHQ0dMaW50IHZhbHVlOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLm9iamVj
dCgpLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZ2YWx1ZSk7CisgICAgR0NH
TGludCB2YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIub2JqZWN0KCksIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUyk7CiAgICAgc2hhZGVyLnNldFZhbGlkKHZhbHVl
KTsKIAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMoKTsKQEAgLTIyMTEsNyArMjIwNSw3
IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVOUE9UVGV4dHVyZUxl
dmVsKEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZShHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewogICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gZWxlbWVu
dEFycmF5QnVmZmVyID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50QXJyYXlC
dWZmZXIoKTsKLSAgICAKKwogICAgIGlmICghZWxlbWVudEFycmF5QnVmZmVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTIyNTIsNyArMjI0Niw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVJbmRleEFycmF5UHJlY2lzZShHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlCiB7CiAgICAgQVNTRVJUKGNvdW50ID49IDAgJiYgb2Zmc2V0ID49IDApOwogICAgIHVuc2ln
bmVkIG1heEluZGV4ID0gMDsKLSAgICAKKwogICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gZWxlbWVu
dEFycmF5QnVmZmVyID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50QXJyYXlC
dWZmZXIoKTsKIAogICAgIGlmICghZWxlbWVudEFycmF5QnVmZmVyKQpAQCAtMjQ1MiwxMCArMjQ0
NiwxMCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1l
bnRzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgRwogewogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlRHJhd01vZGUoZnVuY3Rpb25OYW1lLCBtb2RlKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgaWYgKCF2YWxpZGF0ZVN0ZW5jaWxTZXR0
aW5ncyhmdW5jdGlvbk5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBz
d2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX1NIT1JUOgpAQCAtMjQ2OSwy
MiArMjQ2MywyMiBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJh
d0VsZW1lbnRzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgRwogICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJp
bnZhbGlkIHR5cGUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAg
IGlmIChjb3VudCA8IDAgfHwgb2Zmc2V0IDwgMCkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiY291bnQg
b3Igb2Zmc2V0IDwgMCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAg
ICAgaWYgKCFjb3VudCkgewogICAgICAgICBtYXJrQ29udGV4dENoYW5nZWQoKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIGlmIChwcmltaXRpdmVDb3VudCA8IDAp
IHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
VkFMVUUsIGZ1bmN0aW9uTmFtZSwgInByaW1jb3VudCA8IDAiKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICAKKwogICAgIGlmICghbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5n
ZXRFbGVtZW50QXJyYXlCdWZmZXIoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIm5vIEVMRU1F
TlRfQVJSQVlfQlVGRkVSIGJvdW5kIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0OTcs
MTQgKzI0OTEsMTQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURy
YXdFbGVtZW50cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEcKICAgICB9CiAgICAgaWYgKCFj
b3VudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgQ2hlY2tlZDxHQ0dMaW50
LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZENvdW50KGNvdW50KTsKICAgICBDaGVja2VkPEdDR0xp
bnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkUHJpbWl0aXZlQ291bnQocHJpbWl0aXZlQ291bnQp
OwogICAgIGlmIChjaGVja2VkQ291bnQuaGFzT3ZlcmZsb3dlZCgpIHx8IGNoZWNrZWRQcmltaXRp
dmVDb3VudC5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0
IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRzIGFycmF5cyIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIAorCiAgICAgaWYgKCF2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUo
dHlwZSwgbnVtRWxlbWVudHMpIHx8ICF2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMobnVtRWxlbWVu
dHMsIGNoZWNrZWRQcmltaXRpdmVDb3VudC51bnNhZmVHZXQoKSkpIHsKICAgICAgICAgaWYgKCF2
YWxpZGF0ZUluZGV4QXJyYXlQcmVjaXNlKGNoZWNrZWRDb3VudC51bnNhZmVHZXQoKSwgdHlwZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgbnVtRWxlbWVudHMpIHx8ICF2YWxpZGF0
ZVZlcnRleEF0dHJpYnV0ZXMobnVtRWxlbWVudHMsIGNoZWNrZWRQcmltaXRpdmVDb3VudC51bnNh
ZmVHZXQoKSkpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0ZW1wdCB0byBhY2Nlc3Mg
b3V0IG9mIGJvdW5kcyBhcnJheXMiKTsKQEAgLTI1MTgsMTMgKzI1MTIsMTMgQEAgYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURyYXdFbGVtZW50cyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIEcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICNlbmRpZgotICAg
IAorCiAgICAgY29uc3QgY2hhciogcmVhc29uID0gImZyYW1lYnVmZmVyIGluY29tcGxldGUiOwog
ICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9u
QWNjZXNzKGdyYXBoaWNzQ29udGV4dEdMKCksICZyZWFzb24pKSB7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElP
TiwgZnVuY3Rpb25OYW1lLCByZWFzb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
ICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTI4ODgsOCArMjg4Miw3IEBA
IFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1l
dGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICBHQ0dMaW50IHZhbHVlID0gbV9jb250
ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOwogICAgIGlmIChwbmFtZSA9
PSBHcmFwaGljc0NvbnRleHRHTDo6QlVGRkVSX1NJWkUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsKQEAgLTMxODksMjYgKzMx
ODIsMjYgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBh
cmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEcKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRQcm9ncmFtUGFy
YW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdDR0xp
bnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpERUxFVEVfU1RBVFVTOgogICAgICAgICByZXR1cm4gcHJvZ3JhbS5pc0RlbGV0ZWQo
KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpWQUxJREFURV9TVEFUVVM6Ci0gICAgICAg
IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUp
OwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVj
dCgpLCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTOgog
ICAgICAgICByZXR1cm4gcHJvZ3JhbS5nZXRMaW5rU3RhdHVzKCk7CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6QVRUQUNIRURfU0hBREVSUzoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9n
cmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2
YWx1ZTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmpl
Y3QoKSwgcG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9BVFRSSUJV
VEVTOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNUzoKICNpZiBV
U0UoQU5HTEUpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0
KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRQcm9ncmFt
aShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSk7CiAjZWxzZQotICAgICAgICBzdGF0aWNfY2FzdDxH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5B
Y3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAg
ICAgeworICAgICAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7CisgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPmdldE5vbkJ1
aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQogI2VuZGlmIC8vIFVTRShBTkdM
RSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIGRlZmF1bHQ6CiAjaWYgRU5BQkxFKFdFQkdM
MikKICAgICAgICAgaWYgKGlzV2ViR0wyKCkpIHsKQEAgLTMyMTYsOCArMzIwOSw3IEBAIFdlYkdM
QW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQ
cm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREU6CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6CiAgICAgICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STV9CTE9DS1M6Ci0gICAgICAgICAgICAg
ICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1
ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAgICAgICAgIHJldHVy
biBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKTsKICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBA
IC0zMjgwLDcgKzMyNzIsNiBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQwogICAgICAgICByZXR1
cm4gdmFsdWU7CiAgICAgfQogCi0gICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChw
bmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUl9TQU1QTEVT
OgogICAgICAgICBpZiAoIWlzV2ViR0wyKCkpIHsKQEAgLTMyOTYsOCArMzI4Nyw3IEBAIFdlYkdM
QW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihH
Q0dMZW51bSB0YXJnZXQsIEdDCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVG
RkVSX0FMUEhBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVS
X0RFUFRIX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX1NU
RU5DSUxfU0laRToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAg
IHJldHVybiBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFt
ZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZP
Uk1BVDoKICAgICAgICAgcmV0dXJuIG1fcmVuZGVyYnVmZmVyQmluZGluZy0+Z2V0SW50ZXJuYWxG
b3JtYXQoKTsKICAgICBkZWZhdWx0OgpAQCAtMzMxMCwxNiArMzMwMCwxMyBAQCBXZWJHTEFueSBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIm
IHNoYWRlciwgR0NHTAogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFNoYWRlclBhcmFtZXRlciIsICZzaGFkZXIp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBz
d2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVMRVRFX1NUQVRV
UzoKICAgICAgICAgcmV0dXJuIHNoYWRlci5pc0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QSUxFX1NUQVRVUzoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJp
dihzaGFkZXIub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9j
b250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpTSEFERVJfVFlQRToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFk
ZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX0VOVU0sICJnZXRTaGFkZXJQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIg
bmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMzNzgsMjAgKzMzNjUsMTUgQEAg
V2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG4KICAgICBhdXRvIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJp
bmRpbmcoImdldFRleFBhcmFtZXRlciIsIHRhcmdldCk7CiAgICAgaWYgKCF0ZXgpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIEdDR0xmbG9hdCBm
VmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFX01BR19GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9NSU5fRklMVEVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JB
UF9TOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOgotICAgICAg
ICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUpOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJn
ZXQsIHBuYW1lKSk7CiAgICAgY2FzZSBFeHRlbnNpb25zR0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJP
UFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKLSAgICAgICAgaWYgKG1f
ZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdl
dFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsICZmVmFsdWUpOwotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihmVmFsdWUpOwotICAgICAgICB9CisgICAgICAgIGlmICht
X2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykKKyAgICAgICAgICAgIHJldHVybiBtX2NvbnRl
eHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRUZXhQYXJhbWV0ZXIi
LCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGlj
IG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGRlZmF1bHQ6CkBA
IC0zNjI0LDcgKzM2MDYsNyBAQCBSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTAogCiAgICAgR0NHTGlu
dCBhY3RpdmVVbmlmb3JtcyA9IDA7CiAjaWYgVVNFKEFOR0xFKQotICAgIG1fY29udGV4dC0+Z2V0
UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5J
Rk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7CisgICAgYWN0aXZlVW5pZm9ybXMgPSBtX2NvbnRleHQt
PmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVf
VU5JRk9STVMpOwogI2Vsc2UKICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCo+KG1fY29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9n
cmFtLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZl
VW5pZm9ybXMpOwogI2VuZGlmCkBAIC02MjM3LDkgKzYyMTksNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnJlc3VtZSgpCiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0Qm9vbGVhblBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAgICBHQ0dMYm9vbGVh
biB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgJnZhbHVlKTsK
LSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0Qm9vbGVhbihwbmFt
ZSk7CiB9CiAKIFZlY3Rvcjxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCb29s
ZWFuQXJyYXlQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCkBAIC02MjU4LDIzICs2MjM4LDE3IEBA
IFZlY3Rvcjxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCb29sZWFuQXJyYXlQ
YXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAKIGZsb2F0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldEZsb2F0UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogewotICAgIEdDR0xmbG9hdCB2
YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsICZ2YWx1ZSk7Ci0gICAg
cmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZsb2F0KHBuYW1lKTsKIH0K
IAogaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEludFBhcmFtZXRlcihHQ0dMZW51
bSBwbmFtZSkKIHsKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldElu
dGVnZXJ2KHBuYW1lLCAmdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9j
b250ZXh0LT5nZXRJbnRlZ2VyKHBuYW1lKTsKIH0KIAogdW5zaWduZWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5zaWduZWRJbnRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0g
ICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwg
JnZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50
ZWdlcihwbmFtZSk7CiB9CiAKIFJlZlB0cjxGbG9hdDMyQXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFdlYkdMRmxvYXRBcnJheVBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKQEAg
LTcyNDksNyArNzIyMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4
QXR0cmliZnZJbXBsKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHCiB7CiAgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgYXV0
byBkYXRhID0gbGlzdC5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUs
ICJubyBhcnJheSIpOwpAQCAtNzI5NSw3ICs3MjY5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBH
Q0cKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdFZlcnRleEF0dHJpYjAoKQog
ewogICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlOjpWZXJ0ZXhBdHRyaWJTdGF0ZSYgc3Rh
dGUgPSBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldFZlcnRleEF0dHJpYlN0YXRlKDApOwot
ICAgIAorCiAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyID0gY3JlYXRlQnVmZmVyKCk7CiAgICAg
bV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIG1f
dmVydGV4QXR0cmliMEJ1ZmZlci0+b2JqZWN0KCkpOwogICAgIG1fY29udGV4dC0+YnVmZmVyRGF0
YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCAwLCBHcmFwaGljc0NvbnRleHRHTDo6
RFlOQU1JQ19EUkFXKTsKQEAgLTc2MjYsOSArNzYwMCw5IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3
QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMp
Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19C
VUZGRVJTX0VYVCwgJm1fbWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBtX21heERyYXdCdWZmZXJz
ID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19F
WFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQt
PmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1f
bWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1f
Y29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19F
WFQpOwogICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNI
TUVOVFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhEcmF3
QnVmZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKIH0KQEAgLTc2MzgsNyArNzYxMiw3IEBA
IEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50
cygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldElu
dGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29s
b3JBdHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4
dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwog
ICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMzRmMTdlYzYxYjMzMTAz
NzFjMmRkYmQwYTAxNzVjNjBiOTNkMTZmNS4uYmE4NjViMzMwOGU2Yzk0NTgyMjEyMjM3Nzk2ZDZm
ZDU3NzQ4NDdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0
ZW5zaW9uc0dMLmgKQEAgLTMwNiwyMSArMzA2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9
IDA7CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZpcnR1YWwg
dm9pZCBnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5H
TEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdl
cnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dy
YW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNoYWRl
cml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxv
YXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBw
b2ludGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBw
aXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBp
eGVscykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQqIHBhcmFtcykgPSAwOwpAQCAtMzM2LDE0ICszMjEsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogZGF0YSkgPSAwOyAvLyBOT0xJTlQKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlm
b3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBk
YXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBkYXRhKSA9IDA7IC8vIE5PTElOVAogICAgIHZpcnR1YWwg
dm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50NjQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgK
aW5kZXggMGYxZDA2N2JmNDk4NWU5Y2Q3YjQwNDEyYWRiZWNhNGUzMjIwZDk4ZC4uY2E4YTE5Y2U1
ZmU5YmI5ODFiMWNkOWVkOWVmODFmNDdjMWY5YzQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0zNzMsNyArMzcz
LDcgQEAgcHVibGljOgogICAgICAgICBVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdM
ID0gMHg5MjQzLAogICAgICAgICBCUk9XU0VSX0RFRkFVTFRfV0VCR0wgPSAweDkyNDQsCiAgICAg
ICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUl9BTkdMRSA9IDB4ODhGRSwKLSAgICAgICAg
CisKICAgICAgICAgLy8gV2ViR0wyIGNvbnN0YW50cwogICAgICAgICBSRUFEX0JVRkZFUiA9IDB4
MEMwMiwKICAgICAgICAgVU5QQUNLX1JPV19MRU5HVEggPSAweDBDRjIsCkBAIC05ODYsMzEgKzk4
NiwzMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24o
UGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0QnVmZmVyUGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICAvLyBn
ZXRQYXJhbWV0ZXIKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9h
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldElu
dGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyaV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRl
eCwgR0NHTGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dihH
Q0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQq
IHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVl
KSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1l
KSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHVpbnQgaW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0UHJvZ3JhbWko
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+
IHZhbHVlKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdDR0xlbnVtIGdldEVycm9yKCkgPSAwOwogCiAg
ICAgLy8gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lk
IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7Cisg
ICAgdmlydHVhbCBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwog
CiAgICAgLy8gZ2V0UHJvZ3JhbVBhcmFtZXRlcgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb2dy
YW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAogICAgIC8vIGdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAg
IHZpcnR1YWwgR0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIC8vIGdldFNoYWRlclBhcmFtZXRlcgotICAg
IHZpcnR1YWwgdm9pZCBnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U2hhZGVyaShQ
bGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJp
bmcgZ2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51
bSBwcmVjaXNpb25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSA9IDA7
CkBAIC0xMDE4LDE5ICsxMDE3LDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRT
aGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgLy8gZ2V0VGV4UGFyYW1l
dGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQg
Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAK
ICAgICAvLyBnZXRVbmlmb3JtCi0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCogdmFsdWUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0x1aW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtZnYo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dM
ZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpID0g
MDsKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9i
amVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRWZXJ0ZXhBdHRyaWIK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZl
cnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTHNp
emVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUpID0gMDsKIApAQCAtMTIzNiw3ICsxMjM1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKIAorICAgIHZpcnR1
YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBh
cmFtcykgPSAwOworCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgorICAgIEdDR0xmbG9hdCBnZXRG
bG9hdChHQ0dMZW51bSBwbmFtZSk7CisgICAgR0NHTGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51
bSBwbmFtZSk7CisgICAgR0NHTGludCBnZXRJbnRlZ2VyKEdDR0xlbnVtIHBuYW1lKTsKKyAgICBH
Q0dMaW50IGdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lKTsKIAogICAgIEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7
IH0KICAgICB2b2lkIHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYgYXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CkBAIC0xMzY3LDYgKzEzNzIs
MzUgQEAgcHJpdmF0ZToKICAgICBEZXN0aW5hdGlvbiBtX2Rlc3RpbmF0aW9uOwogfTsKIAoraW5s
aW5lIEdDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RmxvYXQoR0NHTGVudW0gcG5hbWUp
Cit7CisgICAgR0NHTGZsb2F0IHZhbHVlWzFdIHsgfTsKKyAgICBnZXRGbG9hdHYocG5hbWUsIHZh
bHVlKTsKKyAgICByZXR1cm4gdmFsdWVbMF07Cit9CisKK2lubGluZSBHQ0dMYm9vbGVhbiBHcmFw
aGljc0NvbnRleHRHTDo6Z2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMYm9v
bGVhbiB2YWx1ZVsxXSB7IH07CisgICAgZ2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWVbMF07Cit9CisKK2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpn
ZXRJbnRlZ2VyKEdDR0xlbnVtIHBuYW1lKQoreworICAgIEdDR0xpbnQgdmFsdWVbMV0geyB9Owor
ICAgIGdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlWzBdOworfQor
CitpbmxpbmUgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0g
cG5hbWUpCit7CisgICAgR0NHTGludCB2YWx1ZVsxXSB7IH07CisgICAgZ2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAg
cmV0dXJuIHZhbHVlWzBdOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNH
TC5oCmluZGV4IDU3NGEyODM5YTI2NzExYzM3ODAyNzk2NzU0OTJjZDYxMjc1MzVkNzEuLjIzMjZh
YmFmMWYzYjgwNjQ1OGU2YzAyNzU3ZjljYzk2ODcyZjJhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0yMCwxMiArMjAs
MTQgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxs
aW1pdHM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIC8vIEdDR0wgdHlwZXMgbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgR0wgdHlwZXMgYXMgZGVm
aW5lZCBpbiBPcGVuR0wgRVMgMi4wCiAvLyBoZWFkZXIgZmlsZSBnbDIuaCBmcm9tIGtocm9ub3Mu
b3JnLgpAQCAtNTYsMjQgKzU4LDQ3IEBAIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVj
dDsKIHR5cGVkZWYgdW5zaWduZWQgR0x1aW50OwogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKT4KK3N0cnVjdCBHQ0dMU3BhbjsKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBFeHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW4gewotICAgIEdDR0xTcGFuKFQqLCBz
aXplX3QgY291bnQpOworICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5KQorICAgICAgICA6
IGRhdGEoYXJyYXkpCisgICAgeyB9CisgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQor
ICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgeyB9CisgICAgVCYgb3BlcmF0b3JbXShzaXplX3Qg
aSkgeyBBU1NFUlQoZGF0YSk7IEFTU0VSVChpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9
CisgICAgVCYgb3BlcmF0b3IqKCkgeyBBU1NFUlQoZGF0YSk7IHJldHVybiAqZGF0YTsgfQorICAg
IFQqIGRhdGE7CisgICAgY29uc3RleHByIHN0YXRpYyBzaXplX3QgYnVmU2l6ZSA9IEV4dGVudDsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4geworICAgIEdDR0xTcGFuKFQqIGFycmF5LCBzaXpl
X3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKGJ1
ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHNpemVfdCBTej4gR0NHTFNwYW4oVCAoJmFy
cmF5KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKFN6KQor
ICAgIHsgfQorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JiBhcnJheSkKKyAgICAgICAgOiBk
YXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXplKGFycmF5LnNpemUoKSkKKyAgICB7
IH0KICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IEFTU0VSVChkYXRhKTsgQVNTRVJUKGkg
PCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KICAgICBUJiBvcGVyYXRvciooKSB7ICBBU1NF
UlQoZGF0YSk7IHJldHVybiAqZGF0YTsgfQogICAgIFQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90
IGJ1ZlNpemU7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBwdHJkaWZmX3QgTj4KLXN0cnVj
dCBHQ0dMU3BhbjxUW05dPiB7Ci0gICAgR0NHTFNwYW4oVCopOwotICAgIFQmIG9wZXJhdG9yW10o
c2l6ZV90IGkpIHsgQVNTRVJUKGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KLSAgICBU
JiBvcGVyYXRvciooKSB7IEFTU0VSVChkYXRhKTsgcmV0dXJuICpkYXRhOyB9Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgTj4KK0dDR0xTcGFuKFQgKCYpW05dKSAtPiBHQ0dMU3BhbjxULCBO
PjsKIAotICAgIFQqIGRhdGE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgYnVmU2l6ZSA9
IE47Ci19OwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK0dDR0xTcGFuKFdURjo6VmVjdG9yPFQ+Jikg
LT4gR0NHTFNwYW48VD47CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBHQ0dMU3BhbjxUPiBtYWtl
R0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmlu
ZGV4IDFjOGJjNDI1NTBmMWMxZDk1YzMwODJmNjczNzZhNTY5NTA2YmZhYjMuLjRkMDI1Yjk5MzQy
Mjc3NmI5YjVmNGFhYmMzOWEwYzc4OTE5NDBhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAK
QEAgLTExMyw4ICsxMTMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgaW50IHNvdXJjZUxlbmd0aCA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihz
aGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUsICZzb3VyY2VM
ZW5ndGgpOworICAgIGludCBzb3VyY2VMZW5ndGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hh
ZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKICAgICBpZiAo
IXNvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgVmVjdG9y
PEdMY2hhcj4gbmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VS
Q0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCkBAIC0yNzksMTI2ICsy
NzgsNiBAQCBHQ0dMZW51bSBFeHRlbnNpb25zR0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUlu
dGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZgogfQogCiAvLyBHTF9BTkdMRV9yb2J1c3Rf
Y2xpZW50X21lbW9yeQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZSb2J1c3RB
TkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMYm9vbGVhbiAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRCb29sZWFudlJvYnVzdEFO
R0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKmRhdGEpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0RmxvYXR2Um9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgZGF0YSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRJ
bnRlZ2VydlJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UHJvZ3JhbWl2Um9idXN0
QU5HTEUocHJvZ3JhbSwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2hhZGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRTaGFkZXJpdlJvYnVzdEFOR0xFKHNoYWRlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRV
bmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRW
ZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFt
ZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShpbmRleCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBvaW50ZXIpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1
c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcG9pbnRlcik7Ci19Ci0KIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXpl
aSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtNTE3LDE0ICszOTYsNiBAQCB2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcAogICAgIGdsOjpHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xF
KHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUodGFy
Z2V0LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQogdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC01NTcsMzAgKzQyOCw2IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sCiAgICAgZ2w6OkdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFt
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLCB1bmlm
b3JtQmxvY2tJbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0
YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUocG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0Kj4oZGF0YSkpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQ2NCAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRJbnRlZ2VyNjRpX3ZSb2J1
c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0xpbnQ2NCo+KGRhdGEpKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmgKaW5kZXggMTI1Njk1NjdjMTdjOTI2YjcxYTkxYmI0YmIxMTk1NTZiYTA2ZjE3MC4u
NTdiYjkzYmM4NGMzMzU5MGZiY2Y0YjNmN2ExZWI1YTU1YzU5MjU2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5oCkBAIC03MywyMSArNzMsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1aXJlc1Jlc3Ry
aWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2Ns
aWVudF9tZW1vcnkKLSAgICB2b2lkIGdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRh
dGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGbG9h
dHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJ
bnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJv
Z3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2hhZGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRV
bmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcG9pbnRlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBy
ZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NH
THNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTEwMywxNCArODgsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAogICAgIHZvaWQgZ2V0SW50ZXJu
YWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRh
KSBvdmVycmlkZTsgLy8gTk9MSU5UCiAgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0
ICpwYXJhbSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4
IGY0NGMyMTk0MWEzMmI3NzJhN2IzNjkxM2E4NmFhZDgzNGQ5MzE3NmIuLjk2OGI2NjQxYzVhMjgy
ODlhZTdhNTM2ZWRjMTQ0ZTdkYjMzOWZmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKQEAgLTM1NCwxNCArMzU0LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHUK
ICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3Yo
R0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkKLXsKLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUs
IEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNp
b24pCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTEyMDAsNyArMTE5Miw2
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHCiAKICAgICBHTGludCBtYXhVbmlmb3JtU2l6ZSA9
IDA7CiAgICAgZ2w6OkdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9STV9NQVhf
TEVOR1RILCAmbWF4VW5pZm9ybVNpemUpOwotCiAgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShtYXhV
bmlmb3JtU2l6ZSk7IC8vIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVs
bCB0ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNp
emUgPSAwOwpAQCAtMTgwNyw2NCArMTc5OCw2NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICBnbDo6Qmlu
ZFZlcnRleEFycmF5KGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7Cisg
ICAgZ2w6OkdldEJvb2xlYW52Um9idXN0QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxw
dHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZh
bHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwor
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFs
dWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihHQ0dMZW51
bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEZsb2F0dlJvYnVzdEFOR0xF
KHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KLSAgICAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYoR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQ2NCogdmFsdWUpCisKK0dDR0xpbnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
KnZhbHVlID0gMDsKLSAgICBnbDo6R2V0SW50ZWdlcjY0dihwbmFtZSwgdmFsdWUpOworICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldEludGVnZXI2NHZSb2J1c3RBTkdMRShwbmFtZSwg
MSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KQogewor
ICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgKnZhbHVlID0gMDsKLSAgICBnbDo6R2V0SW50ZWdlcjY0
aV92KHBuYW1lLCBpbmRleCwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6
OkdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKHBuYW1lLCBpbmRleCwgMSwgbnVsbHB0ciwgJnZh
bHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NH
TGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBu
YW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQorICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgaWYg
KGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQogICAgICAgICBhdHRhY2ht
ZW50ID0gREVQVEhfQVRUQUNITUVOVDsgLy8gT3IgU1RFTkNJTF9BVFRBQ0hNRU5ULCBlaXRoZXIg
d29ya3MuCi0gICAgZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdl
dCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAx
LCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBw
bmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UHJvZ3JhbWl2KHByb2dyYW0s
IHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0UHJvZ3Jh
bWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAg
cmV0dXJuIHZhbHVlOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
bWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdLCBHQ0dMc2l6ZWkgY291
bnQsIGNvbnN0IFN0cmluZyYgbG9nKQpAQCAtMTg5Nyw3ICsxODkxLDcgQEAgU3RyaW5nIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0pCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKICAgICBnbDo6R2V0UHJvZ3JhbWl2KHByb2dy
YW0sIEdMX0lORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsgCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIEdM
c2l6ZWkgc2l6ZSA9IDA7CiAgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOwpAQCAtMTkx
MCwyMiArMTkwNCwyMyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dy
YW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSkKICAgICByZXR1cm4gZ2V0VW5tYW5n
bGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NH
TGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAw
OwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7Cisg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYo
UGxhdGZvcm1HTE9iamVjdCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkK
K0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9i
amVjdCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIEFTU0VSVChzaGFkZXIpOwotCisg
ICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRTaGFkZXJpdlJvYnVzdEFOR0xF
KHNoYWRlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwog
fQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2coUGxh
dGZvcm1HTE9iamVjdCBzaGFkZXIpCkBAIC0xOTM4LDcgKzE5MzMsNyBAQCBTdHJpbmcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFk
ZXIpCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKICAgICBnbDo6R2V0U2hhZGVyaXYoc2hhZGVyLCBH
TF9JTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7IAorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBHTHNpemVp
IHNpemUgPSAwOwogICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obGVuZ3RoKTsKQEAgLTE5NTMsNDQg
KzE5NDgsNDYgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJTb3Vy
Y2UoUGxhdGZvcm1HTE9iamVjdCkKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1l
dGVyZnYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAg
Z2w6OkdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0
ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdD
R0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1
ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0VGV4UGFyYW1ldGVyaXZSb2J1
c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2
YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFs
dWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ2w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGds
OjpHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6
ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5p
Zm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOworICAgIGdsOjpHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlv
biwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRVbmlmb3JtdWl2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0
YSk7CiB9CiAKIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTIw
MDMsMjAgKzIwMDAsMjAgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5p
Zm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gZ2w6
OkdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2
KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFO
R0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJp
dihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RB
TkdMRShpbmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwog
fQogCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJp
Yk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0yMDI1LDcgKzIwMjIs
NyBAQCBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJp
Yk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEdM
dm9pZCogcG9pbnRlciA9IDA7Ci0gICAgZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4
LCBwbmFtZSwgJnBvaW50ZXIpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVz
dEFOR0xFKGluZGV4LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnBvaW50ZXIpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50
ZXIpKTsKIH0KIApAQCAtMjk0Miw2ICsyOTM5LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
CiAgICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3Nl
LCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7
CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGds
OjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHVuaWZvcm1CbG9j
a0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUsIG51bGxwdHIsIHBhcmFtcy5kYXRhKTsKK30K
KworCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250
ZXh0R0xDViogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXggNmQ1MDNiY2JhNzVhZmI4YzUwNzkwYjFjMjRlMjgyODM2
YzU1ZDk0OS4uY2JhZjA2MGI1NTYzOWZkYjU1YWI3ZWFlNDE3ZWY1ZDIwNDM5ZDkzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0
R0xDVkFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9H
cmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCkBAIC00NjQsOCArNDY0LDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKIAogICAg
IG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2ZXJ0ZXhTaGFkZXIpOwogCi0gICAgR0NH
TGludCBzdGF0dXMgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYodmVydGV4U2hhZGVy
LCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIEdDR0xp
bnQgc3RhdHVzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHZlcnRleFNoYWRlciwgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBM
T0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRP
YmplY3RzKCVwKSAtIFZlcnRleCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwgdGhpcyk7CiAg
ICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CkBAIC00ODAsNyAr
NDc5LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRl
eHRPYmplY3RzKCkKIAogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdChmcmFnbWVu
dFNoYWRlcik7CiAKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KGZyYWdtZW50U2hhZGVyLCBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIHN0YXR1cyA9
IG1fY29udGV4dC0+Z2V0U2hhZGVyaShmcmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBJTEVfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2ViR0ws
ICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVw
KSAtIEZyYWdtZW50IHNoYWRlciBmYWlsZWQgdG8gY29tcGlsZS4iLCB0aGlzKTsKICAgICAgICAg
bV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKQEAgLTQ5Myw3ICs0OTIsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVj
dHMoKQogICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwgZnJhZ21lbnRT
aGFkZXIpOwogICAgIG1fY29udGV4dC0+bGlua1Byb2dyYW0obV95dXZQcm9ncmFtKTsKIAotICAg
IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KG1feXV2UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6
OkxJTktfU1RBVFVTLCAmc3RhdHVzKTsKKyAgICBzdGF0dXMgPSBtX2NvbnRleHQtPmdldFByb2dy
YW1pKG1feXV2UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsKICAgICBp
ZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5H
TEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIFByb2dyYW0gZmFpbGVkIHRvIGxp
bmsuIiwgdGhpcyk7CiAgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDgwNjEwZGU3
ZDQzMWNmNDI2Mjk5N2Y0ZmZjZTM3YjZiZTFlZTc0MDQuLjM0ZmVmMDViNjIzNzg3MGQwNWJkMWEz
MmMyZjQ1YTQxOTFiM2Y3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
Y3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVu
c3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICBTaEJ1aWx0SW5SZXNvdXJj
ZXMgQU5HTEVSZXNvdXJjZXMgPSBjb21waWxlci5nZXRSZXNvdXJjZXMoKTsKICAgICAgICAgaWYg
KCFBTkdMRVJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzKSB7CiAgICAgICAgICAgICBBTkdMRVJl
c291cmNlcy5FWFRfZHJhd19idWZmZXJzID0gMTsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJkFOR0xFUmVzb3Vy
Y2VzLk1heERyYXdCdWZmZXJzKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdC
dWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVG
RkVSU19FWFQpOwogICAgICAgICAgICAgY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3Vy
Y2VzKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCIpIHsKQEAgLTE3Miw3ICsxNzIsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVj
dAogCiAgICAgQU5HTEVXZWJLaXRCcmlkZ2UmIGNvbXBpbGVyID0gbV9jb250ZXh0LT5tX2NvbXBp
bGVyOwogCi0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4
dEdMOjpTSEFERVJfVFlQRSwgJkdMc2hhZGVyVHlwZSk7CisgICAgR0xzaGFkZXJUeXBlID0gbV9j
b250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBF
KTsKIAogICAgIGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9T
SEFERVIpCiAgICAgICAgIHNoYWRlclR5cGUgPSBTSEFERVJfVFlQRV9WRVJURVg7CkBAIC0yNTQs
ODEgKzI1NCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2
RVhUKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTGluCiAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3Jt
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
ZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZv
cm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRl
eEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGlu
dCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICopCiB7CiAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC00MDAs
MTEgKzMyNSw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2lu
dGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwKICAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVp
bnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50
ICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CkBAIC00MzAsMTYgKzM1MCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMCiAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUo
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUo
R0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0xpbnQ2NCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmlu
ZGV4IDA0ODk0YjkxYzgyY2M0YjFiMjA5YTdhZmQyMjljYmRjYTlhMDFhNDMuLjk3ZWVkZmI3NDg1
YzgzMmY3OTNjOGNmZjBmYTE3ZmJmZmJlNjU4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgKQEAgLTY5LDIxICs2OSw2IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWly
ZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1
c3RfY2xpZW50X21lbW9yeQotICAgIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVh
biAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTaGFk
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcG9pbnRlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWFk
UGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93
cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3Zl
cnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7CkBAIC05OSwxNCArODQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgaW50ICpkYXRhKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0p
IG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmlu
ZGV4IGFiOGNiNTRmNWU4NzllZjRiOGE5MGQxOWE3ZWM5MmM4OWNlMjA1N2IuLmQyOGY0YTAzMWVi
ZGM0ODM4NzVkMzk4NDg3ZDU3ODc0OGZkZTQ3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcApAQCAtNzQsMTEgKzc0LDggQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6aXNF
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gRm9yIEdMX0VYVF9yb2J1c3RuZXNzLCBjaGVjayB0aGF0IHRoZSBjb250ZXh0IHN1cHBvcnRz
IHJvYnVzdCBhY2Nlc3MuCi0gICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNzIikgewot
ICAgICAgICBHTGludCByb2J1c3RBY2Nlc3MgPSBHTF9GQUxTRTsKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUywgJnJvYnVz
dEFjY2Vzcyk7Ci0gICAgICAgIHJldHVybiByb2J1c3RBY2Nlc3MgPT0gR0xfVFJVRTsKLSAgICB9
CisgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNzIikKKyAgICAgICAgcmV0dXJuIG1f
Y29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUykg
PT0gR0xfVFJVRTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAppbmRleCAwMGI3YjQyZDE3ZDM4ZTY2YzA0ZDgxYjg4MzY2N2IwODhlMDFhZDE5
Li5iMTIzYjY2ZTZhNjliY2U5ZDFhYzIyZDZmNWU5YzJhZWJlZDA3Y2NjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTk3LDM1ICsxOTcsMzQgQEAgcHVibGljOgogICAg
IGJvb2wgZ2V0QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwogICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNv
dW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEF0
dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7
Ci0gICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVl
KSBmaW5hbDsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xl
YW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOwor
ICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKSBmaW5hbDsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOwotICAgIHZvaWQg
Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2
b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5h
bDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0
PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEludGVnZXJpX3YoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZhbHVlKSBmaW5hbDsKLSAg
ICB2b2lkIGdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdD
R0xpbnQ2NCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAg
ICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dM
aW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFs
OworICAgIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
ZW51bSBwbmFtZSkgZmluYWw7CiAjaWYgIVVTRShBTkdMRSkKICAgICB2b2lkIGdldE5vbkJ1aWx0
SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSk7CiAjZW5kaWYgLy8gIVVTRShBTkdMRSkKICAgICBTdHJpbmcg
Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgU3RyaW5nIGdl
dFVubWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVjdFsyXSwgR0NHTHNpemVpLCBjb25zdCBT
dHJpbmcmKTsKLSAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdl
dFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2hhZGVyaShQ
bGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAgU3RyaW5nIGdldFNo
YWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgdm9pZCBnZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlw
ZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CiAgICAgU3RyaW5n
IGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0
U3RyaW5nKEdDR0xlbnVtIG5hbWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7
Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKSBm
aW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZv
cm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWlu
dCogdmFsdWUpIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1l
dGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdl
dFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGlu
dD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmlu
YWw7CiAgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29u
c3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7
CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CiAKICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsK
QEAgLTQzOCw2ICs0MzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAg
dm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7
CiAKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKQEAgLTUzNyw3ICs1MzcsNyBAQCBw
cml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lk
IHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAgIAorCiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2Vu
dCBkcmF3aW5nIG9wZXJhdGlvbiBsZWF2ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/
CiAgICAgdm9pZCBjaGVja0dQVVN0YXR1cygpOwogCkBAIC01ODksNyArNTg5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICwgaXNWYWxpZChmYWxzZSkKICAgICAgICAgewogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFwKGVudW0gQU5HTEVT
aGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VChzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUgfHwgc3ltYm9sVHlw
ZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSB8fCBzeW1ib2xUeXBlID09IFNIQURFUl9T
WU1CT0xfVFlQRV9WQVJZSU5HKTsKQEAgLTY4Miw3ICs2ODIsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIHVzaW5nIEJvdW5kVGV4dHVyZU1hcCA9IEhhc2hNYXA8R0NHTGVudW0sCiAgICAgICAgICAg
ICBzdGQ6OnBhaXI8R0NHTHVpbnQsIEdDR0xlbnVtPiwKLSAgICAgICAgICAgIFdURjo6SW50SGFz
aDxHQ0dMZW51bT4sIAorICAgICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwKICAgICAg
ICAgICAgIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LAogICAg
ICAgICAgICAgV1RGOjpQYWlySGFzaFRyYWl0czxXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dM
dWludD4+CiAgICAgICAgID47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwCmluZGV4IDc1MGVkMzI2ZWNlNjVlODhmNmI0MTM2MDE1YzRmOTMzNzQ0ODljYTUuLjEz
NDIyYmM1NmUyNmFhZDkxYmY4N2YyZWVhYjZjY2UyZDNlMDcxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGludGUKICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCh0YXJnZXQs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIC8vIE5lZWQgdG8gZW11bGF0ZSBNQVhf
RlJBR01FTlQvVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyBhbmQgTUFYX1ZBUllJTkdfVkVDVE9SUwog
ICAgIC8vIGJlY2F1c2UgZGVza3RvcCBHTCdzIGNvcnJlc3BvbmRpbmcgcXVlcmllcyByZXR1cm4g
dGhlIG51bWJlciBvZiBjb21wb25lbnRzCkBAIC0yNzIsMzkgKzI3MiwzOSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCog
dmFsdWUpCiAgICAgc3dpdGNoIChwbmFtZSkgewogI2lmIFVTRShPUEVOR0wpCiAgICAgY2FzZSBN
QVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOgotICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xf
TUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAgICA6OmdsR2V0
SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUuZGF0YSgp
KTsKICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX1ZF
UlRFWF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkVS
VEVYX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAgICA6OmdsR2V0SW50ZWdlcnYo
R0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMsIHZhbHVlLmRhdGEoKSk7CiAgICAgICAg
ICp2YWx1ZSAvPSA0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1BWF9WQVJZSU5HX1ZFQ1RP
UlM6CiAgICAgICAgIGlmIChpc0dMRVMyQ29tcGxpYW50KCkpIHsKICAgICAgICAgICAgIEFTU0VS
VCg6OmdsR2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci0gICAgICAgICAgICA6OmdsR2V0SW50
ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgdmFsdWUpOworICAgICAgICAgICAgOjpnbEdl
dEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsIHZhbHVlLmRhdGEoKSk7CiAgICAgICAg
ICAgICBpZiAoOjpnbEdldEVycm9yKCkgPT0gR0xfSU5WQUxJRF9FTlVNKSB7Ci0gICAgICAgICAg
ICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMsIHZhbHVlKTsK
KyAgICAgICAgICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5U
UywgdmFsdWUuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9N
QVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihH
TF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlLmRhdGEoKSk7CiAgICAgICAgICAgICAqdmFsdWUg
Lz0gNDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgTUFYX1RF
WFRVUkVfU0laRToKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUsIHZh
bHVlKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUsIHZhbHVlLmRh
dGEoKSk7CiAgICAgICAgIGlmIChnZXRFeHRlbnNpb25zKCkucmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplKCkpCiAgICAgICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbig0MDk2LCAq
dmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1BWF9DVUJFX01BUF9URVhUVVJFX1NJ
WkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFLCB2
YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpF
LCB2YWx1ZS5kYXRhKCkpOwogICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAgICAgICAgICAgKnZhbHVlID0gc3RkOjpt
aW4oMTAyNCwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAg
OjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2Vydihw
bmFtZSwgdmFsdWUuZGF0YSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGIwYzFmMWRmZDQzZDQxNTA0MjdmZjUyMWFj
ZjY4NDM2MjcyNDAwNWEuLjM3YTMyZTEwZGQyOGE2NmFmMzliYWIzZjM5ODYzMjNjZTFlMWQyYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAt
Mjk2LDcgKzI5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUoaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyBzY29wZWRT
Y2lzc29yKEdMX1NDSVNTT1JfVEVTVCwgR0xfRkFMU0UpOwogICAgIFRlbXBvcmFyeU9wZW5HTFNl
dHRpbmcgc2NvcGVkRGl0aGVyKEdMX0RJVEhFUiwgR0xfRkFMU0UpOwotICAgIAorCiAgICAgYm9v
bCBtdXN0UmVzdG9yZUZCTyA9IHJlc2hhcGVGQk9zKEludFNpemUod2lkdGgsIGhlaWdodCkpOwog
CiAgICAgLy8gSW5pdGlhbGl6ZSByZW5kZXJidWZmZXJzIHRvIDAuCkBAIC01MzQsNyArNTM0LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0
b3IsIEdDR0xlbnVtIGRmYWN0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIDo6Z2xCbGVuZEZ1
bmMoc2ZhY3RvciwgZGZhY3Rvcik7Ci19ICAgICAgIAorfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRz
dFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKQogewpAQCAtNjQzLDEx
ICs2NDMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKICAgICBMT0coV2ViR0wsICItLS0gYmVnaW4gdHJhbnNs
YXRlZCBzaGFkZXIgc291cmNlIC0tLVxuJXNcbi0tLSBlbmQgdHJhbnNsYXRlZCBzaGFkZXIgc291
cmNlIC0tLSIsIHRyYW5zbGF0ZWRTaGFkZXJQdHIpOwogCiAgICAgOjpnbFNoYWRlclNvdXJjZShz
aGFkZXIsIDEsICZ0cmFuc2xhdGVkU2hhZGVyUHRyLCAmdHJhbnNsYXRlZFNoYWRlckxlbmd0aCk7
Ci0gICAgCisKICAgICA6OmdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOwotICAgIAorCiAgICAgaW50
IGNvbXBpbGVTdGF0dXM7Ci0gICAgCisKICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBDT01Q
SUxFX1NUQVRVUywgJmNvbXBpbGVTdGF0dXMpOwogCiAgICAgU2hhZGVyU291cmNlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CkBAIC04OTQsOSAr
ODk0LDkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmliSW1w
bChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0wKICAgICA6OmdsR2V0QWN0aXZlQXR0cmli
KHByb2dyYW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0
eXBlLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgCisKICAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xO
YW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIFN0cmluZyhuYW1lLmRh
dGEoKSwgbmFtZUxlbmd0aCkpOwotICAgIAorCiAjaWZuZGVmIE5ERUJVRwogICAgIFN0cmluZyB1
bmlmb3JtTmFtZShuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCk7CiAgICAgTE9HKFdlYkdMLCAiUHJv
Z3JhbSAlZCBpcyBtYXBwaW5nIGFjdGl2ZSBhdHRyaWJ1dGUgJWQgZnJvbSAnJXMnIHRvICclcyci
LCBwcm9ncmFtLCBpbmRleCwgdW5pZm9ybU5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luYWxOYW1l
LnV0ZjgoKS5kYXRhKCkpOwpAQCAtOTE2LDcgKzkxNiw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50CiAgICAgICAgIGdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLCBHcmFw
aGljc0NvbnRleHRHTDo6QUNUSVZFX0FUVFJJQlVURVMsICZzeW1ib2xDb3VudCk7CiAgICAgICAg
IHJlc3VsdCA9IG1fc2hhZGVyUHJvZ3JhbVN5bWJvbENvdW50TWFwLmZpbmQocHJvZ3JhbSk7CiAg
ICAgfQotICAgIAorCiAgICAgQWN0aXZlU2hhZGVyU3ltYm9sQ291bnRzJiBzeW1ib2xDb3VudHMg
PSByZXN1bHQtPnZhbHVlOwogICAgIEdDR0x1aW50IHJhd0luZGV4ID0gKGluZGV4IDwgc3ltYm9s
Q291bnRzLmZpbHRlcmVkVG9BY3R1YWxBdHRyaWJ1dGVJbmRleE1hcC5zaXplKCkpID8gc3ltYm9s
Q291bnRzLmZpbHRlcmVkVG9BY3R1YWxBdHRyaWJ1dGVJbmRleE1hcFtpbmRleF0gOiAtMTsKIApA
QCAtOTQzLDE0ICs5NDMsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0
aXZlVW5pZm9ybUltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0cKICAgICA6OmdsR2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgbWF4VW5pZm9ybVNpemUsICZuYW1lTGVuZ3Ro
LCAmc2l6ZSwgJnR5cGUsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmln
aW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0sIFN0cmlu
ZyhuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCkpOwotICAgIAorCiAjaWZuZGVmIE5ERUJVRwogICAg
IFN0cmluZyB1bmlmb3JtTmFtZShuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCk7CiAgICAgTE9HKFdl
YkdMLCAiUHJvZ3JhbSAlZCBpcyBtYXBwaW5nIGFjdGl2ZSB1bmlmb3JtICVkIGZyb20gJyVzJyB0
byAnJXMnIiwgcHJvZ3JhbSwgaW5kZXgsIHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdp
bmFsTmFtZS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgotICAgIAorCiAgICAgaW5mby5uYW1lID0g
b3JpZ2luYWxOYW1lOwogICAgIGluZm8udHlwZSA9IHR5cGU7CiAgICAgaW5mby5zaXplID0gc2l6
ZTsKQEAgLTk2NSwxMCArOTY1LDEwIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWluCiAgICAgICAg
IGdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLCBHcmFwaGljc0NvbnRleHRH
TDo6QUNUSVZFX1VOSUZPUk1TLCAmc3ltYm9sQ291bnQpOwogICAgICAgICByZXN1bHQgPSBtX3No
YWRlclByb2dyYW1TeW1ib2xDb3VudE1hcC5maW5kKHByb2dyYW0pOwogICAgIH0KLSAgICAKKwog
ICAgIEFjdGl2ZVNoYWRlclN5bWJvbENvdW50cyYgc3ltYm9sQ291bnRzID0gcmVzdWx0LT52YWx1
ZTsKICAgICBHQ0dMdWludCByYXdJbmRleCA9IChpbmRleCA8IHN5bWJvbENvdW50cy5maWx0ZXJl
ZFRvQWN0dWFsVW5pZm9ybUluZGV4TWFwLnNpemUoKSkgPyBzeW1ib2xDb3VudHMuZmlsdGVyZWRU
b0FjdHVhbFVuaWZvcm1JbmRleE1hcFtpbmRleF0gOiAtMTsKLSAgICAKKwogICAgIHJldHVybiBn
ZXRBY3RpdmVVbmlmb3JtSW1wbChwcm9ncmFtLCByYXdJbmRleCwgaW5mbyk7CiB9CiAKQEAgLTEw
NjksNyArMTA2OSw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6b3JpZ2luYWxT
eW1ib2xOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgQU5HCiAgICAgR0NHTHNpemVpIGNv
dW50OwogICAgIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyc1syXTsKICAgICBnZXRBdHRhY2hlZFNo
YWRlcnMocHJvZ3JhbSwgMiwgJmNvdW50LCBzaGFkZXJzKTsKLSAgICAKKwogICAgIGZvciAoR0NH
THNpemVpIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIG9yaWdpbmFsTmFt
ZSA9IG9yaWdpbmFsU3ltYm9sSW5TaGFkZXJTb3VyY2VNYXAoc2hhZGVyc1tpXSwgc3ltYm9sVHlw
ZSwgbmFtZSk7CiAgICAgICAgIGlmIChvcmlnaW5hbE5hbWUpCkBAIC0xMTA3LDcgKzExMDcsNyBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcHBlZFN5bWJvbE5hbWUoUGxhdGZv
cm1HTE9iamVjdCBzaGFkZXJzWzJdLCBzaQogICAgICAgICAgICAgU2hhZGVyU291cmNlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcnNbaV0pOwogICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBjb25zdCBTaGFk
ZXJTeW1ib2xNYXAmIHN5bWJvbE1hcCA9IHJlc3VsdC0+dmFsdWUuc3ltYm9sTWFwKHN0YXRpY19j
YXN0PGVudW0gQU5HTEVTaGFkZXJTeW1ib2xUeXBlPihzeW1ib2xUeXBlKSk7CiAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHN5bWJvbEVudHJ5IDogc3ltYm9sTWFwKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKG5hbWUgPT0gc3ltYm9sRW50cnkudmFsdWUubWFwcGVkTmFtZS5jX3N0cigpKQpA
QCAtMTY4Miw3ICsxNjgyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRl
VmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5KQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTE2OTUsNyArMTY5NSw3IEBAIEdDR0xib29sZWFuIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjppc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkp
CiB7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotICAgIAorCiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwog
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJp
bmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
Ym9vbGVhbiogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFu
dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQogewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRC
b29sZWFudihwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRCb29sZWFudihwbmFtZSwgdmFsdWUu
ZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFy
YW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
CkBAIC0xNzMzLDY1ICsxNzMzLDU3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hCiAgICAgOjpn
bEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxv
YXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRGbG9hdHYocG5h
bWUsIHZhbHVlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdl
cmlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKQotewot
ICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdmFsdWUg
PSAwOwotICAgIC8vIEZJWE1FIDE0MTE3ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBm
aXJzdCBzd2l0Y2ggb3ZlciB0byB1c2luZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxp
bmcgdGhlIFdlYkdMMiBjb250ZXh0IHVzaW5nIE9wZW5HTCBFUyAzLjAuCi0gICAgLy8gOjpnbEdl
dEludGVnZXJpX3YocG5hbWUsIGluZGV4LCB2YWx1ZSk7CisgICAgOjpnbEdldEZsb2F0dihwbmFt
ZSwgdmFsdWUuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQogewog
ICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgKnZhbHVlID0gMDsKKyAgICBHQ0dMaW50NjQgdmFsdWUg
PSAwOwogICAgIC8vIEZJWE1FIDE0MTE3ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBm
aXJzdCBzd2l0Y2ggb3ZlciB0byB1c2luZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxp
bmcgdGhlIFdlYkdMMiBjb250ZXh0IHVzaW5nIE9wZW5HTCBFUyAzLjAuCiAgICAgLy8gOjpnbEdl
dEludGVnZXI2NHYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwg
R0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4
KQogewogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAq
dmFsdWUgPSAwOworICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQxMTc4
OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBtdXN0IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5n
IGdsMy5oIGFuZCBjcmVhdGluZyBhbmQgaW5pdGlhbGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNp
bmcgT3BlbkdMIEVTIDMuMC4KICAgICAvLyA6OmdsR2V0SW50ZWdlcjY0aV92KHBuYW1lLCBpbmRl
eCwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
CitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVu
dW0gcG5hbWUKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoYXR0YWNobWVudCA9PSBERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQpCiAgICAgICAgIGF0dGFjaG1lbnQgPSBERVBUSF9BVFRBQ0hN
RU5UOyAvLyBPciBTVEVOQ0lMX0FUVEFDSE1FTlQsIGVpdGhlciB3b3Jrcy4KLSAgICA6OmdsR2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBw
bmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1
ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWl2KFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NH
TGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBu
YW1lLCB2YWx1ZSk7CisgICAgR0NHTGludCB2YWx1ZSBwPSAwOworICAgIDo6Z2xHZXRQcm9ncmFt
aXYocHJvZ3JhbSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
CkBAIC0xODI0LDcgKzE4MTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRO
b25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQoUGxhdGZvcm1HTE9iamVjdCBwcgogCiAgICAgICAg
IHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0dWFsQXR0cmlidXRlSW5kZXhNYXAuYXBwZW5kKGkp
OwogICAgIH0KLSAgICAKKwogICAgIC8vIERvIHRoZSBzYW1lIGZvciB1bmlmb3Jtcy4KICAgICBH
Q0dMaW50IHVuaWZvcm1Db3VudCA9IDA7CiAgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBB
Q1RJVkVfVU5JRk9STVMsICZ1bmlmb3JtQ291bnQpOwpAQCAtMTgzMywxMCArMTgyNSwxMCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291
bnQoUGxhdGZvcm1HTE9iamVjdCBwcgogICAgICAgICBnZXRBY3RpdmVVbmlmb3JtSW1wbChwcm9n
cmFtLCBpLCBpbmZvKTsKICAgICAgICAgaWYgKGluZm8ubmFtZS5zdGFydHNXaXRoKCJnbF8iKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBzeW1ib2xDb3VudHMu
ZmlsdGVyZWRUb0FjdHVhbFVuaWZvcm1JbmRleE1hcC5hcHBlbmQoaSk7CiAgICAgfQotICAgIAor
CiAgICAgKnZhbHVlID0gc3ltYm9sQ291bnRzLmNvdW50Rm9yVHlwZShwbmFtZSk7CiB9CiAKQEAg
LTE4NDcsNyArMTgzOSw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5t
YW5nbGVkSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcnNbMl0sCiAgICAgSlNDOjpZYXJy
OjpSZWd1bGFyRXhwcmVzc2lvbiByZWdFeHAoIndlYmdsX1swMTIzNDU2Nzg5YWJjZGVmQUJDREVG
XSsiKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgcHJvY2Vzc2VkTG9nOwotICAgIAorCiAgICAgLy8g
QU5HTEUgaW5zZXJ0cyBhICIjZXh0ZW5zaW9uIiBsaW5lIGludG8gdGhlIHNoYWRlciBzb3VyY2Ug
dGhhdAogICAgIC8vIGNhdXNlcyBhIHdhcm5pbmcgaW4gc29tZSBjb21waWxlcnMuIFRoZXJlIGlz
IG5vIHBvaW50IHNob3dpbmcKICAgICAvLyB0aGlzIHdhcm5pbmcgdG8gdGhlIHVzZXIgc2luY2Ug
dGhleSBkaWRuJ3Qgd3JpdGUgdGhlIGNvZGUgdGhhdApAQCAtMTg4Niw3ICsxODc4LDcgQEAgU3Ry
aW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0pCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKICAgICA6OmdsR2V0UHJvZ3Jh
bWl2KHByb2dyYW0sIEdMX0lORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAgICAgaWYgKCFsZW5n
dGgpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsgCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgp
OwpAQCAtMTg5OSwyOCArMTg5MSwyOSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSkKICAgICByZXR1cm4g
Z2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3RyaW5nKGluZm8uZGF0YSgpLCBz
aXplKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZh
bHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQg
dmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIDo6Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1l
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICA6OmdsR2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KFBsYXRmb3Jt
R0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKLQorICAgIEdDR0xp
bnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAKICAgICBjb25zdCBhdXRvJiByZXN1bHQg
PSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7Ci0gICAgCisKICAgICBzd2l0Y2ggKHBu
YW1lKSB7CiAgICAgY2FzZSBERUxFVEVfU1RBVFVTOgogICAgIGNhc2UgU0hBREVSX1RZUEU6Ci0g
ICAgICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6
Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENPTVBJTEVfU1RBVFVTOgogICAgICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291
cmNlTWFwLmVuZCgpKSB7CkBAIC0xOTQyLDYgKzE5MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0g
cG5hbQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfRU5V
TSk7CiAgICAgfQorICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpAQCAt
MTk1Myw3ICsxOTQ3LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFk
ZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogCiAgICAgY29uc3QgYXV0byYgcmVz
dWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogICAgIGlmIChyZXN1bHQgPT0g
bV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsgCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGNvbnN0IFNoYWRlclNvdXJjZUVudHJ5JiBlbnRy
eSA9IHJlc3VsdC0+dmFsdWU7CiAgICAgaWYgKCFlbnRyeS5pc1ZhbGlkKQpAQCAtMTk2Miw3ICsx
OTU2LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9n
KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogICAgIEdMaW50IGxlbmd0aCA9IDA7CiAgICAgOjpn
bEdldFNoYWRlcml2KHNoYWRlciwgR0xfSU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKICAgICBp
ZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKICAgICBWZWN0b3I8R0xjaGFyPiBpbmZv
KGxlbmd0aCk7CkBAIC0xOTgxLDQ0ICsxOTc1LDQ2IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogCiAgICAg
Y29uc3QgYXV0byYgcmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogICAg
IGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsgCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIHJldHVybiByZXN1bHQt
PnZhbHVlLnNvdXJjZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4
UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2
YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVy
ZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1
ZSA9IDAuZjsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5h
bWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBH
Q0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFs
dWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRh
cmdldCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0VW5pZm9ybWZ2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgOjpnbEdldFVuaWZvcm1mdihwcm9ncmFt
LCBsb2NhdGlvbiwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5p
Zm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOworICAgIDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmRh
dGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVl
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKQEAgLTIwMzcsMjAgKzIwMzMsMjAgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAg
ICByZXR1cm4gOjpnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBtYXBwZWROYW1lLnV0Zjgo
KS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhB
dHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6Omds
R2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldFZlcnRl
eEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZh
bHVlKTsKKyAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRh
KTsKIH0KIAogR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhB
dHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQpAQCAtMzE0Myw3ICsz
MTM5LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICBVTlVTRURfUEFSQU0oZHN0T2Zm
c2V0KTsKIH0KIAotCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBVTlVTRURf
UEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAg
ICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8fCBV
U0UoT1BFTkdMX0VTKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApp
bmRleCA2MGZkZmM2NWY4NzM5NTg5NTc5NWE4NGVmMWUwOWFiZjZkN2FhODQzLi4wNTU3MTI0NDA5
MTliMjcyZTE5MzFlM2UxM2UxN2UxNWQ2ZmQxYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xOTYsMTIgKzE5NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gaW50ZQogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdl
dEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5kYXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwg
R0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lv
bikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414220</attachid>
            <date>2020-11-16 05:25:05 -0800</date>
            <delta_ts>2020-11-16 05:31:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201116152502.patch</filename>
            <type>text/plain</type>
            <size>131877</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg0YWYwMDZmZDM3ZGQx
MmM5MmE5MzUxMDc3MzBjZTg2Y2QzN2ZiOC4uNzI2N2ZmZWNhY2M4MTQwZTVhNTlkYTJjZjUyNWI3
YjA2OGY1MjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyOSBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRo
ZSB2YWx1ZSBpcyBhIG5vcm1hbCB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIHJlZHVjZXMgdGhlIHJp
c2sKKyAgICAgICAgb2YgaGF2aW5nIHVuaW5pdGlhbGl6ZWQgcmVjZWl2ZSBsb2NhdGlvbi4KKwor
ICAgICAgICBDaGFuZ2UgdGhlIGdldHRlcnMgdGhhdCBhcmUgb25seSB1c2VkIHRvIG9idGFpbiBz
aW5nbGUgdmFsdWVzIHNvCisgICAgICAgIHRoYXQgdGhlIGdldHRlciBpdHNlbGYgaGFzIHRoZSBy
ZXR1cm4gdmFsdWUuCisgICAgICAgIEFkZCBhIHNpbmdsZS12YWx1ZSBnZXR0ZXIgZm9yIGdldHRl
cnMgdGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gYWxzbworICAgICAgICBtdWx0aXBsZSB2YWx1ZXMu
CisKKyAgICAgICAgQWRkIEdDR0xTcGFuIHR5cGUgdGhhdCBpcyB1c2VkIHRvIGNvbW11bmljYXRl
IHBhaXI6IHB0ciwgbnVtYmVyIG9mCisgICAgICAgIGVsZW1lbnRzLgorCisgICAgICAgIFVzZSB0
aGUgUm9idXN0QU5HTEUgdmFyaWFudHMgb2YgdGhlIEdMIEFQSSBpbXBsZW1lbnRhdGlvbiB0byBv
YnRhaW4KKyAgICAgICAgdGhlIHZhbHVlcy4KKworICAgICAgICBSZW1vdmUgdGhlIGNvcnJlc3Bv
bmRpbmcgUm9idXN0QU5HTEUgdmFyaWFudHMgZnJvbSBFeHRlbnNpb25zR0wsIHRoZXkgYXJlCisg
ICAgICAgIGRlYWQgY29kZSBhbmQgdW51c2VkLgorCisgICAgICAgIFRoZSB0eXBlIEdDR0xTcGFu
IHdpbGwgYmUgdXNlZCB0byBzaW1wbGlmeSB0aGUgR1BVIHByb2Nlc3MgaW1wbGVtZW50YXRpb24s
CisgICAgICAgIHNpbmNlIHRoZSBidWZTaXplIHdpbGwgYmUgZXhwbGljaXRseSBhc3NvY2lhdGVk
IGluIHRoZSBwYXNzZWQgZGF0YSBwdHIsCisgICAgICAgIGluc2lkZSB0aGUgR0NHTFNwYW4gdHlw
ZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NHTFNwYW4gd2lsbCBiZSB1c2Vk
IGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAgaS5lLiBhcmJpdHJhcnkgYnVm
ZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKworICAgICAgICBGaXhlcyBidWdz
IHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFsdWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlIGxvY2F0aW9u
IG9mIHRoZQorICAgICAgICBnb3R0ZW4gcHJvcGVyeS4gVGhpcyB2YWx1ZSB3b3VsZCBiZSB1bndy
aXR0ZW4gaW4gZWRnZS1jYXNlcyBsaWtlIEdMIGVycm9ycywgYW5kCisgICAgICAgIHRodXMgdGhl
IHJlYWQgd291bGQgdG91Y2ggdW51aW5pdGlhbGl6ZWQgdmFsdWUuCisKKyAgICAgICAgRml4ZXMg
YSBidWcgd2hlcmUgdW5pZm9ybSBibG9jayB2YXJpYWJsZXMgY29kZSB3b3VsZCBwYXNzIGluIHRv
byBsYXJnZSBidWZmZXIKKyAgICAgICAgc2l6ZSB0byB0aGUgUm9idXN0QU5HTEUgY2FsbC4gVGhl
IGJ1ZlNpemUgcmVmZXJzIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMsIGJ1dAorICAgICAgICB0
aGUgY29kZSBwYXNzZWQgaW4gdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaS5lLiBudW1iZXIgb2Yg
ZWxlbWVudHMgKiBzaXplIG9mCisgICAgICAgIGVsZW1lbnQpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgYSByZWZhY3Rvci4KKworICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFw
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dFRleFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRJbmRleGVkUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4
RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3
QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2Zp
ZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXpl
QXR0YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dE1heERyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUlu
ZGV4QXJyYXlQcmVjaXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRTaGFkZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCb29sZWFuUGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZsb2F0UGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEludFBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRV
bnNpZ25lZEludFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdFZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2ht
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6Z2V0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6Z2V0SW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNwYW4pOgorICAg
ICAgICAoR0NHTFNwYW46Om9wZXJhdG9yW10pOgorICAgICAgICAoR0NHTFNwYW46Om9wZXJhdG9y
Kik6CisgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RmxvYXR2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVV
bmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2cp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNoYWRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJp
Yk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEludGVnZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJ
bnRlZ2VyNjRpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFw
aGljc0NvbnRleHRHTENWQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRCb29sZWFudlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldEZsb2F0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldEludGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4
QXR0cmliZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhB
dHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdl
cjY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVBdHRyaWJJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVV
bmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpvcmln
aW5hbFN5bWJvbE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRlbGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEludGVnZXI2NHYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFByb2dyYW1pdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbm1hbmds
ZWRJbmZvTG9nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRl
cml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJJbmZvTG9nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJTb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmZ2KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJh
bWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybWZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VmVydGV4QXR0cmliZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1
YkltYWdlMkQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlQnVm
ZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjcmVhdGVGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlUHJvZ3JhbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlUmVuZGVyYnVmZmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFk
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZVRleHR1cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmRlbGV0ZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlRnJhbWVidWZmZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVByb2dyYW0pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGVsZXRlU2hhZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUZXh0dXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzeW50aGVzaXplR0xFcnJvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0Nv
bnRleHRDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjptYXJrTGF5ZXJDb21wb3NpdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZvcmNlQ29u
dGV4dExvc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlY3ljbGVDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJ
bWFnZTJERGlyZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYkRpdmlzb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnByaW1pdGl2ZVJlc3RhcnRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6Om1hcEJ1ZmZlclJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmcmFtZWJ1ZmZlclRleHR1
cmVMYXllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRCdWZm
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEludGVybmFsZm9ybWF0aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3RvcmFn
ZTJEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp0ZXhTdG9yYWdlM0QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvcHlUZXhTdWJJbWFnZTNEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFnRGF0YUxvY2F0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVp
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMnVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtM3VpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtNHVpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgy
eDRmdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDR4MmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliSTRpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVp
dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliSVBvaW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmRyYXdSYW5nZUVsZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJp
dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y2xlYXJCdWZmZXJ1aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVF1ZXJ5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVRdWVy
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
aXNRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmVnaW5RdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2FtcGxl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
ZGVsZXRlU2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aXNTYW1wbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kU2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJh
bWV0ZXJmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1N5
bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmRlbGV0ZVN5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNsaWVudFdhaXRTeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGF1c2VUcmFuc2Zvcm1GZWVk
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRCdWZmZXJCYXNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyUmFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1JbmRpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jtcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVT
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRl
Z2Vydik6CisKIDIwMjAtMTEtMTYgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaW5hbCByZWZhY3RvciBmb3IgV2ViR0wgaW1wbGVtZW50YXRpb24gdG8g
dXNlIG9ubHkgR3JhcGhpY3NDb250ZXh0R0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcAppbmRleCAyZWYxMGIwYTRmMzQ2ZWZlMWI5MzhlNDZlMDA1M2E4YTMzOTQ1MzQ0Li4w
NGIzMGY4ZjY0NjQxNDY4MDY3ZTMwOTI2ZTc0ZTRmMmQ5YzE4YjlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgRXhjZXB0aW9uT3I8
UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRt
YXAoKQogICAgICAgICAvLyBjcmVhdGVzIGEgbmV3IGJhY2tpbmcgc3RvcmUuIFNpbmNlIHdlJ3Jl
IG5vdCBkb2luZyB0aGF0IHlldCwgd2UKICAgICAgICAgLy8gbmVlZCB0byBlcmFzZSB3aGF0J3Mg
dGhlcmUuCiAKLSAgICAgICAgR0NHTGZsb2F0IGNsZWFyQ29sb3JbNF07CisgICAgICAgIEdDR0xm
bG9hdCBjbGVhckNvbG9yWzRdIHsgfTsKICAgICAgICAgZ2MzZC0+Z2V0RmxvYXR2KEdyYXBoaWNz
Q29udGV4dEdMOjpDT0xPUl9DTEVBUl9WQUxVRSwgY2xlYXJDb2xvcik7CiAgICAgICAgIGdjM2Qt
PmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAgICAgICAgIGdjM2QtPmNsZWFyKEdyYXBoaWNzQ29u
dGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZF
Ul9CSVQgfCBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9CVUZGRVJfQklUKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggODA3M2FkYzExMTQ5MjE1ZjU2ZDFlNDVkYTY4NGRlODI4NTgxN2U5Mi4uNTViYzFmOGRi
MjQ5ZDMzODIyZTc4ODljYTc4M2Y1YmVjMDI1YTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTE1OSw5ICsx
NTksOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0
KCkKICAgICBtX3VucGFja1NraXBSb3dzID0gMDsKICAgICBtX3VucGFja1NraXBJbWFnZXMgPSAw
OwogCi0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYXzNE
X1RFWFRVUkVfU0laRSwgJm1fbWF4M0RUZXh0dXJlU2l6ZSk7CisgICAgbV9tYXgzRFRleHR1cmVT
aXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfM0RfVEVY
VFVSRV9TSVpFKTsKICAgICBtX21heDNEVGV4dHVyZUxldmVsID0gV2ViR0xUZXh0dXJlOjpjb21w
dXRlTGV2ZWxDb3VudChtX21heDNEVGV4dHVyZVNpemUsIG1fbWF4M0RUZXh0dXJlU2l6ZSk7Ci0g
ICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0FSUkFZX1RF
WFRVUkVfTEFZRVJTLCAmbV9tYXhBcnJheVRleHR1cmVMYXllcnMpOworICAgIG1fbWF4QXJyYXlU
ZXh0dXJlTGF5ZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpN
QVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMpOwogCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKIApAQCAtMjA4LDkgKzIwOCw3IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6cmVzdG9yZVVucGFja1BhcmFtZXRlcnMoKQogCiBsb25nIGxv
bmcgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50NjRQYXJhbWV0ZXIoR0NHTGVudW0gcG5h
bWUpCiB7Ci0gICAgR0NHTGludDY0IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVn
ZXI2NHYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldEludGVnZXI2NChwbmFtZSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCkBAIC0xMDU1LDIzICsxMDUzLDE0
IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lCiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUzoKICAgICAgICAg
RkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1I6
IHsKLSAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4
UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVl
OwotICAgIH0KLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9G
T1JNQVQ6IHsKLSAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+
Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlKTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV9XUkFQX1I6CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFRleFBh
cmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9JTU1VVEFCTEVfRk9STUFUOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4o
bV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6CiAgICAgICAgIEZBTExUSFJPVUdIOwot
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDogewotICAgICAgICBH
Q0dMZmxvYXQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2
KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQVhfTE9EOgorICAgICAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhQYXJh
bWV0ZXIodGFyZ2V0LCBwbmFtZSk7CiAgICAgfQpAQCAtMjQ0NSwxMSArMjQzNCw4IEBAIFdlYkdM
QW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUl9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VU5JRk9STV9CVUZGRVJfU0laRToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JN
X0JVRkZFUl9TVEFSVDogewotICAgICAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwotICAgICAgICBt
X2NvbnRleHQtPmdldEludGVnZXI2NGlfdih0YXJnZXQsIGluZGV4LCAmdmFsdWUpOwotICAgICAg
ICByZXR1cm4gdmFsdWU7Ci0gICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZP
Uk1fQlVGRkVSX1NUQVJUOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRp
KHRhcmdldCwgaW5kZXgpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVG
RkVSX0JJTkRJTkc6CiAgICAgICAgIGlmIChpbmRleCA+PSBtX2JvdW5kSW5kZXhlZFVuaWZvcm1C
dWZmZXJzLnNpemUoKSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJnZXRJbmRleGVkUGFyYW1ldGVyIiwgImluZGV4IG91
dCBvZiByYW5nZSIpOwpAQCAtMjUyNCwyNCArMjUxMCwyMCBAQCBXZWJHTEFueSBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoV2ViR0xQcm9ncmFt
JiBwcgogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJh
bWV0ZXIiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEdDR0xpbnQg
cmVzdWx0ID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6VU5JRk9STV9CTE9DS19CSU5ESU5HOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVO
SUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TOgotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgc2l6ZW9mKHJlc3VsdCksIG51bGxwdHIsICZy
ZXN1bHQpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4obV9jb250ZXh0LT5nZXRBY3RpdmVV
bmlmb3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSkp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZP
Uk1fSU5ESUNFUzogewotICAgICAgICBHQ0dMaW50IHNpemUgPSAwOwotICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHBy
b2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBHcmFwaGljc0NvbnRleHRHTDo6VU5J
Rk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVMsIHNpemVvZihzaXplKSwgbnVsbHB0ciwgJnNpemUp
OworICAgICAgICBHQ0dMaW50IHNpemUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9j
a2kocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIEdyYXBoaWNzQ29udGV4dEdM
OjpVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUyk7CiAgICAgICAgIFZlY3RvcjxHQ0dMaW50
PiBwYXJhbXMoc2l6ZSwgMCk7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9y
bUJsb2NrSW5kZXgsIHBuYW1lLCBzaXplb2YocGFyYW1zWzBdKSAqIHBhcmFtcy5zaXplKCksIG51
bGxwdHIsIHBhcmFtcy5kYXRhKCkpOworICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFy
YW1zKTsKICAgICAgICAgcmV0dXJuIHBhcmFtcy5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMdWludD4oeCk7IH0pOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUjoKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRf
U0hBREVSOgotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4
LCBwbmFtZSwgc2l6ZW9mKHJlc3VsdCksIG51bGxwdHIsICZyZXN1bHQpOwotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShwcm9ncmFtLm9iamVjdCgp
LCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzcyLDkgKzI3NTQsNyBAQCBXZWJHTEFueSBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVu
dW0gdGFyZwogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBhdHRhY2htZW50Iik7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBHQ0dMaW50IHZhbHVl
ID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgfQogICAgIGlmICgh
dmFsaWRhdGVOb25EZWZhdWx0RnJhbWVidWZmZXJBdHRhY2htZW50KGZ1bmN0aW9uTmFtZSwgYXR0
YWNobWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjc5NiwxMSArMjc3Niw4IEBA
IFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhfU0laRToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRToKLSAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBF
OiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUs
ICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRToKKyAgICAg
ICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICB9CiAKICAgICBpZiAob2JqZWN0LT5pc1Rl
eHR1cmUoKSkgewpAQCAtMjgxMSwxMSArMjc4OCw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJn
CiAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMVGV4
dHVyZSY+KCpvYmplY3QpKTsKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMOgogICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRToKLSAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xP
Ul9FTkNPRElORzogewotICAgICAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwg
YXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0g
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9DT0xPUl9FTkNPRElORzoKKyAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHBhcmFt
ZXRlciBuYW1lIGZvciB0ZXh0dXJlIGF0dGFjaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMjg5Nyw3ICsyODcxLDcgQEAgYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZU5vbkRlZmF1bHRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoY29uc3QgY2hhcioKIEdD
R0xpbnQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogewogICAg
IGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihH
cmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUywgJm1fbWF4RHJhd0J1ZmZlcnMpOwor
ICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNz
Q29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTKTsKICAgICByZXR1cm4gbV9tYXhEcmF3QnVmZmVy
czsKIH0KIApAQCAtMjkwNSw3ICsyODc5LDcgQEAgR0NHTGludCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKIHsKICAgICAvLyBEcmF3QnVmZmVycyByZXF1
aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVOVFMgPT0gTUFYX0RSQVdfQlVGRkVSUwogICAgIGlmICgh
bV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdy
YXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTLCAmbV9tYXhDb2xvckF0dGFjaG1lbnRz
KTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTKTsKICAgICByZXR1cm4gbV9tYXhD
b2xvckF0dGFjaG1lbnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IDljYjBmODU2YjU4ZTEwZTZmNDczMDllNmZlM2MxMGUy
NjcwOTcxNjYuLjQ5NDE1NmUxZTY1YjYwMjkxOTBkYjdjMWMwMjZhZGY4MDNkZGE4ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC05
OCwxMCArOTgsOCBAQCBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWly
ZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIHdlYgogICAgIEdyYXBoaWNzQ29udGV4
dEdMKiBjb250ZXh0ID0gd2ViZ2xDb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CiAKICAgICAv
LyBUaGlzIGlzIGNhbGxlZCBhZnRlciB3ZSBtYWtlIHN1cmUgR0xfRVhUX2RyYXdfYnVmZmVycyBp
cyBzdXBwb3J0ZWQuCi0gICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IDA7Ci0gICAgR0NHTGlu
dCBtYXhDb2xvckF0dGFjaG1lbnRzID0gMDsKLSAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihFeHRl
bnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAmbWF4RHJhd0J1ZmZlcnMpOwotICAgIGNv
bnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VY
VCwgJm1heENvbG9yQXR0YWNobWVudHMpOworICAgIEdDR0xpbnQgbWF4RHJhd0J1ZmZlcnMgPSBj
b250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwor
ICAgIEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50cyA9IGNvbnRleHQtPmdldEludGVnZXIoRXh0
ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICBpZiAobWF4RHJhd0J1
ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0YWNobWVudHMgPCA0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggMDFhMDJmNTFkNzJkODkyZWFiOGU4YzI3MDUwNmNiZmM0ZTczNjU0YS4uYWY0ZjA0
MTdiMWIzZDg4OTRlYTVmOTBmMzRhZGI0MjRhN2EzNWFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTYxMywyMCArNjEzLDIwIEBA
IGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdyYXBoaWNzQ29u
dGV4dEdMKiBnM2QsIGNvbnN0IGNoYXIqCiAgICAgR0NHTGJvb2xlYW4gaXNTY2lzc29yRW5hYmxl
ZCA9IDA7CiAgICAgR0NHTGJvb2xlYW4gaXNEaXRoZXJFbmFibGVkID0gMDsKICAgICBpZiAoaW5p
dENvbG9yKSB7Ci0gICAgICAgIGczZC0+Z2V0RmxvYXR2KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xP
Ul9DTEVBUl9WQUxVRSwgY29sb3JDbGVhclZhbHVlKTsKLSAgICAgICAgZzNkLT5nZXRCb29sZWFu
dihHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfV1JJVEVNQVNLLCBjb2xvck1hc2spOworICAgICAg
ICBjb2xvckNsZWFyVmFsdWUgPSBnM2QtPmdldEZsb2F0KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xP
Ul9DTEVBUl9WQUxVRSk7CisgICAgICAgIGNvbG9yTWFzayA9IGczZC0+Z2V0Qm9vbGVhbihHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfV1JJVEVNQVNLKTsKICAgICAgICAgZzNkLT5jbGVhckNvbG9y
KDAsIDAsIDAsIDApOwogICAgICAgICBnM2QtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlKTsKICAgICB9CiAgICAgaWYgKGluaXREZXB0aCkgewotICAgICAgICBnM2QtPmdldEZsb2F0
dihHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ0xFQVJfVkFMVUUsICZkZXB0aENsZWFyVmFsdWUp
OwotICAgICAgICBnM2QtPmdldEJvb2xlYW52KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9XUklU
RU1BU0ssICZkZXB0aE1hc2spOworICAgICAgICBkZXB0aENsZWFyVmFsdWUgPSBnM2QtPmdldEZs
b2F0KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9DTEVBUl9WQUxVRSk7CisgICAgICAgIGRlcHRo
TWFzayA9IGczZC0+Z2V0Qm9vbGVhbihHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfV1JJVEVNQVNL
KTsKICAgICAgICAgZzNkLT5jbGVhckRlcHRoKDEuMGYpOwogICAgICAgICBnM2QtPmRlcHRoTWFz
ayh0cnVlKTsKICAgICB9CiAgICAgaWYgKGluaXRTdGVuY2lsKSB7Ci0gICAgICAgIGczZC0+Z2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQ0xFQVJfVkFMVUUsICZzdGVuY2ls
Q2xlYXJWYWx1ZSk7Ci0gICAgICAgIGczZC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
OlNURU5DSUxfV1JJVEVNQVNLLCByZWludGVycHJldF9jYXN0PEdDR0xpbnQqPigmc3RlbmNpbE1h
c2spKTsKKyAgICAgICAgc3RlbmNpbENsZWFyVmFsdWUgPSBnM2QtPmdldEludGVnZXIoR3JhcGhp
Y3NDb250ZXh0R0w6OlNURU5DSUxfQ0xFQVJfVkFMVUUpOworICAgICAgICBzdGVuY2lsTWFzayA9
IGczZC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9XUklURU1BU0spOwog
ICAgICAgICBnM2QtPmNsZWFyU3RlbmNpbCgwKTsKICAgICAgICAgZzNkLT5zdGVuY2lsTWFzaygw
eGZmZmZmZmZmKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9n
cmFtLmNwcAppbmRleCBjOGMzYjgyMjY1MjUzYzBlMDRlZTAxYTZiNDEyOWM5YzVmMTgwNTI5Li4z
ZTQ2YzVlNTZkMTNkY2ZjZjJlY2MyZGFkMmFjMTk2YTVmN2NlYTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKQEAgLTIxNiw4ICsyMTYsNyBAQCB2b2lk
IFdlYkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQzZCkKIHsKICAgICBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9ucy5jbGVhcigpOwog
Ci0gICAgR0NHTGludCBudW1BdHRyaWJzID0gMDsKLSAgICBjb250ZXh0M2QtPmdldFByb2dyYW1p
dihvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9BVFRSSUJVVEVTLCAmbnVtQXR0
cmlicyk7CisgICAgR0NHTGludCBudW1BdHRyaWJzID0gY29udGV4dDNkLT5nZXRQcm9ncmFtaShv
YmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9BVFRSSUJVVEVTKTsKICAgICBtX2Fj
dGl2ZUF0dHJpYkxvY2F0aW9ucy5yZXNpemUoc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1BdHRyaWJz
KSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdHRyaWJzOyArK2kpIHsKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gaW5mbzsKQEAgLTI0MSw4ICsyNDAsNyBAQCB2
b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQoKQogICAgIEdyYXBoaWNzQ29udGV4
dEdMKiBjb250ZXh0ID0gZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCk7CiAgICAgaWYgKCFjb250ZXh0
KQogICAgICAgICByZXR1cm47Ci0gICAgR0NHTGludCBsaW5rU3RhdHVzID0gMDsKLSAgICBjb250
ZXh0LT5nZXRQcm9ncmFtaXYob2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5LX1NUQVRV
UywgJmxpbmtTdGF0dXMpOworICAgIEdDR0xpbnQgbGlua1N0YXR1cyA9IGNvbnRleHQtPmdldFBy
b2dyYW1pKG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFUVVMpOwogICAgIG1f
bGlua1N0YXR1cyA9IGxpbmtTdGF0dXM7CiAgICAgaWYgKG1fbGlua1N0YXR1cykgewogICAgICAg
ICBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGQyZmFj
MjAzNjI0OTk1ODVlMGQ1MTU1NmNjNWNhNGUzYWFjMzNkYWYuLjY5M2Q2MjA2ZjJjOTBmOTVmZGE5
NzNiOTk4ZWI5NjQ2N2RjZmVhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzA3LDExICszMDcsOCBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIocmVpbnRl
cnByZXRfY2FzdDxXZWJHTFRleHR1cmUmPigqb2JqZWN0KSk7CiAgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKICAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJF
X0NVQkVfTUFQX0ZBQ0U6Ci0gICAgICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDogewotICAgICAgICAgICAgR0NHTGludCB2YWx1
ZSA9IDA7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0KKyAgICAgICAgY2FzZSBFeHRlbnNpb25zR0w6OkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOgorICAgICAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQs
IGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGV4
dHVyZSBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM0Nyw5
ICszNDQsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZl
cnMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJm1fbWF4RHJhd0J1ZmZlcnMp
OworICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVu
c2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFj
aG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFY
X0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAg
IG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25z
R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVy
cyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVOVFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KICAg
ICByZXR1cm4gc3RkOjptaW4obV9tYXhEcmF3QnVmZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRz
KTsKIH0KQEAgLTM1OSw3ICszNTYsNyBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0TWF4Q29sb3JBdHRhY2htZW50cygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAg
ICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFD
SE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JB
dHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xP
Ul9BVFRBQ0hNRU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKaW5kZXggNmMzNzI5OWQ0Mzc3YWEwM2MyOTUxYzI0MDUwNTg5ZThi
M2MzMGZhNy4uMDE3YWJjMDE2ZDJjNmYwN2NjNWI5YzYyZWQ2YWJhYTBiN2I5YjA1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgpAQCAtMTM3LDcgKzEzNyw3IEBAIGNvbnN0IGludCBtYXhHTEVycm9y
c0FsbG93ZWRUb0NvbnNvbGUgPSAyNTY7CiBzdGF0aWMgY29uc3QgU2Vjb25kcyBjaGVja0NvbnRl
eHRMb3NzSGFuZGxpbmdEZWxheSB7IDNfcyB9OwogCiBuYW1lc3BhY2UgewotICAgIAorCiAgICAg
R0NHTGludCBjbGFtcChHQ0dMaW50IHZhbHVlLCBHQ0dMaW50IG1pbiwgR0NHTGludCBtYXgpCiAg
ICAgewogICAgICAgICBpZiAodmFsdWUgPCBtaW4pCkBAIC04NjUsMzQgKzg2NSwyOSBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBt
X3N0ZW5jaWxGdW5jTWFza0JhY2sgPSAweEZGRkZGRkZGOwogICAgIG1fbGF5ZXJDbGVhcmVkID0g
ZmFsc2U7CiAgICAgbV9udW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQgPSBtYXhHTEVycm9yc0Fs
bG93ZWRUb0NvbnNvbGU7Ci0gICAgCisKICAgICBtX2NsZWFyQ29sb3JbMF0gPSBtX2NsZWFyQ29s
b3JbMV0gPSBtX2NsZWFyQ29sb3JbMl0gPSBtX2NsZWFyQ29sb3JbM10gPSAwOwogICAgIG1fc2Np
c3NvckVuYWJsZWQgPSBmYWxzZTsKICAgICBtX2NsZWFyRGVwdGggPSAxOwogICAgIG1fY2xlYXJT
dGVuY2lsID0gMDsKICAgICBtX2NvbG9yTWFza1swXSA9IG1fY29sb3JNYXNrWzFdID0gbV9jb2xv
ck1hc2tbMl0gPSBtX2NvbG9yTWFza1szXSA9IHRydWU7CiAKLSAgICBHQ0dMaW50IG51bUNvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHMgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3Jh
cGhpY3NDb250ZXh0R0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmbnVtQ29t
YmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgR0NHTGludCBudW1Db21iaW5lZFRleHR1cmVJ
bWFnZVVuaXRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhf
Q09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyk7CiAgICAgbV90ZXh0dXJlVW5pdHMuY2xlYXIo
KTsKICAgICBtX3RleHR1cmVVbml0cy5yZXNpemUobnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0
cyk7CiAjaWYgIVVTRShBTkdMRSkKICAgICBmb3IgKEdDR0xpbnQgaSA9IDA7IGkgPCBudW1Db21i
aW5lZFRleHR1cmVJbWFnZVVuaXRzOyArK2kpCiAgICAgICAgIG1fdW5yZW5kZXJhYmxlVGV4dHVy
ZVVuaXRzLmFkZChpKTsKICNlbmRpZgotICAgIAotICAgIEdDR0xpbnQgbnVtVmVydGV4QXR0cmli
cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFY
X1ZFUlRFWF9BVFRSSUJTLCAmbnVtVmVydGV4QXR0cmlicyk7CisKKyAgICBHQ0dMaW50IG51bVZl
cnRleEF0dHJpYnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1B
WF9WRVJURVhfQVRUUklCUyk7CiAgICAgbV9tYXhWZXJ0ZXhBdHRyaWJzID0gbnVtVmVydGV4QXR0
cmliczsKLSAgICAKLSAgICBtX21heFRleHR1cmVTaXplID0gMDsKLSAgICBtX2NvbnRleHQtPmdl
dEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9TSVpFLCAmbV9tYXhUZXh0
dXJlU2l6ZSk7CisKKyAgICBtX21heFRleHR1cmVTaXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9TSVpFKTsKICAgICBtX21heFRleHR1cmVM
ZXZlbCA9IFdlYkdMVGV4dHVyZTo6Y29tcHV0ZUxldmVsQ291bnQobV9tYXhUZXh0dXJlU2l6ZSwg
bV9tYXhUZXh0dXJlU2l6ZSk7Ci0gICAgbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUgPSAwOwotICAg
IG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DVUJFX01BUF9U
RVhUVVJFX1NJWkUsICZtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSk7CisgICAgbV9tYXhDdWJlTWFw
VGV4dHVyZVNpemUgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1B
WF9DVUJFX01BUF9URVhUVVJFX1NJWkUpOwogICAgIG1fbWF4Q3ViZU1hcFRleHR1cmVMZXZlbCA9
IFdlYkdMVGV4dHVyZTo6Y29tcHV0ZUxldmVsQ291bnQobV9tYXhDdWJlTWFwVGV4dHVyZVNpemUs
IG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplKTsKLSAgICBtX21heFJlbmRlcmJ1ZmZlclNpemUgPSAw
OwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9SRU5E
RVJCVUZGRVJfU0laRSwgJm1fbWF4UmVuZGVyYnVmZmVyU2l6ZSk7CisgICAgbV9tYXhSZW5kZXJi
dWZmZXJTaXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhf
UkVOREVSQlVGRkVSX1NJWkUpOwogCiAgICAgLy8gVGhlc2UgdHdvIHZhbHVlcyBmcm9tIEVYVF9k
cmF3X2J1ZmZlcnMgYXJlIGxhemlseSBxdWVyaWVkLgogICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSAw
OwpAQCAtOTAxLDcgKzg5Niw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5p
dGlhbGl6ZU5ld0NvbnRleHQoKQogICAgIG1fYmFja0RyYXdCdWZmZXIgPSBHcmFwaGljc0NvbnRl
eHRHTDo6QkFDSzsKICAgICBtX2RyYXdCdWZmZXJzV2ViR0xSZXF1aXJlbWVudHNDaGVja2VkID0g
ZmFsc2U7CiAgICAgbV9kcmF3QnVmZmVyc1N1cHBvcnRlZCA9IGZhbHNlOwotICAgIAorCiAgICAg
bV92ZXJ0ZXhBdHRyaWJWYWx1ZS5yZXNpemUobV9tYXhWZXJ0ZXhBdHRyaWJzKTsKIAogI2lmICFV
U0UoQU5HTEUpCkBAIC0xNzQxLDggKzE3MzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJjb21w
aWxlU2hhZGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPmNv
bXBpbGVTaGFkZXIoc2hhZGVyLm9iamVjdCgpKTsKLSAgICBHQ0dMaW50IHZhbHVlOwotICAgIG1f
Y29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUElMRV9TVEFUVVMsICZ2YWx1ZSk7CisgICAgR0NHTGludCB2YWx1ZSA9IG1fY29udGV4dC0+
Z2V0U2hhZGVyaShzaGFkZXIub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NU
QVRVUyk7CiAgICAgc2hhZGVyLnNldFZhbGlkKHZhbHVlKTsKIAogICAgIGF1dG8qIGNhbnZhcyA9
IGh0bWxDYW52YXMoKTsKQEAgLTIyMTEsNyArMjIwNSw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVOUE9UVGV4dHVyZUxldmVsKEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5
U2l6ZShHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQog
ewogICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gZWxlbWVudEFycmF5QnVmZmVyID0gbV9ib3VuZFZl
cnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKTsKLSAgICAKKwogICAgIGlm
ICghZWxlbWVudEFycmF5QnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTIyNTIs
NyArMjI0Niw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVJbmRl
eEFycmF5UHJlY2lzZShHQ0dMc2l6ZWkgY291bnQsIEdDR0xlCiB7CiAgICAgQVNTRVJUKGNvdW50
ID49IDAgJiYgb2Zmc2V0ID49IDApOwogICAgIHVuc2lnbmVkIG1heEluZGV4ID0gMDsKLSAgICAK
KwogICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gZWxlbWVudEFycmF5QnVmZmVyID0gbV9ib3VuZFZl
cnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKTsKIAogICAgIGlmICghZWxl
bWVudEFycmF5QnVmZmVyKQpAQCAtMjQ1MiwxMCArMjQ0NiwxMCBAQCBib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgRwogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
RHJhd01vZGUoZnVuY3Rpb25OYW1lLCBtb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IAorCiAgICAgaWYgKCF2YWxpZGF0ZVN0ZW5jaWxTZXR0aW5ncyhmdW5jdGlvbk5hbWUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlVOU0lHTkVEX1NIT1JUOgpAQCAtMjQ2OSwyMiArMjQ2MywyMiBAQCBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgRwogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHR5cGUiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIGlmIChjb3VudCA8IDAgfHwgb2Zmc2V0
IDwgMCkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiY291bnQgb3Igb2Zmc2V0IDwgMCIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFjb3VudCkgewogICAgICAg
ICBtYXJrQ29udGV4dENoYW5nZWQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICAKKwogICAgIGlmIChwcmltaXRpdmVDb3VudCA8IDApIHsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgInBy
aW1jb3VudCA8IDAiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAg
IGlmICghbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKSkg
ewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9P
UEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIm5vIEVMRU1FTlRfQVJSQVlfQlVGRkVSIGJvdW5kIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0OTcsMTQgKzI0OTEsMTQgQEAgYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURyYXdFbGVtZW50cyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIEcKICAgICB9CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAorCiAgICAgQ2hlY2tlZDxHQ0dMaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tl
ZENvdW50KGNvdW50KTsKICAgICBDaGVja2VkPEdDR0xpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVj
a2VkUHJpbWl0aXZlQ291bnQocHJpbWl0aXZlQ291bnQpOwogICAgIGlmIChjaGVja2VkQ291bnQu
aGFzT3ZlcmZsb3dlZCgpIHx8IGNoZWNrZWRQcmltaXRpdmVDb3VudC5oYXNPdmVyZmxvd2VkKCkp
IHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
T1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRz
IGFycmF5cyIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgaWYg
KCF2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUodHlwZSwgbnVtRWxlbWVudHMpIHx8ICF2
YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMobnVtRWxlbWVudHMsIGNoZWNrZWRQcmltaXRpdmVDb3Vu
dC51bnNhZmVHZXQoKSkpIHsKICAgICAgICAgaWYgKCF2YWxpZGF0ZUluZGV4QXJyYXlQcmVjaXNl
KGNoZWNrZWRDb3VudC51bnNhZmVHZXQoKSwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4o
b2Zmc2V0KSwgbnVtRWxlbWVudHMpIHx8ICF2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMobnVtRWxl
bWVudHMsIGNoZWNrZWRQcmltaXRpdmVDb3VudC51bnNhZmVHZXQoKSkpIHsKICAgICAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwg
ZnVuY3Rpb25OYW1lLCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBhcnJheXMiKTsK
QEAgLTI1MTgsMTMgKzI1MTIsMTMgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
YWxpZGF0ZURyYXdFbGVtZW50cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEcKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICNlbmRpZgotICAgIAorCiAgICAgY29uc3QgY2hhciogcmVh
c29uID0gImZyYW1lYnVmZmVyIGluY29tcGxldGUiOwogICAgIGlmIChtX2ZyYW1lYnVmZmVyQmlu
ZGluZyAmJiAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dEdM
KCksICZyZWFzb24pKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCByZWFzb24p
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAjZW5kaWYKQEAgLTI4ODgsOCArMjg4Miw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIEdDR0xpbnQgdmFsdWUgPSAw
OwotICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZh
bHVlKTsKKyAgICBHQ0dMaW50IHZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJp
KHRhcmdldCwgcG5hbWUpOwogICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QlVG
RkVSX1NJWkUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHZhbHVlKTsKQEAgLTMxODksMjYgKzMxODIsMjYgQEAgV2ViR0xBbnkgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0mIHBy
b2dyYW0sIEcKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdl
YkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRQcm9ncmFtUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRj
aCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERUxFVEVfU1RBVFVTOgog
ICAgICAgICByZXR1cm4gcHJvZ3JhbS5pc0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpWQUxJREFURV9TVEFUVVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2
KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9j
b250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTOgogICAgICAgICByZXR1cm4gcHJvZ3JhbS5n
ZXRMaW5rU3RhdHVzKCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QVRUQUNIRURfU0hB
REVSUzoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwg
cG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIG1f
Y29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9BVFRSSUJVVEVTOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkFDVElWRV9VTklGT1JNUzoKICNpZiBVU0UoQU5HTEUpCi0gICAgICAgIG1fY29u
dGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAg
ICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFt
ZSk7CiAjZWxzZQotICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+
KG1fY29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFt
Lm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgeworICAgICAgICAgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChw
cm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICAgICAgfQogI2VuZGlmIC8vIFVTRShBTkdMRSkKLSAgICAgICAgcmV0dXJuIHZhbHVl
OwogICAgIGRlZmF1bHQ6CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICAgICAgaWYgKGlzV2ViR0wy
KCkpIHsKQEAgLTMyMTYsOCArMzIwOSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAg
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
X01PREU6CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVF
REJBQ0tfVkFSWUlOR1M6CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJ
VkVfVU5JRk9STV9CTE9DS1M6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFt
aXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgICAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1p
KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKTsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMjgwLDcgKzMyNzIsNiBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQwogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCi0gICAg
R0NHTGludCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUl9TQU1QTEVTOgogICAgICAgICBpZiAoIWlzV2ViR0wy
KCkpIHsKQEAgLTMyOTYsOCArMzI4Nyw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDCiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX0FMUEhBX1NJWkU6CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX1NURU5DSUxfU0laRToKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OwotICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKICAgICAgICAgcmV0dXJuIG1f
cmVuZGVyYnVmZmVyQmluZGluZy0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKICAgICBkZWZhdWx0OgpA
QCAtMzMxMCwxNiArMzMwMCwxMyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAogewogICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFk
ZXIoImdldFNoYWRlclBhcmFtZXRlciIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6REVMRVRFX1NUQVRVUzoKICAgICAgICAgcmV0dXJuIHNoYWRl
ci5pc0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRV
UzoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1l
LCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpOworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRl
ci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFERVJf
VFlQRToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBu
YW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFNo
YWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRTaGFk
ZXJQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTMzNzgsMjAgKzMzNjUsMTUgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG4K
ICAgICBhdXRvIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImdldFRleFBhcmFtZXRlciIs
IHRhcmdldCk7CiAgICAgaWYgKCF0ZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEdD
R0xpbnQgdmFsdWUgPSAwOwotICAgIEdDR0xmbG9hdCBmVmFsdWUgPSAwOwogICAgIHN3aXRjaCAo
cG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BR19GSUxURVI6
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fRklMVEVSOgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9TOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOgotICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFt
ZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSk7CiAgICAgY2FzZSBF
eHRlbnNpb25zR0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMKLSAgICAgICAgaWYgKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwg
cG5hbWUsICZmVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihm
VmFsdWUpOwotICAgICAgICB9CisgICAgICAgIGlmIChtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYykKKyAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFy
Z2V0LCBwbmFtZSk7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX0VOVU0sICJnZXRUZXhQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFt
ZSwgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBlbmFibGVkIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIGRlZmF1bHQ6CkBAIC0zNjI0LDcgKzM2MDYsNyBAQCBSZWZQ
dHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVu
aWZvcm1Mb2NhdGlvbihXZWJHTAogCiAgICAgR0NHTGludCBhY3RpdmVVbmlmb3JtcyA9IDA7CiAj
aWYgVVNFKEFOR0xFKQotICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0
KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7
CisgICAgYWN0aXZlVW5pZm9ybXMgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2Jq
ZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMpOwogI2Vsc2UKICAgICBz
dGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPmdl
dE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGljc0Nv
bnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOwogI2VuZGlmCkBAIC02
MjM3LDkgKzYyMTksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlc3VtZSgp
CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Qm9vbGVhblBhcmFtZXRlcihH
Q0dMZW51bSBwbmFtZSkKIHsKLSAgICBHQ0dMYm9vbGVhbiB2YWx1ZSA9IDA7Ci0gICAgbV9jb250
ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAg
cmV0dXJuIG1fY29udGV4dC0+Z2V0Qm9vbGVhbihwbmFtZSk7CiB9CiAKIFZlY3Rvcjxib29sPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCb29sZWFuQXJyYXlQYXJhbWV0ZXIoR0NHTGVu
dW0gcG5hbWUpCkBAIC02MjU4LDIzICs2MjM4LDE3IEBAIFZlY3Rvcjxib29sPiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRCb29sZWFuQXJyYXlQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUp
CiAKIGZsb2F0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZsb2F0UGFyYW1ldGVyKEdD
R0xlbnVtIHBuYW1lKQogewotICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0
LT5nZXRGbG9hdHYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVy
biBtX2NvbnRleHQtPmdldEZsb2F0KHBuYW1lKTsKIH0KIAogaW50IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldEludFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAgICBHQ0dMaW50
IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAmdmFsdWUpOwot
ICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKHBuYW1l
KTsKIH0KIAogdW5zaWduZWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5zaWduZWRJ
bnRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0g
ICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4gdmFs
dWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihwbmFtZSk7CiB9CiAKIFJlZlB0
cjxGbG9hdDMyQXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdMRmxvYXRB
cnJheVBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKQEAgLTcyNDksNyArNzIyMyw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliZnZJbXBsKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgR0NHCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgYXV0byBkYXRhID0gbGlzdC5kYXRhKCk7CiAg
ICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJubyBhcnJheSIpOwpAQCAtNzI5NSw3
ICs3MjY5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJm
dkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6aW5pdFZlcnRleEF0dHJpYjAoKQogewogICAgIFdlYkdMVmVydGV4QXJyYXlP
YmplY3RCYXNlOjpWZXJ0ZXhBdHRyaWJTdGF0ZSYgc3RhdGUgPSBtX2JvdW5kVmVydGV4QXJyYXlP
YmplY3QtPmdldFZlcnRleEF0dHJpYlN0YXRlKDApOwotICAgIAorCiAgICAgbV92ZXJ0ZXhBdHRy
aWIwQnVmZmVyID0gY3JlYXRlQnVmZmVyKCk7CiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdy
YXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIG1fdmVydGV4QXR0cmliMEJ1ZmZlci0+b2Jq
ZWN0KCkpOwogICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJS
QVlfQlVGRkVSLCAwLCBHcmFwaGljc0NvbnRleHRHTDo6RFlOQU1JQ19EUkFXKTsKQEAgLTc2MjYs
OSArNzYwMCw5IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJh
d0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1
cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0
SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJm1fbWF4RHJhd0J1
ZmZlcnMpOworICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwogICAgIGlmICghbV9tYXhDb2xv
ckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JBdHRhY2htZW50cyk7Cisg
ICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRl
bnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIC8vIFdFQkdMX2RyYXdf
YnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVOVFMgPj0gTUFYX0RSQVdfQlVGRkVS
Uy4KICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhEcmF3QnVmZmVycywgbV9tYXhDb2xvckF0dGFj
aG1lbnRzKTsKIH0KQEAgLTc2MzgsNyArNzYxMiw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygpCiAgICAgaWYgKCFzdXBwb3J0c0Ry
YXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFj
aG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFY
X0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAg
IG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25z
R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0
YWNobWVudHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0
ZW5zaW9uc0dMLmgKaW5kZXggMzRmMTdlYzYxYjMzMTAzNzFjMmRkYmQwYTAxNzVjNjBiOTNkMTZm
NS4uYmE4NjViMzMwOGU2Yzk0NTgyMjEyMjM3Nzk2ZDZmZDU3NzQ4NDdmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTMwNiwyMSAr
MzA2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9y
b2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xib29sZWFuKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBkYXRhKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBkYXRh
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwb2ludGVyKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1
bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwpA
QCAtMzM2LDE0ICszMjEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogZGF0YSkg
PSAwOyAvLyBOT0xJTlQKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQg
aW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBk
YXRhKSA9IDA7IC8vIE5PTElOVAogICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJp
NjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBh
cmFtKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0KiBwYXJhbSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMGYxZDA2N2JmNDk4NWU5Y2Q3
YjQwNDEyYWRiZWNhNGUzMjIwZDk4ZC4uY2E4YTE5Y2U1ZmU5YmI5ODFiMWNkOWVkOWVmODFmNDdj
MWY5YzQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRHTC5oCkBAIC0zNzMsNyArMzczLDcgQEAgcHVibGljOgogICAgICAgICBV
TlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMID0gMHg5MjQzLAogICAgICAgICBCUk9X
U0VSX0RFRkFVTFRfV0VCR0wgPSAweDkyNDQsCiAgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlf
RElWSVNPUl9BTkdMRSA9IDB4ODhGRSwKLSAgICAgICAgCisKICAgICAgICAgLy8gV2ViR0wyIGNv
bnN0YW50cwogICAgICAgICBSRUFEX0JVRkZFUiA9IDB4MEMwMiwKICAgICAgICAgVU5QQUNLX1JP
V19MRU5HVEggPSAweDBDRjIsCkBAIC05ODYsMzEgKzk4NiwzMCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3Qg
U3RyaW5nJiBuYW1lKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVy
aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsK
KyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRQYXJhbWV0ZXIKICAgICB2aXJ0dWFs
IFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2Vy
aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0
KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudihH
Q0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dM
aW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSA9IDA7CisgICAgdmlydHVhbCBHQ0dM
aW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpID0gMDsK
KyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSA9IDA7CiAKICAgICB2aXJ0
dWFsIEdDR0xlbnVtIGdldEVycm9yKCkgPSAwOwogCiAgICAgLy8gZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8gZ2V0UHJvZ3JhbVBhcmFt
ZXRlcgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmpl
Y3QpID0gMDsKIAogICAgIC8vIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsK
IAogICAgIC8vIGdldFNoYWRlclBhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTaGFkZXJp
dihQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsK
KyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51
bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhQbGF0
Zm9ybUdMT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZv
cm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMaW50
KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSA9IDA7CkBAIC0xMDE4LDE5ICsxMDE3LDE5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9i
amVjdCkgPSAwOwogCiAgICAgLy8gZ2V0VGV4UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdl
dFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9h
dCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0
dWFsIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRVbmlmb3JtCi0gICAg
dmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTGlu
dCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1l
KSA9IDA7CiAKICAgICAvLyBnZXRWZXJ0ZXhBdHRyaWIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVy
dGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZh
bHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0
dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4g
dmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9m
ZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIApAQCAtMTIzNiw3ICsx
MjM1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgPSAwOworCiAgICAgLy8gT3Ro
ZXIgZnVuY3Rpb25zLgorICAgIEdDR0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51bSBwbmFtZSk7Cisg
ICAgR0NHTGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSk7CisgICAgR0NHTGludCBn
ZXRJbnRlZ2VyKEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMaW50IGdldEFjdGl2ZVVuaWZvcm1C
bG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xl
bnVtIHBuYW1lKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBjb250ZXh0QXR0
cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lkIHNldENvbnRleHRB
dHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpIHsgbV9h
dHRycyA9IGF0dHJzOyB9CkBAIC0xMzY3LDYgKzEzNzIsMzUgQEAgcHJpdmF0ZToKICAgICBEZXN0
aW5hdGlvbiBtX2Rlc3RpbmF0aW9uOwogfTsKIAoraW5saW5lIEdDR0xmbG9hdCBHcmFwaGljc0Nv
bnRleHRHTDo6Z2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NHTGZsb2F0IHZhbHVl
WzFdIHsgfTsKKyAgICBnZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWVb
MF07Cit9CisKK2lubGluZSBHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTDo6Z2V0Qm9vbGVh
bihHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMYm9vbGVhbiB2YWx1ZVsxXSB7IH07CisgICAg
Z2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWVbMF07Cit9CisKK2lu
bGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRJbnRlZ2VyKEdDR0xlbnVtIHBuYW1l
KQoreworICAgIEdDR0xpbnQgdmFsdWVbMV0geyB9OworICAgIGdldEludGVnZXJ2KHBuYW1lLCB2
YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlWzBdOworfQorCitpbmxpbmUgR0NHTGludCBHcmFwaGlj
c0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NHTGludCB2
YWx1ZVsxXSB7IH07CisgICAgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9y
bUJsb2NrSW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlWzBdOworfQorCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IDU3NGEyODM5YTI2NzEx
YzM3ODAyNzk2NzU0OTJjZDYxMjc1MzVkNzEuLjIzMjZhYmFmMWYzYjgwNjQ1OGU2YzAyNzU3Zjlj
Yzk2ODcyZjJhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0yMCwxMiArMjAsMTQgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIC8vIEdDR0wgdHlwZXMgbWF0Y2gg
dGhlIGNvcnJlc3BvbmRpbmcgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wgRVMgMi4wCiAv
LyBoZWFkZXIgZmlsZSBnbDIuaCBmcm9tIGtocm9ub3Mub3JnLgpAQCAtNTYsMjQgKzU4LDQ3IEBA
IHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIHR5cGVkZWYgdW5zaWduZWQgR0x1
aW50OwogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4KK3N0
cnVjdCBHQ0dMU3BhbjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+CiBzdHJ1
Y3QgR0NHTFNwYW4gewotICAgIEdDR0xTcGFuKFQqLCBzaXplX3QgY291bnQpOworICAgIGV4cGxp
Y2l0IEdDR0xTcGFuKFQqIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgeyB9Cisg
ICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQorICAgICAgICA6IGRhdGEoYXJyYXkpCisg
ICAgeyB9CisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBBU1NFUlQoZGF0YSk7IEFTU0VS
VChpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CisgICAgVCYgb3BlcmF0b3IqKCkgeyBB
U1NFUlQoZGF0YSk7IHJldHVybiAqZGF0YTsgfQorICAgIFQqIGRhdGE7CisgICAgY29uc3RleHBy
IHN0YXRpYyBzaXplX3QgYnVmU2l6ZSA9IEV4dGVudDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KT4geworICAgIEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3QgYnVmU2l6ZV8pCisgICAgICAgIDog
ZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKGJ1ZlNpemVfKQorICAgIHsgfQorICAgIHRl
bXBsYXRlPHNpemVfdCBTej4gR0NHTFNwYW4oVCAoJmFycmF5KVtTel0pCisgICAgICAgIDogZGF0
YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKFN6KQorICAgIHsgfQorICAgIEdDR0xTcGFuKFdU
Rjo6VmVjdG9yPFQ+JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAg
ICAgLCBidWZTaXplKGFycmF5LnNpemUoKSkKKyAgICB7IH0KICAgICBUJiBvcGVyYXRvcltdKHNp
emVfdCBpKSB7IEFTU0VSVChkYXRhKTsgQVNTRVJUKGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFb
aV07IH0KICAgICBUJiBvcGVyYXRvciooKSB7ICBBU1NFUlQoZGF0YSk7IHJldHVybiAqZGF0YTsg
fQogICAgIFQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCBwdHJkaWZmX3QgTj4KLXN0cnVjdCBHQ0dMU3BhbjxUW05dPiB7Ci0gICAg
R0NHTFNwYW4oVCopOwotICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgQVNTRVJUKGkgPCBi
dWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KLSAgICBUJiBvcGVyYXRvciooKSB7IEFTU0VSVChk
YXRhKTsgcmV0dXJuICpkYXRhOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KK0dD
R0xTcGFuKFQgKCYpW05dKSAtPiBHQ0dMU3BhbjxULCBOPjsKIAotICAgIFQqIGRhdGE7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgYnVmU2l6ZSA9IE47Ci19OwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK0dDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JikgLT4gR0NHTFNwYW48VD47CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiBHQ0dMU3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90
IGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDFjOGJjNDI1NTBmMWMxZDk1YzMw
ODJmNjczNzZhNTY5NTA2YmZhYjMuLjRkMDI1Yjk5MzQyMjc3NmI5YjVmNGFhYmMzOWEwYzc4OTE5
NDBhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTExMyw4ICsxMTMsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0IHNoYWRlcgogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaW50IHNvdXJjZUxlbmd0aCA9
IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hB
REVSX1NPVVJDRV9MRU5HVEhfQU5HTEUsICZzb3VyY2VMZW5ndGgpOworICAgIGludCBzb3VyY2VM
ZW5ndGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURF
Ul9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKICAgICBpZiAoIXNvdXJjZUxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VMZW5n
dGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVz
IG51bGwgdGVybWluYXRpb24uCkBAIC0yNzksMTI2ICsyNzgsNiBAQCBHQ0dMZW51bSBFeHRlbnNp
b25zR0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGlu
dGVybmFsZgogfQogCiAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRCb29sZWFudlJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRG
bG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RmxvYXR2
Um9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1
c3RBTkdMRSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJ2Um9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzaGFk
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTaGFkZXJpdlJvYnVzdEFOR0xF
KHNoYWRlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRl
cml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybWZ2
Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtaXZS
b2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0
ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliUG9p
bnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcG9pbnRlcik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJl
YWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpy
b3dzLCB2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQpAQCAtNTE3LDE0ICszOTYsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRC
dWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcAogICAg
IGdsOjpHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdl
cmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUodGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwgbGVu
Z3RoLCBkYXRhKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZXJuYWxmb3Jt
YXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCkBAIC01NTcsMzAgKzQyOCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZv
cm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sCiAgICAgZ2w6
OkdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVu
Z3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QWN0aXZlVW5pZm9y
bUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRJ
bnRlZ2VyNjR2Um9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRf
Y2FzdDxHTGludDY0Kj4oZGF0YSkpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJ
bnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBi
dWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+KGRhdGEpKTsKLX0KLQog
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggMTI1Njk1Njdj
MTdjOTI2YjcxYTkxYmI0YmIxMTk1NTZiYTA2ZjE3MC4uNTdiYjkzYmM4NGMzMzU5MGZiY2Y0YjNm
N2ExZWI1YTU1YzU5MjU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC03MywyMSArNzMsNiBA
QCBwdWJsaWM6CiAgICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUo
KSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6
ZTsgfQogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIGdl
dEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKmRh
dGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzaGFk
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVu
aWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lk
ICoqcG9pbnRlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhl
bHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVy
cmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFy
YW1zKSBvdmVycmlkZTsKQEAgLTEwMywxNCArODgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJp
ZGU7IC8vIE5PTElOVAogICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludDY0ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCiAg
ICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKICAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IGY0NGMyMTk0MWEzMmI3NzJhN2IzNjkx
M2E4NmFhZDgzNGQ5MzE3NmIuLjk2OGI2NjQxYzVhMjgyODlhZTdhNTM2ZWRjMTQ0ZTdkYjMzOWZm
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0yMSw3ICsyMSw3IEBA
CiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTM1NCwxNCAr
MzU0LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHUKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgs
IHZhbHVlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUs
IEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKQEAgLTEyMDAsNyArMTE5Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHCiAKICAgICBHTGludCBtYXhVbmlmb3JtU2l6ZSA9IDA7CiAgICAgZ2w6OkdldFByb2dyYW1p
dihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4VW5pZm9ybVNpemUp
OwotCiAgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShtYXhVbmlmb3JtU2l6ZSk7IC8vIEdMX0FDVElW
RV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNp
emVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwpAQCAtMTgwNyw2NCArMTc5
OCw2NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXkoUGxh
dGZvcm1HTE9iamVjdCBhcnJheSkKICAgICBnbDo6QmluZFZlcnRleEFycmF5KGFycmF5KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEJvb2xlYW52Um9idXN0
QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFy
YW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwg
bnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1
ZSk7CisgICAgZ2w6OkdldEZsb2F0dlJvYnVzdEFOR0xFKHBuYW1lLCB2YWx1ZS5idWZTaXplLCBu
dWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KLSAgICAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEludGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpCisKK0dD
R0xpbnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBu
YW1lKQogeworICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgKnZhbHVlID0gMDsKLSAgICBnbDo6R2V0
SW50ZWdlcjY0dihwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6
OkdldEludGVnZXI2NHZSb2J1c3RBTkdMRShwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldElu
dGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2NCogdmFs
dWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGkoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KQogeworICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
KnZhbHVlID0gMDsKLSAgICBnbDo6R2V0SW50ZWdlcjY0aV92KHBuYW1lLCBpbmRleCwgdmFsdWUp
OworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldEludGVnZXI2NGlfdlJvYnVzdEFO
R0xFKHBuYW1lLCBpbmRleCwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFs
dWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQorICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RF
TkNJTF9BVFRBQ0hNRU5UKQogICAgICAgICBhdHRhY2htZW50ID0gREVQVEhfQVRUQUNITUVOVDsg
Ly8gT3IgU1RFTkNJTF9BVFRBQ0hNRU5ULCBlaXRoZXIgd29ya3MuCi0gICAgZ2w6OkdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZh
bHVlKTsKKyAgICBnbDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAg
IHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJv
Z3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWkoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZh
bHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCB2YWx1ZSk7CisgICAgICAg
IHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUocHJvZ3JhbSwg
cG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBTdHJp
bmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1H
TE9iamVjdCBzaGFkZXJzWzJdLCBHQ0dMc2l6ZWkgY291bnQsIGNvbnN0IFN0cmluZyYgbG9nKQpA
QCAtMTg5Nyw3ICsxODkxLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQ
cm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCiAgICAgR0xpbnQgbGVuZ3Ro
ID0gMDsKICAgICBnbDo6R2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0lORk9fTE9HX0xFTkdUSCwg
Jmxlbmd0aCk7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsgCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgVmVj
dG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOwpAQCAtMTkxMCwyMiArMTkwNCwyMyBAQCBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSkKICAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3Vu
dCwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1l
LCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIsIEdDR0xlbnVtIHBu
YW1lKQogewogICAgIEFTU0VSVChzaGFkZXIpOwotCisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIGdsOjpHZXRTaGFkZXJpdlJvYnVzdEFOR0xFKHNoYWRlciwgcG5hbWUsIDEsIG51bGxw
dHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCkBA
IC0xOTM4LDcgKzE5MzMsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNo
YWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCiAgICAgR0xpbnQgbGVuZ3RoID0g
MDsKICAgICBnbDo6R2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9JTkZPX0xPR19MRU5HVEgsICZsZW5n
dGgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBHTHNpemVpIHNpemUgPSAwOwogICAgIFZlY3RvcjxH
TGNoYXI+IGluZm8obGVuZ3RoKTsKQEAgLTE5NTMsNDQgKzE5NDgsNDYgQEAgU3RyaW5nIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCkKICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4
UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xm
bG9hdCB2YWx1ZSA9IDAuZjsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgdmFs
dWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFRleFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRl
cml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NH
TGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRU
ZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICBnbDo6R2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCAx
LCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFVuaWZvcm1mdihw
cm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsOjpHZXRVbmlmb3JtZnZSb2J1c3RBTkdM
RShwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZhbHVlKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OkdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsOjpHZXRVbmlm
b3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0
ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
dWludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NH
THVpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpHZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZSk7CisgICAgZ2w6OkdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKIEdDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTIwMDMsMjAgKzIwMDAsMjAgQEAgR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gZ2w6OkdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhB
dHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9h
dD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUpOwor
ICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUu
YnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0
ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsK
KyAgICBnbDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVl
LmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCiBHQ0dMc2l6ZWlwdHIgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUpCkBAIC0yMDI1LDcgKzIwMjIsNyBAQCBHQ0dMc2l6ZWlwdHIgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwg
R0NHTAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEdMdm9pZCogcG9pbnRlciA9IDA7Ci0gICAg
Z2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwbmFtZSwgJnBvaW50ZXIpOworICAg
IGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgMSwg
bnVsbHB0ciwgJnBvaW50ZXIpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsKIH0KIApAQCAtMjk0Miw2ICsy
OTM5LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhCiAgICAgZ2w6OlVuaWZvcm1NYXRyaXg0
ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0K
IAordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGdsOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dlJvYnVzdEFOR0xFKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1
ZlNpemUsIG51bGxwdHIsIHBhcmFtcy5kYXRhKTsKK30KKworCiAjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xDViogR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmFzQ1YoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXgg
NmQ1MDNiY2JhNzVhZmI4YzUwNzkwYjFjMjRlMjgyODM2YzU1ZDk0OS4uY2JhZjA2MGI1NTYzOWZk
YjU1YWI3ZWFlNDE3ZWY1ZDIwNDM5ZDkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
Y3BwCkBAIC00NjQsOCArNDY0LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6Omlu
aXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKIAogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRl
ckRpcmVjdCh2ZXJ0ZXhTaGFkZXIpOwogCi0gICAgR0NHTGludCBzdGF0dXMgPSAwOwotICAgIG1f
Y29udGV4dC0+Z2V0U2hhZGVyaXYodmVydGV4U2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIEdDR0xpbnQgc3RhdHVzID0gbV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHZlcnRleFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVT
KTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIFZlcnRleCBzaGFk
ZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwgdGhpcyk7CiAgICAgICAgIG1fY29udGV4dC0+ZGVsZXRl
U2hhZGVyKHZlcnRleFNoYWRlcik7CkBAIC00ODAsNyArNDc5LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKIAogICAgIG1fY29u
dGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdChmcmFnbWVudFNoYWRlcik7CiAKLSAgICBtX2NvbnRl
eHQtPmdldFNoYWRlcml2KGZyYWdtZW50U2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElM
RV9TVEFUVVMsICZzdGF0dXMpOworICAgIHN0YXR1cyA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShm
cmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTKTsKICAgICBp
ZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5H
TEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIEZyYWdtZW50IHNoYWRlciBmYWls
ZWQgdG8gY29tcGlsZS4iLCB0aGlzKTsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIo
dmVydGV4U2hhZGVyKTsKQEAgLTQ5Myw3ICs0OTIsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogICAgIG1fY29udGV4dC0+YXR0
YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOwogICAgIG1fY29udGV4dC0+
bGlua1Byb2dyYW0obV95dXZQcm9ncmFtKTsKIAotICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2
KG1feXV2UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTLCAmc3RhdHVzKTsK
KyAgICBzdGF0dXMgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKG1feXV2UHJvZ3JhbSwgR3JhcGhp
Y3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBM
T0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRP
YmplY3RzKCVwKSAtIFByb2dyYW0gZmFpbGVkIHRvIGxpbmsuIiwgdGhpcyk7CiAgICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDgwNjEwZGU3ZDQzMWNmNDI2Mjk5N2Y0ZmZjZTM3YjZi
ZTFlZTc0MDQuLjM0ZmVmMDViNjIzNzg3MGQwNWJkMWEzMmMyZjQ1YTQxOTFiM2Y3MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5n
JiBuYW1lKQogICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXMgPSBjb21w
aWxlci5nZXRSZXNvdXJjZXMoKTsKICAgICAgICAgaWYgKCFBTkdMRVJlc291cmNlcy5FWFRfZHJh
d19idWZmZXJzKSB7CiAgICAgICAgICAgICBBTkdMRVJlc291cmNlcy5FWFRfZHJhd19idWZmZXJz
ID0gMTsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpN
QVhfRFJBV19CVUZGRVJTX0VYVCwgJkFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzKTsKKyAg
ICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJ
bnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwogICAgICAgICAgICAg
Y29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKICAgICAgICAgfQogICAgIH0g
ZWxzZSBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpIHsKQEAgLTE3Miw3
ICsxNzIsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogCiAgICAgQU5HTEVXZWJLaXRCcmlk
Z2UmIGNvbXBpbGVyID0gbV9jb250ZXh0LT5tX2NvbXBpbGVyOwogCi0gICAgbV9jb250ZXh0LT5n
ZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFERVJfVFlQRSwgJkdMc2hh
ZGVyVHlwZSk7CisgICAgR0xzaGFkZXJUeXBlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRl
ciwgR3JhcGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFKTsKIAogICAgIGlmIChHTHNoYWRlclR5
cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9TSEFERVIpCiAgICAgICAgIHNoYWRlclR5
cGUgPSBTSEFERVJfVFlQRV9WRVJURVg7CkBAIC0yNTQsODEgKzI1NCw2IEBAIHZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50LCBpbnQsIEdDR0xz
aXplaSwgR0NHTGluCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29s
ZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMYm9v
bGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcnZSb2J1c3RBTkdM
RShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NH
THVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50
LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYml2Um9i
dXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhB
dHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWks
IEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICos
IEdDR0xzaXplaSAqLCB2b2lkICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC00MDAsMTEgKzMyNSw2IEBAIHZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBHQ0dMZW51bSwKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVn
ZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCiB7CiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC00MzAsMTYgKzM1MCw2
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQogewogICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IDA0ODk0YjkxYzgyY2M0YjFiMjA5
YTdhZmQyMjljYmRjYTlhMDFhNDMuLjk3ZWVkZmI3NDg1YzgzMmY3OTNjOGNmZjBmYTE3ZmJmZmJl
NjU4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTY5LDIxICs2
OSw2IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplOyB9CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZv
aWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXJ2Um9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRV
bmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoq
cG9pbnRlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgs
IGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlk
ZTsKICAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CkBAIC05OSwx
NCArODQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
KipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgaW50ICpkYXRhKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEludGVybmFsZm9y
bWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2Vy
NjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVn
ZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRlOwogICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IGFiOGNiNTRmNWU4NzllZjRiOGE5
MGQxOWE3ZWM5MmM4OWNlMjA1N2IuLmQyOGY0YTAzMWViZGM0ODM4NzVkMzk4NDg3ZDU3ODc0OGZk
ZTQ3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtNzQsMTEgKzc0LDgg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRm9yIEdMX0VYVF9yb2J1c3RuZXNz
LCBjaGVjayB0aGF0IHRoZSBjb250ZXh0IHN1cHBvcnRzIHJvYnVzdCBhY2Nlc3MuCi0gICAgaWYg
KG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNzIikgewotICAgICAgICBHTGludCByb2J1c3RBY2Nl
c3MgPSBHTF9GQUxTRTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25z
R0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUywgJnJvYnVzdEFjY2Vzcyk7Ci0gICAgICAgIHJldHVy
biByb2J1c3RBY2Nlc3MgPT0gR0xfVFJVRTsKLSAgICB9CisgICAgaWYgKG5hbWUgPT0gIkdMX0VY
VF9yb2J1c3RuZXNzIikKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRl
bnNpb25zR0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUykgPT0gR0xfVFJVRTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAwMGI3YjQy
ZDE3ZDM4ZTY2YzA0ZDgxYjg4MzY2N2IwODhlMDFhZDE5Li5iMTIzYjY2ZTZhNjliY2U5ZDFhYzIy
ZDZmNWU5YzJhZWJlZDA3Y2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApA
QCAtMTk3LDM1ICsxOTcsMzQgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybUlt
cGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYp
OwogICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBz
aGFkZXJzKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRCb29sZWFudihH
Q0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEJ1
ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKICAgICBHQ0dM
ZW51bSBnZXRFcnJvcigpIGZpbmFsOwotICAgIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgR0NH
TGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0
SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsK
LSAgICB2b2lkIGdldEludGVnZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50NjQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEludGVnZXI2NGlfdihH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2NCogdmFsdWUpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0
KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UHJvZ3Jh
bWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAjaWYg
IVVTRShBTkdMRSkKICAgICB2b2lkIGdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSk7CiAj
ZW5kaWYgLy8gIVVTRShBTkdMRSkKICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZv
cm1HTE9iamVjdCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZv
cm1HTE9iamVjdFsyXSwgR0NHTHNpemVpLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmpl
Y3QsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUp
IGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CiAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9i
amVjdCkgZmluYWw7CiAgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0g
c2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xp
bnQqIHByZWNpc2lvbikgZmluYWw7CiAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9y
bUdMT2JqZWN0KSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpIGZp
bmFsOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZv
cm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQq
IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpIGZpbmFsOworICAgIEdD
R0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUp
IGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
IGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIHZv
aWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRVbmlm
b3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsK
LSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTQzOCw2ICs0MzcsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAg
dm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAKICNpZiAhVVNFKEFOR0xFKQogICAg
IHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KTsKQEAgLTUzNyw3ICs1MzcsNyBAQCBwcml2YXRlOgogICAgIC8vIGltcGxlbWVu
dGF0aW9uLgogICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwot
ICAgIAorCiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3aW5nIG9wZXJhdGlvbiBsZWF2
ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAgICAgdm9pZCBjaGVja0dQVVN0YXR1
cygpOwogCkBAIC01ODksNyArNTg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgaXNWYWxp
ZChmYWxzZSkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFNoYWRl
clN5bWJvbE1hcCYgc3ltYm9sTWFwKGVudW0gQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5
cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChzeW1ib2xUeXBlID09IFNIQURFUl9T
WU1CT0xfVFlQRV9BVFRSSUJVVEUgfHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVf
VU5JRk9STSB8fCBzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9WQVJZSU5HKTsKQEAg
LTY4Miw3ICs2ODIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHVzaW5nIEJvdW5kVGV4dHVyZU1h
cCA9IEhhc2hNYXA8R0NHTGVudW0sCiAgICAgICAgICAgICBzdGQ6OnBhaXI8R0NHTHVpbnQsIEdD
R0xlbnVtPiwKLSAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sIAorICAgICAgICAg
ICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwKICAgICAgICAgICAgIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LAogICAgICAgICAgICAgV1RGOjpQYWlySGFzaFRy
YWl0czxXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+CiAgICAgICAgID47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDc1MGVkMzI2ZWNl
NjVlODhmNmI0MTM2MDE1YzRmOTMzNzQ0ODljYTUuLjEzNDIyYmM1NmUyNmFhZDkxYmY4N2YyZWVh
YjZjY2UyZDNlMDcxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGUKICAgICA6
OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYo
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVl
KQogewogICAgIC8vIE5lZWQgdG8gZW11bGF0ZSBNQVhfRlJBR01FTlQvVkVSVEVYX1VOSUZPUk1f
VkVDVE9SUyBhbmQgTUFYX1ZBUllJTkdfVkVDVE9SUwogICAgIC8vIGJlY2F1c2UgZGVza3RvcCBH
TCdzIGNvcnJlc3BvbmRpbmcgcXVlcmllcyByZXR1cm4gdGhlIG51bWJlciBvZiBjb21wb25lbnRz
CkBAIC0yNzIsMzkgKzI3MiwzOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJ
bnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCiAgICAgc3dpdGNoIChwbmFt
ZSkgewogI2lmIFVTRShPUEVOR0wpCiAgICAgY2FzZSBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNU
T1JTOgotICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09N
UE9ORU5UUywgdmFsdWUpOworICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5U
X1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUuZGF0YSgpKTsKICAgICAgICAgKnZhbHVlIC89IDQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6Ci0g
ICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUywg
dmFsdWUpOworICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NP
TVBPTkVOVFMsIHZhbHVlLmRhdGEoKSk7CiAgICAgICAgICp2YWx1ZSAvPSA0OwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIE1BWF9WQVJZSU5HX1ZFQ1RPUlM6CiAgICAgICAgIGlmIChpc0dMRVMy
Q29tcGxpYW50KCkpIHsKICAgICAgICAgICAgIEFTU0VSVCg6OmdsR2V0RXJyb3IoKSA9PSBHTF9O
T19FUlJPUik7Ci0gICAgICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVD
VE9SUywgdmFsdWUpOworICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5H
X1ZFQ1RPUlMsIHZhbHVlLmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAoOjpnbEdldEVycm9yKCkg
PT0gR0xfSU5WQUxJRF9FTlVNKSB7Ci0gICAgICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdM
X01BWF9WQVJZSU5HX0NPTVBPTkVOVFMsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICA6OmdsR2V0
SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUywgdmFsdWUuZGF0YSgpKTsKICAgICAg
ICAgICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVl
KTsKKyAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZh
bHVlLmRhdGEoKSk7CiAgICAgICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgTUFYX1RFWFRVUkVfU0laRToKLSAgICAgICAgOjpn
bEdldEludGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldElu
dGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUsIHZhbHVlLmRhdGEoKSk7CiAgICAgICAgIGlmIChnZXRF
eHRlbnNpb25zKCkucmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkpCiAgICAg
ICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbig0MDk2LCAqdmFsdWUpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRl
Z2VydihNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJ
bnRlZ2VydihNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFLCB2YWx1ZS5kYXRhKCkpOwogICAgICAg
ICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6
ZSgpKQogICAgICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oMTAyNCwgKnZhbHVlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2
YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuZGF0YSgpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
CmluZGV4IGIwYzFmMWRmZDQzZDQxNTA0MjdmZjUyMWFjZjY4NDM2MjcyNDAwNWEuLjM3YTMyZTEw
ZGQyOGE2NmFmMzliYWIzZjM5ODYzMjNjZTFlMWQyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAg
ICAgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyBzY29wZWRTY2lzc29yKEdMX1NDSVNTT1JfVEVTVCwg
R0xfRkFMU0UpOwogICAgIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcgc2NvcGVkRGl0aGVyKEdMX0RJ
VEhFUiwgR0xfRkFMU0UpOwotICAgIAorCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IHJlc2hh
cGVGQk9zKEludFNpemUod2lkdGgsIGhlaWdodCkpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSByZW5k
ZXJidWZmZXJzIHRvIDAuCkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIDo6Z2xCbGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3Rvcik7Ci19
ICAgICAgIAorfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmNTZXBh
cmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEs
IEdDR0xlbnVtIGRzdEFscGhhKQogewpAQCAtNjQzLDExICs2NDMsMTEgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikK
ICAgICBMT0coV2ViR0wsICItLS0gYmVnaW4gdHJhbnNsYXRlZCBzaGFkZXIgc291cmNlIC0tLVxu
JXNcbi0tLSBlbmQgdHJhbnNsYXRlZCBzaGFkZXIgc291cmNlIC0tLSIsIHRyYW5zbGF0ZWRTaGFk
ZXJQdHIpOwogCiAgICAgOjpnbFNoYWRlclNvdXJjZShzaGFkZXIsIDEsICZ0cmFuc2xhdGVkU2hh
ZGVyUHRyLCAmdHJhbnNsYXRlZFNoYWRlckxlbmd0aCk7Ci0gICAgCisKICAgICA6OmdsQ29tcGls
ZVNoYWRlcihzaGFkZXIpOwotICAgIAorCiAgICAgaW50IGNvbXBpbGVTdGF0dXM7Ci0gICAgCisK
ICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBDT01QSUxFX1NUQVRVUywgJmNvbXBpbGVTdGF0
dXMpOwogCiAgICAgU2hhZGVyU291cmNlTWFwOjppdGVyYXRvciByZXN1bHQgPSBtX3NoYWRlclNv
dXJjZU1hcC5maW5kKHNoYWRlcik7CkBAIC04OTQsOSArODk0LDkgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmliSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0wKICAgICA6OmdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhBdHRy
aWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmRhdGEoKSk7CiAgICAg
aWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBTdHJp
bmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1C
T0xfVFlQRV9BVFRSSUJVVEUsIFN0cmluZyhuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCkpOwotICAg
IAorCiAjaWZuZGVmIE5ERUJVRwogICAgIFN0cmluZyB1bmlmb3JtTmFtZShuYW1lLmRhdGEoKSwg
bmFtZUxlbmd0aCk7CiAgICAgTE9HKFdlYkdMLCAiUHJvZ3JhbSAlZCBpcyBtYXBwaW5nIGFjdGl2
ZSBhdHRyaWJ1dGUgJWQgZnJvbSAnJXMnIHRvICclcyciLCBwcm9ncmFtLCBpbmRleCwgdW5pZm9y
bU5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luYWxOYW1lLnV0ZjgoKS5kYXRhKCkpOwpAQCAtOTE2
LDcgKzkxNiw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJp
YihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50CiAgICAgICAgIGdldE5vbkJ1aWx0
SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLCBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX0FU
VFJJQlVURVMsICZzeW1ib2xDb3VudCk7CiAgICAgICAgIHJlc3VsdCA9IG1fc2hhZGVyUHJvZ3Jh
bVN5bWJvbENvdW50TWFwLmZpbmQocHJvZ3JhbSk7CiAgICAgfQotICAgIAorCiAgICAgQWN0aXZl
U2hhZGVyU3ltYm9sQ291bnRzJiBzeW1ib2xDb3VudHMgPSByZXN1bHQtPnZhbHVlOwogICAgIEdD
R0x1aW50IHJhd0luZGV4ID0gKGluZGV4IDwgc3ltYm9sQ291bnRzLmZpbHRlcmVkVG9BY3R1YWxB
dHRyaWJ1dGVJbmRleE1hcC5zaXplKCkpID8gc3ltYm9sQ291bnRzLmZpbHRlcmVkVG9BY3R1YWxB
dHRyaWJ1dGVJbmRleE1hcFtpbmRleF0gOiAtMTsKIApAQCAtOTQzLDE0ICs5NDMsMTQgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0cKICAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBp
bmRleCwgbWF4VW5pZm9ybVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUuZGF0
YSgpKTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
KwogICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwg
U0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0sIFN0cmluZyhuYW1lLmRhdGEoKSwgbmFtZUxlbmd0
aCkpOwotICAgIAorCiAjaWZuZGVmIE5ERUJVRwogICAgIFN0cmluZyB1bmlmb3JtTmFtZShuYW1l
LmRhdGEoKSwgbmFtZUxlbmd0aCk7CiAgICAgTE9HKFdlYkdMLCAiUHJvZ3JhbSAlZCBpcyBtYXBw
aW5nIGFjdGl2ZSB1bmlmb3JtICVkIGZyb20gJyVzJyB0byAnJXMnIiwgcHJvZ3JhbSwgaW5kZXgs
IHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFtZS51dGY4KCkuZGF0YSgpKTsK
ICNlbmRpZgotICAgIAorCiAgICAgaW5mby5uYW1lID0gb3JpZ2luYWxOYW1lOwogICAgIGluZm8u
dHlwZSA9IHR5cGU7CiAgICAgaW5mby5zaXplID0gc2l6ZTsKQEAgLTk2NSwxMCArOTY1LDEwIEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMdWluCiAgICAgICAgIGdldE5vbkJ1aWx0SW5BY3RpdmVTeW1i
b2xDb3VudChwcm9ncmFtLCBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmc3lt
Ym9sQ291bnQpOwogICAgICAgICByZXN1bHQgPSBtX3NoYWRlclByb2dyYW1TeW1ib2xDb3VudE1h
cC5maW5kKHByb2dyYW0pOwogICAgIH0KLSAgICAKKwogICAgIEFjdGl2ZVNoYWRlclN5bWJvbENv
dW50cyYgc3ltYm9sQ291bnRzID0gcmVzdWx0LT52YWx1ZTsKICAgICBHQ0dMdWludCByYXdJbmRl
eCA9IChpbmRleCA8IHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0dWFsVW5pZm9ybUluZGV4TWFw
LnNpemUoKSkgPyBzeW1ib2xDb3VudHMuZmlsdGVyZWRUb0FjdHVhbFVuaWZvcm1JbmRleE1hcFtp
bmRleF0gOiAtMTsKLSAgICAKKwogICAgIHJldHVybiBnZXRBY3RpdmVVbmlmb3JtSW1wbChwcm9n
cmFtLCByYXdJbmRleCwgaW5mbyk7CiB9CiAKQEAgLTEwNjksNyArMTA2OSw3IEBAIFN0cmluZyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgQU5HCiAgICAgR0NHTHNpemVpIGNvdW50OwogICAgIFBsYXRmb3JtR0xPYmpl
Y3Qgc2hhZGVyc1syXTsKICAgICBnZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgMiwgJmNvdW50
LCBzaGFkZXJzKTsKLSAgICAKKwogICAgIGZvciAoR0NHTHNpemVpIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgewogICAgICAgICBhdXRvIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3ltYm9sSW5TaGFk
ZXJTb3VyY2VNYXAoc2hhZGVyc1tpXSwgc3ltYm9sVHlwZSwgbmFtZSk7CiAgICAgICAgIGlmIChv
cmlnaW5hbE5hbWUpCkBAIC0xMTA3LDcgKzExMDcsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6Om1hcHBlZFN5bWJvbE5hbWUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdLCBz
aQogICAgICAgICAgICAgU2hhZGVyU291cmNlTWFwOjppdGVyYXRvciByZXN1bHQgPSBtX3NoYWRl
clNvdXJjZU1hcC5maW5kKHNoYWRlcnNbaV0pOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBt
X3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIAorCiAgICAgICAgICAgICBjb25zdCBTaGFkZXJTeW1ib2xNYXAmIHN5bWJvbE1hcCA9
IHJlc3VsdC0+dmFsdWUuc3ltYm9sTWFwKHN0YXRpY19jYXN0PGVudW0gQU5HTEVTaGFkZXJTeW1i
b2xUeXBlPihzeW1ib2xUeXBlKSk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN5bWJv
bEVudHJ5IDogc3ltYm9sTWFwKSB7CiAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gc3ltYm9s
RW50cnkudmFsdWUubWFwcGVkTmFtZS5jX3N0cigpKQpAQCAtMTY4Miw3ICsxNjgyLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9i
amVjdCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE2
OTUsNyArMTY5NSw3IEBAIEdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1Zl
cnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKICAg
ICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotICAgIAorCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCkBAIC0xNzE3LDEyICsxNzE3LDEyIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdM
T2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGJvb2xlYW4+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOwor
ICAgIDo6Z2xHZXRCb29sZWFudihwbmFtZSwgdmFsdWUuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCkBAIC0xNzMzLDY1ICsxNzMzLDU3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hCiAgICAgOjpnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRh
cmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
ZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIDo6Z2xHZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdihHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKQotewotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdmFsdWUgPSAwOwotICAgIC8vIEZJWE1FIDE0MTE3
ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0Y2ggb3ZlciB0byB1c2lu
ZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdlYkdMMiBjb250ZXh0IHVz
aW5nIE9wZW5HTCBFUyAzLjAuCi0gICAgLy8gOjpnbEdldEludGVnZXJpX3YocG5hbWUsIGluZGV4
LCB2YWx1ZSk7CisgICAgOjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUuZGF0YSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
KnZhbHVlID0gMDsKKyAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwogICAgIC8vIEZJWE1FIDE0MTE3
ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0Y2ggb3ZlciB0byB1c2lu
ZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdlYkdMMiBjb250ZXh0IHVz
aW5nIE9wZW5HTCBFUyAzLjAuCiAgICAgLy8gOjpnbEdldEludGVnZXI2NHYocG5hbWUsIHZhbHVl
KTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2
NCogdmFsdWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2
NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShw
bmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAqdmFsdWUgPSAwOworICAgIEdDR0xpbnQ2
NCB2YWx1ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3
ZSBtdXN0IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQg
aW5pdGlhbGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KICAgICAv
LyA6OmdsR2V0SW50ZWdlcjY0aV92KHBuYW1lLCBpbmRleCwgdmFsdWUpOworICAgIHJldHVybiB2
YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUKIHsKKyAgICBHQ0dMaW50
IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47Ci0KICAgICBpZiAoYXR0YWNobWVudCA9PSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCiAg
ICAgICAgIGF0dGFjaG1lbnQgPSBERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBTVEVOQ0lMX0FUVEFD
SE1FTlQsIGVpdGhlciB3b3Jrcy4KLSAgICA6OmdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQs
IHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFt
ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47Ci0K
LSAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCB2YWx1ZSk7CisgICAgR0NHTGlu
dCB2YWx1ZSBwPSAwOworICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsICZ2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCkBAIC0xODI0LDcgKzE4MTYsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291
bnQoUGxhdGZvcm1HTE9iamVjdCBwcgogCiAgICAgICAgIHN5bWJvbENvdW50cy5maWx0ZXJlZFRv
QWN0dWFsQXR0cmlidXRlSW5kZXhNYXAuYXBwZW5kKGkpOwogICAgIH0KLSAgICAKKwogICAgIC8v
IERvIHRoZSBzYW1lIGZvciB1bmlmb3Jtcy4KICAgICBHQ0dMaW50IHVuaWZvcm1Db3VudCA9IDA7
CiAgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBBQ1RJVkVfVU5JRk9STVMsICZ1bmlmb3Jt
Q291bnQpOwpAQCAtMTgzMywxMCArMTgyNSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQoUGxhdGZvcm1HTE9iamVjdCBwcgog
ICAgICAgICBnZXRBY3RpdmVVbmlmb3JtSW1wbChwcm9ncmFtLCBpLCBpbmZvKTsKICAgICAgICAg
aWYgKGluZm8ubmFtZS5zdGFydHNXaXRoKCJnbF8iKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAKKwogICAgICAgICBzeW1ib2xDb3VudHMuZmlsdGVyZWRUb0FjdHVhbFVuaWZvcm1J
bmRleE1hcC5hcHBlbmQoaSk7CiAgICAgfQotICAgIAorCiAgICAgKnZhbHVlID0gc3ltYm9sQ291
bnRzLmNvdW50Rm9yVHlwZShwbmFtZSk7CiB9CiAKQEAgLTE4NDcsNyArMTgzOSw3IEBAIFN0cmlu
ZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyhQbGF0Zm9ybUdM
T2JqZWN0IHNoYWRlcnNbMl0sCiAgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdF
eHAoIndlYmdsX1swMTIzNDU2Nzg5YWJjZGVmQUJDREVGXSsiKTsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgcHJvY2Vzc2VkTG9nOwotICAgIAorCiAgICAgLy8gQU5HTEUgaW5zZXJ0cyBhICIjZXh0ZW5z
aW9uIiBsaW5lIGludG8gdGhlIHNoYWRlciBzb3VyY2UgdGhhdAogICAgIC8vIGNhdXNlcyBhIHdh
cm5pbmcgaW4gc29tZSBjb21waWxlcnMuIFRoZXJlIGlzIG5vIHBvaW50IHNob3dpbmcKICAgICAv
LyB0aGlzIHdhcm5pbmcgdG8gdGhlIHVzZXIgc2luY2UgdGhleSBkaWRuJ3Qgd3JpdGUgdGhlIGNv
ZGUgdGhhdApAQCAtMTg4Niw3ICsxODc4LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCiAgICAgR0xp
bnQgbGVuZ3RoID0gMDsKICAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0lORk9fTE9H
X0xFTkdUSCwgJmxlbmd0aCk7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBTdHJp
bmcoKTsgCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7
CiAgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOwpAQCAtMTg5OSwyOCArMTg5MSwyOSBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSkKICAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFk
ZXJzLCBjb3VudCwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVy
biB2YWx1ZTsKKyAgICA6OmdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBw
bmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsK
ICAgICBBU1NFUlQoc2hhZGVyKTsKLQorICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZh
bHVlOwogCiAKICAgICBjb25zdCBhdXRvJiByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5k
KHNoYWRlcik7Ci0gICAgCisKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBERUxFVEVf
U1RBVFVTOgogICAgIGNhc2UgU0hBREVSX1RZUEU6Ci0gICAgICAgIDo6Z2xHZXRTaGFkZXJpdihz
aGFkZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBu
YW1lLCAmdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENPTVBJTEVfU1RBVFVTOgog
ICAgICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKSB7CkBAIC0xOTQy
LDYgKzE5MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbQogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfRU5VTSk7CiAgICAgfQorICAgIHJldHVybiB2
YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZv
TG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpAQCAtMTk1Myw3ICsxOTQ3LDcgQEAgU3RyaW5n
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmpl
Y3Qgc2hhZGVyKQogCiAgICAgY29uc3QgYXV0byYgcmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAu
ZmluZChzaGFkZXIpOwogICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsgCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAog
ICAgIGNvbnN0IFNoYWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJlc3VsdC0+dmFsdWU7CiAgICAg
aWYgKCFlbnRyeS5pc1ZhbGlkKQpAQCAtMTk2Miw3ICsxOTU2LDcgQEAgU3RyaW5nIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KQogICAgIEdMaW50IGxlbmd0aCA9IDA7CiAgICAgOjpnbEdldFNoYWRlcml2KHNoYWRlciwgR0xf
SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOyAKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgR0xzaXplaSBz
aXplID0gMDsKICAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7CkBAIC0xOTgxLDQ0ICsx
OTc1LDQ2IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyU291cmNl
KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogCiAgICAgY29uc3QgYXV0byYgcmVzdWx0ID0gbV9z
aGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJT
b3VyY2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsgCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAogICAgIHJldHVybiByZXN1bHQtPnZhbHVlLnNvdXJjZTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VGV4UGFyYW1l
dGVyZnYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAg
OjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0
ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dD
R0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0
VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFs
dWU7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Cisg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRV
bmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NH
TGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICA6OmdsR2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZSk7CisgICAgOjpnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuZGF0YSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZhbHVlKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpn
bEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIDo6Z2xHZXRVbmlm
b3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
cHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKQEAgLTIwMzcsMjAgKzIwMzMs
MjAgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9u
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gOjpnbEdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCBtYXBwZWROYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgs
IHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwg
dmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xH
ZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0VmVydGV4
QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAogR0NHTHNpemVpcHRyIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lKQpAQCAtMzE0Myw3ICszMTM5LDEyIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwKICAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKIH0KIAotCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAgVU5V
U0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwor
ICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNT
X0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8fCBVU0UoT1BFTkdMX0VTKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA2MGZkZmM2NWY4NzM5NTg5NTc5
NWE4NGVmMWUwOWFiZjZkN2FhODQzLi4wNTU3MTI0NDA5MTliMjcyZTE5MzFlM2UxM2UxN2UxNWQ2
ZmQxYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0x
OTYsMTIgKzE5NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZm
ZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIDo6Z2xSZW5kZXJi
dWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRl
Z2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldElu
dGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5k
YXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVj
aXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwg
R0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414223</attachid>
            <date>2020-11-16 05:31:08 -0800</date>
            <delta_ts>2020-11-16 05:38:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201116153106.patch</filename>
            <type>text/plain</type>
            <size>116787</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg0YWYwMDZmZDM3ZGQx
MmM5MmE5MzUxMDc3MzBjZTg2Y2QzN2ZiOC4uNzI2N2ZmZWNhY2M4MTQwZTVhNTlkYTJjZjUyNWI3
YjA2OGY1MjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyOSBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRo
ZSB2YWx1ZSBpcyBhIG5vcm1hbCB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIHJlZHVjZXMgdGhlIHJp
c2sKKyAgICAgICAgb2YgaGF2aW5nIHVuaW5pdGlhbGl6ZWQgcmVjZWl2ZSBsb2NhdGlvbi4KKwor
ICAgICAgICBDaGFuZ2UgdGhlIGdldHRlcnMgdGhhdCBhcmUgb25seSB1c2VkIHRvIG9idGFpbiBz
aW5nbGUgdmFsdWVzIHNvCisgICAgICAgIHRoYXQgdGhlIGdldHRlciBpdHNlbGYgaGFzIHRoZSBy
ZXR1cm4gdmFsdWUuCisgICAgICAgIEFkZCBhIHNpbmdsZS12YWx1ZSBnZXR0ZXIgZm9yIGdldHRl
cnMgdGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gYWxzbworICAgICAgICBtdWx0aXBsZSB2YWx1ZXMu
CisKKyAgICAgICAgQWRkIEdDR0xTcGFuIHR5cGUgdGhhdCBpcyB1c2VkIHRvIGNvbW11bmljYXRl
IHBhaXI6IHB0ciwgbnVtYmVyIG9mCisgICAgICAgIGVsZW1lbnRzLgorCisgICAgICAgIFVzZSB0
aGUgUm9idXN0QU5HTEUgdmFyaWFudHMgb2YgdGhlIEdMIEFQSSBpbXBsZW1lbnRhdGlvbiB0byBv
YnRhaW4KKyAgICAgICAgdGhlIHZhbHVlcy4KKworICAgICAgICBSZW1vdmUgdGhlIGNvcnJlc3Bv
bmRpbmcgUm9idXN0QU5HTEUgdmFyaWFudHMgZnJvbSBFeHRlbnNpb25zR0wsIHRoZXkgYXJlCisg
ICAgICAgIGRlYWQgY29kZSBhbmQgdW51c2VkLgorCisgICAgICAgIFRoZSB0eXBlIEdDR0xTcGFu
IHdpbGwgYmUgdXNlZCB0byBzaW1wbGlmeSB0aGUgR1BVIHByb2Nlc3MgaW1wbGVtZW50YXRpb24s
CisgICAgICAgIHNpbmNlIHRoZSBidWZTaXplIHdpbGwgYmUgZXhwbGljaXRseSBhc3NvY2lhdGVk
IGluIHRoZSBwYXNzZWQgZGF0YSBwdHIsCisgICAgICAgIGluc2lkZSB0aGUgR0NHTFNwYW4gdHlw
ZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NHTFNwYW4gd2lsbCBiZSB1c2Vk
IGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAgaS5lLiBhcmJpdHJhcnkgYnVm
ZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKworICAgICAgICBGaXhlcyBidWdz
IHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFsdWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlIGxvY2F0aW9u
IG9mIHRoZQorICAgICAgICBnb3R0ZW4gcHJvcGVyeS4gVGhpcyB2YWx1ZSB3b3VsZCBiZSB1bndy
aXR0ZW4gaW4gZWRnZS1jYXNlcyBsaWtlIEdMIGVycm9ycywgYW5kCisgICAgICAgIHRodXMgdGhl
IHJlYWQgd291bGQgdG91Y2ggdW51aW5pdGlhbGl6ZWQgdmFsdWUuCisKKyAgICAgICAgRml4ZXMg
YSBidWcgd2hlcmUgdW5pZm9ybSBibG9jayB2YXJpYWJsZXMgY29kZSB3b3VsZCBwYXNzIGluIHRv
byBsYXJnZSBidWZmZXIKKyAgICAgICAgc2l6ZSB0byB0aGUgUm9idXN0QU5HTEUgY2FsbC4gVGhl
IGJ1ZlNpemUgcmVmZXJzIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMsIGJ1dAorICAgICAgICB0
aGUgY29kZSBwYXNzZWQgaW4gdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaS5lLiBudW1iZXIgb2Yg
ZWxlbWVudHMgKiBzaXplIG9mCisgICAgICAgIGVsZW1lbnQpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgYSByZWZhY3Rvci4KKworICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFw
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dFRleFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRJbmRleGVkUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4
RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3
QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2Zp
ZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXpl
QXR0YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dE1heERyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUlu
ZGV4QXJyYXlQcmVjaXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRTaGFkZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCb29sZWFuUGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZsb2F0UGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEludFBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRV
bnNpZ25lZEludFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdFZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2ht
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6Z2V0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6Z2V0SW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNwYW4pOgorICAg
ICAgICAoR0NHTFNwYW46Om9wZXJhdG9yW10pOgorICAgICAgICAoR0NHTFNwYW46Om9wZXJhdG9y
Kik6CisgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RmxvYXR2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVV
bmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2cp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNoYWRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJp
Yk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEludGVnZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJ
bnRlZ2VyNjRpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFw
aGljc0NvbnRleHRHTENWQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRCb29sZWFudlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldEZsb2F0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldEludGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4
QXR0cmliZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhB
dHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdl
cjY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVBdHRyaWJJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVV
bmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpvcmln
aW5hbFN5bWJvbE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRlbGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEludGVnZXI2NHYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFByb2dyYW1pdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbm1hbmds
ZWRJbmZvTG9nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRl
cml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJJbmZvTG9nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJTb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmZ2KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJh
bWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybWZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VmVydGV4QXR0cmliZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1
YkltYWdlMkQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlQnVm
ZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjcmVhdGVGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlUHJvZ3JhbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlUmVuZGVyYnVmZmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFk
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZVRleHR1cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmRlbGV0ZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlRnJhbWVidWZmZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVByb2dyYW0pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGVsZXRlU2hhZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVUZXh0dXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzeW50aGVzaXplR0xFcnJvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0Nv
bnRleHRDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjptYXJrTGF5ZXJDb21wb3NpdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZvcmNlQ29u
dGV4dExvc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlY3ljbGVDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJ
bWFnZTJERGlyZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYkRpdmlzb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnByaW1pdGl2ZVJlc3RhcnRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6Om1hcEJ1ZmZlclJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmcmFtZWJ1ZmZlclRleHR1
cmVMYXllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRCdWZm
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEludGVybmFsZm9ybWF0aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3RvcmFn
ZTJEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp0ZXhTdG9yYWdlM0QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvcHlUZXhTdWJJbWFnZTNEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFnRGF0YUxvY2F0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVp
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMnVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtM3VpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtNHVpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3gyZnYpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgy
eDRmdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDR4MmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliSTRpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVp
dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliSVBvaW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmRyYXdSYW5nZUVsZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVycyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJp
dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y2xlYXJCdWZmZXJ1aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZmkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVF1ZXJ5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVRdWVy
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
aXNRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmVnaW5RdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2FtcGxl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
ZGVsZXRlU2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aXNTYW1wbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kU2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJh
bWV0ZXJmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1N5
bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmRlbGV0ZVN5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNsaWVudFdhaXRTeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGF1c2VUcmFuc2Zvcm1GZWVk
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRCdWZmZXJCYXNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyUmFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1JbmRpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jtcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVT
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRl
Z2Vydik6CisKIDIwMjAtMTEtMTYgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaW5hbCByZWZhY3RvciBmb3IgV2ViR0wgaW1wbGVtZW50YXRpb24gdG8g
dXNlIG9ubHkgR3JhcGhpY3NDb250ZXh0R0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcAppbmRleCAyZWYxMGIwYTRmMzQ2ZWZlMWI5MzhlNDZlMDA1M2E4YTMzOTQ1MzQ0Li4w
NGIzMGY4ZjY0NjQxNDY4MDY3ZTMwOTI2ZTc0ZTRmMmQ5YzE4YjlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgRXhjZXB0aW9uT3I8
UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRt
YXAoKQogICAgICAgICAvLyBjcmVhdGVzIGEgbmV3IGJhY2tpbmcgc3RvcmUuIFNpbmNlIHdlJ3Jl
IG5vdCBkb2luZyB0aGF0IHlldCwgd2UKICAgICAgICAgLy8gbmVlZCB0byBlcmFzZSB3aGF0J3Mg
dGhlcmUuCiAKLSAgICAgICAgR0NHTGZsb2F0IGNsZWFyQ29sb3JbNF07CisgICAgICAgIEdDR0xm
bG9hdCBjbGVhckNvbG9yWzRdIHsgfTsKICAgICAgICAgZ2MzZC0+Z2V0RmxvYXR2KEdyYXBoaWNz
Q29udGV4dEdMOjpDT0xPUl9DTEVBUl9WQUxVRSwgY2xlYXJDb2xvcik7CiAgICAgICAgIGdjM2Qt
PmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAgICAgICAgIGdjM2QtPmNsZWFyKEdyYXBoaWNzQ29u
dGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZF
Ul9CSVQgfCBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9CVUZGRVJfQklUKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggODA3M2FkYzExMTQ5MjE1ZjU2ZDFlNDVkYTY4NGRlODI4NTgxN2U5Mi4uNTViYzFmOGRi
MjQ5ZDMzODIyZTc4ODljYTc4M2Y1YmVjMDI1YTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTE1OSw5ICsx
NTksOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0
KCkKICAgICBtX3VucGFja1NraXBSb3dzID0gMDsKICAgICBtX3VucGFja1NraXBJbWFnZXMgPSAw
OwogCi0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYXzNE
X1RFWFRVUkVfU0laRSwgJm1fbWF4M0RUZXh0dXJlU2l6ZSk7CisgICAgbV9tYXgzRFRleHR1cmVT
aXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfM0RfVEVY
VFVSRV9TSVpFKTsKICAgICBtX21heDNEVGV4dHVyZUxldmVsID0gV2ViR0xUZXh0dXJlOjpjb21w
dXRlTGV2ZWxDb3VudChtX21heDNEVGV4dHVyZVNpemUsIG1fbWF4M0RUZXh0dXJlU2l6ZSk7Ci0g
ICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0FSUkFZX1RF
WFRVUkVfTEFZRVJTLCAmbV9tYXhBcnJheVRleHR1cmVMYXllcnMpOworICAgIG1fbWF4QXJyYXlU
ZXh0dXJlTGF5ZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpN
QVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMpOwogCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKIApAQCAtMjA4LDkgKzIwOCw3IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6cmVzdG9yZVVucGFja1BhcmFtZXRlcnMoKQogCiBsb25nIGxv
bmcgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50NjRQYXJhbWV0ZXIoR0NHTGVudW0gcG5h
bWUpCiB7Ci0gICAgR0NHTGludDY0IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVn
ZXI2NHYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldEludGVnZXI2NChwbmFtZSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCkBAIC0xMDU1LDIzICsxMDUzLDE0
IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lCiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUzoKICAgICAgICAg
RkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1I6
IHsKLSAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4
UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVl
OwotICAgIH0KLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9G
T1JNQVQ6IHsKLSAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+
Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlKTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV9XUkFQX1I6CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFRleFBh
cmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9JTU1VVEFCTEVfRk9STUFUOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4o
bV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6CiAgICAgICAgIEZBTExUSFJPVUdIOwot
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDogewotICAgICAgICBH
Q0dMZmxvYXQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2
KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQVhfTE9EOgorICAgICAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhQYXJh
bWV0ZXIodGFyZ2V0LCBwbmFtZSk7CiAgICAgfQpAQCAtMjQ0NSwxMSArMjQzNCw4IEBAIFdlYkdM
QW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUl9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VU5JRk9STV9CVUZGRVJfU0laRToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JN
X0JVRkZFUl9TVEFSVDogewotICAgICAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwotICAgICAgICBt
X2NvbnRleHQtPmdldEludGVnZXI2NGlfdih0YXJnZXQsIGluZGV4LCAmdmFsdWUpOwotICAgICAg
ICByZXR1cm4gdmFsdWU7Ci0gICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZP
Uk1fQlVGRkVSX1NUQVJUOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRp
KHRhcmdldCwgaW5kZXgpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVG
RkVSX0JJTkRJTkc6CiAgICAgICAgIGlmIChpbmRleCA+PSBtX2JvdW5kSW5kZXhlZFVuaWZvcm1C
dWZmZXJzLnNpemUoKSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJnZXRJbmRleGVkUGFyYW1ldGVyIiwgImluZGV4IG91
dCBvZiByYW5nZSIpOwpAQCAtMjUyNCwyNCArMjUxMCwyMCBAQCBXZWJHTEFueSBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoV2ViR0xQcm9ncmFt
JiBwcgogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJh
bWV0ZXIiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEdDR0xpbnQg
cmVzdWx0ID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6VU5JRk9STV9CTE9DS19CSU5ESU5HOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVO
SUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TOgotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgc2l6ZW9mKHJlc3VsdCksIG51bGxwdHIsICZy
ZXN1bHQpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4obV9jb250ZXh0LT5nZXRBY3RpdmVV
bmlmb3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSkp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZP
Uk1fSU5ESUNFUzogewotICAgICAgICBHQ0dMaW50IHNpemUgPSAwOwotICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHBy
b2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBHcmFwaGljc0NvbnRleHRHTDo6VU5J
Rk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVMsIHNpemVvZihzaXplKSwgbnVsbHB0ciwgJnNpemUp
OworICAgICAgICBHQ0dMaW50IHNpemUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9j
a2kocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIEdyYXBoaWNzQ29udGV4dEdM
OjpVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUyk7CiAgICAgICAgIFZlY3RvcjxHQ0dMaW50
PiBwYXJhbXMoc2l6ZSwgMCk7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9y
bUJsb2NrSW5kZXgsIHBuYW1lLCBzaXplb2YocGFyYW1zWzBdKSAqIHBhcmFtcy5zaXplKCksIG51
bGxwdHIsIHBhcmFtcy5kYXRhKCkpOworICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFy
YW1zKTsKICAgICAgICAgcmV0dXJuIHBhcmFtcy5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMdWludD4oeCk7IH0pOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUjoKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRf
U0hBREVSOgotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4
LCBwbmFtZSwgc2l6ZW9mKHJlc3VsdCksIG51bGxwdHIsICZyZXN1bHQpOwotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShwcm9ncmFtLm9iamVjdCgp
LCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzcyLDkgKzI3NTQsNyBAQCBXZWJHTEFueSBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVu
dW0gdGFyZwogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBhdHRhY2htZW50Iik7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBHQ0dMaW50IHZhbHVl
ID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgfQogICAgIGlmICgh
dmFsaWRhdGVOb25EZWZhdWx0RnJhbWVidWZmZXJBdHRhY2htZW50KGZ1bmN0aW9uTmFtZSwgYXR0
YWNobWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjc5NiwxMSArMjc3Niw4IEBA
IFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhfU0laRToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRToKLSAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBF
OiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUs
ICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRToKKyAgICAg
ICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICB9CiAKICAgICBpZiAob2JqZWN0LT5pc1Rl
eHR1cmUoKSkgewpAQCAtMjgxMSwxMSArMjc4OCw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJn
CiAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMVGV4
dHVyZSY+KCpvYmplY3QpKTsKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMOgogICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRToKLSAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xP
Ul9FTkNPRElORzogewotICAgICAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwg
YXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0g
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9DT0xPUl9FTkNPRElORzoKKyAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHBhcmFt
ZXRlciBuYW1lIGZvciB0ZXh0dXJlIGF0dGFjaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMjg5Nyw3ICsyODcxLDcgQEAgYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZU5vbkRlZmF1bHRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoY29uc3QgY2hhcioKIEdD
R0xpbnQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogewogICAg
IGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihH
cmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUywgJm1fbWF4RHJhd0J1ZmZlcnMpOwor
ICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNz
Q29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTKTsKICAgICByZXR1cm4gbV9tYXhEcmF3QnVmZmVy
czsKIH0KIApAQCAtMjkwNSw3ICsyODc5LDcgQEAgR0NHTGludCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKIHsKICAgICAvLyBEcmF3QnVmZmVycyByZXF1
aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVOVFMgPT0gTUFYX0RSQVdfQlVGRkVSUwogICAgIGlmICgh
bV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdy
YXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTLCAmbV9tYXhDb2xvckF0dGFjaG1lbnRz
KTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTKTsKICAgICByZXR1cm4gbV9tYXhD
b2xvckF0dGFjaG1lbnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IDljYjBmODU2YjU4ZTEwZTZmNDczMDllNmZlM2MxMGUy
NjcwOTcxNjYuLjQ5NDE1NmUxZTY1YjYwMjkxOTBkYjdjMWMwMjZhZGY4MDNkZGE4ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC05
OCwxMCArOTgsOCBAQCBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWly
ZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIHdlYgogICAgIEdyYXBoaWNzQ29udGV4
dEdMKiBjb250ZXh0ID0gd2ViZ2xDb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CiAKICAgICAv
LyBUaGlzIGlzIGNhbGxlZCBhZnRlciB3ZSBtYWtlIHN1cmUgR0xfRVhUX2RyYXdfYnVmZmVycyBp
cyBzdXBwb3J0ZWQuCi0gICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IDA7Ci0gICAgR0NHTGlu
dCBtYXhDb2xvckF0dGFjaG1lbnRzID0gMDsKLSAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihFeHRl
bnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAmbWF4RHJhd0J1ZmZlcnMpOwotICAgIGNv
bnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VY
VCwgJm1heENvbG9yQXR0YWNobWVudHMpOworICAgIEdDR0xpbnQgbWF4RHJhd0J1ZmZlcnMgPSBj
b250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwor
ICAgIEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50cyA9IGNvbnRleHQtPmdldEludGVnZXIoRXh0
ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICBpZiAobWF4RHJhd0J1
ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0YWNobWVudHMgPCA0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggMDFhMDJmNTFkNzJkODkyZWFiOGU4YzI3MDUwNmNiZmM0ZTczNjU0YS4uYWY0ZjA0
MTdiMWIzZDg4OTRlYTVmOTBmMzRhZGI0MjRhN2EzNWFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTYxMywyMCArNjEzLDIwIEBA
IGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdyYXBoaWNzQ29u
dGV4dEdMKiBnM2QsIGNvbnN0IGNoYXIqCiAgICAgR0NHTGJvb2xlYW4gaXNTY2lzc29yRW5hYmxl
ZCA9IDA7CiAgICAgR0NHTGJvb2xlYW4gaXNEaXRoZXJFbmFibGVkID0gMDsKICAgICBpZiAoaW5p
dENvbG9yKSB7Ci0gICAgICAgIGczZC0+Z2V0RmxvYXR2KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xP
Ul9DTEVBUl9WQUxVRSwgY29sb3JDbGVhclZhbHVlKTsKLSAgICAgICAgZzNkLT5nZXRCb29sZWFu
dihHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfV1JJVEVNQVNLLCBjb2xvck1hc2spOworICAgICAg
ICBjb2xvckNsZWFyVmFsdWUgPSBnM2QtPmdldEZsb2F0KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xP
Ul9DTEVBUl9WQUxVRSk7CisgICAgICAgIGNvbG9yTWFzayA9IGczZC0+Z2V0Qm9vbGVhbihHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfV1JJVEVNQVNLKTsKICAgICAgICAgZzNkLT5jbGVhckNvbG9y
KDAsIDAsIDAsIDApOwogICAgICAgICBnM2QtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0
cnVlKTsKICAgICB9CiAgICAgaWYgKGluaXREZXB0aCkgewotICAgICAgICBnM2QtPmdldEZsb2F0
dihHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ0xFQVJfVkFMVUUsICZkZXB0aENsZWFyVmFsdWUp
OwotICAgICAgICBnM2QtPmdldEJvb2xlYW52KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9XUklU
RU1BU0ssICZkZXB0aE1hc2spOworICAgICAgICBkZXB0aENsZWFyVmFsdWUgPSBnM2QtPmdldEZs
b2F0KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9DTEVBUl9WQUxVRSk7CisgICAgICAgIGRlcHRo
TWFzayA9IGczZC0+Z2V0Qm9vbGVhbihHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfV1JJVEVNQVNL
KTsKICAgICAgICAgZzNkLT5jbGVhckRlcHRoKDEuMGYpOwogICAgICAgICBnM2QtPmRlcHRoTWFz
ayh0cnVlKTsKICAgICB9CiAgICAgaWYgKGluaXRTdGVuY2lsKSB7Ci0gICAgICAgIGczZC0+Z2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQ0xFQVJfVkFMVUUsICZzdGVuY2ls
Q2xlYXJWYWx1ZSk7Ci0gICAgICAgIGczZC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
OlNURU5DSUxfV1JJVEVNQVNLLCByZWludGVycHJldF9jYXN0PEdDR0xpbnQqPigmc3RlbmNpbE1h
c2spKTsKKyAgICAgICAgc3RlbmNpbENsZWFyVmFsdWUgPSBnM2QtPmdldEludGVnZXIoR3JhcGhp
Y3NDb250ZXh0R0w6OlNURU5DSUxfQ0xFQVJfVkFMVUUpOworICAgICAgICBzdGVuY2lsTWFzayA9
IGczZC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9XUklURU1BU0spOwog
ICAgICAgICBnM2QtPmNsZWFyU3RlbmNpbCgwKTsKICAgICAgICAgZzNkLT5zdGVuY2lsTWFzaygw
eGZmZmZmZmZmKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9n
cmFtLmNwcAppbmRleCBjOGMzYjgyMjY1MjUzYzBlMDRlZTAxYTZiNDEyOWM5YzVmMTgwNTI5Li4z
ZTQ2YzVlNTZkMTNkY2ZjZjJlY2MyZGFkMmFjMTk2YTVmN2NlYTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKQEAgLTIxNiw4ICsyMTYsNyBAQCB2b2lk
IFdlYkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQzZCkKIHsKICAgICBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9ucy5jbGVhcigpOwog
Ci0gICAgR0NHTGludCBudW1BdHRyaWJzID0gMDsKLSAgICBjb250ZXh0M2QtPmdldFByb2dyYW1p
dihvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9BVFRSSUJVVEVTLCAmbnVtQXR0
cmlicyk7CisgICAgR0NHTGludCBudW1BdHRyaWJzID0gY29udGV4dDNkLT5nZXRQcm9ncmFtaShv
YmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9BVFRSSUJVVEVTKTsKICAgICBtX2Fj
dGl2ZUF0dHJpYkxvY2F0aW9ucy5yZXNpemUoc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1BdHRyaWJz
KSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdHRyaWJzOyArK2kpIHsKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gaW5mbzsKQEAgLTI0MSw4ICsyNDAsNyBAQCB2
b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQoKQogICAgIEdyYXBoaWNzQ29udGV4
dEdMKiBjb250ZXh0ID0gZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCk7CiAgICAgaWYgKCFjb250ZXh0
KQogICAgICAgICByZXR1cm47Ci0gICAgR0NHTGludCBsaW5rU3RhdHVzID0gMDsKLSAgICBjb250
ZXh0LT5nZXRQcm9ncmFtaXYob2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5LX1NUQVRV
UywgJmxpbmtTdGF0dXMpOworICAgIEdDR0xpbnQgbGlua1N0YXR1cyA9IGNvbnRleHQtPmdldFBy
b2dyYW1pKG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFUVVMpOwogICAgIG1f
bGlua1N0YXR1cyA9IGxpbmtTdGF0dXM7CiAgICAgaWYgKG1fbGlua1N0YXR1cykgewogICAgICAg
ICBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGQyZmFj
MjAzNjI0OTk1ODVlMGQ1MTU1NmNjNWNhNGUzYWFjMzNkYWYuLjY5M2Q2MjA2ZjJjOTBmOTVmZGE5
NzNiOTk4ZWI5NjQ2N2RjZmVhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzA3LDExICszMDcsOCBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIocmVpbnRl
cnByZXRfY2FzdDxXZWJHTFRleHR1cmUmPigqb2JqZWN0KSk7CiAgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKICAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJF
X0NVQkVfTUFQX0ZBQ0U6Ci0gICAgICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDogewotICAgICAgICAgICAgR0NHTGludCB2YWx1
ZSA9IDA7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0KKyAgICAgICAgY2FzZSBFeHRlbnNpb25zR0w6OkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOgorICAgICAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQs
IGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGV4
dHVyZSBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM0Nyw5
ICszNDQsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZl
cnMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJm1fbWF4RHJhd0J1ZmZlcnMp
OworICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVu
c2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFj
aG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFY
X0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAg
IG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25z
R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVy
cyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVOVFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KICAg
ICByZXR1cm4gc3RkOjptaW4obV9tYXhEcmF3QnVmZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRz
KTsKIH0KQEAgLTM1OSw3ICszNTYsNyBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0TWF4Q29sb3JBdHRhY2htZW50cygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAg
ICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFD
SE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JB
dHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xP
Ul9BVFRBQ0hNRU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKaW5kZXggNmMzNzI5OWQ0Mzc3YWEwM2MyOTUxYzI0MDUwNTg5ZThi
M2MzMGZhNy4uOGFmY2NhMTQ0OWQ1MDhlMTU5NDViM2IwOWRkZWE0MzI0NzMyYjVmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKQEAgLTg3Miw4ICs4NzIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX2NsZWFyU3RlbmNpbCA9IDA7CiAg
ICAgbV9jb2xvck1hc2tbMF0gPSBtX2NvbG9yTWFza1sxXSA9IG1fY29sb3JNYXNrWzJdID0gbV9j
b2xvck1hc2tbM10gPSB0cnVlOwogCi0gICAgR0NHTGludCBudW1Db21iaW5lZFRleHR1cmVJbWFn
ZVVuaXRzID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUywgJm51bUNvbWJpbmVkVGV4dHVyZUlt
YWdlVW5pdHMpOworICAgIEdDR0xpbnQgbnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9IG1f
Y29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTUJJTkVEX1RFWFRV
UkVfSU1BR0VfVU5JVFMpOwogICAgIG1fdGV4dHVyZVVuaXRzLmNsZWFyKCk7CiAgICAgbV90ZXh0
dXJlVW5pdHMucmVzaXplKG51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwogI2lmICFVU0Uo
QU5HTEUpCkBAIC04ODEsMTggKzg4MCwxNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICAgICAgbV91bnJlbmRlcmFibGVUZXh0dXJl
VW5pdHMuYWRkKGkpOwogI2VuZGlmCiAgICAgCi0gICAgR0NHTGludCBudW1WZXJ0ZXhBdHRyaWJz
ID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhf
VkVSVEVYX0FUVFJJQlMsICZudW1WZXJ0ZXhBdHRyaWJzKTsKKyAgICBHQ0dMaW50IG51bVZlcnRl
eEF0dHJpYnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9W
RVJURVhfQVRUUklCUyk7CiAgICAgbV9tYXhWZXJ0ZXhBdHRyaWJzID0gbnVtVmVydGV4QXR0cmli
czsKICAgICAKLSAgICBtX21heFRleHR1cmVTaXplID0gMDsKLSAgICBtX2NvbnRleHQtPmdldElu
dGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9TSVpFLCAmbV9tYXhUZXh0dXJl
U2l6ZSk7CisgICAgbV9tYXhUZXh0dXJlU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFw
aGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfU0laRSk7CiAgICAgbV9tYXhUZXh0dXJlTGV2ZWwg
PSBXZWJHTFRleHR1cmU6OmNvbXB1dGVMZXZlbENvdW50KG1fbWF4VGV4dHVyZVNpemUsIG1fbWF4
VGV4dHVyZVNpemUpOwotICAgIG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplID0gMDsKLSAgICBtX2Nv
bnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ1VCRV9NQVBfVEVYVFVS
RV9TSVpFLCAmbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUpOworICAgIG1fbWF4Q3ViZU1hcFRleHR1
cmVTaXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ1VC
RV9NQVBfVEVYVFVSRV9TSVpFKTsKICAgICBtX21heEN1YmVNYXBUZXh0dXJlTGV2ZWwgPSBXZWJH
TFRleHR1cmU6OmNvbXB1dGVMZXZlbENvdW50KG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplLCBtX21h
eEN1YmVNYXBUZXh0dXJlU2l6ZSk7Ci0gICAgbV9tYXhSZW5kZXJidWZmZXJTaXplID0gMDsKLSAg
ICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfUkVOREVSQlVG
RkVSX1NJWkUsICZtX21heFJlbmRlcmJ1ZmZlclNpemUpOworICAgIG1fbWF4UmVuZGVyYnVmZmVy
U2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1JFTkRF
UkJVRkZFUl9TSVpFKTsKIAogICAgIC8vIFRoZXNlIHR3byB2YWx1ZXMgZnJvbSBFWFRfZHJhd19i
dWZmZXJzIGFyZSBsYXppbHkgcXVlcmllZC4KICAgICBtX21heERyYXdCdWZmZXJzID0gMDsKQEAg
LTE3NDEsOCArMTczNiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGls
ZVNoYWRlcihXZWJHTFNoYWRlciYgc2hhZGVyKQogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImNvbXBpbGVTaGFkZXIiLCAm
c2hhZGVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihz
aGFkZXIub2JqZWN0KCkpOwotICAgIEdDR0xpbnQgdmFsdWU7Ci0gICAgbV9jb250ZXh0LT5nZXRT
aGFkZXJpdihzaGFkZXIub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRV
UywgJnZhbHVlKTsKKyAgICBHQ0dMaW50IHZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNo
YWRlci5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTKTsKICAgICBz
aGFkZXIuc2V0VmFsaWQodmFsdWUpOwogCiAgICAgYXV0byogY2FudmFzID0gaHRtbENhbnZhcygp
OwpAQCAtMjg4OCw4ICsyODgyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0QnVmZmVyUGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0KICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgbV9j
b250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAg
IEdDR0xpbnQgdmFsdWUgPSBtX2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBw
bmFtZSk7CiAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dEdMOjpCVUZGRVJfU0laRSkK
ICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dmFsdWUpOwpAQCAtMzE4OSwyNiArMzE4MiwyNiBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFt
T3JTaGFkZXIoImdldFByb2dyYW1QYXJhbWV0ZXIiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkg
ewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFTEVURV9TVEFUVVM6CiAgICAgICAgIHJl
dHVybiBwcm9ncmFtLmlzRGVsZXRlZCgpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlZB
TElEQVRFX1NUQVRVUzoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5v
YmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29s
Pih2YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdl
dFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6TElOS19TVEFUVVM6CiAgICAgICAgIHJldHVybiBwcm9ncmFtLmdldExpbmtTdGF0
dXMoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBVFRBQ0hFRF9TSEFERVJTOgotICAg
ICAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZh
bHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6QUNUSVZFX0FUVFJJQlVURVM6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
QUNUSVZFX1VOSUZPUk1TOgogI2lmIFVTRShBTkdMRSkKLSAgICAgICAgbV9jb250ZXh0LT5nZXRQ
cm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVy
biBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKTsKICNlbHNl
Ci0gICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0
LmdldCgpKS0+Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0ub2JqZWN0KCks
IHBuYW1lLCAmdmFsdWUpOworICAgICAgICB7CisgICAgICAgICAgICBHQ0dMaW50IHZhbHVlID0g
MDsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9j
b250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0ub2Jq
ZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAg
ICB9CiAjZW5kaWYgLy8gVVNFKEFOR0xFKQotICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgZGVm
YXVsdDoKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgICAgICBpZiAoaXNXZWJHTDIoKSkgewpAQCAt
MzIxNiw4ICszMjA5LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEcKICAgICAgICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERToKICAg
ICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19WQVJZ
SU5HUzoKICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JN
X0JMT0NLUzoKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFt
Lm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5v
YmplY3QoKSwgcG5hbWUpOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KQEAgLTMyODAsNyArMzI3Miw2IEBAIFdlYkdMQW55IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0
YXJnZXQsIEdDCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKLSAgICBHQ0dMaW50IHZh
bHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6UkVOREVSQlVGRkVSX1NBTVBMRVM6CiAgICAgICAgIGlmICghaXNXZWJHTDIoKSkgewpAQCAt
MzI5Niw4ICszMjg3LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0MKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJfQUxQSEFfU0laRToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpSRU5ERVJCVUZGRVJfREVQVEhfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFOgotICAgICAgICBtX2NvbnRleHQtPmdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpS
RU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUOgogICAgICAgICByZXR1cm4gbV9yZW5kZXJidWZm
ZXJCaW5kaW5nLT5nZXRJbnRlcm5hbEZvcm1hdCgpOwogICAgIGRlZmF1bHQ6CkBAIC0zMzEwLDE2
ICszMzAwLDEzIEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRl
clBhcmFtZXRlcihXZWJHTFNoYWRlciYgc2hhZGVyLCBHQ0dMCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0U2hh
ZGVyUGFyYW1ldGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEdD
R0xpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpERUxFVEVfU1RBVFVTOgogICAgICAgICByZXR1cm4gc2hhZGVyLmlzRGVsZXRl
ZCgpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTOgotICAgICAg
ICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPih2YWx1ZSk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgp
LCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFOgotICAg
ICAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1
ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFk
ZXIub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNoYWRlclBhcmFtZXRl
ciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMzM3OCwyMCArMzM2NSwxNSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRUZXhQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbgogICAgIGF1dG8g
dGV4ID0gdmFsaWRhdGVUZXh0dXJlQmluZGluZygiZ2V0VGV4UGFyYW1ldGVyIiwgdGFyZ2V0KTsK
ICAgICBpZiAoIXRleCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgR0NHTGludCB2YWx1
ZSA9IDA7Ci0gICAgR0NHTGZsb2F0IGZWYWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFHX0ZJTFRFUjoKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV9XUkFQX1Q6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFy
Z2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih2YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0
LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKICAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYwotICAgICAgICBpZiAobV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpIHsKLSAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgJmZW
YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZWYWx1ZSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQorICAg
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1l
KTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImdldFRleFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4
dHVyZV9maWx0ZXJfYW5pc290cm9waWMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgZGVmYXVsdDoKQEAgLTM2MjQsNyArMzYwNiw3IEBAIFJlZlB0cjxXZWJHTFVu
aWZvcm1Mb2NhdGlvbj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybUxvY2F0
aW9uKFdlYkdMCiAKICAgICBHQ0dMaW50IGFjdGl2ZVVuaWZvcm1zID0gMDsKICNpZiBVU0UoQU5H
TEUpCi0gICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhp
Y3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKKyAgICBhY3Rp
dmVVbmlmb3JtcyA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgR3Jh
cGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNUyk7CiAjZWxzZQogICAgIHN0YXRpY19jYXN0
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVpbHRJ
bkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0ub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpB
Q1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7CiAjZW5kaWYKQEAgLTYyMzcsOSArNjIx
OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVzdW1lKCkKIAogYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCb29sZWFuUGFyYW1ldGVyKEdDR0xlbnVtIHBu
YW1lKQogewotICAgIEdDR0xib29sZWFuIHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEJv
b2xlYW52KHBuYW1lLCAmdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9j
b250ZXh0LT5nZXRCb29sZWFuKHBuYW1lKTsKIH0KIAogVmVjdG9yPGJvb2w+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldEJvb2xlYW5BcnJheVBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkK
QEAgLTYyNTgsMjMgKzYyMzgsMTcgQEAgVmVjdG9yPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldEJvb2xlYW5BcnJheVBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIAogZmxvYXQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RmxvYXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5h
bWUpCiB7Ci0gICAgR0NHTGZsb2F0IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEZsb2F0
dihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0RmxvYXQocG5hbWUpOwogfQogCiBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0SW50UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogewotICAgIEdDR0xpbnQgdmFsdWUgPSAw
OwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJu
IHZhbHVlOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXIocG5hbWUpOwogfQogCiB1
bnNpZ25lZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBhcmFtZXRl
cihHQ0dMZW51bSBwbmFtZSkKIHsKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICBtX2NvbnRl
eHQtPmdldEludGVnZXJ2KHBuYW1lLCAmdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBy
ZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKHBuYW1lKTsKIH0KIAogUmVmUHRyPEZsb2F0MzJB
cnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1l
dGVyKEdDR0xlbnVtIHBuYW1lKQpAQCAtNzYyNiw5ICs3NjAwLDkgQEAgR0NHTGludCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRNYXhEcmF3QnVmZmVycygpCiAgICAgaWYgKCFzdXBwb3J0
c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9tYXhEcmF3QnVm
ZmVycykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9E
UkFXX0JVRkZFUlNfRVhULCAmbV9tYXhEcmF3QnVmZmVycyk7CisgICAgICAgIG1fbWF4RHJhd0J1
ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZG
RVJTX0VYVCk7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fY29u
dGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhU
LCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRz
ID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1F
TlRTX0VYVCk7CiAgICAgLy8gV0VCR0xfZHJhd19idWZmZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9B
VFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19CVUZGRVJTLgogICAgIHJldHVybiBzdGQ6Om1pbihtX21h
eERyYXdCdWZmZXJzLCBtX21heENvbG9yQXR0YWNobWVudHMpOwogfQpAQCAtNzYzOCw3ICs3NjEy
LDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRNYXhDb2xvckF0dGFj
aG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+
Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9t
YXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9j
b250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VY
VCk7CiAgICAgcmV0dXJuIG1fbWF4Q29sb3JBdHRhY2htZW50czsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAzNGYxN2VjNjFi
MzMxMDM3MWMyZGRiZDBhMDE3NWM2MGI5M2QxNmY1Li5iYTg2NWIzMzA4ZTZjOTQ1ODIyMTIyMzc3
OTZkNmZkNTc3NDg0N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaApAQCAtMzA2LDIxICszMDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlz
b3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmly
dHVhbCB2b2lkIGdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHZSb2J1
c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJ
bnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9p
ZCoqIHBvaW50ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xF
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZv
aWQqIHBpeGVscykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9p
ZCogcGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CkBAIC0zMzYsMTQgKzMyMSwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoq
IHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBkYXRhKSA9IDA7IC8vIE5PTElOVAogICAgIHZpcnR1YWwg
dm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
NjQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIGRhdGEpID0gMDsgLy8gTk9MSU5UCiAgICAgdmly
dHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
R0wuaAppbmRleCAwZjFkMDY3YmY0OTg1ZTljZDdiNDA0MTJhZGJlY2E0ZTMyMjBkOThkLi5mOGQ3
MTU2ODcwNTI4ZGU5ZTE5ZDNkZGExMGJjNWFjMDBmY2E0ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTk4Niwz
MSArOTg2LDMwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRBdHRyaWJMb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRCdWZm
ZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAg
IC8vIGdldFBhcmFtZXRlcgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51bSBu
YW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NH
TGZsb2F0KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2Vy
NjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQ2NCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiog
dmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQoR0NHTGVudW0g
cG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRpKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMdWludCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRQcm9n
cmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9v
bGVhbj4gdmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTGVudW0gZ2V0RXJyb3IoKSA9IDA7
CiAKICAgICAvLyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0g
MDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSA9
IDA7CiAKICAgICAvLyBnZXRQcm9ncmFtUGFyYW1ldGVyCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0
UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgLy8gZ2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7
CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8gZ2V0U2hhZGVyUGFyYW1ldGVy
Ci0gICAgdmlydHVhbCB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRTaGFk
ZXJpKFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFs
IFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdD
R0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24p
ID0gMDsKQEAgLTEwMTgsMTkgKzEwMTcsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAgICAvLyBnZXRUZXhQ
YXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFRleFBhcmFtZXRl
cmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgR0NH
TGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpID0g
MDsKIAogICAgIC8vIGdldFVuaWZvcm0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWZ2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1
ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZv
cm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGlu
dD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1
ZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAogICAgIC8vIGdldFZlcnRleEF0
dHJpYgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwogCiAgICAgdmlydHVhbCBH
Q0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSkgPSAwOwogCkBAIC0xMjM2LDcgKzEyMzUsMTMgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwogCisgICAg
dmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGlu
dD4gcGFyYW1zKSA9IDA7CisKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCisgICAgR0NHTGZsb2F0
IGdldEZsb2F0KEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMYm9vbGVhbiBnZXRCb29sZWFuKEdD
R0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMaW50IGdldEludGVnZXIoR0NHTGVudW0gcG5hbWUpOwor
ICAgIEdDR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9h
dHRyczsgfQogICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7IH0KQEAgLTEzNjcsNiAr
MTM3MiwzNSBAQCBwcml2YXRlOgogICAgIERlc3RpbmF0aW9uIG1fZGVzdGluYXRpb247CiB9Owog
CitpbmxpbmUgR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdChHQ0dMZW51bSBw
bmFtZSkKK3sKKyAgICBHQ0dMZmxvYXQgdmFsdWVbMV0geyB9OworICAgIGdldEZsb2F0dihwbmFt
ZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xib29sZWFu
IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKQoreworICAgIEdD
R0xib29sZWFuIHZhbHVlWzFdIHsgfTsKKyAgICBnZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOwor
ICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0
R0w6OmdldEludGVnZXIoR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NHTGludCB2YWx1ZVsxXSB7
IH07CisgICAgZ2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWVbMF07
Cit9CisKK2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dM
ZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMaW50IHZhbHVlWzFdIHsgfTsKKyAgICBnZXRBY3RpdmVV
bmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHZhbHVlKTsK
KyAgICByZXR1cm4gdmFsdWVbMF07Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NU
eXBlc0dMLmgKaW5kZXggNTc0YTI4MzlhMjY3MTFjMzc4MDI3OTY3NTQ5MmNkNjEyNzUzNWQ3MS4u
ZGIwZjAzYzhiMmUyNWM4MzU5ZDMwNmY5NDJiNmJmYTIyYTczMGIxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcg
KzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIC8vIEdDR0wgdHlwZXMg
bWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wgRVMg
Mi4wCiAvLyBoZWFkZXIgZmlsZSBnbDIuaCBmcm9tIGtocm9ub3Mub3JnLgpAQCAtNTYsMjUgKzU4
LDQ4IEBAIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIHR5cGVkZWYgdW5zaWdu
ZWQgR0x1aW50OwogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KT4KK3N0cnVjdCBHQ0dMU3BhbjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+
CiBzdHJ1Y3QgR0NHTFNwYW4gewotICAgIEdDR0xTcGFuKFQqLCBzaXplX3QgY291bnQpOworICAg
IGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAg
eyB9CisgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQorICAgICAgICA6IGRhdGEoYXJy
YXkpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBBU1NFUlQoZGF0YSk7
IEFTU0VSVChpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3Iq
KCkgeyAgQVNTRVJUKGRhdGEpOyByZXR1cm4gKmRhdGE7IH0KICAgICBUKiBkYXRhOwotICAgIGNv
bnN0IHNpemVfdCBidWZTaXplOworICAgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90IGJ1ZlNpemUg
PSBFeHRlbnQ7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBwdHJkaWZmX3QgTj4KLXN0cnVj
dCBHQ0dMU3BhbjxUW05dPiB7Ci0gICAgR0NHTFNwYW4oVCopOwotICAgIFQmIG9wZXJhdG9yW10o
c2l6ZV90IGkpIHsgQVNTRVJUKGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKT4geworICAgIEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3QgYnVmU2l6ZV8p
CisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKGJ1ZlNpemVfKQorICAg
IHsgfQorICAgIHRlbXBsYXRlPHNpemVfdCBTej4gR0NHTFNwYW4oVCAoJmFycmF5KVtTel0pCisg
ICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKFN6KQorICAgIHsgfQorICAg
IEdDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRh
dGEoKSkKKyAgICAgICAgLCBidWZTaXplKGFycmF5LnNpemUoKSkKKyAgICB7IH0KKyAgICBUJiBv
cGVyYXRvcltdKHNpemVfdCBpKSB7IEFTU0VSVChkYXRhKTsgQVNTRVJUKGkgPCBidWZTaXplKTsg
cmV0dXJuIGRhdGFbaV07IH0KICAgICBUJiBvcGVyYXRvciooKSB7IEFTU0VSVChkYXRhKTsgcmV0
dXJuICpkYXRhOyB9Ci0KICAgICBUKiBkYXRhOwotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGJ1ZlNpemUgPSBOOworICAgIGNvbnN0IHNpemVfdCBidWZTaXplOwogfTsKIAordGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitHQ0dMU3BhbihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwg
Tj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitHQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYpIC0+
IEdDR0xTcGFuPFQ+OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogR0NHTFNwYW48VD4gbWFrZUdD
R0xTcGFuKFQqIGRhdGEsIHNpemVfdCBjb3VudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApp
bmRleCAxYzhiYzQyNTUwZjFjMWQ5NWMzMDgyZjY3Mzc2YTU2OTUwNmJmYWIzLi40ZDAyNWI5OTM0
MjI3NzZiOWI1ZjRhYWJjMzlhMGM3ODkxOTQwYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3Bw
CkBAIC0xMTMsOCArMTEzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIGludCBzb3VyY2VMZW5ndGggPSAwOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYo
c2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFLCAmc291cmNl
TGVuZ3RoKTsKKyAgICBpbnQgc291cmNlTGVuZ3RoID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNo
YWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSk7CiAgICAgaWYg
KCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIFZlY3Rv
cjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xfVFJBTlNMQVRFRF9TSEFERVJfU09V
UkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgpAQCAtMjc5LDEyNiAr
Mjc4LDYgQEAgR0NHTGVudW0gRXh0ZW5zaW9uc0dMQU5HTEU6OmFkanVzdFdlYkdMMVRleHR1cmVJ
bnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGYKIH0KIAogLy8gR0xfQU5HTEVfcm9idXN0
X2NsaWVudF9tZW1vcnkKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW52Um9idXN0
QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGJvb2xlYW4gKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0Qm9vbGVhbnZSb2J1c3RB
TkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OkdldEZsb2F0dlJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
SW50ZWdlcnZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1pdlJvYnVz
dEFOR0xFKHByb2dyYW0sIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNoYWRlcml2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0U2hhZGVyaXZSb2J1c3RBTkdMRShzaGFkZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0VW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5h
bWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5kZXgs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZv
aWQgKipwb2ludGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9i
dXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBvaW50ZXIpOwotfQotCiB2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTUxNywxNCArMzk2LDYgQEAgdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHAKICAgICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdM
RSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKHRh
cmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtNTU3LDMwICs0MjgsNiBAQCB2b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUocHJvZ3Jh
bSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbSwgdW5p
Zm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRh
dGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+KGRhdGEpKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50NjQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcjY0aV92Um9i
dXN0QU5HTEUodGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0
PEdMaW50NjQqPihkYXRhKSk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZl
clBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1z
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5oCmluZGV4IDEyNTY5NTY3YzE3YzkyNmI3MWE5MWJiNGJiMTE5NTU2YmEwNmYxNzAu
LjU3YmI5M2JjODRjMzM1OTBmYmNmNGIzZjdhMWViNWE1NWM1OTI1NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuaApAQCAtNzMsMjEgKzczLDYgQEAgcHVibGljOgogICAgIGJvb2wgcmVxdWlyZXNSZXN0
cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jl
c3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9j
bGllbnRfbWVtb3J5Ci0gICAgdm9pZCBnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpk
YXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0Rmxv
YXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFBy
b2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNoYWRlcml2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdD
R0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleEltYWdl
MkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CkBAIC0xMDMsMTQgKzg4LDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lk
IGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKICAgICB2b2lkIGdldEludGVy
bmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmli
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGlu
ZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0
YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAogICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCAqcGFyYW0pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRl
eCBmNDRjMjE5NDFhMzJiNzcyYTdiMzY5MTNhODZhYWQ4MzRkOTMxNzZiLi4wNmUyMTZjMzU4ZjJh
NDU5MzYxNzAxZGViYTI1MTA1YjJjNDQ5ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcApAQCAtMzU0LDE0ICszNTQsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdQogICAg
IH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdihHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKQotewotICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRJbnRl
Z2VyaV92KHBuYW1lLCBpbmRleCwgdmFsdWUpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NH
TGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikK
IHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTIwMCw3ICsxMTkyLDYgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0cKIAogICAgIEdMaW50IG1heFVuaWZvcm1TaXplID0gMDsK
ICAgICBnbDo6R2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5H
VEgsICZtYXhVbmlmb3JtU2l6ZSk7Ci0KICAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKG1heFVuaWZv
cm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRl
cm1pbmF0aW9uLgogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9
IDA7CkBAIC0xODA3LDY0ICsxNzk4LDY3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogICAgIGdsOjpCaW5kVmVy
dGV4QXJyYXkoYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRC
b29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xib29sZWFuPiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICBn
bDo6R2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwg
dmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZl
clBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZh
bHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUg
PSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAg
ICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RSh0YXJnZXQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBu
YW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpH
ZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0RmxvYXR2Um9idXN0QU5HTEUocG5h
bWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogICAgIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NH
TGludDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50
ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgKnZhbHVl
ID0gMDsKLSAgICBnbDo6R2V0SW50ZWdlcjY0dihwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgZ2w6OkdldEludGVnZXI2NHZSb2J1c3RBTkdMRShwbmFtZSwgMSwgbnVs
bHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KQogeworICAgIEdD
R0xpbnQ2NCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgKnZhbHVlID0gMDsKLSAgICBnbDo6R2V0SW50ZWdlcjY0aV92KHBu
YW1lLCBpbmRleCwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldElu
dGVnZXI2NGlfdlJvYnVzdEFOR0xFKHBuYW1lLCBpbmRleCwgMSwgbnVsbHB0ciwgJnZhbHVlKTsK
KyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKQog
eworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQorICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgaWYgKGF0dGFj
aG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQogICAgICAgICBhdHRhY2htZW50ID0g
REVQVEhfQVRUQUNITUVOVDsgLy8gT3IgU1RFTkNJTF9BVFRBQ0hNRU5ULCBlaXRoZXIgd29ya3Mu
Ci0gICAgZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAxLCBudWxs
cHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkK
IHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1l
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0UHJvZ3JhbWl2Um9i
dXN0QU5HTEUocHJvZ3JhbSwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVubWFuZ2xl
ZEluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdLCBHQ0dMc2l6ZWkgY291bnQsIGNv
bnN0IFN0cmluZyYgbG9nKQpAQCAtMTkxMCwyMiArMTkwNCwyMyBAQCBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSkKICAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3RyaW5n
KGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQog
eworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0
YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCAxLCBudWxs
cHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lKQogewog
ICAgIEFTU0VSVChzaGFkZXIpOwotCisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNoYWRl
cml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGds
OjpHZXRTaGFkZXJpdlJvYnVzdEFOR0xFKHNoYWRlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCkBAIC0xOTUzLDQ0
ICsxOTQ4LDQ2IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyU291
cmNlKFBsYXRmb3JtR0xPYmplY3QpCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwLmY7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFt
ZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
IGdsOjpHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIDEsIG51bGxw
dHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBH
Q0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFs
dWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFRleFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCogdmFs
dWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBn
bDo6R2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNp
emUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24s
IHZhbHVlKTsKKyAgICBnbDo6R2V0VW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRp
b24sIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0VW5pZm9ybXVp
dihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsOjpHZXRVbmlmb3JtdWl2Um9idXN0
QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRh
dGEpOwogfQogCiBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0y
MDAzLDIwICsyMDAwLDIwIEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIGds
OjpHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJm
dihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0VmVydGV4QXR0cmliZnZSb2J1c3RB
TkdMRShpbmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0VmVydGV4QXR0cmli
aXYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0
QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsK
IH0KIAogR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQpAQCAtMjAyNSw3ICsyMDIy
LDcgQEAgR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0wKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBH
THZvaWQqIHBvaW50ZXIgPSAwOwotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRl
eCwgcG5hbWUsICZwb2ludGVyKTsKKyAgICBnbDo6R2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1
c3RBTkdMRShpbmRleCwgcG5hbWUsIDEsIG51bGxwdHIsICZwb2ludGVyKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihwb2lu
dGVyKSk7CiB9CiAKQEAgLTI5NDIsNiArMjkzOSwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YQogICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9z
ZSwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQor
eworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBn
bDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLCB1bmlmb3JtQmxv
Y2tJbmRleCwgcG5hbWUsIHBhcmFtcy5idWZTaXplLCBudWxscHRyLCBwYXJhbXMuZGF0YSk7Cit9
CisKKwogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKIEdyYXBoaWNzQ29u
dGV4dEdMQ1YqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphc0NWKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0Nv
bnRleHRHTENWQU5HTEUuY3BwCmluZGV4IDZkNTAzYmNiYTc1YWZiOGM1MDc5MGIxYzI0ZTI4Mjgz
NmM1NWQ5NDkuLmNiYWYwNjBiNTU2MzlmZGI1NWFiN2VhZTQxN2VmNWQyMDQzOWQ5MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcApAQCAtNDY0LDggKzQ2NCw3IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cygpCiAKICAg
ICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXJEaXJlY3QodmVydGV4U2hhZGVyKTsKIAotICAgIEdD
R0xpbnQgc3RhdHVzID0gMDsKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHZlcnRleFNoYWRl
ciwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTLCAmc3RhdHVzKTsKKyAgICBHQ0dM
aW50IHN0YXR1cyA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaSh2ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QSUxFX1NUQVRVUyk7CiAgICAgaWYgKCFzdGF0dXMpIHsKICAgICAgICAg
TE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0
T2JqZWN0cyglcCkgLSBWZXJ0ZXggc2hhZGVyIGZhaWxlZCB0byBjb21waWxlLiIsIHRoaXMpOwog
ICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwpAQCAtNDgwLDcg
KzQ3OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250
ZXh0T2JqZWN0cygpCiAKICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXJEaXJlY3QoZnJhZ21l
bnRTaGFkZXIpOwogCi0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihmcmFnbWVudFNoYWRlciwg
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTLCAmc3RhdHVzKTsKKyAgICBzdGF0dXMg
PSBtX2NvbnRleHQtPmdldFNoYWRlcmkoZnJhZ21lbnRTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QSUxFX1NUQVRVUyk7CiAgICAgaWYgKCFzdGF0dXMpIHsKICAgICAgICAgTE9HKFdlYkdM
LCAiR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cygl
cCkgLSBGcmFnbWVudCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwgdGhpcyk7CiAgICAgICAg
IG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CkBAIC00OTMsNyArNDkyLDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmpl
Y3RzKCkKICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3l1dlByb2dyYW0sIGZyYWdtZW50
U2hhZGVyKTsKICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKG1feXV2UHJvZ3JhbSk7CiAKLSAg
ICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihtX3l1dlByb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdM
OjpMSU5LX1NUQVRVUywgJnN0YXR1cyk7CisgICAgc3RhdHVzID0gbV9jb250ZXh0LT5nZXRQcm9n
cmFtaShtX3l1dlByb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5LX1NUQVRVUyk7CiAgICAg
aWYgKCFzdGF0dXMpIHsKICAgICAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cyglcCkgLSBQcm9ncmFtIGZhaWxlZCB0byBs
aW5rLiIsIHRoaXMpOwogICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFk
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA4MDYxMGRl
N2Q0MzFjZjQyNjI5OTdmNGZmY2UzN2I2YmUxZWU3NDA0Li4zNGZlZjA1YjYyMzc4NzBkMDViZDFh
MzJjMmY0NWE0MTkxYjNmNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpl
bnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgU2hCdWlsdEluUmVzb3Vy
Y2VzIEFOR0xFUmVzb3VyY2VzID0gY29tcGlsZXIuZ2V0UmVzb3VyY2VzKCk7CiAgICAgICAgIGlm
ICghQU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykgewogICAgICAgICAgICAgQU5HTEVS
ZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQsICZBTkdMRVJlc291
cmNlcy5NYXhEcmF3QnVmZmVycyk7CisgICAgICAgICAgICBBTkdMRVJlc291cmNlcy5NYXhEcmF3
QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JV
RkZFUlNfRVhUKTsKICAgICAgICAgICAgIGNvbXBpbGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291
cmNlcyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJf
dGV4dHVyZV9sb2QiKSB7CkBAIC0xNzIsNyArMTcyLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3QKIAogICAgIEFOR0xFV2ViS2l0QnJpZGdlJiBjb21waWxlciA9IG1fY29udGV4dC0+bV9jb21w
aWxlcjsKIAotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRl
eHRHTDo6U0hBREVSX1RZUEUsICZHTHNoYWRlclR5cGUpOworICAgIEdMc2hhZGVyVHlwZSA9IG1f
Y29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFERVJfVFlQ
RSk7CiAKICAgICBpZiAoR0xzaGFkZXJUeXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpWRVJURVhf
U0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZUEVfVkVSVEVYOwpAQCAtMjU0
LDgxICsyNTQsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1p
dkVYVChHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGJvb2xlYW4gKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NH
TGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9y
bWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NH
TGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlm
b3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0
ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17Ci0gICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50LCBp
bnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwg
R0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKQogewogICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtNDAw
LDExICszMjUsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sCiAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0x1
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwpAQCAtNDMwLDE2ICszNTAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTAogICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xF
KEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xF
KEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQYXJhbWV0
ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSAqLCBHQ0dMaW50NjQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApp
bmRleCAwNDg5NGI5MWM4MmNjNGIxYjIwOWE3YWZkMjI5Y2JkY2E5YTAxYTQzLi45N2VlZGZiNzQ4
NWM4MzJmNzkzYzhjZmYwZmExN2ZiZmZiZTY1ODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5oCkBAIC02OSwyMSArNjksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1aXJl
c1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVp
cmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQogCiAgICAgLy8gR0xfQU5HTEVfcm9i
dXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIGdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xl
YW4gKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2hh
ZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVh
ZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJv
d3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92
ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpw
YXJhbXMpIG92ZXJyaWRlOwpAQCAtOTksMTQgKzg0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdl
dFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIGludCAqZGF0YSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFVu
aWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJp
NjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
KSBvdmVycmlkZTsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApp
bmRleCBhYjhjYjU0ZjVlODc5ZWY0YjhhOTBkMTlhN2VjOTJjODljZTIwNTdiLi5kMjhmNGEwMzFl
YmRjNDgzODc1ZDM5ODQ4N2Q1Nzg3NDhmZGU0N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5jcHAKQEAgLTc0LDExICs3NCw4IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6Omlz
RW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IC8vIEZvciBHTF9FWFRfcm9idXN0bmVzcywgY2hlY2sgdGhhdCB0aGUgY29udGV4dCBzdXBwb3J0
cyByb2J1c3QgYWNjZXNzLgotICAgIGlmIChuYW1lID09ICJHTF9FWFRfcm9idXN0bmVzcyIpIHsK
LSAgICAgICAgR0xpbnQgcm9idXN0QWNjZXNzID0gR0xfRkFMU0U7Ci0gICAgICAgIG1fY29udGV4
dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpDT05URVhUX1JPQlVTVF9BQ0NFU1MsICZyb2J1
c3RBY2Nlc3MpOwotICAgICAgICByZXR1cm4gcm9idXN0QWNjZXNzID09IEdMX1RSVUU7Ci0gICAg
fQorICAgIGlmIChuYW1lID09ICJHTF9FWFRfcm9idXN0bmVzcyIpCisgICAgICAgIHJldHVybiBt
X2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpDT05URVhUX1JPQlVTVF9BQ0NFU1Mp
ID09IEdMX1RSVUU7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgKaW5kZXggMDBiN2I0MmQxN2QzOGU2NmMwNGQ4MWI4ODM2NjdiMDg4ZTAxYWQx
OS4uYzNmNDhlOGM2ODlmMGIzOTdiNmY3ZTU2ODM0ODI0YTZhOGI5Zjc1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTE5NywzNSArMTk3LDM0IEBAIHB1YmxpYzoKICAg
ICBib29sIGdldEFjdGl2ZVVuaWZvcm1JbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
THVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKICAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhDb3VudCwgR0NHTHNpemVpKiBj
b3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgZmluYWw7CiAgICAgR0NHTGludCBnZXRB
dHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFs
OwotICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2YWx1
ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRCb29s
ZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsK
KyAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CiAgICAgR0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKLSAgICB2b2lk
IGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAg
dm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmlu
YWw7CisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9h
dD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKICAgICB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQg
Z2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2YWx1ZSkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50NjQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Cisg
ICAgR0NHTGludDY0IGdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NH
TGludDY0IGdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KSBmaW5h
bDsKKyAgICBHQ0dMaW50IGdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOwogI2lmICFVU0UoQU5HTEUpCiAgICAgdm9pZCBnZXROb25CdWls
dEluQWN0aXZlU3ltYm9sQ291bnQoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCogdmFsdWUpOwogI2VuZGlmIC8vICFVU0UoQU5HTEUpCiAgICAgU3RyaW5n
IGdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogICAgIFN0cmluZyBn
ZXRVbm1hbmdsZWRJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3RbMl0sIEdDR0xzaXplaSwgY29uc3Qg
U3RyaW5nJik7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFs
dWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmko
UGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIFN0cmluZyBnZXRT
aGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogICAgIHZvaWQgZ2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5
cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pIGZpbmFsOwogICAgIFN0cmlu
ZyBnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgU3RyaW5nIGdl
dFN0cmluZyhHQ0dMZW51bSBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFs
OwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRVbmlm
b3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVp
bnQqIHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFRleFBhcmFt
ZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBn
ZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xp
bnQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpIGZp
bmFsOwogICAgIEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNv
bnN0IFN0cmluZyYgbmFtZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAg
IHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFs
OworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTHNpemVpcHRyIGdl
dFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFs
OwogCiAgICAgdm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7
CkBAIC00MzgsNiArNDM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwogICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZ2V0
QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFs
OwogCiAjaWYgIVVTRShBTkdMRSkKICAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDc1MGVkMzI2ZWNlNjVlODhmNmI0MTM2MDE1
YzRmOTMzNzQ0ODljYTUuLjEzNDIyYmM1NmUyNmFhZDkxYmY4N2YyZWVhYjZjY2UyZDNlMDcxMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC0yNjAs
NyArMjYwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3Rv
cmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGUKICAgICA6OmdsUmVuZGVyYnVmZmVy
U3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdl
cnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIC8vIE5l
ZWQgdG8gZW11bGF0ZSBNQVhfRlJBR01FTlQvVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyBhbmQgTUFY
X1ZBUllJTkdfVkVDVE9SUwogICAgIC8vIGJlY2F1c2UgZGVza3RvcCBHTCdzIGNvcnJlc3BvbmRp
bmcgcXVlcmllcyByZXR1cm4gdGhlIG51bWJlciBvZiBjb21wb25lbnRzCkBAIC0yNzIsMzkgKzI3
MiwzOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51
bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCiAgICAgc3dpdGNoIChwbmFtZSkgewogI2lmIFVTRShP
UEVOR0wpCiAgICAgY2FzZSBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOgotICAgICAgICA6
OmdsR2V0SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUp
OworICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9O
RU5UUywgdmFsdWUuZGF0YSgpKTsKICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJ
bnRlZ2VydihHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAg
ICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMsIHZhbHVl
LmRhdGEoKSk7CiAgICAgICAgICp2YWx1ZSAvPSA0OwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1BWF9WQVJZSU5HX1ZFQ1RPUlM6CiAgICAgICAgIGlmIChpc0dMRVMyQ29tcGxpYW50KCkpIHsK
ICAgICAgICAgICAgIEFTU0VSVCg6OmdsR2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci0gICAg
ICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgdmFsdWUpOwor
ICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsIHZhbHVl
LmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAoOjpnbEdldEVycm9yKCkgPT0gR0xfSU5WQUxJRF9F
TlVNKSB7Ci0gICAgICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX0NP
TVBPTkVOVFMsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFY
X1ZBUllJTkdfQ09NUE9ORU5UUywgdmFsdWUuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAqdmFs
dWUgLz0gNDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIDo6
Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlKTsKKyAgICAgICAgICAg
IDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlLmRhdGEoKSk7CiAg
ICAgICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICNlbmRp
ZgogICAgIGNhc2UgTUFYX1RFWFRVUkVfU0laRToKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KE1B
WF9URVhUVVJFX1NJWkUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9URVhU
VVJFX1NJWkUsIHZhbHVlLmRhdGEoKSk7CiAgICAgICAgIGlmIChnZXRFeHRlbnNpb25zKCkucmVx
dWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkpCiAgICAgICAgICAgICAqdmFsdWUg
PSBzdGQ6Om1pbig0MDk2LCAqdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1BWF9D
VUJFX01BUF9URVhUVVJFX1NJWkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfQ1VCRV9N
QVBfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfQ1VC
RV9NQVBfVEVYVFVSRV9TSVpFLCB2YWx1ZS5kYXRhKCkpOwogICAgICAgICBpZiAoZ2V0RXh0ZW5z
aW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAgICAgICAg
ICAgKnZhbHVlID0gc3RkOjptaW4oMTAyNCwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAg
IDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuZGF0YSgpKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGIwYzFmMWRm
ZDQzZDQxNTA0MjdmZjUyMWFjZjY4NDM2MjcyNDAwNWEuLmIwZjAwZWRiNTBiMjc4YzgzMzg4NzRi
MDBiNDQ3NDBkZGJmNzliZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29tbW9uLmNwcApAQCAtMTcxNywxMiArMTcxNywxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICNlbmRp
ZgogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudihHQ0dMZW51
bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1
ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICA6OmdsR2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0Qm9vbGVhbnYo
cG5hbWUsIHZhbHVlLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKQpAQCAtMTczMyw2NSArMTczMyw1NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYQogICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihHQ0dMZW51bSBw
bmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6Omds
R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUu
ZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlf
dihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGlu
dDY0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgICp2
YWx1ZSA9IDA7Ci0gICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBt
dXN0IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQgaW5p
dGlhbGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KLSAgICAvLyA6
OmdsR2V0SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKLX0KLQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0
KiB2YWx1ZSkKLXsKLSAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICp2YWx1ZSA9IDA7CisgICAgR0NH
TGludDY0IHZhbHVlID0gMDsKICAgICAvLyBGSVhNRSAxNDExNzg6IEJlZm9yZSBlbmFibGluZyB0
aGlzIHdlIG11c3QgZmlyc3Qgc3dpdGNoIG92ZXIgdG8gdXNpbmcgZ2wzLmggYW5kIGNyZWF0aW5n
IGFuZCBpbml0aWFsaW5nIHRoZSBXZWJHTDIgY29udGV4dCB1c2luZyBPcGVuR0wgRVMgMy4wLgog
ICAgIC8vIDo6Z2xHZXRJbnRlZ2VyNjR2KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVl
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKQorR0NHTGludDY0
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMdWludCBpbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwogICAgIFVOVVNFRF9Q
QVJBTShpbmRleCk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgKnZhbHVlID0gMDsKKyAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwogICAgIC8v
IEZJWE1FIDE0MTE3ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0Y2gg
b3ZlciB0byB1c2luZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdlYkdM
MiBjb250ZXh0IHVzaW5nIE9wZW5HTCBFUyAzLjAuCiAgICAgLy8gOjpnbEdldEludGVnZXI2NGlf
dihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFj
aG1lbnQsIEdDR0xlbnVtIHBuYW1lCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKGF0dGFj
aG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQogICAgICAgICBhdHRhY2htZW50ID0g
REVQVEhfQVRUQUNITUVOVDsgLy8gT3IgU1RFTkNJTF9BVFRBQ0hNRU5ULCBlaXRoZXIgd29ya3Mu
Ci0gICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwg
YXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKKyAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFBy
b2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFByb2dyYW1p
dihwcm9ncmFtLCBwbmFtZSwgdmFsdWUpOworICAgIEdDR0xpbnQgdmFsdWUgcD0gMDsKKyAgICA6
OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1
ZTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2
ZVN5bWJvbENvdW50KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKQpAQCAtMTg5OSwyMCArMTg5MSwyMSBAQCBTdHJpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSkK
ICAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3RyaW5nKGlu
Zm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogewor
ICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkVYVCh0
YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICA6OmdsR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRl
cml2KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFs
dWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpKFBsYXRmb3Jt
R0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsK
LQorICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAKICAgICBjb25zdCBh
dXRvJiByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CkBAIC0xOTIwLDcg
KzE5MTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQbGF0
Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbQogICAgIHN3aXRjaCAocG5hbWUpIHsK
ICAgICBjYXNlIERFTEVURV9TVEFUVVM6CiAgICAgY2FzZSBTSEFERVJfVFlQRToKLSAgICAgICAg
OjpnbEdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldFNo
YWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q09NUElMRV9TVEFUVVM6CiAgICAgICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAu
ZW5kKCkpIHsKQEAgLTE5NDIsNiArMTkzNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9FTlVNKTsKICAg
ICB9CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCkBAIC0xOTg2LDM5
ICsxOTgwLDQxIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyU291
cmNlKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogICAgIHJldHVybiByZXN1bHQtPnZhbHVlLnNv
dXJjZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVy
ZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dD
R0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6
OmdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsICZ2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFt
ZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZh
bHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5h
bWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0VW5pZm9ybWZ2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgOjpnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlv
biwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xp
bnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGlu
dD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgOjpnbEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwor
ICAgIDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmRhdGEpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKQEAg
LTIwMzcsMjAgKzIwMzMsMjAgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4g
OjpnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBtYXBwZWROYW1lLnV0ZjgoKS5kYXRhKCkp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0VmVydGV4
QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2
KGluZGV4LCBwbmFtZSwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhB
dHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+
IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAg
ICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAog
R0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQpAQCAtMzE0Myw3ICszMTM5LDEyIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKIH0K
IAotCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJv
Z3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVTRURf
UEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8fCBVU0UoT1BFTkdM
X0VTKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA2MGZk
ZmM2NWY4NzM5NTg5NTc5NWE4NGVmMWUwOWFiZjZkN2FhODQzLi4wNTU3MTI0NDA5MTliMjcyZTE5
MzFlM2UxM2UxN2UxNWQ2ZmQxYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwCkBAIC0xOTYsMTIgKzE5NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQog
ICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vy
dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEludGVnZXJ2
KHBuYW1lLCB2YWx1ZS5kYXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0g
cHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414226</attachid>
            <date>2020-11-16 05:38:12 -0800</date>
            <delta_ts>2020-11-16 05:47:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201116153810.patch</filename>
            <type>text/plain</type>
            <size>118377</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg0YWYwMDZmZDM3ZGQx
MmM5MmE5MzUxMDc3MzBjZTg2Y2QzN2ZiOC4uYjc2NGU2YWVkOTdmYTk1NTEyMjkzZjY1OGYzOGM2
ZjMwZTUxMmQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzMyBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRo
ZSB2YWx1ZSBpcyBhIG5vcm1hbCB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIHJlZHVjZXMgdGhlIHJp
c2sKKyAgICAgICAgb2YgaGF2aW5nIHVuaW5pdGlhbGl6ZWQgcmVjZWl2ZSBsb2NhdGlvbi4KKwor
ICAgICAgICBDaGFuZ2UgdGhlIGdldHRlcnMgdGhhdCBhcmUgb25seSB1c2VkIHRvIG9idGFpbiBz
aW5nbGUgdmFsdWVzIHNvCisgICAgICAgIHRoYXQgdGhlIGdldHRlciBpdHNlbGYgaGFzIHRoZSBy
ZXR1cm4gdmFsdWUuCisgICAgICAgIEFkZCBhIHNpbmdsZS12YWx1ZSBnZXR0ZXIgZm9yIGdldHRl
cnMgdGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gYWxzbworICAgICAgICBtdWx0aXBsZSB2YWx1ZXMu
CisKKyAgICAgICAgQWRkIEdDR0xTcGFuIHR5cGUgdGhhdCBpcyB1c2VkIHRvIGNvbW11bmljYXRl
IHBhaXI6IHB0ciwgbnVtYmVyIG9mCisgICAgICAgIGVsZW1lbnRzLgorCisgICAgICAgIFVzZSB0
aGUgUm9idXN0QU5HTEUgdmFyaWFudHMgb2YgdGhlIEdMIEFQSSBpbXBsZW1lbnRhdGlvbiB0byBv
YnRhaW4KKyAgICAgICAgdGhlIHZhbHVlcy4KKworICAgICAgICBSZW1vdmUgdGhlIGNvcnJlc3Bv
bmRpbmcgUm9idXN0QU5HTEUgdmFyaWFudHMgZnJvbSBFeHRlbnNpb25zR0wsIHRoZXkgYXJlCisg
ICAgICAgIGRlYWQgY29kZSBhbmQgdW51c2VkLgorCisgICAgICAgIFRoZSB0eXBlIEdDR0xTcGFu
IHdpbGwgYmUgdXNlZCB0byBzaW1wbGlmeSB0aGUgR1BVIHByb2Nlc3MgaW1wbGVtZW50YXRpb24s
CisgICAgICAgIHNpbmNlIHRoZSBidWZTaXplIHdpbGwgYmUgZXhwbGljaXRseSBhc3NvY2lhdGVk
IGluIHRoZSBwYXNzZWQgZGF0YSBwdHIsCisgICAgICAgIGluc2lkZSB0aGUgR0NHTFNwYW4gdHlw
ZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NHTFNwYW4gd2lsbCBiZSB1c2Vk
IGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAgaS5lLiBhcmJpdHJhcnkgYnVm
ZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKworICAgICAgICBSZW1vdmVzIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSB3b3JrYXJvdW5kIGZyb20gQU5HTEUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY29kZSwgaXQgd2FzIGRlYWQgY29kZSAo
aS5lIGZsYWcgYWx3YXlzIGZhbHNlKS4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBB
TkdMRSBsZXZlbC4KKworICAgICAgICBGaXhlcyBidWdzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFs
dWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlIGxvY2F0aW9uIG9mIHRoZQorICAgICAgICBnb3R0ZW4g
cHJvcGVyeS4gVGhpcyB2YWx1ZSB3b3VsZCBiZSB1bndyaXR0ZW4gaW4gZWRnZS1jYXNlcyBsaWtl
IEdMIGVycm9ycywgYW5kCisgICAgICAgIHRodXMgdGhlIHJlYWQgd291bGQgdG91Y2ggdW51aW5p
dGlhbGl6ZWQgdmFsdWUuCisKKyAgICAgICAgRml4ZXMgYSBidWcgd2hlcmUgdW5pZm9ybSBibG9j
ayB2YXJpYWJsZXMgY29kZSB3b3VsZCBwYXNzIGluIHRvbyBsYXJnZSBidWZmZXIKKyAgICAgICAg
c2l6ZSB0byB0aGUgUm9idXN0QU5HTEUgY2FsbC4gVGhlIGJ1ZlNpemUgcmVmZXJzIHRvIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMsIGJ1dAorICAgICAgICB0aGUgY29kZSBwYXNzZWQgaW4gdGhlIHNp
emUgb2YgdGhlIGJ1ZmZlciAoaS5lLiBudW1iZXIgb2YgZWxlbWVudHMgKiBzaXplIG9mCisgICAg
ICAgIGVsZW1lbnQpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSByZWZhY3Rvci4KKworICAg
ICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNj
cmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFBy
b2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXpl
TmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVjaXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1l
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1
ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRCb29sZWFuUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldEZsb2F0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEludFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJm
dkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5p
dFZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpnZXRGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0Qm9v
bGVhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0SW50ZWdlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJs
b2NraSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6Cisg
ICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNwYW4pOgorICAgICAgICAoR0NHTFNwYW46Om9wZXJhdG9y
W10pOgorICAgICAgICAoR0NHTFNwYW46Om9wZXJhdG9yKik6CisgICAgICAgIChzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0RmxvYXR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dEludGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJp
X3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRl
Z2VyNjRpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcmkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRp
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcmkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2cpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRl
cmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFVuaWZvcm1mdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3Yp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRTaGFkZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXpl
VVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFudlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXJ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZl
cnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdl
cjY0aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Ymxl
bmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21w
aWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVBdHRyaWJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpvcmlnaW5hbFN5bWJvbE5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcHBlZFN5bWJvbE5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVZlcnRleEFy
cmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1ZlcnRl
eEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRC
b29sZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
RmxvYXR2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJ
bnRlZ2VyNjQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEludGVnZXI2NGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3YpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXI2NGlfdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pdik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9u
QnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbm1hbmdsZWRJbmZvTG9nKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xv
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFk
ZXJTb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFRleFBhcmFtZXRlcmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlm
b3JtaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFVuaWZvcm11aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFn
ZTJEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGcmFtZWJ1ZmZlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRl
UHJvZ3JhbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y3JlYXRlUmVuZGVyYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFkZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRleHR1cmUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZUJ1ZmZl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
ZGVsZXRlRnJhbWVidWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmRlbGV0ZVByb2dyYW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlU2hhZGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpk
ZWxldGVUZXh0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpzeW50aGVzaXplR0xFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0NvbnRleHRDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrTGF5ZXJDb21w
b3NpdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZvcmNlQ29udGV4dExvc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlY3ljbGVDb250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNw
YXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJERGlyZWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5z
dGFuY2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByaW1pdGl2ZVJlc3Rh
cnRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6YmxpdEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVm
ZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3RvcmFnZTJEKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlM0QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXhTdWJJ
bWFnZTNEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRGcmFnRGF0YUxvY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
NHVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMXVpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4
M2Z2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4M3gyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4M3g0ZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJ
NGl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWJJNHVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSVBvaW50ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdS
YW5nZUVsZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpkcmF3QnVmZmVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
ZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNsZWFyQnVmZmVyZmkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNyZWF0ZVF1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNRdWVyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5RdWVyeSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFF1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRRdWVyeU9iamVjdHVpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlU2FtcGxlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNTYW1wbGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5k
U2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6c2FtcGxlclBhcmFtZXRlcmkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVy
ZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1N5bmMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVN5bmMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsaWVudFdhaXRTeW5j
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3
YWl0U3luYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U3luY2l2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmlzVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5UcmFuc2Zvcm1GZWVk
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJh
Y2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmJpbmRCdWZmZXJCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3Jtcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9j
a0JpbmRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRQaXhlbHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vydik6CisKIDIwMjAtMTEtMTYgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5hbCByZWZh
Y3RvciBmb3IgV2ViR0wgaW1wbGVtZW50YXRpb24gdG8gdXNlIG9ubHkgR3JhcGhpY3NDb250ZXh0
R0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAppbmRleCAyZWYxMGIwYTRm
MzQ2ZWZlMWI5MzhlNDZlMDA1M2E4YTMzOTQ1MzQ0Li4wNGIzMGY4ZjY0NjQxNDY4MDY3ZTMwOTI2
ZTc0ZTRmMmQ5YzE4YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVl
bkNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3Bw
CkBAIC0yODUsNyArMjg1LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zm
c2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKQogICAgICAgICAvLyBjcmVhdGVz
IGEgbmV3IGJhY2tpbmcgc3RvcmUuIFNpbmNlIHdlJ3JlIG5vdCBkb2luZyB0aGF0IHlldCwgd2UK
ICAgICAgICAgLy8gbmVlZCB0byBlcmFzZSB3aGF0J3MgdGhlcmUuCiAKLSAgICAgICAgR0NHTGZs
b2F0IGNsZWFyQ29sb3JbNF07CisgICAgICAgIEdDR0xmbG9hdCBjbGVhckNvbG9yWzRdIHsgfTsK
ICAgICAgICAgZ2MzZC0+Z2V0RmxvYXR2KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9DTEVBUl9W
QUxVRSwgY2xlYXJDb2xvcik7CiAgICAgICAgIGdjM2QtPmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7
CiAgICAgICAgIGdjM2QtPmNsZWFyKEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklU
IHwgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHRH
TDo6U1RFTkNJTF9CVUZGRVJfQklUKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggODA3M2FkYzExMTQ5MjE1ZjU2
ZDFlNDVkYTY4NGRlODI4NTgxN2U5Mi4uNTViYzFmOGRiMjQ5ZDMzODIyZTc4ODljYTc4M2Y1YmVj
MDI1YTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTE1OSw5ICsxNTksOSBAQCB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX3VucGFja1NraXBSb3dz
ID0gMDsKICAgICBtX3VucGFja1NraXBJbWFnZXMgPSAwOwogCi0gICAgbV9jb250ZXh0LT5nZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYXzNEX1RFWFRVUkVfU0laRSwgJm1fbWF4M0RU
ZXh0dXJlU2l6ZSk7CisgICAgbV9tYXgzRFRleHR1cmVTaXplID0gbV9jb250ZXh0LT5nZXRJbnRl
Z2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfM0RfVEVYVFVSRV9TSVpFKTsKICAgICBtX21heDNE
VGV4dHVyZUxldmVsID0gV2ViR0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heDNEVGV4
dHVyZVNpemUsIG1fbWF4M0RUZXh0dXJlU2l6ZSk7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTLCAmbV9tYXhBcnJh
eVRleHR1cmVMYXllcnMpOworICAgIG1fbWF4QXJyYXlUZXh0dXJlTGF5ZXJzID0gbV9jb250ZXh0
LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMp
OwogCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQo
KTsKIApAQCAtMjA4LDkgKzIwOCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVz
dG9yZVVucGFja1BhcmFtZXRlcnMoKQogCiBsb25nIGxvbmcgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0SW50NjRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludDY0IHZh
bHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXI2NHYocG5hbWUsICZ2YWx1ZSk7Ci0g
ICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXI2NChwbmFt
ZSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFy
cmF5T2JqZWN0cygpCkBAIC0xMDU1LDIzICsxMDUzLDE0IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lCiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRF
WFRVUkVfSU1NVVRBQkxFX0xFVkVMUzoKICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1I6IHsKLSAgICAgICAgR0NHTGludCB2YWx1
ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFt
ZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLSAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQ6IHsKLSAgICAgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0
LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHZhbHVl
KTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1I6Cisg
ICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUOgor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJF
X01JTl9MT0Q6CiAgICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfTUFYX0xPRDogewotICAgICAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwOwotICAg
ICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7
Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9NQVhfTE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRUZXhQYXJh
bWV0ZXJmKHRhcmdldCwgcG5hbWUpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSk7CiAg
ICAgfQpAQCAtMjQ0NSwxMSArMjQzNCw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpCiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RB
UlQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZGRVJfU0laRToKLSAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZFUl9TVEFSVDogewotICAgICAg
ICBHQ0dMaW50NjQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXI2NGlf
dih0YXJnZXQsIGluZGV4LCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX1NUQVJUOgorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpKHRhcmdldCwgaW5kZXgpOwogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgIGlm
IChpbmRleCA+PSBtX2JvdW5kSW5kZXhlZFVuaWZvcm1CdWZmZXJzLnNpemUoKSkgewogICAgICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUs
ICJnZXRJbmRleGVkUGFyYW1ldGVyIiwgImluZGV4IG91dCBvZiByYW5nZSIpOwpAQCAtMjUyNCwy
NCArMjUxMCwyMCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tQYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcgogI2lmIFVTRShBTkdMRSkKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9y
U2hhZGVyKCJnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIiLCAmcHJvZ3JhbSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIEdDR0xpbnQgcmVzdWx0ID0gMDsKICAgICBzd2l0Y2gg
KHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19CSU5E
SU5HOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZP
Uk1TOgotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBw
bmFtZSwgc2l6ZW9mKHJlc3VsdCksIG51bGxwdHIsICZyZXN1bHQpOwotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHJlc3VsdCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMdWludD4obV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpKHByb2dyYW0ub2Jq
ZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUzogewotICAgICAgICBH
Q0dMaW50IHNpemUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1C
bG9ja0luZGV4LCBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9S
TVMsIHNpemVvZihzaXplKSwgbnVsbHB0ciwgJnNpemUpOworICAgICAgICBHQ0dMaW50IHNpemUg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2kocHJvZ3JhbS5vYmplY3QoKSwgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0FDVElWRV9V
TklGT1JNUyk7CiAgICAgICAgIFZlY3RvcjxHQ0dMaW50PiBwYXJhbXMoc2l6ZSwgMCk7Ci0gICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9i
dXN0QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBzaXpl
b2YocGFyYW1zWzBdKSAqIHBhcmFtcy5zaXplKCksIG51bGxwdHIsIHBhcmFtcy5kYXRhKCkpOwor
ICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgcmV0dXJuIHBh
cmFtcy5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4oeCk7IH0p
OwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVS
RU5DRURfQllfVkVSVEVYX1NIQURFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSOgotICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHBy
b2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgc2l6ZW9mKHJlc3VsdCks
IG51bGxwdHIsICZyZXN1bHQpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ocmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fY29udGV4dC0+Z2V0QWN0
aXZlVW5pZm9ybUJsb2NraShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5h
bWUpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwg
ImludmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
NzcyLDkgKzI3NTQsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZwogICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25O
YW1lLCAiaW52YWxpZCBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQotICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQs
IHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBt
X2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRh
Y2htZW50LCBwbmFtZSk7CiAgICAgfQogICAgIGlmICghdmFsaWRhdGVOb25EZWZhdWx0RnJhbWVi
dWZmZXJBdHRhY2htZW50KGZ1bmN0aW9uTmFtZSwgYXR0YWNobWVudCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjc5NiwxMSArMjc3Niw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJn
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBI
QV9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfREVQVEhfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX1NURU5DSUxfU0laRToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFs
dWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9DT01QT05FTlRfVFlQRToKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1l
KTsKICAgICB9CiAKICAgICBpZiAob2JqZWN0LT5pc1RleHR1cmUoKSkgewpAQCAtMjgxMSwxMSAr
Mjc4OCw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnCiAgICAgICAgICAgICByZXR1cm4gbWFr
ZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMVGV4dHVyZSY+KCpvYmplY3QpKTsKICAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJF
X0xFVkVMOgogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRToKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORzogewotICAgICAgICAg
ICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0KKyAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORzoK
KyAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9F
TlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciB0ZXh0dXJlIGF0
dGFjaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg5Nyw3ICsyODcx
LDcgQEAgYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZU5vbkRlZmF1bHRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQoY29uc3QgY2hhcioKIEdDR0xpbnQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogewogICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykK
LSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RS
QVdfQlVGRkVSUywgJm1fbWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBtX21heERyYXdCdWZmZXJz
ID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZG
RVJTKTsKICAgICByZXR1cm4gbV9tYXhEcmF3QnVmZmVyczsKIH0KIApAQCAtMjkwNSw3ICsyODc5
LDcgQEAgR0NHTGludCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1l
bnRzKCkKIHsKICAgICAvLyBEcmF3QnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVO
VFMgPT0gTUFYX0RSQVdfQlVGRkVSUwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQot
ICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJB
V19CVUZGRVJTLCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgbV9tYXhDb2xvckF0
dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhf
RFJBV19CVUZGRVJTKTsKICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4
IDljYjBmODU2YjU4ZTEwZTZmNDczMDllNmZlM2MxMGUyNjcwOTcxNjYuLjQ5NDE1NmUxZTY1YjYw
MjkxOTBkYjdjMWMwMjZhZGY4MDNkZGE4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC05OCwxMCArOTgsOCBAQCBib29sIFdlYkdM
RHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIHdlYgogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0ID0gd2ViZ2xDb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhZnRlciB3
ZSBtYWtlIHN1cmUgR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBzdXBwb3J0ZWQuCi0gICAgR0NHTGlu
dCBtYXhEcmF3QnVmZmVycyA9IDA7Ci0gICAgR0NHTGludCBtYXhDb2xvckF0dGFjaG1lbnRzID0g
MDsKLSAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZF
UlNfRVhULCAmbWF4RHJhd0J1ZmZlcnMpOwotICAgIGNvbnRleHQtPmdldEludGVnZXJ2KEV4dGVu
c2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1heENvbG9yQXR0YWNobWVudHMp
OworICAgIEdDR0xpbnQgbWF4RHJhd0J1ZmZlcnMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVu
c2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOworICAgIEdDR0xpbnQgbWF4Q29sb3JBdHRh
Y2htZW50cyA9IGNvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRU
QUNITUVOVFNfRVhUKTsKICAgICBpZiAobWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0
YWNobWVudHMgPCA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggMDFhMDJmNTFkNzJkODky
ZWFiOGU4YzI3MDUwNmNiZmM0ZTczNjU0YS4uYWY0ZjA0MTdiMWIzZDg4OTRlYTVmOTBmMzRhZGI0
MjRhN2EzNWFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAKQEAgLTYxMywyMCArNjEzLDIwIEBAIGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6
aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdyYXBoaWNzQ29udGV4dEdMKiBnM2QsIGNvbnN0IGNoYXIq
CiAgICAgR0NHTGJvb2xlYW4gaXNTY2lzc29yRW5hYmxlZCA9IDA7CiAgICAgR0NHTGJvb2xlYW4g
aXNEaXRoZXJFbmFibGVkID0gMDsKICAgICBpZiAoaW5pdENvbG9yKSB7Ci0gICAgICAgIGczZC0+
Z2V0RmxvYXR2KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9DTEVBUl9WQUxVRSwgY29sb3JDbGVh
clZhbHVlKTsKLSAgICAgICAgZzNkLT5nZXRCb29sZWFudihHcmFwaGljc0NvbnRleHRHTDo6Q09M
T1JfV1JJVEVNQVNLLCBjb2xvck1hc2spOworICAgICAgICBjb2xvckNsZWFyVmFsdWUgPSBnM2Qt
PmdldEZsb2F0KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9DTEVBUl9WQUxVRSk7CisgICAgICAg
IGNvbG9yTWFzayA9IGczZC0+Z2V0Qm9vbGVhbihHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfV1JJ
VEVNQVNLKTsKICAgICAgICAgZzNkLT5jbGVhckNvbG9yKDAsIDAsIDAsIDApOwogICAgICAgICBn
M2QtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICB9CiAgICAgaWYgKGlu
aXREZXB0aCkgewotICAgICAgICBnM2QtPmdldEZsb2F0dihHcmFwaGljc0NvbnRleHRHTDo6REVQ
VEhfQ0xFQVJfVkFMVUUsICZkZXB0aENsZWFyVmFsdWUpOwotICAgICAgICBnM2QtPmdldEJvb2xl
YW52KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9XUklURU1BU0ssICZkZXB0aE1hc2spOworICAg
ICAgICBkZXB0aENsZWFyVmFsdWUgPSBnM2QtPmdldEZsb2F0KEdyYXBoaWNzQ29udGV4dEdMOjpE
RVBUSF9DTEVBUl9WQUxVRSk7CisgICAgICAgIGRlcHRoTWFzayA9IGczZC0+Z2V0Qm9vbGVhbihH
cmFwaGljc0NvbnRleHRHTDo6REVQVEhfV1JJVEVNQVNLKTsKICAgICAgICAgZzNkLT5jbGVhckRl
cHRoKDEuMGYpOwogICAgICAgICBnM2QtPmRlcHRoTWFzayh0cnVlKTsKICAgICB9CiAgICAgaWYg
KGluaXRTdGVuY2lsKSB7Ci0gICAgICAgIGczZC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0
R0w6OlNURU5DSUxfQ0xFQVJfVkFMVUUsICZzdGVuY2lsQ2xlYXJWYWx1ZSk7Ci0gICAgICAgIGcz
ZC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfV1JJVEVNQVNLLCByZWlu
dGVycHJldF9jYXN0PEdDR0xpbnQqPigmc3RlbmNpbE1hc2spKTsKKyAgICAgICAgc3RlbmNpbENs
ZWFyVmFsdWUgPSBnM2QtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQ0xF
QVJfVkFMVUUpOworICAgICAgICBzdGVuY2lsTWFzayA9IGczZC0+Z2V0SW50ZWdlcihHcmFwaGlj
c0NvbnRleHRHTDo6U1RFTkNJTF9XUklURU1BU0spOwogICAgICAgICBnM2QtPmNsZWFyU3RlbmNp
bCgwKTsKICAgICAgICAgZzNkLT5zdGVuY2lsTWFzaygweGZmZmZmZmZmKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAppbmRleCBjOGMzYjgyMjY1
MjUzYzBlMDRlZTAxYTZiNDEyOWM5YzVmMTgwNTI5Li4zZTQ2YzVlNTZkMTNkY2ZjZjJlY2MyZGFk
MmFjMTk2YTVmN2NlYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJv
Z3JhbS5jcHAKQEAgLTIxNiw4ICsyMTYsNyBAQCB2b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVBY3Rp
dmVBdHRyaWJMb2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCkKIHsKICAgICBt
X2FjdGl2ZUF0dHJpYkxvY2F0aW9ucy5jbGVhcigpOwogCi0gICAgR0NHTGludCBudW1BdHRyaWJz
ID0gMDsKLSAgICBjb250ZXh0M2QtPmdldFByb2dyYW1pdihvYmplY3QoKSwgR3JhcGhpY3NDb250
ZXh0R0w6OkFDVElWRV9BVFRSSUJVVEVTLCAmbnVtQXR0cmlicyk7CisgICAgR0NHTGludCBudW1B
dHRyaWJzID0gY29udGV4dDNkLT5nZXRQcm9ncmFtaShvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0
R0w6OkFDVElWRV9BVFRSSUJVVEVTKTsKICAgICBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9ucy5yZXNp
emUoc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1BdHRyaWJzKSk7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1BdHRyaWJzOyArK2kpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8gaW5mbzsKQEAgLTI0MSw4ICsyNDAsNyBAQCB2b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVJ
bmZvSWZOZWVkZWQoKQogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0ID0gZ2V0QUdyYXBo
aWNzQ29udGV4dEdMKCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47Ci0gICAg
R0NHTGludCBsaW5rU3RhdHVzID0gMDsKLSAgICBjb250ZXh0LT5nZXRQcm9ncmFtaXYob2JqZWN0
KCksIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5LX1NUQVRVUywgJmxpbmtTdGF0dXMpOworICAgIEdD
R0xpbnQgbGlua1N0YXR1cyA9IGNvbnRleHQtPmdldFByb2dyYW1pKG9iamVjdCgpLCBHcmFwaGlj
c0NvbnRleHRHTDo6TElOS19TVEFUVVMpOwogICAgIG1fbGlua1N0YXR1cyA9IGxpbmtTdGF0dXM7
CiAgICAgaWYgKG1fbGlua1N0YXR1cykgewogICAgICAgICBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0
aW9ucyhjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGQyZmFjMjAzNjI0OTk1ODVlMGQ1MTU1NmNjNWNh
NGUzYWFjMzNkYWYuLjY5M2Q2MjA2ZjJjOTBmOTVmZGE5NzNiOTk4ZWI5NjQ2N2RjZmVhOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtMzA3LDExICszMDcsOCBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAg
ICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIocmVpbnRlcnByZXRfY2FzdDxXZWJHTFRleHR1cmUm
Pigqb2JqZWN0KSk7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6Ci0gICAgICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5H
X0VYVDogewotICAgICAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgICAgICBtX2Nv
bnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNo
bWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAg
IH0KKyAgICAgICAgY2FzZSBFeHRlbnNpb25zR0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09M
T1JfRU5DT0RJTkdfRVhUOgorICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIi
LCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM0Nyw5ICszNDQsOSBAQCBHQ0dMaW50IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9ydHNE
cmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZl
cnMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJB
V19CVUZGRVJTX0VYVCwgJm1fbWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBtX21heERyYXdCdWZm
ZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVS
U19FWFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRl
eHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwg
Jm1fbWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9
IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5U
U19FWFQpOwogICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRU
QUNITUVOVFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhE
cmF3QnVmZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKIH0KQEAgLTM1OSw3ICszNTYsNyBA
QCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygp
CiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVn
ZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JB
dHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+
Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAg
IHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXgg
NmMzNzI5OWQ0Mzc3YWEwM2MyOTUxYzI0MDUwNTg5ZThiM2MzMGZhNy4uOGFmY2NhMTQ0OWQ1MDhl
MTU5NDViM2IwOWRkZWE0MzI0NzMyYjVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTg3Miw4ICs4
NzIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250
ZXh0KCkKICAgICBtX2NsZWFyU3RlbmNpbCA9IDA7CiAgICAgbV9jb2xvck1hc2tbMF0gPSBtX2Nv
bG9yTWFza1sxXSA9IG1fY29sb3JNYXNrWzJdID0gbV9jb2xvck1hc2tbM10gPSB0cnVlOwogCi0g
ICAgR0NHTGludCBudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gMDsKLSAgICBtX2NvbnRl
eHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09NQklORURfVEVYVFVSRV9J
TUFHRV9VTklUUywgJm51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOworICAgIEdDR0xpbnQg
bnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFw
aGljc0NvbnRleHRHTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMpOwogICAgIG1f
dGV4dHVyZVVuaXRzLmNsZWFyKCk7CiAgICAgbV90ZXh0dXJlVW5pdHMucmVzaXplKG51bUNvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHMpOwogI2lmICFVU0UoQU5HTEUpCkBAIC04ODEsMTggKzg4MCwx
NCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0
KCkKICAgICAgICAgbV91bnJlbmRlcmFibGVUZXh0dXJlVW5pdHMuYWRkKGkpOwogI2VuZGlmCiAg
ICAgCi0gICAgR0NHTGludCBudW1WZXJ0ZXhBdHRyaWJzID0gMDsKLSAgICBtX2NvbnRleHQtPmdl
dEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVkVSVEVYX0FUVFJJQlMsICZudW1WZXJ0
ZXhBdHRyaWJzKTsKKyAgICBHQ0dMaW50IG51bVZlcnRleEF0dHJpYnMgPSBtX2NvbnRleHQtPmdl
dEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9WRVJURVhfQVRUUklCUyk7CiAgICAgbV9t
YXhWZXJ0ZXhBdHRyaWJzID0gbnVtVmVydGV4QXR0cmliczsKICAgICAKLSAgICBtX21heFRleHR1
cmVTaXplID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVEVYVFVSRV9TSVpFLCAmbV9tYXhUZXh0dXJlU2l6ZSk7CisgICAgbV9tYXhUZXh0dXJl
U2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRV
UkVfU0laRSk7CiAgICAgbV9tYXhUZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6OmNvbXB1dGVM
ZXZlbENvdW50KG1fbWF4VGV4dHVyZVNpemUsIG1fbWF4VGV4dHVyZVNpemUpOwotICAgIG1fbWF4
Q3ViZU1hcFRleHR1cmVTaXplID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBo
aWNzQ29udGV4dEdMOjpNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFLCAmbV9tYXhDdWJlTWFwVGV4
dHVyZVNpemUpOworICAgIG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplID0gbV9jb250ZXh0LT5nZXRJ
bnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFKTsKICAg
ICBtX21heEN1YmVNYXBUZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6OmNvbXB1dGVMZXZlbENv
dW50KG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplLCBtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSk7Ci0g
ICAgbV9tYXhSZW5kZXJidWZmZXJTaXplID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfUkVOREVSQlVGRkVSX1NJWkUsICZtX21heFJlbmRlcmJ1
ZmZlclNpemUpOworICAgIG1fbWF4UmVuZGVyYnVmZmVyU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50
ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1JFTkRFUkJVRkZFUl9TSVpFKTsKIAogICAgIC8v
IFRoZXNlIHR3byB2YWx1ZXMgZnJvbSBFWFRfZHJhd19idWZmZXJzIGFyZSBsYXppbHkgcXVlcmll
ZC4KICAgICBtX21heERyYXdCdWZmZXJzID0gMDsKQEAgLTE3NDEsOCArMTczNiw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciYgc2hh
ZGVyKQogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQ
cm9ncmFtT3JTaGFkZXIoImNvbXBpbGVTaGFkZXIiLCAmc2hhZGVyKSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihzaGFkZXIub2JqZWN0KCkpOwotICAgIEdD
R0xpbnQgdmFsdWU7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCks
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnZhbHVlKTsKKyAgICBHQ0dMaW50
IHZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTKTsKICAgICBzaGFkZXIuc2V0VmFsaWQodmFsdWUpOwog
CiAgICAgYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpOwpAQCAtMjg4OCw4ICsyODgyLDcgQEAg
V2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QnVmZmVyUGFyYW1ldGVyKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0
ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIEdDR0xpbnQgdmFsdWUgPSBtX2NvbnRl
eHQtPmdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CiAgICAgaWYgKHBuYW1lID09
IEdyYXBoaWNzQ29udGV4dEdMOjpCVUZGRVJfU0laRSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUpOwpAQCAtMzE4OSwyNiArMzE4
MiwyNiBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFy
YW1ldGVyKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFByb2dyYW1QYXJh
bWV0ZXIiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkRFTEVURV9TVEFUVVM6CiAgICAgICAgIHJldHVybiBwcm9ncmFtLmlzRGVsZXRlZCgp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlZBTElEQVRFX1NUQVRVUzoKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPih2YWx1ZSk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0
KCksIHBuYW1lKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFUVVM6CiAg
ICAgICAgIHJldHVybiBwcm9ncmFtLmdldExpbmtTdGF0dXMoKTsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpBVFRBQ0hFRF9TSEFERVJTOgotICAgICAgICBtX2NvbnRleHQtPmdldFByb2dy
YW1pdihwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVj
dCgpLCBwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX0FUVFJJQlVU
RVM6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TOgogI2lmIFVT
RShBTkdMRSkKLSAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3Qo
KSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1p
KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKTsKICNlbHNlCi0gICAgICAgIHN0YXRpY19jYXN0PEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVpbHRJbkFj
dGl2ZVN5bWJvbENvdW50KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAg
ICB7CisgICAgICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKKyAgICAgICAgICAgIHN0YXRpY19j
YXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVp
bHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwor
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CiAjZW5kaWYgLy8gVVNFKEFOR0xF
KQotICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgZGVmYXVsdDoKICNpZiBFTkFCTEUoV0VCR0wy
KQogICAgICAgICBpZiAoaXNXZWJHTDIoKSkgewpAQCAtMzIxNiw4ICszMjA5LDcgQEAgV2ViR0xB
bnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIEcKICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERToKICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUzoKICAgICAgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNX0JMT0NLUzoKLSAgICAgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVl
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpOwogICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAg
LTMyODAsNyArMzI3Miw2IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDCiAgICAgICAgIHJldHVy
biB2YWx1ZTsKICAgICB9CiAKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBu
YW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX1NBTVBMRVM6
CiAgICAgICAgIGlmICghaXNXZWJHTDIoKSkgewpAQCAtMzI5Niw4ICszMjg3LDcgQEAgV2ViR0xB
bnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKEdD
R0xlbnVtIHRhcmdldCwgR0MKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZG
RVJfQUxQSEFfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJf
REVQVEhfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJfU1RF
TkNJTF9TSVpFOgotICAgICAgICBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAg
cmV0dXJuIG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1l
KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9S
TUFUOgogICAgICAgICByZXR1cm4gbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5nZXRJbnRlcm5hbEZv
cm1hdCgpOwogICAgIGRlZmF1bHQ6CkBAIC0zMzEwLDE2ICszMzAwLDEzIEBAIFdlYkdMQW55IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlciYg
c2hhZGVyLCBHQ0dMCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0U2hhZGVyUGFyYW1ldGVyIiwgJnNoYWRlcikp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIHN3
aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERUxFVEVfU1RBVFVT
OgogICAgICAgICByZXR1cm4gc2hhZGVyLmlzRGVsZXRlZCgpOwogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTOgotICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2
KHNoYWRlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxib29sPih2YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2Nv
bnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFOgotICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRl
cml2KHNoYWRlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIub2JqZWN0KCksIHBuYW1lKSk7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfRU5VTSwgImdldFNoYWRlclBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBu
YW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzM3OCwyMCArMzM2NSwxNSBAQCBX
ZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhQYXJhbWV0ZXIoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbgogICAgIGF1dG8gdGV4ID0gdmFsaWRhdGVUZXh0dXJlQmlu
ZGluZygiZ2V0VGV4UGFyYW1ldGVyIiwgdGFyZ2V0KTsKICAgICBpZiAoIXRleCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgR0NHTGZsb2F0IGZW
YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfTUFHX0ZJTFRFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhU
VVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQ
X1M6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6Ci0gICAgICAg
IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdl
dCwgcG5hbWUpKTsKICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9Q
WV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwotICAgICAgICBpZiAobV9l
eHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgJmZWYWx1ZSk7Ci0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZWYWx1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1f
ZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQorICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFRleFBhcmFtZXRlciIs
ICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMg
bm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgZGVmYXVsdDoKQEAg
LTM2MjQsNyArMzYwNiw3IEBAIFJlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMCiAKICAgICBHQ0dMaW50
IGFjdGl2ZVVuaWZvcm1zID0gMDsKICNpZiBVU0UoQU5HTEUpCi0gICAgbV9jb250ZXh0LT5nZXRQ
cm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklG
T1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKKyAgICBhY3RpdmVVbmlmb3JtcyA9IG1fY29udGV4dC0+
Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9V
TklGT1JNUyk7CiAjZWxzZQogICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Kj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dy
YW0ub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVV
bmlmb3Jtcyk7CiAjZW5kaWYKQEAgLTYyMzcsOSArNjIxOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cmVzdW1lKCkKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRCb29sZWFuUGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogewotICAgIEdDR0xib29sZWFu
IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCAmdmFsdWUpOwot
ICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRCb29sZWFuKHBuYW1l
KTsKIH0KIAogVmVjdG9yPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xl
YW5BcnJheVBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKQEAgLTYyNTgsMjMgKzYyMzgsMTcgQEAg
VmVjdG9yPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xlYW5BcnJheVBh
cmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIAogZmxvYXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0RmxvYXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGZsb2F0IHZh
bHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgJnZhbHVlKTsKLSAgICBy
ZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RmxvYXQocG5hbWUpOwogfQog
CiBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0SW50UGFyYW1ldGVyKEdDR0xlbnVt
IHBuYW1lKQogewotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldEludGVnZXIocG5hbWUpOwogfQogCiB1bnNpZ25lZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAm
dmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRl
Z2VyKHBuYW1lKTsKIH0KIAogUmVmUHRyPEZsb2F0MzJBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQpAQCAt
NzYyNiw5ICs3NjAwLDkgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRN
YXhEcmF3QnVmZmVycygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAmbV9tYXhE
cmF3QnVmZmVycyk7CisgICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldElu
dGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgaWYgKCFtX21h
eENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5z
aW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhDb2xvckF0dGFjaG1lbnRz
KTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xf
ZHJhd19idWZmZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19C
VUZGRVJTLgogICAgIHJldHVybiBzdGQ6Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9y
QXR0YWNobWVudHMpOwogfQpAQCAtNzYzOCw3ICs3NjEyLDcgQEAgR0NHTGludCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBv
cnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9y
QXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dM
OjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAg
ICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVu
c2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4Q29s
b3JBdHRhY2htZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaAppbmRleCAzNGYxN2VjNjFiMzMxMDM3MWMyZGRiZDBhMDE3NWM2MGI5
M2QxNmY1Li5iYTg2NWIzMzA4ZTZjOTQ1ODIyMTIyMzc3OTZkNmZkNTc3NDg0N2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMzA2
LDIxICszMDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FO
R0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIGRhdGEpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3Jt
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBvaW50ZXIpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkq
IGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9
IDA7CkBAIC0zMzYsMTQgKzMyMSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFF1
ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBk
YXRhKSA9IDA7IC8vIE5PTElOVAogICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIGRhdGEpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
NjQqIGRhdGEpID0gMDsgLy8gTk9MSU5UCiAgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCogcGFyYW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBkOWU1ODhhZmEzMGRi
YTczMDkzMGY5NmM5ODcyOTEzNDAxMjk4YzFlLi5mOGQ3MTU2ODcwNTI4ZGU5ZTE5ZDNkZGExMGJj
NWFjMDBmY2E0ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTk4NiwzMSArOTg2LDMwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJh
bWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkg
PSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIC8vIGdldFBhcmFtZXRlcgogICAgIHZp
cnR1YWwgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51bSBuYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcmlfdihHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldElu
dGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwg
R0NHTGludDY0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtaXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29s
ZWFuKiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7Cisg
ICAgdmlydHVhbCBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSA9IDA7Cisg
ICAgdmlydHVhbCBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSA9
IDA7CiAKICAgICB2aXJ0dWFsIEdDR0xlbnVtIGdldEVycm9yKCkgPSAwOwogCiAgICAgLy8gZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVh
bCBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8g
Z2V0UHJvZ3JhbVBhcmFtZXRlcgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9n
KFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAogICAgIC8vIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cgotICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwg
R0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUpID0gMDsKIAogICAgIC8vIGdldFNoYWRlclBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U2hh
ZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFNo
YWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNp
b25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSA9IDA7CkBAIC0xMDE4
LDE5ICsxMDE3LDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTaGFkZXJTb3Vy
Y2UoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgLy8gZ2V0VGV4UGFyYW1ldGVyCi0gICAg
dmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFy
YW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
ID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0VGV4UGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICAvLyBn
ZXRVbmlmb3JtCi0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5p
Zm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpID0gMDsKIAogICAg
IHZpcnR1YWwgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29u
c3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRWZXJ0ZXhBdHRyaWIKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJp
Yml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGludD4gdmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTHNpemVpcHRyIGdl
dFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpID0gMDsK
IApAQCAtMTIzNiw3ICsxMjM1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3Jt
QmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgPSAw
OworCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgorICAgIEdDR0xmbG9hdCBnZXRGbG9hdChHQ0dM
ZW51bSBwbmFtZSk7CisgICAgR0NHTGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSk7
CisgICAgR0NHTGludCBnZXRJbnRlZ2VyKEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMaW50IGdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2
b2lkIHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CkBAIC0xMzY3LDYgKzEzNzIsMzUgQEAgcHJp
dmF0ZToKICAgICBEZXN0aW5hdGlvbiBtX2Rlc3RpbmF0aW9uOwogfTsKIAoraW5saW5lIEdDR0xm
bG9hdCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpCit7CisgICAg
R0NHTGZsb2F0IHZhbHVlWzFdIHsgfTsKKyAgICBnZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAg
ICByZXR1cm4gdmFsdWVbMF07Cit9CisKK2lubGluZSBHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRl
eHRHTDo6Z2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMYm9vbGVhbiB2YWx1
ZVsxXSB7IH07CisgICAgZ2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFs
dWVbMF07Cit9CisKK2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRJbnRlZ2Vy
KEdDR0xlbnVtIHBuYW1lKQoreworICAgIEdDR0xpbnQgdmFsdWVbMV0geyB9OworICAgIGdldElu
dGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlWzBdOworfQorCitpbmxpbmUg
R0NHTGludCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpCit7
CisgICAgR0NHTGludCB2YWx1ZVsxXSB7IH07CisgICAgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYo
cHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZh
bHVlWzBdOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4
IDY5OWRlMjhiYWViOTJjYzI1MzM5NGRiYTgwYjdlN2E3OGUxM2Y0NDUuLmRiMGYwM2M4YjJlMjVj
ODM1OWQzMDZmOTQyYjZiZmEyMmE3MzBiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0yNSw3ICsyNSw5IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAvLyBHQ0dMIHR5cGVzIG1hdGNoIHRoZSBjb3Jy
ZXNwb25kaW5nIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAogLy8gaGVhZGVy
IGZpbGUgZ2wyLmggZnJvbSBraHJvbm9zLm9yZy4KQEAgLTU1LDMgKzU3LDUxIEBAIHR5cGVkZWYg
R0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVm
IHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
RXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4KK3N0cnVjdCBHQ0dM
U3BhbjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+CitzdHJ1Y3QgR0NHTFNw
YW4geworICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJy
YXkpCisgICAgeyB9CisgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQorICAgICAgICA6
IGRhdGEoYXJyYXkpCisgICAgeyB9CisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBBU1NF
UlQoZGF0YSk7IEFTU0VSVChpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CisgICAgVCYg
b3BlcmF0b3IqKCkgeyAgQVNTRVJUKGRhdGEpOyByZXR1cm4gKmRhdGE7IH0KKyAgICBUKiBkYXRh
OworICAgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90IGJ1ZlNpemUgPSBFeHRlbnQ7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCk+IHsKKyAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1ZlNp
emVfKQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykK
KyAgICB7IH0KKyAgICB0ZW1wbGF0ZTxzaXplX3QgU3o+IEdDR0xTcGFuKFQgKCZhcnJheSlbU3pd
KQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShTeikKKyAgICB7IH0K
KyAgICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYgYXJyYXkpCisgICAgICAgIDogZGF0YShhcnJh
eS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkpCisgICAgeyB9CisgICAg
VCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBBU1NFUlQoZGF0YSk7IEFTU0VSVChpIDwgYnVmU2l6
ZSk7IHJldHVybiBkYXRhW2ldOyB9CisgICAgVCYgb3BlcmF0b3IqKCkgeyBBU1NFUlQoZGF0YSk7
IHJldHVybiAqZGF0YTsgfQorICAgIFQqIGRhdGE7CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KK0dDR0xTcGFuKFQgKCYpW05d
KSAtPiBHQ0dMU3BhbjxULCBOPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK0dDR0xTcGFuKFdU
Rjo6VmVjdG9yPFQ+JikgLT4gR0NHTFNwYW48VD47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitH
Q0dMU3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNvdW50KQoreworICAgIHJl
dHVybiBHQ0dMU3BhbjxUPiB7IGRhdGEsIGNvdW50IH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5j
cHAKaW5kZXggMWM4YmM0MjU1MGYxYzFkOTVjMzA4MmY2NzM3NmE1Njk1MDZiZmFiMy4uNGQwMjVi
OTkzNDIyNzc2YjliNWY0YWFiYzM5YTBjNzg5MTk0MGE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xF
LmNwcApAQCAtMTEzLDggKzExMyw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyCiAgICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKLSAgICBpbnQgc291cmNlTGVuZ3RoID0gMDsKLSAgICBtX2NvbnRleHQtPmdldFNoYWRl
cml2KHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSwgJnNv
dXJjZUxlbmd0aCk7CisgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+Z2V0U2hhZGVy
aShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUpOwogICAg
IGlmICghc291cmNlTGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBW
ZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVS
X1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KQEAgLTI3OSwx
MjYgKzI3OCw2IEBAIEdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0
dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmCiB9CiAKIC8vIEdMX0FOR0xFX3Jv
YnVzdF9jbGllbnRfbWVtb3J5Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCb29sZWFudlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJvb2xlYW52Um9i
dXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0
YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRGbG9hdHZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgYXR0YWNobWVudCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldEludGVnZXJ2Um9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRQcm9ncmFtaXZS
b2J1c3RBTkdMRShwcm9ncmFtLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFk
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFNoYWRlcml2Um9idXN0QU5HTEUoc2hhZGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRl
eFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlv
biwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OkdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9u
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGlu
ZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCB2b2lkICoqcG9pbnRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwb2ludGVyKTsKLX0K
LQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC01MTcsMTQgKzM5Niw2IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwCiAgICAgZ2w6OkdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0
QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXJpX3ZSb2J1c3RBTkdM
RSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCiB2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTU1NywzMCArNDI4LDYgQEAgdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHBy
b2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0s
IHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0
ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXI2NHZSb2J1c3RBTkdMRShwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihkYXRhKSk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXI2NGlf
dlJvYnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRf
Y2FzdDxHTGludDY0Kj4oZGF0YSkpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuaAppbmRleCAxMjU2OTU2N2MxN2M5MjZiNzFhOTFiYjRiYjExOTU1NmJhMDZm
MTcwLi41N2JiOTNiYzg0YzMzNTkwZmJjZjRiM2Y3YTFlYjVhNTVjNTkyNTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lv
bnNHTEFOR0xFLmgKQEAgLTczLDIxICs3Myw2IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWly
ZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1
c3RfY2xpZW50X21lbW9yeQotICAgIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVh
biAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTaGFk
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0
cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVycmlkZTsKICAgICB2
b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5z
LCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhJ
bWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTAzLDE0ICs4
OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCiAgICAgdm9pZCBnZXRJ
bnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0
dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQg
KmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKICAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0p
IG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAK
aW5kZXggZGY2ZjM0YzlkNjE4ZDA3YWRmMjE5ODVhMzAxY2JlNDE0MjkzOTA4YS4uMDZlMjE2YzM1
OGYyYTQ1OTM2MTcwMWRlYmEyNTEwNWIyYzQ0OWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAKQEAgLTMzMCw0OSArMzMwLDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
CiAgICAgZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2
YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CisgICAgZ2w6OkdldEludGVnZXJ2Um9idXN0QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51
bGxwdHIsIHZhbHVlLmRhdGEpOwogCiAgICAgc3dpdGNoIChwbmFtZSkgewotICAgIGNhc2UgTUFY
X1RFWFRVUkVfU0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUs
IHZhbHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRN
YXhpbXVtVGV4dHVyZVNpemUoKSkKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYs
ICp2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVf
U0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUs
IHZhbHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRN
YXhpbXVtVGV4dHVyZVNpemUoKSkKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDEwMjQs
ICp2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBTb21l
IG9sZGVyIGhhcmR3YXJlIGFkdmVydGlzZXMgYSBsYXJnZXIgbWF4aW11bSB0aGFuIHRoZXkKICAg
ICAvLyBjYW4gYWN0dWFsbHkgaGFuZGxlLiBSYXRoZXIgdGhhbiBkZXRlY3Rpbmcgc3VjaCBkZXZp
Y2VzLCBzaW1wbHkKICAgICAvLyBjbGFtcCB0aGUgbWF4aW11bSB0byA4MTkyLCB3aGljaCBpcyBi
aWcgZW5vdWdoIGZvciBhIDVLIGRpc3BsYXkuCiAgICAgY2FzZSBNQVhfUkVOREVSQlVGRkVSX1NJ
WkU6Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihNQVhfUkVOREVSQlVGRkVSX1NJWkUsIHZhbHVl
KTsKICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oODE5MiwgKnZhbHVlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNQVhfVklFV1BPUlRfRElNUzoKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2
KE1BWF9WSUVXUE9SVF9ESU1TLCB2YWx1ZSk7CiAgICAgICAgIHZhbHVlWzBdID0gc3RkOjptaW4o
ODE5MiwgdmFsdWVbMF0pOwogICAgICAgICB2YWx1ZVsxXSA9IHN0ZDo6bWluKDgxOTIsIHZhbHVl
WzFdKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBkZWZhdWx0OgotICAgICAgICBnbDo6
R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyaV92KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXJpX3YocG5h
bWUsIGluZGV4LCB2YWx1ZSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVj
aXNpb25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQogewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xMjExLDcgKzExOTIsNiBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDRwogCiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwogICAgIGdsOjpH
ZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVu
aWZvcm1TaXplKTsKLQogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUobWF4VW5pZm9ybVNpemUpOyAv
LyBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24u
CiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKQEAgLTE4
MTgsNjQgKzE3OTgsNjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFZlcnRl
eEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheShh
cnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdD
R0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+
IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRCb29s
ZWFudlJvYnVzdEFOR0xFKHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVy
aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dM
aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwg
cG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYoR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldEZsb2F0dihw
bmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRGbG9hdHZSb2J1c3RBTkdMRShwbmFtZSwgdmFsdWUu
YnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAgICAgCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZh
bHVlKQorR0NHTGludDY0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQoR0NH
TGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludDY0IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdmFsdWUgPSAwOwotICAg
IGdsOjpHZXRJbnRlZ2VyNjR2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICBnbDo6R2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKHBuYW1lLCAxLCBudWxscHRyLCAmdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGlu
dDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdl
cjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCiB7CisgICAgR0NHTGludDY0IHZh
bHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAqdmFsdWUgPSAwOwotICAgIGdsOjpHZXRJbnRlZ2VyNjRpX3YocG5hbWUsIGluZGV4
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0SW50ZWdlcjY0aV92
Um9idXN0QU5HTEUocG5hbWUsIGluZGV4LCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2ht
ZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NH
TGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBpZiAoYXR0YWNobWVudCA9PSBE
RVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCiAgICAgICAgIGF0dGFjaG1lbnQgPSBERVBUSF9BVFRB
Q0hNRU5UOyAvLyBPciBTVEVOQ0lMX0FUVEFDSE1FTlQsIGVpdGhlciB3b3Jrcy4KLSAgICBnbDo6
R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBw
bmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRQcm9ncmFtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9n
cmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdD
R0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShw
cm9ncmFtLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyhQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlcnNbMl0sIEdDR0xzaXplaSBjb3VudCwgY29uc3QgU3RyaW5n
JiBsb2cpCkBAIC0xOTIxLDIyICsxOTA0LDIzIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtKQogICAgIHJl
dHVybiBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIGNvdW50LCBTdHJpbmcoaW5mby5kYXRh
KCksIHNpemUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NH
TGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5h
bWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVy
aShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgQVNTRVJU
KHNoYWRlcik7Ci0KKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2hhZGVyaXYoc2hhZGVy
LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFNoYWRl
cml2Um9idXN0QU5HTEUoc2hhZGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKQEAgLTE5NjQsNDQgKzE5NDgsNDYg
QEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZv
cm1HTE9iamVjdCkKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
KQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyZnYodGFy
Z2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFRl
eFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVl
KTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFRleFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1l
dGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFs
dWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAg
ICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0
YXJnZXQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsOjpHZXRVbmlm
b3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0
ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xp
bnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGlu
dD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZ2w6OkdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwor
ICAgIGdsOjpHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUu
YnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRVbmlmb3JtdWl2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAK
IEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTIwMTQsMjAgKzIw
MDAsMjAgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gZ2w6OkdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBw
bmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4
LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwg
cG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShpbmRl
eCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCiBHQ0dM
c2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0yMDM2LDcgKzIwMjIsNyBAQCBHQ0dM
c2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChH
Q0dMdWludCBpbmRleCwgR0NHTAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEdMdm9pZCogcG9p
bnRlciA9IDA7Ci0gICAgZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwbmFtZSwg
JnBvaW50ZXIpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKGlu
ZGV4LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnBvaW50ZXIpOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMc2l6ZWlwdHI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsKIH0K
IApAQCAtMjk1Myw2ICsyOTM5LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhCiAgICAgZ2w6
OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsg
c3JjT2Zmc2V0KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGdsOjpHZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBw
bmFtZSwgcGFyYW1zLmJ1ZlNpemUsIG51bGxwdHIsIHBhcmFtcy5kYXRhKTsKK30KKworCiAjaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xDViog
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRS5jcHAKaW5kZXggNmQ1MDNiY2JhNzVhZmI4YzUwNzkwYjFjMjRlMjgyODM2YzU1ZDk0OS4u
Y2JhZjA2MGI1NTYzOWZkYjU1YWI3ZWFlNDE3ZWY1ZDIwNDM5ZDkzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0Nv
bnRleHRHTENWQU5HTEUuY3BwCkBAIC00NjQsOCArNDY0LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKIAogICAgIG1fY29udGV4
dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2ZXJ0ZXhTaGFkZXIpOwogCi0gICAgR0NHTGludCBzdGF0
dXMgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYodmVydGV4U2hhZGVyLCBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIEdDR0xpbnQgc3RhdHVz
ID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHZlcnRleFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBJTEVfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2ViR0ws
ICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVw
KSAtIFZlcnRleCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwgdGhpcyk7CiAgICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CkBAIC00ODAsNyArNDc5LDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3Rz
KCkKIAogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdChmcmFnbWVudFNoYWRlcik7
CiAKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KGZyYWdtZW50U2hhZGVyLCBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIHN0YXR1cyA9IG1fY29udGV4
dC0+Z2V0U2hhZGVyaShmcmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVf
U1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIEZyYWdt
ZW50IHNoYWRlciBmYWlsZWQgdG8gY29tcGlsZS4iLCB0aGlzKTsKICAgICAgICAgbV9jb250ZXh0
LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKQEAgLTQ5Myw3ICs0OTIsNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogICAg
IG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOwog
ICAgIG1fY29udGV4dC0+bGlua1Byb2dyYW0obV95dXZQcm9ncmFtKTsKIAotICAgIG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWl2KG1feXV2UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RB
VFVTLCAmc3RhdHVzKTsKKyAgICBzdGF0dXMgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKG1feXV2
UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1
cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRp
YWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIFByb2dyYW0gZmFpbGVkIHRvIGxpbmsuIiwgdGhp
cyk7CiAgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDgwNjEwZGU3ZDQzMWNmNDI2
Mjk5N2Y0ZmZjZTM3YjZiZTFlZTc0MDQuLjM0ZmVmMDViNjIzNzg3MGQwNWJkMWEzMmMyZjQ1YTQx
OTFiM2Y3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0x
MjgsNyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJs
ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5HTEVS
ZXNvdXJjZXMgPSBjb21waWxlci5nZXRSZXNvdXJjZXMoKTsKICAgICAgICAgaWYgKCFBTkdMRVJl
c291cmNlcy5FWFRfZHJhd19idWZmZXJzKSB7CiAgICAgICAgICAgICBBTkdMRVJlc291cmNlcy5F
WFRfZHJhd19idWZmZXJzID0gMTsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYo
RXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJkFOR0xFUmVzb3VyY2VzLk1heERy
YXdCdWZmZXJzKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0g
bV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQp
OwogICAgICAgICAgICAgY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCIpIHsKQEAgLTE3Miw3ICsxNzIsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogCiAgICAg
QU5HTEVXZWJLaXRCcmlkZ2UmIGNvbXBpbGVyID0gbV9jb250ZXh0LT5tX2NvbXBpbGVyOwogCi0g
ICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFE
RVJfVFlQRSwgJkdMc2hhZGVyVHlwZSk7CisgICAgR0xzaGFkZXJUeXBlID0gbV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFKTsKIAogICAg
IGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9TSEFERVIpCiAg
ICAgICAgIHNoYWRlclR5cGUgPSBTSEFERVJfVFlQRV9WRVJURVg7CkBAIC0yNTQsODEgKzI1NCw2
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1
aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTGluCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50
ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJvZ3JhbWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1c3RB
TkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZvcm1pdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZl
cnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICopCiB7CiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC00MDAsMTEgKzMyNSw2
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCiB7CiAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBA
IC00MzAsMTYgKzM1MCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMCiAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQog
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xp
bnQ2NCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IDA0ODk0
YjkxYzgyY2M0YjFiMjA5YTdhZmQyMjljYmRjYTlhMDFhNDMuLjk3ZWVkZmI3NDg1YzgzMmY3OTNj
OGNmZjBmYTE3ZmJmZmJlNjU4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmgKQEAgLTY5LDIxICs2OSw2IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVzUmVzdHJpY3Rl
ZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmlj
dGVkTWF4aW11bVRleHR1cmVTaXplOyB9CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50
X21lbW9yeQotICAgIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZsb2F0dlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVn
ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQcm9ncmFt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTaGFkZXJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZl
cnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCB2b2lkICoqcG9pbnRlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9i
dXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAq
cGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7CkBAIC05OSwxNCArODQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0UXVlcnlpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcmlf
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgaW50ICpkYXRhKSBvdmVycmlkZTsKICAgICB2b2lk
IGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVy
dGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0
ICpkYXRhKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRl
OwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBh
cmFtKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IGFiOGNi
NTRmNWU4NzllZjRiOGE5MGQxOWE3ZWM5MmM4OWNlMjA1N2IuLmQyOGY0YTAzMWViZGM0ODM4NzVk
Mzk4NDg3ZDU3ODc0OGZkZTQ3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApA
QCAtNzQsMTEgKzc0LDggQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6aXNFbmFibGVkKGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRm9yIEdM
X0VYVF9yb2J1c3RuZXNzLCBjaGVjayB0aGF0IHRoZSBjb250ZXh0IHN1cHBvcnRzIHJvYnVzdCBh
Y2Nlc3MuCi0gICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNzIikgewotICAgICAgICBH
TGludCByb2J1c3RBY2Nlc3MgPSBHTF9GQUxTRTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRl
Z2VydihFeHRlbnNpb25zR0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUywgJnJvYnVzdEFjY2Vzcyk7
Ci0gICAgICAgIHJldHVybiByb2J1c3RBY2Nlc3MgPT0gR0xfVFJVRTsKLSAgICB9CisgICAgaWYg
KG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNzIikKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+
Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUykgPT0gR0xfVFJV
RTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAppbmRleCA3NzVmOTA0MDZmNDJhNjA5MWRkYzNmZWExZTUwYjdjMmIwYWU0ZGExLi5jM2Y0OGU4
YzY4OWYwYjM5N2I2ZjdlNTY4MzQ4MjRhNmE4YjlmNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaApAQCAtMTk3LDM1ICsxOTcsMzQgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0
QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYpOwogICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50LCBQbGF0
Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKSBmaW5hbDsK
LSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOwotICAgIHZvaWQgZ2V0RmxvYXR2
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2
b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRJbnRlZ2VyaV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NH
TGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludDY0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3YoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKSBmaW5hbDsKLSAg
ICB2b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVnZXJ2
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgR0NH
TGludDY0IGdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludDY0
IGdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAg
ICBHQ0dMaW50IGdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOwogI2lmICFVU0UoQU5HTEUpCiAgICAgdm9pZCBnZXROb25CdWlsdEluQWN0
aXZlU3ltYm9sQ291bnQoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpOwogI2VuZGlmIC8vICFVU0UoQU5HTEUpCiAgICAgU3RyaW5nIGdldFBy
b2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogICAgIFN0cmluZyBnZXRVbm1h
bmdsZWRJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3RbMl0sIEdDR0xzaXplaSwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRTaGFk
ZXJpdihQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZp
bmFsOworICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZv
cm1HTE9iamVjdCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIFN0cmluZyBnZXRTaGFkZXJJ
bmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lz
aW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdD
R0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pIGZpbmFsOwogICAgIFN0cmluZyBnZXRT
aGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFN0cmlu
ZyhHQ0dMZW51bSBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7
Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZh
bHVlKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFRleFBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlm
b3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpIGZpbmFsOwog
ICAgIEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0
cmluZyYgbmFtZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAg
IHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTHNpemVpcHRyIGdldFZlcnRl
eEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAg
ICAgdm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7CkBAIC00
MzgsNiArNDM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAj
aWYgIVVTRShBTkdMRSkKICAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDc1MGVkMzI2ZWNlNjVlODhmNmI0MTM2MDE1YzRmOTMz
NzQ0ODljYTUuLjEzNDIyYmM1NmUyNmFhZDkxYmY4N2YyZWVhYjZjY2UyZDNlMDcxMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC0yNjAsNyArMjYw
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGUKICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFn
ZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIC8vIE5lZWQgdG8g
ZW11bGF0ZSBNQVhfRlJBR01FTlQvVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyBhbmQgTUFYX1ZBUllJ
TkdfVkVDVE9SUwogICAgIC8vIGJlY2F1c2UgZGVza3RvcCBHTCdzIGNvcnJlc3BvbmRpbmcgcXVl
cmllcyByZXR1cm4gdGhlIG51bWJlciBvZiBjb21wb25lbnRzCkBAIC0yNzIsMzkgKzI3MiwzOSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCiAgICAgc3dpdGNoIChwbmFtZSkgewogI2lmIFVTRShPUEVOR0wp
CiAgICAgY2FzZSBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOgotICAgICAgICA6OmdsR2V0
SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOworICAg
ICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUywg
dmFsdWUuZGF0YSgpKTsKICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2Vy
dihHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAgICA6Omds
R2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMsIHZhbHVlLmRhdGEo
KSk7CiAgICAgICAgICp2YWx1ZSAvPSA0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1BWF9W
QVJZSU5HX1ZFQ1RPUlM6CiAgICAgICAgIGlmIChpc0dMRVMyQ29tcGxpYW50KCkpIHsKICAgICAg
ICAgICAgIEFTU0VSVCg6OmdsR2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci0gICAgICAgICAg
ICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgdmFsdWUpOworICAgICAg
ICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsIHZhbHVlLmRhdGEo
KSk7CiAgICAgICAgICAgICBpZiAoOjpnbEdldEVycm9yKCkgPT0gR0xfSU5WQUxJRF9FTlVNKSB7
Ci0gICAgICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX0NPTVBPTkVO
VFMsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJ
TkdfQ09NUE9ORU5UUywgdmFsdWUuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAqdmFsdWUgLz0g
NDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIDo6Z2xHZXRJ
bnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xH
ZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlLmRhdGEoKSk7CiAgICAgICAg
ICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICNlbmRpZgogICAg
IGNhc2UgTUFYX1RFWFRVUkVfU0laRToKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9URVhU
VVJFX1NJWkUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9URVhUVVJFX1NJ
WkUsIHZhbHVlLmRhdGEoKSk7CiAgICAgICAgIGlmIChnZXRFeHRlbnNpb25zKCkucmVxdWlyZXNS
ZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkpCiAgICAgICAgICAgICAqdmFsdWUgPSBzdGQ6
Om1pbig0MDk2LCAqdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1BWF9DVUJFX01B
UF9URVhUVVJFX1NJWkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfQ1VCRV9NQVBfVEVY
VFVSRV9TSVpFLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfQ1VCRV9NQVBf
VEVYVFVSRV9TSVpFLCB2YWx1ZS5kYXRhKCkpOwogICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygp
LnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAgICAgICAgICAgKnZh
bHVlID0gc3RkOjptaW4oMTAyNCwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xH
ZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuZGF0YSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGIwYzFmMWRmZDQzZDQx
NTA0MjdmZjUyMWFjZjY4NDM2MjcyNDAwNWEuLmIwZjAwZWRiNTBiMjc4YzgzMzg4NzRiMDBiNDQ3
NDBkZGJmNzliZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcApAQCAtMTcxNywxMiArMTcxNywxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICNlbmRpZgogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFt
ZSwgR0NHTGJvb2xlYW4qIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6
OmdsR2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0Qm9vbGVhbnYocG5hbWUs
IHZhbHVlLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1
ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKQpAQCAtMTczMyw2NSArMTczMyw1NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYQog
ICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwg
R0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0
dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0Rmxv
YXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUuZGF0YSgp
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdihHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludDY0IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgICp2YWx1ZSA9
IDA7Ci0gICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBtdXN0IGZp
cnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQgaW5pdGlhbGlu
ZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KLSAgICAvLyA6OmdsR2V0
SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2YWx1
ZSkKLXsKLSAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICp2YWx1ZSA9IDA7CisgICAgR0NHTGludDY0
IHZhbHVlID0gMDsKICAgICAvLyBGSVhNRSAxNDExNzg6IEJlZm9yZSBlbmFibGluZyB0aGlzIHdl
IG11c3QgZmlyc3Qgc3dpdGNoIG92ZXIgdG8gdXNpbmcgZ2wzLmggYW5kIGNyZWF0aW5nIGFuZCBp
bml0aWFsaW5nIHRoZSBXZWJHTDIgY29udGV4dCB1c2luZyBPcGVuR0wgRVMgMy4wLgogICAgIC8v
IDo6Z2xHZXRJbnRlZ2VyNjR2KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKQorR0NHTGludDY0IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWlu
dCBpbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwogICAgIFVOVVNFRF9QQVJBTShp
bmRleCk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgKnZhbHVlID0gMDsKKyAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwogICAgIC8vIEZJWE1F
IDE0MTE3ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0Y2ggb3ZlciB0
byB1c2luZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdlYkdMMiBjb250
ZXh0IHVzaW5nIE9wZW5HTCBFUyAzLjAuCiAgICAgLy8gOjpnbEdldEludGVnZXI2NGlfdihwbmFt
ZSwgaW5kZXgsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQs
IEdDR0xlbnVtIHBuYW1lCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKGF0dGFjaG1lbnQg
PT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQogICAgICAgICBhdHRhY2htZW50ID0gREVQVEhf
QVRUQUNITUVOVDsgLy8gT3IgU1RFTkNJTF9BVFRBQ0hNRU5ULCBlaXRoZXIgd29ya3MuCi0gICAg
OjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNo
bWVudCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1
cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1p
dihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFByb2dyYW1pdihwcm9n
cmFtLCBwbmFtZSwgdmFsdWUpOworICAgIEdDR0xpbnQgdmFsdWUgcD0gMDsKKyAgICA6OmdsR2V0
UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJv
bENvdW50KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKQpAQCAtMTg5OSwyMCArMTg5MSwyMSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSkKICAgICBy
ZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3RyaW5nKGluZm8uZGF0
YSgpLCBzaXplKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdD
R0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIDo6Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkVYVCh0YXJnZXQs
IHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICA6OmdsR2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KFBs
YXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitH
Q0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmpl
Y3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKLQorICAg
IEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAKICAgICBjb25zdCBhdXRvJiBy
ZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CkBAIC0xOTIwLDcgKzE5MTMs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQbGF0Zm9ybUdM
T2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbQogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBj
YXNlIERFTEVURV9TVEFUVVM6CiAgICAgY2FzZSBTSEFERVJfVFlQRToKLSAgICAgICAgOjpnbEdl
dFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldFNoYWRlcml2
KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ09NUElM
RV9TVEFUVVM6CiAgICAgICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkp
IHsKQEAgLTE5NDIsNiArMTkzNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtCiAgICAgZGVm
YXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9FTlVNKTsKICAgICB9Cisg
ICAgcmV0dXJuIHZhbHVlOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCkBAIC0xOTg2LDM5ICsxOTgw
LDQxIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyU291cmNlKFBs
YXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogICAgIHJldHVybiByZXN1bHQtPnZhbHVlLnNvdXJjZTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9h
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0
VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFs
dWU7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Cisg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRU
ZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2
YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0g
MDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICA6OmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2
YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0
aW9uLCB2YWx1ZSk7CisgICAgOjpnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFs
dWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1p
dihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZh
bHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgOjpnbEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIDo6
Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmRhdGEpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKIHsKICAgICBVTlVT
RURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKQEAgLTIwMzcs
MjAgKzIwMzMsMjAgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9y
bUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gOjpnbEdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBtYXBwZWROYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0VmVydGV4QXR0cmli
ZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4
LCBwbmFtZSwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJp
dihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVl
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6Omds
R2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAogR0NHTHNp
emVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQpAQCAtMzE0Myw3ICszMTM5LDEyIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwKICAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKIH0KIAotCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7
CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVTRURfUEFSQU0o
cG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8fCBVU0UoT1BFTkdMX0VTKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA2MGZkZmM2NWY4
NzM5NTg5NTc5NWE4NGVmMWUwOWFiZjZkN2FhODQzLi4wNTU3MTI0NDA5MTliMjcyZTE5MzFlM2Ux
M2UxN2UxNWQ2ZmQxYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwCkBAIC0xOTYsMTIgKzE5NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIDo6
Z2xSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
OjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEludGVnZXJ2KHBuYW1l
LCB2YWx1ZS5kYXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
aGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lz
aW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414227</attachid>
            <date>2020-11-16 05:48:04 -0800</date>
            <delta_ts>2020-11-16 06:07:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201116154802.patch</filename>
            <type>text/plain</type>
            <size>120208</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg0YWYwMDZmZDM3ZGQx
MmM5MmE5MzUxMDc3MzBjZTg2Y2QzN2ZiOC4uYjc2NGU2YWVkOTdmYTk1NTEyMjkzZjY1OGYzOGM2
ZjMwZTUxMmQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzMyBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRo
ZSB2YWx1ZSBpcyBhIG5vcm1hbCB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIHJlZHVjZXMgdGhlIHJp
c2sKKyAgICAgICAgb2YgaGF2aW5nIHVuaW5pdGlhbGl6ZWQgcmVjZWl2ZSBsb2NhdGlvbi4KKwor
ICAgICAgICBDaGFuZ2UgdGhlIGdldHRlcnMgdGhhdCBhcmUgb25seSB1c2VkIHRvIG9idGFpbiBz
aW5nbGUgdmFsdWVzIHNvCisgICAgICAgIHRoYXQgdGhlIGdldHRlciBpdHNlbGYgaGFzIHRoZSBy
ZXR1cm4gdmFsdWUuCisgICAgICAgIEFkZCBhIHNpbmdsZS12YWx1ZSBnZXR0ZXIgZm9yIGdldHRl
cnMgdGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gYWxzbworICAgICAgICBtdWx0aXBsZSB2YWx1ZXMu
CisKKyAgICAgICAgQWRkIEdDR0xTcGFuIHR5cGUgdGhhdCBpcyB1c2VkIHRvIGNvbW11bmljYXRl
IHBhaXI6IHB0ciwgbnVtYmVyIG9mCisgICAgICAgIGVsZW1lbnRzLgorCisgICAgICAgIFVzZSB0
aGUgUm9idXN0QU5HTEUgdmFyaWFudHMgb2YgdGhlIEdMIEFQSSBpbXBsZW1lbnRhdGlvbiB0byBv
YnRhaW4KKyAgICAgICAgdGhlIHZhbHVlcy4KKworICAgICAgICBSZW1vdmUgdGhlIGNvcnJlc3Bv
bmRpbmcgUm9idXN0QU5HTEUgdmFyaWFudHMgZnJvbSBFeHRlbnNpb25zR0wsIHRoZXkgYXJlCisg
ICAgICAgIGRlYWQgY29kZSBhbmQgdW51c2VkLgorCisgICAgICAgIFRoZSB0eXBlIEdDR0xTcGFu
IHdpbGwgYmUgdXNlZCB0byBzaW1wbGlmeSB0aGUgR1BVIHByb2Nlc3MgaW1wbGVtZW50YXRpb24s
CisgICAgICAgIHNpbmNlIHRoZSBidWZTaXplIHdpbGwgYmUgZXhwbGljaXRseSBhc3NvY2lhdGVk
IGluIHRoZSBwYXNzZWQgZGF0YSBwdHIsCisgICAgICAgIGluc2lkZSB0aGUgR0NHTFNwYW4gdHlw
ZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NHTFNwYW4gd2lsbCBiZSB1c2Vk
IGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAgaS5lLiBhcmJpdHJhcnkgYnVm
ZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKworICAgICAgICBSZW1vdmVzIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSB3b3JrYXJvdW5kIGZyb20gQU5HTEUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY29kZSwgaXQgd2FzIGRlYWQgY29kZSAo
aS5lIGZsYWcgYWx3YXlzIGZhbHNlKS4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBB
TkdMRSBsZXZlbC4KKworICAgICAgICBGaXhlcyBidWdzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFs
dWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlIGxvY2F0aW9uIG9mIHRoZQorICAgICAgICBnb3R0ZW4g
cHJvcGVyeS4gVGhpcyB2YWx1ZSB3b3VsZCBiZSB1bndyaXR0ZW4gaW4gZWRnZS1jYXNlcyBsaWtl
IEdMIGVycm9ycywgYW5kCisgICAgICAgIHRodXMgdGhlIHJlYWQgd291bGQgdG91Y2ggdW51aW5p
dGlhbGl6ZWQgdmFsdWUuCisKKyAgICAgICAgRml4ZXMgYSBidWcgd2hlcmUgdW5pZm9ybSBibG9j
ayB2YXJpYWJsZXMgY29kZSB3b3VsZCBwYXNzIGluIHRvbyBsYXJnZSBidWZmZXIKKyAgICAgICAg
c2l6ZSB0byB0aGUgUm9idXN0QU5HTEUgY2FsbC4gVGhlIGJ1ZlNpemUgcmVmZXJzIHRvIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMsIGJ1dAorICAgICAgICB0aGUgY29kZSBwYXNzZWQgaW4gdGhlIHNp
emUgb2YgdGhlIGJ1ZmZlciAoaS5lLiBudW1iZXIgb2YgZWxlbWVudHMgKiBzaXplIG9mCisgICAg
ICAgIGVsZW1lbnQpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSByZWZhY3Rvci4KKworICAg
ICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNj
cmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFBy
b2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXpl
TmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVjaXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1l
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1
ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRCb29sZWFuUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldEZsb2F0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEludFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJm
dkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5p
dFZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpnZXRGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0Qm9v
bGVhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0SW50ZWdlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJs
b2NraSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6Cisg
ICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNwYW4pOgorICAgICAgICAoR0NHTFNwYW46Om9wZXJhdG9y
W10pOgorICAgICAgICAoR0NHTFNwYW46Om9wZXJhdG9yKik6CisgICAgICAgIChzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0RmxvYXR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dEludGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJp
X3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRl
Z2VyNjRpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcmkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRp
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcmkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2cpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRl
cmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFVuaWZvcm1mdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3Yp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRTaGFkZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXpl
VVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFudlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXJ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZl
cnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdl
cjY0aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Ymxl
bmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21w
aWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVBdHRyaWJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpvcmlnaW5hbFN5bWJvbE5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcHBlZFN5bWJvbE5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVZlcnRleEFy
cmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1ZlcnRl
eEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRC
b29sZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
RmxvYXR2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJ
bnRlZ2VyNjQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEludGVnZXI2NGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3YpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXI2NGlfdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pdik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9u
QnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbm1hbmdsZWRJbmZvTG9nKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xv
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFk
ZXJTb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFRleFBhcmFtZXRlcmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlm
b3JtaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFVuaWZvcm11aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdlMkQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFn
ZTJEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGcmFtZWJ1ZmZlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRl
UHJvZ3JhbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y3JlYXRlUmVuZGVyYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFkZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRleHR1cmUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZUJ1ZmZl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
ZGVsZXRlRnJhbWVidWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmRlbGV0ZVByb2dyYW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlU2hhZGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpk
ZWxldGVUZXh0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpzeW50aGVzaXplR0xFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0NvbnRleHRDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrTGF5ZXJDb21w
b3NpdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZvcmNlQ29udGV4dExvc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlY3ljbGVDb250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNw
YXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJERGlyZWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5z
dGFuY2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByaW1pdGl2ZVJlc3Rh
cnRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6YmxpdEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW52YWxpZGF0ZUZyYW1lYnVm
ZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3RvcmFnZTJEKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlM0QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXhTdWJJ
bWFnZTNEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRGcmFnRGF0YUxvY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
NHVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtMXVpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4
M2Z2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4M3gyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDR4MmZ2KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4M3g0ZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTRpKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJ
NGl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWJJNHVpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNHVpdik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSVBvaW50ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdS
YW5nZUVsZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpkcmF3QnVmZmVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJCdWZmZXJ1aXYpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVy
ZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNsZWFyQnVmZmVyZmkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNyZWF0ZVF1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNRdWVyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5RdWVyeSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFF1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRRdWVyeU9iamVjdHVpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlU2FtcGxlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNTYW1wbGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5k
U2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6c2FtcGxlclBhcmFtZXRlcmkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVy
ZnYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1N5bmMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVN5bmMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsaWVudFdhaXRTeW5j
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3
YWl0U3luYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U3luY2l2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmlzVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmVnaW5UcmFuc2Zvcm1GZWVk
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJh
Y2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmJpbmRCdWZmZXJCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3Jtcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9j
a0JpbmRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRQaXhlbHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vydik6CisKIDIwMjAtMTEtMTYgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5hbCByZWZh
Y3RvciBmb3IgV2ViR0wgaW1wbGVtZW50YXRpb24gdG8gdXNlIG9ubHkgR3JhcGhpY3NDb250ZXh0
R0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAppbmRleCAyZWYxMGIwYTRm
MzQ2ZWZlMWI5MzhlNDZlMDA1M2E4YTMzOTQ1MzQ0Li4wNGIzMGY4ZjY0NjQxNDY4MDY3ZTMwOTI2
ZTc0ZTRmMmQ5YzE4YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVl
bkNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3Bw
CkBAIC0yODUsNyArMjg1LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zm
c2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKQogICAgICAgICAvLyBjcmVhdGVz
IGEgbmV3IGJhY2tpbmcgc3RvcmUuIFNpbmNlIHdlJ3JlIG5vdCBkb2luZyB0aGF0IHlldCwgd2UK
ICAgICAgICAgLy8gbmVlZCB0byBlcmFzZSB3aGF0J3MgdGhlcmUuCiAKLSAgICAgICAgR0NHTGZs
b2F0IGNsZWFyQ29sb3JbNF07CisgICAgICAgIEdDR0xmbG9hdCBjbGVhckNvbG9yWzRdIHsgfTsK
ICAgICAgICAgZ2MzZC0+Z2V0RmxvYXR2KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9DTEVBUl9W
QUxVRSwgY2xlYXJDb2xvcik7CiAgICAgICAgIGdjM2QtPmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7
CiAgICAgICAgIGdjM2QtPmNsZWFyKEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklU
IHwgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHRH
TDo6U1RFTkNJTF9CVUZGRVJfQklUKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggODA3M2FkYzExMTQ5MjE1ZjU2
ZDFlNDVkYTY4NGRlODI4NTgxN2U5Mi4uNTViYzFmOGRiMjQ5ZDMzODIyZTc4ODljYTc4M2Y1YmVj
MDI1YTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTE1OSw5ICsxNTksOSBAQCB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX3VucGFja1NraXBSb3dz
ID0gMDsKICAgICBtX3VucGFja1NraXBJbWFnZXMgPSAwOwogCi0gICAgbV9jb250ZXh0LT5nZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYXzNEX1RFWFRVUkVfU0laRSwgJm1fbWF4M0RU
ZXh0dXJlU2l6ZSk7CisgICAgbV9tYXgzRFRleHR1cmVTaXplID0gbV9jb250ZXh0LT5nZXRJbnRl
Z2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfM0RfVEVYVFVSRV9TSVpFKTsKICAgICBtX21heDNE
VGV4dHVyZUxldmVsID0gV2ViR0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heDNEVGV4
dHVyZVNpemUsIG1fbWF4M0RUZXh0dXJlU2l6ZSk7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTLCAmbV9tYXhBcnJh
eVRleHR1cmVMYXllcnMpOworICAgIG1fbWF4QXJyYXlUZXh0dXJlTGF5ZXJzID0gbV9jb250ZXh0
LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMp
OwogCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQo
KTsKIApAQCAtMjA4LDkgKzIwOCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVz
dG9yZVVucGFja1BhcmFtZXRlcnMoKQogCiBsb25nIGxvbmcgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0SW50NjRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludDY0IHZh
bHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXI2NHYocG5hbWUsICZ2YWx1ZSk7Ci0g
ICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXI2NChwbmFt
ZSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFy
cmF5T2JqZWN0cygpCkBAIC0xMDU1LDIzICsxMDUzLDE0IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lCiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRF
WFRVUkVfSU1NVVRBQkxFX0xFVkVMUzoKICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1I6IHsKLSAgICAgICAgR0NHTGludCB2YWx1
ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFt
ZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLSAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQ6IHsKLSAgICAgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0
LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHZhbHVl
KTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1I6Cisg
ICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUOgor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJF
X01JTl9MT0Q6CiAgICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfTUFYX0xPRDogewotICAgICAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwOwotICAg
ICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7
Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9NQVhfTE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRUZXhQYXJh
bWV0ZXJmKHRhcmdldCwgcG5hbWUpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSk7CiAg
ICAgfQpAQCAtMjQ0NSwxMSArMjQzNCw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpCiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RB
UlQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZGRVJfU0laRToKLSAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZFUl9TVEFSVDogewotICAgICAg
ICBHQ0dMaW50NjQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXI2NGlf
dih0YXJnZXQsIGluZGV4LCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX1NUQVJUOgorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpKHRhcmdldCwgaW5kZXgpOwogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgIGlm
IChpbmRleCA+PSBtX2JvdW5kSW5kZXhlZFVuaWZvcm1CdWZmZXJzLnNpemUoKSkgewogICAgICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUs
ICJnZXRJbmRleGVkUGFyYW1ldGVyIiwgImluZGV4IG91dCBvZiByYW5nZSIpOwpAQCAtMjUyNCwy
NCArMjUxMCwyMCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tQYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcgogI2lmIFVTRShBTkdMRSkKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9y
U2hhZGVyKCJnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIiLCAmcHJvZ3JhbSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIEdDR0xpbnQgcmVzdWx0ID0gMDsKICAgICBzd2l0Y2gg
KHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19CSU5E
SU5HOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZP
Uk1TOgotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBw
bmFtZSwgc2l6ZW9mKHJlc3VsdCksIG51bGxwdHIsICZyZXN1bHQpOwotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHJlc3VsdCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMdWludD4obV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpKHByb2dyYW0ub2Jq
ZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUzogewotICAgICAgICBH
Q0dMaW50IHNpemUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1C
bG9ja0luZGV4LCBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9S
TVMsIHNpemVvZihzaXplKSwgbnVsbHB0ciwgJnNpemUpOworICAgICAgICBHQ0dMaW50IHNpemUg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2kocHJvZ3JhbS5vYmplY3QoKSwgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0FDVElWRV9V
TklGT1JNUyk7CiAgICAgICAgIFZlY3RvcjxHQ0dMaW50PiBwYXJhbXMoc2l6ZSwgMCk7Ci0gICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9i
dXN0QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBzaXpl
b2YocGFyYW1zWzBdKSAqIHBhcmFtcy5zaXplKCksIG51bGxwdHIsIHBhcmFtcy5kYXRhKCkpOwor
ICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgcmV0dXJuIHBh
cmFtcy5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4oeCk7IH0p
OwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVS
RU5DRURfQllfVkVSVEVYX1NIQURFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSOgotICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHBy
b2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgc2l6ZW9mKHJlc3VsdCks
IG51bGxwdHIsICZyZXN1bHQpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ocmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fY29udGV4dC0+Z2V0QWN0
aXZlVW5pZm9ybUJsb2NraShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5h
bWUpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwg
ImludmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
NzcyLDkgKzI3NTQsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZwogICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25O
YW1lLCAiaW52YWxpZCBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQotICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQs
IHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBt
X2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRh
Y2htZW50LCBwbmFtZSk7CiAgICAgfQogICAgIGlmICghdmFsaWRhdGVOb25EZWZhdWx0RnJhbWVi
dWZmZXJBdHRhY2htZW50KGZ1bmN0aW9uTmFtZSwgYXR0YWNobWVudCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjc5NiwxMSArMjc3Niw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJn
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBI
QV9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfREVQVEhfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX1NURU5DSUxfU0laRToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFs
dWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9DT01QT05FTlRfVFlQRToKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1l
KTsKICAgICB9CiAKICAgICBpZiAob2JqZWN0LT5pc1RleHR1cmUoKSkgewpAQCAtMjgxMSwxMSAr
Mjc4OCw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnCiAgICAgICAgICAgICByZXR1cm4gbWFr
ZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMVGV4dHVyZSY+KCpvYmplY3QpKTsKICAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJF
X0xFVkVMOgogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRToKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORzogewotICAgICAgICAg
ICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0KKyAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORzoK
KyAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9F
TlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciB0ZXh0dXJlIGF0
dGFjaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg5Nyw3ICsyODcx
LDcgQEAgYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZU5vbkRlZmF1bHRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQoY29uc3QgY2hhcioKIEdDR0xpbnQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogewogICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykK
LSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RS
QVdfQlVGRkVSUywgJm1fbWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBtX21heERyYXdCdWZmZXJz
ID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZG
RVJTKTsKICAgICByZXR1cm4gbV9tYXhEcmF3QnVmZmVyczsKIH0KIApAQCAtMjkwNSw3ICsyODc5
LDcgQEAgR0NHTGludCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1l
bnRzKCkKIHsKICAgICAvLyBEcmF3QnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVO
VFMgPT0gTUFYX0RSQVdfQlVGRkVSUwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQot
ICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJB
V19CVUZGRVJTLCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgbV9tYXhDb2xvckF0
dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhf
RFJBV19CVUZGRVJTKTsKICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4
IDljYjBmODU2YjU4ZTEwZTZmNDczMDllNmZlM2MxMGUyNjcwOTcxNjYuLjQ5NDE1NmUxZTY1YjYw
MjkxOTBkYjdjMWMwMjZhZGY4MDNkZGE4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC05OCwxMCArOTgsOCBAQCBib29sIFdlYkdM
RHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIHdlYgogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0ID0gd2ViZ2xDb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhZnRlciB3
ZSBtYWtlIHN1cmUgR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBzdXBwb3J0ZWQuCi0gICAgR0NHTGlu
dCBtYXhEcmF3QnVmZmVycyA9IDA7Ci0gICAgR0NHTGludCBtYXhDb2xvckF0dGFjaG1lbnRzID0g
MDsKLSAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZF
UlNfRVhULCAmbWF4RHJhd0J1ZmZlcnMpOwotICAgIGNvbnRleHQtPmdldEludGVnZXJ2KEV4dGVu
c2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1heENvbG9yQXR0YWNobWVudHMp
OworICAgIEdDR0xpbnQgbWF4RHJhd0J1ZmZlcnMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVu
c2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOworICAgIEdDR0xpbnQgbWF4Q29sb3JBdHRh
Y2htZW50cyA9IGNvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRU
QUNITUVOVFNfRVhUKTsKICAgICBpZiAobWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0
YWNobWVudHMgPCA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggMDFhMDJmNTFkNzJkODky
ZWFiOGU4YzI3MDUwNmNiZmM0ZTczNjU0YS4uYWY0ZjA0MTdiMWIzZDg4OTRlYTVmOTBmMzRhZGI0
MjRhN2EzNWFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAKQEAgLTYxMywyMCArNjEzLDIwIEBAIGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6
aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdyYXBoaWNzQ29udGV4dEdMKiBnM2QsIGNvbnN0IGNoYXIq
CiAgICAgR0NHTGJvb2xlYW4gaXNTY2lzc29yRW5hYmxlZCA9IDA7CiAgICAgR0NHTGJvb2xlYW4g
aXNEaXRoZXJFbmFibGVkID0gMDsKICAgICBpZiAoaW5pdENvbG9yKSB7Ci0gICAgICAgIGczZC0+
Z2V0RmxvYXR2KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9DTEVBUl9WQUxVRSwgY29sb3JDbGVh
clZhbHVlKTsKLSAgICAgICAgZzNkLT5nZXRCb29sZWFudihHcmFwaGljc0NvbnRleHRHTDo6Q09M
T1JfV1JJVEVNQVNLLCBjb2xvck1hc2spOworICAgICAgICBjb2xvckNsZWFyVmFsdWUgPSBnM2Qt
PmdldEZsb2F0KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9DTEVBUl9WQUxVRSk7CisgICAgICAg
IGNvbG9yTWFzayA9IGczZC0+Z2V0Qm9vbGVhbihHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfV1JJ
VEVNQVNLKTsKICAgICAgICAgZzNkLT5jbGVhckNvbG9yKDAsIDAsIDAsIDApOwogICAgICAgICBn
M2QtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICB9CiAgICAgaWYgKGlu
aXREZXB0aCkgewotICAgICAgICBnM2QtPmdldEZsb2F0dihHcmFwaGljc0NvbnRleHRHTDo6REVQ
VEhfQ0xFQVJfVkFMVUUsICZkZXB0aENsZWFyVmFsdWUpOwotICAgICAgICBnM2QtPmdldEJvb2xl
YW52KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9XUklURU1BU0ssICZkZXB0aE1hc2spOworICAg
ICAgICBkZXB0aENsZWFyVmFsdWUgPSBnM2QtPmdldEZsb2F0KEdyYXBoaWNzQ29udGV4dEdMOjpE
RVBUSF9DTEVBUl9WQUxVRSk7CisgICAgICAgIGRlcHRoTWFzayA9IGczZC0+Z2V0Qm9vbGVhbihH
cmFwaGljc0NvbnRleHRHTDo6REVQVEhfV1JJVEVNQVNLKTsKICAgICAgICAgZzNkLT5jbGVhckRl
cHRoKDEuMGYpOwogICAgICAgICBnM2QtPmRlcHRoTWFzayh0cnVlKTsKICAgICB9CiAgICAgaWYg
KGluaXRTdGVuY2lsKSB7Ci0gICAgICAgIGczZC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0
R0w6OlNURU5DSUxfQ0xFQVJfVkFMVUUsICZzdGVuY2lsQ2xlYXJWYWx1ZSk7Ci0gICAgICAgIGcz
ZC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfV1JJVEVNQVNLLCByZWlu
dGVycHJldF9jYXN0PEdDR0xpbnQqPigmc3RlbmNpbE1hc2spKTsKKyAgICAgICAgc3RlbmNpbENs
ZWFyVmFsdWUgPSBnM2QtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQ0xF
QVJfVkFMVUUpOworICAgICAgICBzdGVuY2lsTWFzayA9IGczZC0+Z2V0SW50ZWdlcihHcmFwaGlj
c0NvbnRleHRHTDo6U1RFTkNJTF9XUklURU1BU0spOwogICAgICAgICBnM2QtPmNsZWFyU3RlbmNp
bCgwKTsKICAgICAgICAgZzNkLT5zdGVuY2lsTWFzaygweGZmZmZmZmZmKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAppbmRleCBjOGMzYjgyMjY1
MjUzYzBlMDRlZTAxYTZiNDEyOWM5YzVmMTgwNTI5Li4zZTQ2YzVlNTZkMTNkY2ZjZjJlY2MyZGFk
MmFjMTk2YTVmN2NlYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJv
Z3JhbS5jcHAKQEAgLTIxNiw4ICsyMTYsNyBAQCB2b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVBY3Rp
dmVBdHRyaWJMb2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCkKIHsKICAgICBt
X2FjdGl2ZUF0dHJpYkxvY2F0aW9ucy5jbGVhcigpOwogCi0gICAgR0NHTGludCBudW1BdHRyaWJz
ID0gMDsKLSAgICBjb250ZXh0M2QtPmdldFByb2dyYW1pdihvYmplY3QoKSwgR3JhcGhpY3NDb250
ZXh0R0w6OkFDVElWRV9BVFRSSUJVVEVTLCAmbnVtQXR0cmlicyk7CisgICAgR0NHTGludCBudW1B
dHRyaWJzID0gY29udGV4dDNkLT5nZXRQcm9ncmFtaShvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0
R0w6OkFDVElWRV9BVFRSSUJVVEVTKTsKICAgICBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9ucy5yZXNp
emUoc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1BdHRyaWJzKSk7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1BdHRyaWJzOyArK2kpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8gaW5mbzsKQEAgLTI0MSw4ICsyNDAsNyBAQCB2b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVJ
bmZvSWZOZWVkZWQoKQogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0ID0gZ2V0QUdyYXBo
aWNzQ29udGV4dEdMKCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47Ci0gICAg
R0NHTGludCBsaW5rU3RhdHVzID0gMDsKLSAgICBjb250ZXh0LT5nZXRQcm9ncmFtaXYob2JqZWN0
KCksIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5LX1NUQVRVUywgJmxpbmtTdGF0dXMpOworICAgIEdD
R0xpbnQgbGlua1N0YXR1cyA9IGNvbnRleHQtPmdldFByb2dyYW1pKG9iamVjdCgpLCBHcmFwaGlj
c0NvbnRleHRHTDo6TElOS19TVEFUVVMpOwogICAgIG1fbGlua1N0YXR1cyA9IGxpbmtTdGF0dXM7
CiAgICAgaWYgKG1fbGlua1N0YXR1cykgewogICAgICAgICBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0
aW9ucyhjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGQyZmFjMjAzNjI0OTk1ODVlMGQ1MTU1NmNjNWNh
NGUzYWFjMzNkYWYuLjY5M2Q2MjA2ZjJjOTBmOTVmZGE5NzNiOTk4ZWI5NjQ2N2RjZmVhOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtMzA3LDExICszMDcsOCBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAg
ICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIocmVpbnRlcnByZXRfY2FzdDxXZWJHTFRleHR1cmUm
Pigqb2JqZWN0KSk7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6Ci0gICAgICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5H
X0VYVDogewotICAgICAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgICAgICBtX2Nv
bnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNo
bWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAg
IH0KKyAgICAgICAgY2FzZSBFeHRlbnNpb25zR0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09M
T1JfRU5DT0RJTkdfRVhUOgorICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIi
LCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM0Nyw5ICszNDQsOSBAQCBHQ0dMaW50IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9ydHNE
cmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZl
cnMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJB
V19CVUZGRVJTX0VYVCwgJm1fbWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBtX21heERyYXdCdWZm
ZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVS
U19FWFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRl
eHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwg
Jm1fbWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9
IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5U
U19FWFQpOwogICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRU
QUNITUVOVFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhE
cmF3QnVmZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKIH0KQEAgLTM1OSw3ICszNTYsNyBA
QCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygp
CiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVn
ZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JB
dHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+
Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAg
IHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXgg
NmMzNzI5OWQ0Mzc3YWEwM2MyOTUxYzI0MDUwNTg5ZThiM2MzMGZhNy4uOGFmY2NhMTQ0OWQ1MDhl
MTU5NDViM2IwOWRkZWE0MzI0NzMyYjVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTg3Miw4ICs4
NzIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250
ZXh0KCkKICAgICBtX2NsZWFyU3RlbmNpbCA9IDA7CiAgICAgbV9jb2xvck1hc2tbMF0gPSBtX2Nv
bG9yTWFza1sxXSA9IG1fY29sb3JNYXNrWzJdID0gbV9jb2xvck1hc2tbM10gPSB0cnVlOwogCi0g
ICAgR0NHTGludCBudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gMDsKLSAgICBtX2NvbnRl
eHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09NQklORURfVEVYVFVSRV9J
TUFHRV9VTklUUywgJm51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOworICAgIEdDR0xpbnQg
bnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFw
aGljc0NvbnRleHRHTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMpOwogICAgIG1f
dGV4dHVyZVVuaXRzLmNsZWFyKCk7CiAgICAgbV90ZXh0dXJlVW5pdHMucmVzaXplKG51bUNvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHMpOwogI2lmICFVU0UoQU5HTEUpCkBAIC04ODEsMTggKzg4MCwx
NCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0
KCkKICAgICAgICAgbV91bnJlbmRlcmFibGVUZXh0dXJlVW5pdHMuYWRkKGkpOwogI2VuZGlmCiAg
ICAgCi0gICAgR0NHTGludCBudW1WZXJ0ZXhBdHRyaWJzID0gMDsKLSAgICBtX2NvbnRleHQtPmdl
dEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVkVSVEVYX0FUVFJJQlMsICZudW1WZXJ0
ZXhBdHRyaWJzKTsKKyAgICBHQ0dMaW50IG51bVZlcnRleEF0dHJpYnMgPSBtX2NvbnRleHQtPmdl
dEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9WRVJURVhfQVRUUklCUyk7CiAgICAgbV9t
YXhWZXJ0ZXhBdHRyaWJzID0gbnVtVmVydGV4QXR0cmliczsKICAgICAKLSAgICBtX21heFRleHR1
cmVTaXplID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVEVYVFVSRV9TSVpFLCAmbV9tYXhUZXh0dXJlU2l6ZSk7CisgICAgbV9tYXhUZXh0dXJl
U2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRV
UkVfU0laRSk7CiAgICAgbV9tYXhUZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6OmNvbXB1dGVM
ZXZlbENvdW50KG1fbWF4VGV4dHVyZVNpemUsIG1fbWF4VGV4dHVyZVNpemUpOwotICAgIG1fbWF4
Q3ViZU1hcFRleHR1cmVTaXplID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBo
aWNzQ29udGV4dEdMOjpNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFLCAmbV9tYXhDdWJlTWFwVGV4
dHVyZVNpemUpOworICAgIG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplID0gbV9jb250ZXh0LT5nZXRJ
bnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFKTsKICAg
ICBtX21heEN1YmVNYXBUZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6OmNvbXB1dGVMZXZlbENv
dW50KG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplLCBtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSk7Ci0g
ICAgbV9tYXhSZW5kZXJidWZmZXJTaXplID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfUkVOREVSQlVGRkVSX1NJWkUsICZtX21heFJlbmRlcmJ1
ZmZlclNpemUpOworICAgIG1fbWF4UmVuZGVyYnVmZmVyU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50
ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1JFTkRFUkJVRkZFUl9TSVpFKTsKIAogICAgIC8v
IFRoZXNlIHR3byB2YWx1ZXMgZnJvbSBFWFRfZHJhd19idWZmZXJzIGFyZSBsYXppbHkgcXVlcmll
ZC4KICAgICBtX21heERyYXdCdWZmZXJzID0gMDsKQEAgLTE3NDEsOCArMTczNiw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciYgc2hh
ZGVyKQogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQ
cm9ncmFtT3JTaGFkZXIoImNvbXBpbGVTaGFkZXIiLCAmc2hhZGVyKSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihzaGFkZXIub2JqZWN0KCkpOwotICAgIEdD
R0xpbnQgdmFsdWU7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCks
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnZhbHVlKTsKKyAgICBHQ0dMaW50
IHZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTKTsKICAgICBzaGFkZXIuc2V0VmFsaWQodmFsdWUpOwog
CiAgICAgYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpOwpAQCAtMjg4OCw4ICsyODgyLDcgQEAg
V2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QnVmZmVyUGFyYW1ldGVyKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0
ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIEdDR0xpbnQgdmFsdWUgPSBtX2NvbnRl
eHQtPmdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CiAgICAgaWYgKHBuYW1lID09
IEdyYXBoaWNzQ29udGV4dEdMOjpCVUZGRVJfU0laRSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUpOwpAQCAtMzE4OSwyNiArMzE4
MiwyNiBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFy
YW1ldGVyKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFByb2dyYW1QYXJh
bWV0ZXIiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkRFTEVURV9TVEFUVVM6CiAgICAgICAgIHJldHVybiBwcm9ncmFtLmlzRGVsZXRlZCgp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlZBTElEQVRFX1NUQVRVUzoKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPih2YWx1ZSk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0
KCksIHBuYW1lKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFUVVM6CiAg
ICAgICAgIHJldHVybiBwcm9ncmFtLmdldExpbmtTdGF0dXMoKTsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpBVFRBQ0hFRF9TSEFERVJTOgotICAgICAgICBtX2NvbnRleHQtPmdldFByb2dy
YW1pdihwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVj
dCgpLCBwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX0FUVFJJQlVU
RVM6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TOgogI2lmIFVT
RShBTkdMRSkKLSAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3Qo
KSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1p
KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKTsKICNlbHNlCi0gICAgICAgIHN0YXRpY19jYXN0PEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVpbHRJbkFj
dGl2ZVN5bWJvbENvdW50KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAg
ICB7CisgICAgICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKKyAgICAgICAgICAgIHN0YXRpY19j
YXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVp
bHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwor
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CiAjZW5kaWYgLy8gVVNFKEFOR0xF
KQotICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgZGVmYXVsdDoKICNpZiBFTkFCTEUoV0VCR0wy
KQogICAgICAgICBpZiAoaXNXZWJHTDIoKSkgewpAQCAtMzIxNiw4ICszMjA5LDcgQEAgV2ViR0xB
bnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIEcKICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERToKICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUzoKICAgICAgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNX0JMT0NLUzoKLSAgICAgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVl
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpOwogICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAg
LTMyODAsNyArMzI3Miw2IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDCiAgICAgICAgIHJldHVy
biB2YWx1ZTsKICAgICB9CiAKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBu
YW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX1NBTVBMRVM6
CiAgICAgICAgIGlmICghaXNXZWJHTDIoKSkgewpAQCAtMzI5Niw4ICszMjg3LDcgQEAgV2ViR0xB
bnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKEdD
R0xlbnVtIHRhcmdldCwgR0MKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZG
RVJfQUxQSEFfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJf
REVQVEhfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJfU1RF
TkNJTF9TSVpFOgotICAgICAgICBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAg
cmV0dXJuIG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1l
KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9S
TUFUOgogICAgICAgICByZXR1cm4gbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5nZXRJbnRlcm5hbEZv
cm1hdCgpOwogICAgIGRlZmF1bHQ6CkBAIC0zMzEwLDE2ICszMzAwLDEzIEBAIFdlYkdMQW55IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlciYg
c2hhZGVyLCBHQ0dMCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0U2hhZGVyUGFyYW1ldGVyIiwgJnNoYWRlcikp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIHN3
aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERUxFVEVfU1RBVFVT
OgogICAgICAgICByZXR1cm4gc2hhZGVyLmlzRGVsZXRlZCgpOwogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTOgotICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2
KHNoYWRlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxib29sPih2YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2Nv
bnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFOgotICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRl
cml2KHNoYWRlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIub2JqZWN0KCksIHBuYW1lKSk7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfRU5VTSwgImdldFNoYWRlclBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBu
YW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzM3OCwyMCArMzM2NSwxNSBAQCBX
ZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhQYXJhbWV0ZXIoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbgogICAgIGF1dG8gdGV4ID0gdmFsaWRhdGVUZXh0dXJlQmlu
ZGluZygiZ2V0VGV4UGFyYW1ldGVyIiwgdGFyZ2V0KTsKICAgICBpZiAoIXRleCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgR0NHTGZsb2F0IGZW
YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfTUFHX0ZJTFRFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhU
VVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQ
X1M6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6Ci0gICAgICAg
IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdl
dCwgcG5hbWUpKTsKICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9Q
WV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwotICAgICAgICBpZiAobV9l
eHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgJmZWYWx1ZSk7Ci0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZWYWx1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1f
ZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQorICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFRleFBhcmFtZXRlciIs
ICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMg
bm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgZGVmYXVsdDoKQEAg
LTM2MjQsNyArMzYwNiw3IEBAIFJlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMCiAKICAgICBHQ0dMaW50
IGFjdGl2ZVVuaWZvcm1zID0gMDsKICNpZiBVU0UoQU5HTEUpCi0gICAgbV9jb250ZXh0LT5nZXRQ
cm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklG
T1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKKyAgICBhY3RpdmVVbmlmb3JtcyA9IG1fY29udGV4dC0+
Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9V
TklGT1JNUyk7CiAjZWxzZQogICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Kj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dy
YW0ub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVV
bmlmb3Jtcyk7CiAjZW5kaWYKQEAgLTYyMzcsOSArNjIxOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cmVzdW1lKCkKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRCb29sZWFuUGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogewotICAgIEdDR0xib29sZWFu
IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCAmdmFsdWUpOwot
ICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRCb29sZWFuKHBuYW1l
KTsKIH0KIAogVmVjdG9yPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xl
YW5BcnJheVBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKQEAgLTYyNTgsMjMgKzYyMzgsMTcgQEAg
VmVjdG9yPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xlYW5BcnJheVBh
cmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIAogZmxvYXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0RmxvYXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGZsb2F0IHZh
bHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgJnZhbHVlKTsKLSAgICBy
ZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RmxvYXQocG5hbWUpOwogfQog
CiBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0SW50UGFyYW1ldGVyKEdDR0xlbnVt
IHBuYW1lKQogewotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldEludGVnZXIocG5hbWUpOwogfQogCiB1bnNpZ25lZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAm
dmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRl
Z2VyKHBuYW1lKTsKIH0KIAogUmVmUHRyPEZsb2F0MzJBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQpAQCAt
NzYyNiw5ICs3NjAwLDkgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRN
YXhEcmF3QnVmZmVycygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAmbV9tYXhE
cmF3QnVmZmVycyk7CisgICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldElu
dGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgaWYgKCFtX21h
eENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5z
aW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhDb2xvckF0dGFjaG1lbnRz
KTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xf
ZHJhd19idWZmZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19C
VUZGRVJTLgogICAgIHJldHVybiBzdGQ6Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9y
QXR0YWNobWVudHMpOwogfQpAQCAtNzYzOCw3ICs3NjEyLDcgQEAgR0NHTGludCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBv
cnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9y
QXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dM
OjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAg
ICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVu
c2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4Q29s
b3JBdHRhY2htZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaAppbmRleCAzNGYxN2VjNjFiMzMxMDM3MWMyZGRiZDBhMDE3NWM2MGI5
M2QxNmY1Li5iYTg2NWIzMzA4ZTZjOTQ1ODIyMTIyMzc3OTZkNmZkNTc3NDg0N2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMzA2
LDIxICszMDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FO
R0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIGRhdGEpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3Jt
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBvaW50ZXIpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkq
IGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9
IDA7CkBAIC0zMzYsMTQgKzMyMSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFF1
ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBk
YXRhKSA9IDA7IC8vIE5PTElOVAogICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIGRhdGEpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
NjQqIGRhdGEpID0gMDsgLy8gTk9MSU5UCiAgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCogcGFyYW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBkOWU1ODhhZmEzMGRi
YTczMDkzMGY5NmM5ODcyOTEzNDAxMjk4YzFlLi5mOGQ3MTU2ODcwNTI4ZGU5ZTE5ZDNkZGExMGJj
NWFjMDBmY2E0ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTk4NiwzMSArOTg2LDMwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJh
bWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkg
PSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIC8vIGdldFBhcmFtZXRlcgogICAgIHZp
cnR1YWwgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51bSBuYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcmlfdihHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldElu
dGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwg
R0NHTGludDY0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtaXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29s
ZWFuKiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7Cisg
ICAgdmlydHVhbCBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSA9IDA7Cisg
ICAgdmlydHVhbCBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSA9
IDA7CiAKICAgICB2aXJ0dWFsIEdDR0xlbnVtIGdldEVycm9yKCkgPSAwOwogCiAgICAgLy8gZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVh
bCBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8g
Z2V0UHJvZ3JhbVBhcmFtZXRlcgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9n
KFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAogICAgIC8vIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cgotICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwg
R0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUpID0gMDsKIAogICAgIC8vIGdldFNoYWRlclBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U2hh
ZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFNo
YWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNp
b25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSA9IDA7CkBAIC0xMDE4
LDE5ICsxMDE3LDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTaGFkZXJTb3Vy
Y2UoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgLy8gZ2V0VGV4UGFyYW1ldGVyCi0gICAg
dmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFy
YW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
ID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0VGV4UGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICAvLyBn
ZXRVbmlmb3JtCi0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5p
Zm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpID0gMDsKIAogICAg
IHZpcnR1YWwgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29u
c3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRWZXJ0ZXhBdHRyaWIKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJp
Yml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGludD4gdmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTHNpemVpcHRyIGdl
dFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpID0gMDsK
IApAQCAtMTIzNiw3ICsxMjM1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3Jt
QmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgPSAw
OworCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgorICAgIEdDR0xmbG9hdCBnZXRGbG9hdChHQ0dM
ZW51bSBwbmFtZSk7CisgICAgR0NHTGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSk7
CisgICAgR0NHTGludCBnZXRJbnRlZ2VyKEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMaW50IGdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2
b2lkIHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CkBAIC0xMzY3LDYgKzEzNzIsMzUgQEAgcHJp
dmF0ZToKICAgICBEZXN0aW5hdGlvbiBtX2Rlc3RpbmF0aW9uOwogfTsKIAoraW5saW5lIEdDR0xm
bG9hdCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpCit7CisgICAg
R0NHTGZsb2F0IHZhbHVlWzFdIHsgfTsKKyAgICBnZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAg
ICByZXR1cm4gdmFsdWVbMF07Cit9CisKK2lubGluZSBHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRl
eHRHTDo6Z2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMYm9vbGVhbiB2YWx1
ZVsxXSB7IH07CisgICAgZ2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFs
dWVbMF07Cit9CisKK2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRJbnRlZ2Vy
KEdDR0xlbnVtIHBuYW1lKQoreworICAgIEdDR0xpbnQgdmFsdWVbMV0geyB9OworICAgIGdldElu
dGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlWzBdOworfQorCitpbmxpbmUg
R0NHTGludCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpCit7
CisgICAgR0NHTGludCB2YWx1ZVsxXSB7IH07CisgICAgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYo
cHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZh
bHVlWzBdOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4
IDY5OWRlMjhiYWViOTJjYzI1MzM5NGRiYTgwYjdlN2E3OGUxM2Y0NDUuLmRiMGYwM2M4YjJlMjVj
ODM1OWQzMDZmOTQyYjZiZmEyMmE3MzBiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0yNSw3ICsyNSw5IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAvLyBHQ0dMIHR5cGVzIG1hdGNoIHRoZSBjb3Jy
ZXNwb25kaW5nIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAogLy8gaGVhZGVy
IGZpbGUgZ2wyLmggZnJvbSBraHJvbm9zLm9yZy4KQEAgLTU1LDMgKzU3LDUxIEBAIHR5cGVkZWYg
R0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVm
IHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
RXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4KK3N0cnVjdCBHQ0dM
U3BhbjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+CitzdHJ1Y3QgR0NHTFNw
YW4geworICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJy
YXkpCisgICAgeyB9CisgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQorICAgICAgICA6
IGRhdGEoYXJyYXkpCisgICAgeyB9CisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBBU1NF
UlQoZGF0YSk7IEFTU0VSVChpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CisgICAgVCYg
b3BlcmF0b3IqKCkgeyAgQVNTRVJUKGRhdGEpOyByZXR1cm4gKmRhdGE7IH0KKyAgICBUKiBkYXRh
OworICAgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90IGJ1ZlNpemUgPSBFeHRlbnQ7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCk+IHsKKyAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1ZlNp
emVfKQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykK
KyAgICB7IH0KKyAgICB0ZW1wbGF0ZTxzaXplX3QgU3o+IEdDR0xTcGFuKFQgKCZhcnJheSlbU3pd
KQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShTeikKKyAgICB7IH0K
KyAgICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYgYXJyYXkpCisgICAgICAgIDogZGF0YShhcnJh
eS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkpCisgICAgeyB9CisgICAg
VCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBBU1NFUlQoZGF0YSk7IEFTU0VSVChpIDwgYnVmU2l6
ZSk7IHJldHVybiBkYXRhW2ldOyB9CisgICAgVCYgb3BlcmF0b3IqKCkgeyBBU1NFUlQoZGF0YSk7
IHJldHVybiAqZGF0YTsgfQorICAgIFQqIGRhdGE7CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KK0dDR0xTcGFuKFQgKCYpW05d
KSAtPiBHQ0dMU3BhbjxULCBOPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK0dDR0xTcGFuKFdU
Rjo6VmVjdG9yPFQ+JikgLT4gR0NHTFNwYW48VD47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitH
Q0dMU3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNvdW50KQoreworICAgIHJl
dHVybiBHQ0dMU3BhbjxUPiB7IGRhdGEsIGNvdW50IH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5j
cHAKaW5kZXggMWM4YmM0MjU1MGYxYzFkOTVjMzA4MmY2NzM3NmE1Njk1MDZiZmFiMy4uNGQwMjVi
OTkzNDIyNzc2YjliNWY0YWFiYzM5YTBjNzg5MTk0MGE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xF
LmNwcApAQCAtMTEzLDggKzExMyw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyCiAgICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKLSAgICBpbnQgc291cmNlTGVuZ3RoID0gMDsKLSAgICBtX2NvbnRleHQtPmdldFNoYWRl
cml2KHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSwgJnNv
dXJjZUxlbmd0aCk7CisgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+Z2V0U2hhZGVy
aShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUpOwogICAg
IGlmICghc291cmNlTGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBW
ZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVS
X1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KQEAgLTI3OSwx
MjYgKzI3OCw2IEBAIEdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0
dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmCiB9CiAKIC8vIEdMX0FOR0xFX3Jv
YnVzdF9jbGllbnRfbWVtb3J5Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCb29sZWFudlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJvb2xlYW52Um9i
dXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0
YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRGbG9hdHZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgYXR0YWNobWVudCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldEludGVnZXJ2Um9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRQcm9ncmFtaXZS
b2J1c3RBTkdMRShwcm9ncmFtLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFk
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFNoYWRlcml2Um9idXN0QU5HTEUoc2hhZGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRl
eFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlv
biwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OkdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9u
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGlu
ZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCB2b2lkICoqcG9pbnRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwb2ludGVyKTsKLX0K
LQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC01MTcsMTQgKzM5Niw2IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwCiAgICAgZ2w6OkdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0
QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXJpX3ZSb2J1c3RBTkdM
RSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCiB2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTU1NywzMCArNDI4LDYgQEAgdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHBy
b2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0s
IHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0
ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXI2NHZSb2J1c3RBTkdMRShwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihkYXRhKSk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXI2NGlf
dlJvYnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRf
Y2FzdDxHTGludDY0Kj4oZGF0YSkpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuaAppbmRleCAxMjU2OTU2N2MxN2M5MjZiNzFhOTFiYjRiYjExOTU1NmJhMDZm
MTcwLi41N2JiOTNiYzg0YzMzNTkwZmJjZjRiM2Y3YTFlYjVhNTVjNTkyNTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lv
bnNHTEFOR0xFLmgKQEAgLTczLDIxICs3Myw2IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWly
ZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1
c3RfY2xpZW50X21lbW9yeQotICAgIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVh
biAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTaGFk
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0
cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVycmlkZTsKICAgICB2
b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5z
LCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhJ
bWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTAzLDE0ICs4
OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCiAgICAgdm9pZCBnZXRJ
bnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0
dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQg
KmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKICAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0p
IG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAK
aW5kZXggZGY2ZjM0YzlkNjE4ZDA3YWRmMjE5ODVhMzAxY2JlNDE0MjkzOTA4YS4uMDZlMjE2YzM1
OGYyYTQ1OTM2MTcwMWRlYmEyNTEwNWIyYzQ0OWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAKQEAgLTMzMCw0OSArMzMwLDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
CiAgICAgZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2
YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CisgICAgZ2w6OkdldEludGVnZXJ2Um9idXN0QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51
bGxwdHIsIHZhbHVlLmRhdGEpOwogCiAgICAgc3dpdGNoIChwbmFtZSkgewotICAgIGNhc2UgTUFY
X1RFWFRVUkVfU0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUs
IHZhbHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRN
YXhpbXVtVGV4dHVyZVNpemUoKSkKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYs
ICp2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVf
U0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUs
IHZhbHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRN
YXhpbXVtVGV4dHVyZVNpemUoKSkKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDEwMjQs
ICp2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBTb21l
IG9sZGVyIGhhcmR3YXJlIGFkdmVydGlzZXMgYSBsYXJnZXIgbWF4aW11bSB0aGFuIHRoZXkKICAg
ICAvLyBjYW4gYWN0dWFsbHkgaGFuZGxlLiBSYXRoZXIgdGhhbiBkZXRlY3Rpbmcgc3VjaCBkZXZp
Y2VzLCBzaW1wbHkKICAgICAvLyBjbGFtcCB0aGUgbWF4aW11bSB0byA4MTkyLCB3aGljaCBpcyBi
aWcgZW5vdWdoIGZvciBhIDVLIGRpc3BsYXkuCiAgICAgY2FzZSBNQVhfUkVOREVSQlVGRkVSX1NJ
WkU6Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihNQVhfUkVOREVSQlVGRkVSX1NJWkUsIHZhbHVl
KTsKICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oODE5MiwgKnZhbHVlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNQVhfVklFV1BPUlRfRElNUzoKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2
KE1BWF9WSUVXUE9SVF9ESU1TLCB2YWx1ZSk7CiAgICAgICAgIHZhbHVlWzBdID0gc3RkOjptaW4o
ODE5MiwgdmFsdWVbMF0pOwogICAgICAgICB2YWx1ZVsxXSA9IHN0ZDo6bWluKDgxOTIsIHZhbHVl
WzFdKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBkZWZhdWx0OgotICAgICAgICBnbDo6
R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyaV92KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXJpX3YocG5h
bWUsIGluZGV4LCB2YWx1ZSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVj
aXNpb25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQogewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xMjExLDcgKzExOTIsNiBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDRwogCiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwogICAgIGdsOjpH
ZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVu
aWZvcm1TaXplKTsKLQogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUobWF4VW5pZm9ybVNpemUpOyAv
LyBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24u
CiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKQEAgLTE4
MTgsNjQgKzE3OTgsNjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFZlcnRl
eEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheShh
cnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdD
R0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+
IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRCb29s
ZWFudlJvYnVzdEFOR0xFKHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVy
aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dM
aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwg
cG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYoR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldEZsb2F0dihw
bmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRGbG9hdHZSb2J1c3RBTkdMRShwbmFtZSwgdmFsdWUu
YnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAgICAgCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZh
bHVlKQorR0NHTGludDY0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQoR0NH
TGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludDY0IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdmFsdWUgPSAwOwotICAg
IGdsOjpHZXRJbnRlZ2VyNjR2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICBnbDo6R2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKHBuYW1lLCAxLCBudWxscHRyLCAmdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGlu
dDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdl
cjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCiB7CisgICAgR0NHTGludDY0IHZh
bHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAqdmFsdWUgPSAwOwotICAgIGdsOjpHZXRJbnRlZ2VyNjRpX3YocG5hbWUsIGluZGV4
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0SW50ZWdlcjY0aV92
Um9idXN0QU5HTEUocG5hbWUsIGluZGV4LCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2ht
ZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NH
TGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBpZiAoYXR0YWNobWVudCA9PSBE
RVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCiAgICAgICAgIGF0dGFjaG1lbnQgPSBERVBUSF9BVFRB
Q0hNRU5UOyAvLyBPciBTVEVOQ0lMX0FUVEFDSE1FTlQsIGVpdGhlciB3b3Jrcy4KLSAgICBnbDo6
R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBw
bmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRQcm9ncmFtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9n
cmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdD
R0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShw
cm9ncmFtLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyhQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlcnNbMl0sIEdDR0xzaXplaSBjb3VudCwgY29uc3QgU3RyaW5n
JiBsb2cpCkBAIC0xOTIxLDIyICsxOTA0LDIzIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtKQogICAgIHJl
dHVybiBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIGNvdW50LCBTdHJpbmcoaW5mby5kYXRh
KCksIHNpemUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NH
TGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5h
bWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVy
aShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgQVNTRVJU
KHNoYWRlcik7Ci0KKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2hhZGVyaXYoc2hhZGVy
LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFNoYWRl
cml2Um9idXN0QU5HTEUoc2hhZGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKQEAgLTE5NjQsNDQgKzE5NDgsNDYg
QEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZv
cm1HTE9iamVjdCkKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
KQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyZnYodGFy
Z2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFRl
eFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVl
KTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFRleFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1l
dGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFs
dWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAg
ICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0
YXJnZXQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsOjpHZXRVbmlm
b3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0
ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xp
bnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGlu
dD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZ2w6OkdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwor
ICAgIGdsOjpHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUu
YnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRVbmlmb3JtdWl2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAK
IEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTIwMTQsMjAgKzIw
MDAsMjAgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gZ2w6OkdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBw
bmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4
LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwg
cG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShpbmRl
eCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCiBHQ0dM
c2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0yMDM2LDcgKzIwMjIsNyBAQCBHQ0dM
c2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChH
Q0dMdWludCBpbmRleCwgR0NHTAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEdMdm9pZCogcG9p
bnRlciA9IDA7Ci0gICAgZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwbmFtZSwg
JnBvaW50ZXIpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKGlu
ZGV4LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnBvaW50ZXIpOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMc2l6ZWlwdHI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsKIH0K
IApAQCAtMjk1Myw2ICsyOTM5LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhCiAgICAgZ2w6
OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsg
c3JjT2Zmc2V0KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGdsOjpHZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBw
bmFtZSwgcGFyYW1zLmJ1ZlNpemUsIG51bGxwdHIsIHBhcmFtcy5kYXRhKTsKK30KKworCiAjaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xDViog
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRS5jcHAKaW5kZXggNmQ1MDNiY2JhNzVhZmI4YzUwNzkwYjFjMjRlMjgyODM2YzU1ZDk0OS4u
Y2JhZjA2MGI1NTYzOWZkYjU1YWI3ZWFlNDE3ZWY1ZDIwNDM5ZDkzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0Nv
bnRleHRHTENWQU5HTEUuY3BwCkBAIC00NjQsOCArNDY0LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKIAogICAgIG1fY29udGV4
dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2ZXJ0ZXhTaGFkZXIpOwogCi0gICAgR0NHTGludCBzdGF0
dXMgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYodmVydGV4U2hhZGVyLCBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIEdDR0xpbnQgc3RhdHVz
ID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHZlcnRleFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBJTEVfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2ViR0ws
ICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVw
KSAtIFZlcnRleCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwgdGhpcyk7CiAgICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CkBAIC00ODAsNyArNDc5LDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3Rz
KCkKIAogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdChmcmFnbWVudFNoYWRlcik7
CiAKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KGZyYWdtZW50U2hhZGVyLCBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIHN0YXR1cyA9IG1fY29udGV4
dC0+Z2V0U2hhZGVyaShmcmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVf
U1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIEZyYWdt
ZW50IHNoYWRlciBmYWlsZWQgdG8gY29tcGlsZS4iLCB0aGlzKTsKICAgICAgICAgbV9jb250ZXh0
LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKQEAgLTQ5Myw3ICs0OTIsNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogICAg
IG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOwog
ICAgIG1fY29udGV4dC0+bGlua1Byb2dyYW0obV95dXZQcm9ncmFtKTsKIAotICAgIG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWl2KG1feXV2UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RB
VFVTLCAmc3RhdHVzKTsKKyAgICBzdGF0dXMgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKG1feXV2
UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1
cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRp
YWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIFByb2dyYW0gZmFpbGVkIHRvIGxpbmsuIiwgdGhp
cyk7CiAgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDgwNjEwZGU3ZDQzMWNmNDI2
Mjk5N2Y0ZmZjZTM3YjZiZTFlZTc0MDQuLjM0ZmVmMDViNjIzNzg3MGQwNWJkMWEzMmMyZjQ1YTQx
OTFiM2Y3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0x
MjgsNyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJs
ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5HTEVS
ZXNvdXJjZXMgPSBjb21waWxlci5nZXRSZXNvdXJjZXMoKTsKICAgICAgICAgaWYgKCFBTkdMRVJl
c291cmNlcy5FWFRfZHJhd19idWZmZXJzKSB7CiAgICAgICAgICAgICBBTkdMRVJlc291cmNlcy5F
WFRfZHJhd19idWZmZXJzID0gMTsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYo
RXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJkFOR0xFUmVzb3VyY2VzLk1heERy
YXdCdWZmZXJzKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0g
bV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQp
OwogICAgICAgICAgICAgY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCIpIHsKQEAgLTE3Miw3ICsxNzIsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogCiAgICAg
QU5HTEVXZWJLaXRCcmlkZ2UmIGNvbXBpbGVyID0gbV9jb250ZXh0LT5tX2NvbXBpbGVyOwogCi0g
ICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFE
RVJfVFlQRSwgJkdMc2hhZGVyVHlwZSk7CisgICAgR0xzaGFkZXJUeXBlID0gbV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFKTsKIAogICAg
IGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9TSEFERVIpCiAg
ICAgICAgIHNoYWRlclR5cGUgPSBTSEFERVJfVFlQRV9WRVJURVg7CkBAIC0yNTQsODEgKzI1NCw2
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1
aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTGluCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50
ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJvZ3JhbWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1c3RB
TkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZvcm1pdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZl
cnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICopCiB7CiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC00MDAsMTEgKzMyNSw2
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCiB7CiAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBA
IC00MzAsMTYgKzM1MCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMCiAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQog
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xp
bnQ2NCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IDA0ODk0
YjkxYzgyY2M0YjFiMjA5YTdhZmQyMjljYmRjYTlhMDFhNDMuLjk3ZWVkZmI3NDg1YzgzMmY3OTNj
OGNmZjBmYTE3ZmJmZmJlNjU4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmgKQEAgLTY5LDIxICs2OSw2IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVzUmVzdHJpY3Rl
ZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmlj
dGVkTWF4aW11bVRleHR1cmVTaXplOyB9CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50
X21lbW9yeQotICAgIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZsb2F0dlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVn
ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQcm9ncmFt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTaGFkZXJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZl
cnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCB2b2lkICoqcG9pbnRlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9i
dXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAq
cGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7CkBAIC05OSwxNCArODQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0UXVlcnlpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcmlf
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgaW50ICpkYXRhKSBvdmVycmlkZTsKICAgICB2b2lk
IGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVy
dGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0
ICpkYXRhKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRl
OwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBh
cmFtKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IGFiOGNi
NTRmNWU4NzllZjRiOGE5MGQxOWE3ZWM5MmM4OWNlMjA1N2IuLmQyOGY0YTAzMWViZGM0ODM4NzVk
Mzk4NDg3ZDU3ODc0OGZkZTQ3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApA
QCAtNzQsMTEgKzc0LDggQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6aXNFbmFibGVkKGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRm9yIEdM
X0VYVF9yb2J1c3RuZXNzLCBjaGVjayB0aGF0IHRoZSBjb250ZXh0IHN1cHBvcnRzIHJvYnVzdCBh
Y2Nlc3MuCi0gICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNzIikgewotICAgICAgICBH
TGludCByb2J1c3RBY2Nlc3MgPSBHTF9GQUxTRTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRl
Z2VydihFeHRlbnNpb25zR0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUywgJnJvYnVzdEFjY2Vzcyk7
Ci0gICAgICAgIHJldHVybiByb2J1c3RBY2Nlc3MgPT0gR0xfVFJVRTsKLSAgICB9CisgICAgaWYg
KG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNzIikKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+
Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUykgPT0gR0xfVFJV
RTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAppbmRleCA3NzVmOTA0MDZmNDJhNjA5MWRkYzNmZWExZTUwYjdjMmIwYWU0ZGExLi5jM2Y0OGU4
YzY4OWYwYjM5N2I2ZjdlNTY4MzQ4MjRhNmE4YjlmNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaApAQCAtMTk3LDM1ICsxOTcsMzQgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0
QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYpOwogICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50LCBQbGF0
Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKSBmaW5hbDsK
LSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOwotICAgIHZvaWQgZ2V0RmxvYXR2
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2
b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRJbnRlZ2VyaV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NH
TGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludDY0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3YoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKSBmaW5hbDsKLSAg
ICB2b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVnZXJ2
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgR0NH
TGludDY0IGdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludDY0
IGdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAg
ICBHQ0dMaW50IGdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOwogI2lmICFVU0UoQU5HTEUpCiAgICAgdm9pZCBnZXROb25CdWlsdEluQWN0
aXZlU3ltYm9sQ291bnQoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpOwogI2VuZGlmIC8vICFVU0UoQU5HTEUpCiAgICAgU3RyaW5nIGdldFBy
b2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogICAgIFN0cmluZyBnZXRVbm1h
bmdsZWRJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3RbMl0sIEdDR0xzaXplaSwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRTaGFk
ZXJpdihQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZp
bmFsOworICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZv
cm1HTE9iamVjdCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIFN0cmluZyBnZXRTaGFkZXJJ
bmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lz
aW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdD
R0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pIGZpbmFsOwogICAgIFN0cmluZyBnZXRT
aGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFN0cmlu
ZyhHQ0dMZW51bSBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7
Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZh
bHVlKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFRleFBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlm
b3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpIGZpbmFsOwog
ICAgIEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0
cmluZyYgbmFtZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAg
IHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTHNpemVpcHRyIGdldFZlcnRl
eEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAg
ICAgdm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7CkBAIC00
MzgsNiArNDM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAj
aWYgIVVTRShBTkdMRSkKICAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDc1MGVkMzI2ZWNlNjVlODhmNmI0MTM2MDE1YzRmOTMz
NzQ0ODljYTUuLmNlZjAwNjBjNzk5MzAxMTI3OTFkN2E0NGU0OGY2NDczOGQ4MDljM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC0yNjAsNyArMjYw
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGUKICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFn
ZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIC8vIE5lZWQgdG8g
ZW11bGF0ZSBNQVhfRlJBR01FTlQvVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyBhbmQgTUFYX1ZBUllJ
TkdfVkVDVE9SUwogICAgIC8vIGJlY2F1c2UgZGVza3RvcCBHTCdzIGNvcnJlc3BvbmRpbmcgcXVl
cmllcyByZXR1cm4gdGhlIG51bWJlciBvZiBjb21wb25lbnRzCkBAIC0yNzIsMzkgKzI3MiwzOSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCiAgICAgc3dpdGNoIChwbmFtZSkgewogI2lmIFVTRShPUEVOR0wp
CiAgICAgY2FzZSBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOgotICAgICAgICA6OmdsR2V0
SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOworICAg
ICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUywg
dmFsdWUuZGF0YSk7CiAgICAgICAgICp2YWx1ZSAvPSA0OwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOgotICAgICAgICA6OmdsR2V0SW50ZWdlcnYo
R0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdl
dEludGVnZXJ2KEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZS5kYXRhKTsK
ICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX1ZBUllJ
TkdfVkVDVE9SUzoKICAgICAgICAgaWYgKGlzR0xFUzJDb21wbGlhbnQoKSkgewogICAgICAgICAg
ICAgQVNTRVJUKDo6Z2xHZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKLSAgICAgICAgICAgIDo6
Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCB2YWx1ZSk7CisgICAgICAgICAg
ICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgdmFsdWUuZGF0YSk7CiAg
ICAgICAgICAgICBpZiAoOjpnbEdldEVycm9yKCkgPT0gR0xfSU5WQUxJRF9FTlVNKSB7Ci0gICAg
ICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMsIHZh
bHVlKTsKKyAgICAgICAgICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfQ09N
UE9ORU5UUywgdmFsdWUuZGF0YSk7CiAgICAgICAgICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICA6OmdsR2V0SW50ZWdlcnYo
R0xfTUFYX1ZBUllJTkdfRkxPQVRTLCB2YWx1ZSk7CisgICAgICAgICAgICA6OmdsR2V0SW50ZWdl
cnYoR0xfTUFYX1ZBUllJTkdfRkxPQVRTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgICAgICp2YWx1
ZSAvPSA0OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBNQVhf
VEVYVFVSRV9TSVpFOgotICAgICAgICA6OmdsR2V0SW50ZWdlcnYoTUFYX1RFWFRVUkVfU0laRSwg
dmFsdWUpOworICAgICAgICA6OmdsR2V0SW50ZWdlcnYoTUFYX1RFWFRVUkVfU0laRSwgdmFsdWUu
ZGF0YSk7CiAgICAgICAgIGlmIChnZXRFeHRlbnNpb25zKCkucmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplKCkpCiAgICAgICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbig0MDk2LCAq
dmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1BWF9DVUJFX01BUF9URVhUVVJFX1NJ
WkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFLCB2
YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpF
LCB2YWx1ZS5kYXRhKTsKICAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3Ry
aWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkKICAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWlu
KDEwMjQsICp2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIDo6
Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICA6OmdsR2V0SW50ZWdlcnYocG5h
bWUsIHZhbHVlLmRhdGEpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYjBjMWYxZGZkNDNkNDE1MDQyN2ZmNTIxYWNmNjg0
MzYyNzI0MDA1YS4uZTY0YzdmNzFiZDNiYjQ3MTdhMzAwN2RlOWZhZjllOTBlYmYzOWM0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzE3
LDEyICsxNzE3LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRWZXJ0ZXhB
cnJheShQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiog
dmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudihHQ0dMZW51
bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRCb29sZWFudihw
bmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRCb29sZWFudihwbmFtZSwgdmFsdWUuZGF0YSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcml2KEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQpAQCAtMTczMyw2
NSArMTczMyw1NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJh
bWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYQogICAgIDo6Z2xHZXRCdWZmZXJQ
YXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7
CisgICAgOjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShwbmFt
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAqdmFsdWUgPSAwOwotICAgIC8vIEZJWE1FIDE0
MTE3ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0Y2ggb3ZlciB0byB1
c2luZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdlYkdMMiBjb250ZXh0
IHVzaW5nIE9wZW5HTCBFUyAzLjAuCi0gICAgLy8gOjpnbEdldEludGVnZXJpX3YocG5hbWUsIGlu
ZGV4LCB2YWx1ZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKHBuYW1lKTsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAqdmFsdWUgPSAwOworICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7CiAgICAgLy8g
RklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBtdXN0IGZpcnN0IHN3aXRjaCBv
dmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQgaW5pdGlhbGluZyB0aGUgV2ViR0wy
IGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KICAgICAvLyA6OmdsR2V0SW50ZWdlcjY0dihw
bmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRl
eCwgR0NHTGludDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHBuYW1lKTsKICAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgICp2YWx1ZSA9IDA7Cisg
ICAgR0NHTGludDY0IHZhbHVlID0gMDsKICAgICAvLyBGSVhNRSAxNDExNzg6IEJlZm9yZSBlbmFi
bGluZyB0aGlzIHdlIG11c3QgZmlyc3Qgc3dpdGNoIG92ZXIgdG8gdXNpbmcgZ2wzLmggYW5kIGNy
ZWF0aW5nIGFuZCBpbml0aWFsaW5nIHRoZSBXZWJHTDIgY29udGV4dCB1c2luZyBPcGVuR0wgRVMg
My4wLgogICAgIC8vIDo6Z2xHZXRJbnRlZ2VyNjRpX3YocG5hbWUsIGluZGV4LCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZQogewor
ICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKLQogICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRU
QUNITUVOVCkKICAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNU
RU5DSUxfQVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgotICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7
CisgICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwg
YXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKLQotICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVlKTsK
KyAgICBHQ0dMaW50IHZhbHVlIHAgPSAwOworICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwg
cG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCkBAIC0xODk5LDIw
ICsxODkxLDIxIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbUlu
Zm9Mb2coUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtKQogICAgIHJldHVybiBnZXRVbm1hbmdsZWRJ
bmZvTG9nKHNoYWRlcnMsIGNvdW50LCBTdHJpbmcoaW5mby5kYXRhKCksIHNpemUpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpn
bEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkVY
VCh0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzaGFk
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIsIEdDR0xlbnVt
IHBuYW1lKQogewogICAgIEFTU0VSVChzaGFkZXIpOwotCisgICAgR0NHTGludCB2YWx1ZSA9IDA7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdmFsdWU7CiAKIAogICAgIGNvbnN0IGF1dG8mIHJlc3VsdCA9IG1fc2hhZGVyU291
cmNlTWFwLmZpbmQoc2hhZGVyKTsKQEAgLTE5MjAsNyArMTkxMyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dM
ZW51bSBwbmFtCiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgREVMRVRFX1NUQVRVUzoK
ICAgICBjYXNlIFNIQURFUl9UWVBFOgotICAgICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBw
bmFtZSwgdmFsdWUpOworICAgICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgJnZh
bHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDT01QSUxFX1NUQVRVUzoKICAgICAgICAg
aWYgKHJlc3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkgewpAQCAtMTk0Miw2ICsxOTM1
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm1H
TE9iamVjdCBzaGFkZXIsIEdDR0xlbnVtIHBuYW0KICAgICBkZWZhdWx0OgogICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihJTlZBTElEX0VOVU0pOwogICAgIH0KKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0
Zm9ybUdMT2JqZWN0IHNoYWRlcikKQEAgLTE5ODYsMzkgKzE5ODAsNDEgQEAgU3RyaW5nIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBzaGFk
ZXIpCiAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWUuc291cmNlOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUp
CiB7CisgICAgR0NHTGZsb2F0IHZhbHVlID0gMC5mOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJn
ZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICA6OmdsR2V0VGV4
UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRUZXhQYXJhbWV0
ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICA6
OmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCogdmFs
dWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIDo6Z2xHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICA6
OmdsR2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0VW5pZm9y
bWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgOjpnbEdldFVuaWZvcm1pdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMdWludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsK
ICAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwpAQCAtMjAzNywyMCArMjAzMywyMCBAQCBHQ0dM
aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJldHVybiA6OmdsR2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sIG1hcHBlZE5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFZlcnRleEF0dHJpYmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZh
bHVlKTsKKyAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFZlcnRleEF0
dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihp
bmRleCwgcG5hbWUsIHZhbHVlLmRhdGEpOwogfQogCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUpCkBAIC0zMTQzLDcgKzMxMzksMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAog
ICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwogfQogCi0KK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4g
cGFyYW1zKQoreworICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKKyAgICBVTlVTRURfUEFSQU0o
dW5pZm9ybUJsb2NrSW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CisgICAgVU5VU0VE
X1BBUkFNKHBhcmFtcyk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9H
TCkgJiYgKFVTRShPUEVOR0wpIHx8IFVTRShPUEVOR0xfRVMpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
RVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IDYwZmRmYzY1Zjg3Mzk1ODk1Nzk1YTg0ZWYxZTA5
YWJmNmQ3YWE4NDMuLjUyNDE5ZjU2NmIxZjI1OGE3ZGE0MTJkMTMxY2Y2N2Y2ZTA5NjEzY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTE5NiwxMiArMTk2
LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlCiAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3Jh
Z2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0SW50ZWdlcnYocG5h
bWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmRhdGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQo
R0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFu
Z2UsIEdDR0xpbnQqIHByZWNpc2lvbikKQEAgLTMzMCwxMyArMzMwLDEzIEBAIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0CiAgICAgU2hCdWlsdEluUmVzb3VyY2VzIEFOR0xFUmVzb3VyY2VzOwogICAg
IFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJkFOR0xFUmVzb3VyY2VzKTsKICAgICAKLSAgICBnZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAmQU5H
TEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJj
ZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmFy
eWluZ1ZlY3RvcnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpN
QVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhU
ZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4
Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4
VGV4dHVyZUltYWdlVW5pdHMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4RnJh
Z21lbnRVbmlmb3JtVmVjdG9ycyk7CisgICAgOjpnbEdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpNQVhfVkVSVEVYX0FUVFJJQlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhB
dHRyaWJzKTsKKyAgICA6OmdsR2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1B
WF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9y
bVZlY3RvcnMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
TUFYX1ZBUllJTkdfVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzKTsK
KyAgICA6OmdsR2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhf
VEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFn
ZVVuaXRzKTsKKyAgICA6OmdsR2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1B
WF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4Q29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgOjpnbEdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpNQVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heFRl
eHR1cmVJbWFnZVVuaXRzKTsKKyAgICA6OmdsR2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6Ok1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhG
cmFnbWVudFVuaWZvcm1WZWN0b3JzKTsKICAgICAKICAgICAvLyBBbHdheXMgc2V0IHRvIDEgZm9y
IE9wZW5HTCBFUy4KICAgICBBTkdMRVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IDE7Cg==
</data>
<flag name="commit-queue"
          id="431041"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414228</attachid>
            <date>2020-11-16 06:06:08 -0800</date>
            <delta_ts>2020-11-16 06:08:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201116160606.patch</filename>
            <type>text/plain</type>
            <size>119205</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFiMzgwY2VlY2RkMjk1
NGU1ZGM4NGU3MGZlMzc2YmIyZTBjYmQ0OS4uZDMyNDg4YzEzNzYyNjQ2Y2I2NThlMjczZmYwNmUy
NDdjMzYwOTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxOCBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRo
ZSB2YWx1ZSBpcyBhIG5vcm1hbCB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIHJlZHVjZXMgdGhlIHJp
c2sKKyAgICAgICAgb2YgaGF2aW5nIHVuaW5pdGlhbGl6ZWQgcmVjZWl2ZSBsb2NhdGlvbi4KKwor
ICAgICAgICBDaGFuZ2UgdGhlIGdldHRlcnMgdGhhdCBhcmUgb25seSB1c2VkIHRvIG9idGFpbiBz
aW5nbGUgdmFsdWVzIHNvCisgICAgICAgIHRoYXQgdGhlIGdldHRlciBpdHNlbGYgaGFzIHRoZSBy
ZXR1cm4gdmFsdWUuCisgICAgICAgIEFkZCBhIHNpbmdsZS12YWx1ZSBnZXR0ZXIgZm9yIGdldHRl
cnMgdGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gYWxzbworICAgICAgICBtdWx0aXBsZSB2YWx1ZXMu
CisKKyAgICAgICAgQWRkIEdDR0xTcGFuIHR5cGUgdGhhdCBpcyB1c2VkIHRvIGNvbW11bmljYXRl
IHBhaXI6IHB0ciwgbnVtYmVyIG9mCisgICAgICAgIGVsZW1lbnRzLgorCisgICAgICAgIFVzZSB0
aGUgUm9idXN0QU5HTEUgdmFyaWFudHMgb2YgdGhlIEdMIEFQSSBpbXBsZW1lbnRhdGlvbiB0byBv
YnRhaW4KKyAgICAgICAgdGhlIHZhbHVlcy4KKworICAgICAgICBSZW1vdmUgdGhlIGNvcnJlc3Bv
bmRpbmcgUm9idXN0QU5HTEUgdmFyaWFudHMgZnJvbSBFeHRlbnNpb25zR0wsIHRoZXkgYXJlCisg
ICAgICAgIGRlYWQgY29kZSBhbmQgdW51c2VkLgorCisgICAgICAgIFRoZSB0eXBlIEdDR0xTcGFu
IHdpbGwgYmUgdXNlZCB0byBzaW1wbGlmeSB0aGUgR1BVIHByb2Nlc3MgaW1wbGVtZW50YXRpb24s
CisgICAgICAgIHNpbmNlIHRoZSBidWZTaXplIHdpbGwgYmUgZXhwbGljaXRseSBhc3NvY2lhdGVk
IGluIHRoZSBwYXNzZWQgZGF0YSBwdHIsCisgICAgICAgIGluc2lkZSB0aGUgR0NHTFNwYW4gdHlw
ZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NHTFNwYW4gd2lsbCBiZSB1c2Vk
IGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAgaS5lLiBhcmJpdHJhcnkgYnVm
ZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKworICAgICAgICBSZW1vdmVzIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSB3b3JrYXJvdW5kIGZyb20gQU5HTEUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY29kZSwgaXQgd2FzIGRlYWQgY29kZSAo
aS5lIGZsYWcgYWx3YXlzIGZhbHNlKS4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBB
TkdMRSBsZXZlbC4KKworICAgICAgICBGaXhlcyBidWdzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFs
dWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlIGxvY2F0aW9uIG9mIHRoZQorICAgICAgICBnb3R0ZW4g
cHJvcGVyeS4gVGhpcyB2YWx1ZSB3b3VsZCBiZSB1bndyaXR0ZW4gaW4gZWRnZS1jYXNlcyBsaWtl
IEdMIGVycm9ycywgYW5kCisgICAgICAgIHRodXMgdGhlIHJlYWQgd291bGQgdG91Y2ggdW51aW5p
dGlhbGl6ZWQgdmFsdWUuCisKKyAgICAgICAgRml4ZXMgYSBidWcgd2hlcmUgdW5pZm9ybSBibG9j
ayB2YXJpYWJsZXMgY29kZSB3b3VsZCBwYXNzIGluIHRvbyBsYXJnZSBidWZmZXIKKyAgICAgICAg
c2l6ZSB0byB0aGUgUm9idXN0QU5HTEUgY2FsbC4gVGhlIGJ1ZlNpemUgcmVmZXJzIHRvIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMsIGJ1dAorICAgICAgICB0aGUgY29kZSBwYXNzZWQgaW4gdGhlIHNp
emUgb2YgdGhlIGJ1ZmZlciAoaS5lLiBudW1iZXIgb2YgZWxlbWVudHMgKiBzaXplIG9mCisgICAg
ICAgIGVsZW1lbnQpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSByZWZhY3Rvci4KKworICAg
ICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNj
cmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFBy
b2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXpl
TmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRCb29sZWFuUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZsb2F0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEludFBhcmFtZXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OmdldEZs
b2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRCb29sZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRJbnRlZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaDoKKyAgICAgICAg
KEdDR0xTcGFuOjpHQ0dMU3Bhbik6CisgICAgICAgIChHQ0dMU3Bhbjo6b3BlcmF0b3JbXSk6Cisg
ICAgICAgIChHQ0dMU3Bhbjo6b3BlcmF0b3IqKToKKyAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KToKKyAgICAgICAgKG1ha2VHQ0dMU3Bhbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RmxvYXR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZl
cnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50
ZWdlcjY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vydik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJv
b2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWkpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRl
cmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRTaGFkZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0
aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFu
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldElu
dGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
SW50ZWdlcjY0aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdl
cnYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyaV92KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vy
NjR2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRJbnRlZ2VyNjRpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9n
cmFtaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJv
Z3JhbUluZm9Mb2cpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVySW5m
b0xvZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U2hhZGVyU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmdik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZv
cm1mdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VW5pZm9ybWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJp
YmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRWZXJ0ZXhBdHRyaWJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVz
c2VkVGV4SW1hZ2UyRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRnJhbWVi
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZVByb2dyYW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhZGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVUZXh0dXJl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpk
ZWxldGVCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRlbGV0ZUZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVQcm9ncmFtKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVSZW5kZXJidWZmZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRl
bGV0ZVNoYWRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZGVsZXRlVGV4dHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6c3ludGhlc2l6ZUdMRXJyb3IpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtDb250ZXh0Q2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFy
a0xheWVyQ29tcG9zaXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6bGF5ZXJDb21wb3NpdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmb3JjZUNvbnRleHRMb3N0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWN5Y2xl
Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJh
d0FycmF5c0luc3RhbmNlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmlt
aXRpdmVSZXN0YXJ0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNvcHlCdWZmZXJTdWJEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJS
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5tYXBCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludmFsaWRh
dGVGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQnVmZmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlcm5hbGZv
cm1hdGl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0b3JhZ2UyRCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3RvcmFnZTNE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
b3B5VGV4U3ViSW1hZ2UzRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTF1aSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bTN1aSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTR1aSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTF1aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3Vpdik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTR1aXYpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgyeDNmdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4Mng0ZnYpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRy
aXg0eDJmdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5pZm9ybU1hdHJpeDN4NGZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgzZnYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVy
dGV4QXR0cmliSTRpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliSTR1aXYpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYklQ
b2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3UmFuZ2VFbGVtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyaXYpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVydWl2
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
bGVhckJ1ZmZlcmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjbGVhckJ1ZmZlcmZpKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlUXVlcnkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzUXVlcnkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJlZ2luUXVl
cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmVuZFF1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVNhbXBsZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVNhbXBsZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omlz
U2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmluZFNhbXBsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJpKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVyZik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxl
clBhcmFtZXRlcmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNTeW5jKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVTeW5jKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGll
bnRXYWl0U3luYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6d2FpdFN5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFN5bmNpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVRyYW5z
Zm9ybUZlZWRiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjppc1RyYW5zZm9ybUZlZWRiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJlZ2luVHJh
bnNmb3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0cmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmdz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc3VtZVRyYW5z
Zm9ybUZlZWRiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpiaW5kQnVmZmVyQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZEJ1ZmZlclJhbmdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtSW5kaWNlcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QWN0aXZlVW5pZm9ybXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtQmxvY2tCaW5kaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKToKKwogMjAyMC0xMS0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEZpbmFsIHJlZmFjdG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1
c2Ugb25seSBHcmFwaGljc0NvbnRleHRHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52
YXMuY3BwCmluZGV4IDJlZjEwYjBhNGYzNDZlZmUxYjkzOGU0NmUwMDUzYThhMzM5NDUzNDQuLjA0
YjMwZjhmNjQ2NDE0NjgwNjdlMzA5MjZlNzRlNGYyZDljMThiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCBFeGNlcHRpb25PcjxS
ZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1h
cCgpCiAgICAgICAgIC8vIGNyZWF0ZXMgYSBuZXcgYmFja2luZyBzdG9yZS4gU2luY2Ugd2UncmUg
bm90IGRvaW5nIHRoYXQgeWV0LCB3ZQogICAgICAgICAvLyBuZWVkIHRvIGVyYXNlIHdoYXQncyB0
aGVyZS4KIAotICAgICAgICBHQ0dMZmxvYXQgY2xlYXJDb2xvcls0XTsKKyAgICAgICAgR0NHTGZs
b2F0IGNsZWFyQ29sb3JbNF0geyB9OwogICAgICAgICBnYzNkLT5nZXRGbG9hdHYoR3JhcGhpY3ND
b250ZXh0R0w6OkNPTE9SX0NMRUFSX1ZBTFVFLCBjbGVhckNvbG9yKTsKICAgICAgICAgZ2MzZC0+
Y2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKICAgICAgICAgZ2MzZC0+Y2xlYXIoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVS
X0JJVCB8IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCA4MDczYWRjMTExNDkyMTVmNTZkMWU0NWRhNjg0ZGU4Mjg1ODE3ZTkyLi41NWJjMWY4ZGIy
NDlkMzM4MjJlNzg4OWNhNzgzZjViZWMwMjVhMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTU5LDkgKzE1
OSw5IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZU5ld0NvbnRleHQo
KQogICAgIG1fdW5wYWNrU2tpcFJvd3MgPSAwOwogICAgIG1fdW5wYWNrU2tpcEltYWdlcyA9IDA7
CiAKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfM0Rf
VEVYVFVSRV9TSVpFLCAmbV9tYXgzRFRleHR1cmVTaXplKTsKKyAgICBtX21heDNEVGV4dHVyZVNp
emUgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF8zRF9URVhU
VVJFX1NJWkUpOwogICAgIG1fbWF4M0RUZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6OmNvbXB1
dGVMZXZlbENvdW50KG1fbWF4M0RUZXh0dXJlU2l6ZSwgbV9tYXgzRFRleHR1cmVTaXplKTsKLSAg
ICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQVJSQVlfVEVY
VFVSRV9MQVlFUlMsICZtX21heEFycmF5VGV4dHVyZUxheWVycyk7CisgICAgbV9tYXhBcnJheVRl
eHR1cmVMYXllcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1B
WF9BUlJBWV9URVhUVVJFX0xBWUVSUyk7CiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojppbml0aWFsaXplTmV3Q29udGV4dCgpOwogCkBAIC0yMDgsOSArMjA4LDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlVW5wYWNrUGFyYW1ldGVycygpCiAKIGxvbmcgbG9u
ZyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbnQ2NFBhcmFtZXRlcihHQ0dMZW51bSBwbmFt
ZSkKIHsKLSAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdl
cjY0dihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0SW50ZWdlcjY0KHBuYW1lKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKCkKQEAgLTEwNTUsMjMgKzEwNTMsMTQg
QEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTOgogICAgICAgICBG
QUxMVEhST1VHSDsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUjog
ewotICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQ
YXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7
Ci0gICAgfQotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfSU1NVVRBQkxFX0ZP
Uk1BVDogewotICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFX1dSQVBfUjoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VGV4UGFy
YW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhU
VVJFX0lNTVVUQUJMRV9GT1JNQVQ6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPiht
X2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSkpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0xPRDoKICAgICAgICAgRkFMTFRIUk9VR0g7Ci0g
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQVhfTE9EOiB7Ci0gICAgICAgIEdD
R0xmbG9hdCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZnYo
dGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6CisgICAgICAgIHJldHVy
biBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFt
ZXRlcih0YXJnZXQsIHBuYW1lKTsKICAgICB9CkBAIC0yNDQ1LDExICsyNDM0LDggQEAgV2ViR0xB
bnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpV
TklGT1JNX0JVRkZFUl9TSVpFOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
QlVGRkVSX1NUQVJUOiB7Ci0gICAgICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0SW50ZWdlcjY0aV92KHRhcmdldCwgaW5kZXgsICZ2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9S
TV9CVUZGRVJfU1RBUlQ6CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXI2NGko
dGFyZ2V0LCBpbmRleCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZG
RVJfQklORElORzoKICAgICAgICAgaWYgKGluZGV4ID49IG1fYm91bmRJbmRleGVkVW5pZm9ybUJ1
ZmZlcnMuc2l6ZSgpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImdldEluZGV4ZWRQYXJhbWV0ZXIiLCAiaW5kZXggb3V0
IG9mIHJhbmdlIik7CkBAIC0yNTI0LDI0ICsyNTEwLDIwIEBAIFdlYkdMQW55IFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcihXZWJHTFByb2dyYW0m
IHByCiAjaWYgVVNFKEFOR0xFKQogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFt
ZXRlciIsICZwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgR0NHTGludCBy
ZXN1bHQgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpVTklGT1JNX0JMT0NLX0JJTkRJTkc6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VU5JRk9STV9CTE9DS19EQVRBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5J
Rk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbS5vYmplY3Qo
KSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBzaXplb2YocmVzdWx0KSwgbnVsbHB0ciwgJnJl
c3VsdCk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4ocmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50PihtX2NvbnRleHQtPmdldEFjdGl2ZVVu
aWZvcm1CbG9ja2kocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lKSk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9S
TV9JTkRJQ0VTOiB7Ci0gICAgICAgIEdDR0xpbnQgc2l6ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJv
Z3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUywgc2l6ZW9mKHNpemUpLCBudWxscHRyLCAmc2l6ZSk7
CisgICAgICAgIEdDR0xpbnQgc2l6ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgR3JhcGhpY3NDb250ZXh0R0w6
OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TKTsKICAgICAgICAgVmVjdG9yPEdDR0xpbnQ+
IHBhcmFtcyhzaXplLCAwKTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0
QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3Jt
QmxvY2tJbmRleCwgcG5hbWUsIHNpemVvZihwYXJhbXNbMF0pICogcGFyYW1zLnNpemUoKSwgbnVs
bHB0ciwgcGFyYW1zLmRhdGEoKSk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJh
bXMpOwogICAgICAgICByZXR1cm4gcGFyYW1zLm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0x1aW50Pih4KTsgfSk7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSOgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9GUkFHTUVOVF9T
SEFERVI6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgs
IHBuYW1lLCBzaXplb2YocmVzdWx0KSwgbnVsbHB0ciwgJnJlc3VsdCk7Ci0gICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxib29sPihyZXN1bHQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Ym9vbD4obV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCks
IHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVV
bmlmb3JtQmxvY2tQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3NzIsOSArMjc1NCw3IEBAIFdlYkdMQW55IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51
bSB0YXJnCiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGF0dGFjaG1lbnQiKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUg
PSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2
YWx1ZTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICB9CiAgICAgaWYgKCF2
YWxpZGF0ZU5vbkRlZmF1bHRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoZnVuY3Rpb25OYW1lLCBhdHRh
Y2htZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzk2LDExICsyNzc2LDggQEAg
V2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmcKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0FMUEhBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFOgotICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6
IHsKLSAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwg
JnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFOgorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRh
cmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwogICAgIH0KIAogICAgIGlmIChvYmplY3QtPmlzVGV4
dHVyZSgpKSB7CkBAIC0yODExLDExICsyNzg4LDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmcK
ICAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xUZXh0
dXJlJj4oKm9iamVjdCkpOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgotICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9S
X0VOQ09ESU5HOiB7Ci0gICAgICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBh
dHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICAgICAgfQorICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX0NPTE9SX0VOQ09ESU5HOgorICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1l
KTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgcGFyYW1l
dGVyIG5hbWUgZm9yIHRleHR1cmUgYXR0YWNobWVudCIpOwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0yODk3LDcgKzI4NzEsNyBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZhbGlkYXRlTm9uRGVmYXVsdEZyYW1lYnVmZmVyQXR0YWNobWVudChjb25zdCBjaGFyKgogR0NH
TGludCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycygpCiB7CiAgICAg
aWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdy
YXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTLCAmbV9tYXhEcmF3QnVmZmVycyk7Cisg
ICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlMpOwogICAgIHJldHVybiBtX21heERyYXdCdWZmZXJz
OwogfQogCkBAIC0yOTA1LDcgKzI4NzksNyBAQCBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMoKQogewogICAgIC8vIERyYXdCdWZmZXJzIHJlcXVp
cmVzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UUyA9PSBNQVhfRFJBV19CVUZGRVJTCiAgICAgaWYgKCFt
X21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3Jh
cGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlMsICZtX21heENvbG9yQXR0YWNobWVudHMp
OworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIo
R3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlMpOwogICAgIHJldHVybiBtX21heENv
bG9yQXR0YWNobWVudHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAKaW5kZXggOWNiMGY4NTZiNThlMTBlNmY0NzMwOWU2ZmUzYzEwZTI2
NzA5NzE2Ni4uNDk0MTU2ZTFlNjViNjAyOTE5MGRiN2MxYzAyNmFkZjgwM2RkYThkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKQEAgLTk4
LDEwICs5OCw4IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8v
IFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlz
IHN1cHBvcnRlZC4KLSAgICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gMDsKLSAgICBHQ0dMaW50
IG1heENvbG9yQXR0YWNobWVudHMgPSAwOwotICAgIGNvbnRleHQtPmdldEludGVnZXJ2KEV4dGVu
c2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQsICZtYXhEcmF3QnVmZmVycyk7Ci0gICAgY29u
dGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhU
LCAmbWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IGNv
bnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7Cisg
ICAgR0NHTGludCBtYXhDb2xvckF0dGFjaG1lbnRzID0gY29udGV4dC0+Z2V0SW50ZWdlcihFeHRl
bnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIGlmIChtYXhEcmF3QnVm
ZmVycyA8IDQgfHwgbWF4Q29sb3JBdHRhY2htZW50cyA8IDQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNw
cAppbmRleCAwMWEwMmY1MWQ3MmQ4OTJlYWI4ZThjMjcwNTA2Y2JmYzRlNzM2NTRhLi5hZjRmMDQx
N2IxYjNkODg5NGVhNWY5MGYzNGFkYjQyNGE3YTM1YWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcApAQCAtNjEzLDIwICs2MTMsMjAgQEAg
Ym9vbCBXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3NDb250
ZXh0R0wqIGczZCwgY29uc3QgY2hhcioKICAgICBHQ0dMYm9vbGVhbiBpc1NjaXNzb3JFbmFibGVk
ID0gMDsKICAgICBHQ0dMYm9vbGVhbiBpc0RpdGhlckVuYWJsZWQgPSAwOwogICAgIGlmIChpbml0
Q29sb3IpIHsKLSAgICAgICAgZzNkLT5nZXRGbG9hdHYoR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0NMRUFSX1ZBTFVFLCBjb2xvckNsZWFyVmFsdWUpOwotICAgICAgICBnM2QtPmdldEJvb2xlYW52
KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9XUklURU1BU0ssIGNvbG9yTWFzayk7CisgICAgICAg
IGNvbG9yQ2xlYXJWYWx1ZSA9IGczZC0+Z2V0RmxvYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0NMRUFSX1ZBTFVFKTsKKyAgICAgICAgY29sb3JNYXNrID0gZzNkLT5nZXRCb29sZWFuKEdyYXBo
aWNzQ29udGV4dEdMOjpDT0xPUl9XUklURU1BU0spOwogICAgICAgICBnM2QtPmNsZWFyQ29sb3Io
MCwgMCwgMCwgMCk7CiAgICAgICAgIGczZC0+Y29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRy
dWUpOwogICAgIH0KICAgICBpZiAoaW5pdERlcHRoKSB7Ci0gICAgICAgIGczZC0+Z2V0RmxvYXR2
KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9DTEVBUl9WQUxVRSwgJmRlcHRoQ2xlYXJWYWx1ZSk7
Ci0gICAgICAgIGczZC0+Z2V0Qm9vbGVhbnYoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX1dSSVRF
TUFTSywgJmRlcHRoTWFzayk7CisgICAgICAgIGRlcHRoQ2xlYXJWYWx1ZSA9IGczZC0+Z2V0Rmxv
YXQoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NMRUFSX1ZBTFVFKTsKKyAgICAgICAgZGVwdGhN
YXNrID0gZzNkLT5nZXRCb29sZWFuKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9XUklURU1BU0sp
OwogICAgICAgICBnM2QtPmNsZWFyRGVwdGgoMS4wZik7CiAgICAgICAgIGczZC0+ZGVwdGhNYXNr
KHRydWUpOwogICAgIH0KICAgICBpZiAoaW5pdFN0ZW5jaWwpIHsKLSAgICAgICAgZzNkLT5nZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9DTEVBUl9WQUxVRSwgJnN0ZW5jaWxD
bGVhclZhbHVlKTsKLSAgICAgICAgZzNkLT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6
U1RFTkNJTF9XUklURU1BU0ssIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTGludCo+KCZzdGVuY2lsTWFz
aykpOworICAgICAgICBzdGVuY2lsQ2xlYXJWYWx1ZSA9IGczZC0+Z2V0SW50ZWdlcihHcmFwaGlj
c0NvbnRleHRHTDo6U1RFTkNJTF9DTEVBUl9WQUxVRSk7CisgICAgICAgIHN0ZW5jaWxNYXNrID0g
ZzNkLT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX1dSSVRFTUFTSyk7CiAg
ICAgICAgIGczZC0+Y2xlYXJTdGVuY2lsKDApOwogICAgICAgICBnM2QtPnN0ZW5jaWxNYXNrKDB4
ZmZmZmZmZmYpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uY3BwCmluZGV4IGM4YzNiODIyNjUyNTNjMGUwNGVlMDFhNmI0MTI5YzljNWYxODA1MjkuLjNl
NDZjNWU1NmQxM2RjZmNmMmVjYzJkYWQyYWMxOTZhNWY3Y2VhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcApAQCAtMjE2LDggKzIxNiw3IEBAIHZvaWQg
V2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHRH
TCogY29udGV4dDNkKQogewogICAgIG1fYWN0aXZlQXR0cmliTG9jYXRpb25zLmNsZWFyKCk7CiAK
LSAgICBHQ0dMaW50IG51bUF0dHJpYnMgPSAwOwotICAgIGNvbnRleHQzZC0+Z2V0UHJvZ3JhbWl2
KG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX0FUVFJJQlVURVMsICZudW1BdHRy
aWJzKTsKKyAgICBHQ0dMaW50IG51bUF0dHJpYnMgPSBjb250ZXh0M2QtPmdldFByb2dyYW1pKG9i
amVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX0FUVFJJQlVURVMpOwogICAgIG1fYWN0
aXZlQXR0cmliTG9jYXRpb25zLnJlc2l6ZShzdGF0aWNfY2FzdDxzaXplX3Q+KG51bUF0dHJpYnMp
KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUF0dHJpYnM7ICsraSkgewogICAgICAgICBH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBpbmZvOwpAQCAtMjQxLDggKzI0MCw3IEBAIHZv
aWQgV2ViR0xQcm9ncmFtOjpjYWNoZUluZm9JZk5lZWRlZCgpCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQgPSBnZXRBR3JhcGhpY3NDb250ZXh0R0woKTsKICAgICBpZiAoIWNvbnRleHQp
CiAgICAgICAgIHJldHVybjsKLSAgICBHQ0dMaW50IGxpbmtTdGF0dXMgPSAwOwotICAgIGNvbnRl
eHQtPmdldFByb2dyYW1pdihvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVT
LCAmbGlua1N0YXR1cyk7CisgICAgR0NHTGludCBsaW5rU3RhdHVzID0gY29udGV4dC0+Z2V0UHJv
Z3JhbWkob2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5LX1NUQVRVUyk7CiAgICAgbV9s
aW5rU3RhdHVzID0gbGlua1N0YXR1czsKICAgICBpZiAobV9saW5rU3RhdHVzKSB7CiAgICAgICAg
IGNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZDJmYWMy
MDM2MjQ5OTU4NWUwZDUxNTU2Y2M1Y2E0ZTNhYWMzM2RhZi4uNjkzZDYyMDZmMmM5MGY5NWZkYTk3
M2I5OThlYjk2NDY3ZGNmZWE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMDcsMTEgKzMwNyw4IEBAIFdlYkdM
QW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyKEdDR0xlbnVtIHRhcmdlCiAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihyZWludGVy
cHJldF9jYXN0PFdlYkdMVGV4dHVyZSY+KCpvYmplY3QpKTsKICAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMOgogICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVf
Q1VCRV9NQVBfRkFDRToKLSAgICAgICAgY2FzZSBFeHRlbnNpb25zR0w6OkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOiB7Ci0gICAgICAgICAgICBHQ0dMaW50IHZhbHVl
ID0gMDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgICAg
IHJldHVybiB2YWx1ZTsKLSAgICAgICAgfQorICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6CisgICAgICAgICAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwg
YXR0YWNobWVudCwgcG5hbWUpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciB0ZXh0
dXJlIGF0dGFjaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzQ3LDkg
KzM0NCw5IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVy
cygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
dihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAmbV9tYXhEcmF3QnVmZmVycyk7
CisgICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5z
aW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNo
bWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhf
Q09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xfZHJhd19idWZmZXJz
IHJlcXVpcmVzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19CVUZGRVJTLgogICAg
IHJldHVybiBzdGQ6Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9yQXR0YWNobWVudHMp
OwogfQpAQCAtMzU5LDcgKzM1Niw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAg
ICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNI
TUVOVFNfRVhULCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgbV9tYXhDb2xvckF0
dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4Q29sb3JBdHRhY2htZW50czsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcAppbmRleCA2YzM3Mjk5ZDQzNzdhYTAzYzI5NTFjMjQwNTA1ODllOGIz
YzMwZmE3Li44YWZjY2ExNDQ5ZDUwOGUxNTk0NWIzYjA5ZGRlYTQzMjQ3MzJiNWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcApAQCAtODcyLDggKzg3Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQogICAgIG1fY2xlYXJTdGVuY2lsID0gMDsKICAg
ICBtX2NvbG9yTWFza1swXSA9IG1fY29sb3JNYXNrWzFdID0gbV9jb2xvck1hc2tbMl0gPSBtX2Nv
bG9yTWFza1szXSA9IHRydWU7CiAKLSAgICBHQ0dMaW50IG51bUNvbWJpbmVkVGV4dHVyZUltYWdl
VW5pdHMgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmbnVtQ29tYmluZWRUZXh0dXJlSW1h
Z2VVbml0cyk7CisgICAgR0NHTGludCBudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gbV9j
b250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09NQklORURfVEVYVFVS
RV9JTUFHRV9VTklUUyk7CiAgICAgbV90ZXh0dXJlVW5pdHMuY2xlYXIoKTsKICAgICBtX3RleHR1
cmVVbml0cy5yZXNpemUobnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7CiAjaWYgIVVTRShB
TkdMRSkKQEAgLTg4MSwxOCArODgwLDE0IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQogICAgICAgICBtX3VucmVuZGVyYWJsZVRleHR1cmVV
bml0cy5hZGQoaSk7CiAjZW5kaWYKICAgICAKLSAgICBHQ0dMaW50IG51bVZlcnRleEF0dHJpYnMg
PSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9W
RVJURVhfQVRUUklCUywgJm51bVZlcnRleEF0dHJpYnMpOworICAgIEdDR0xpbnQgbnVtVmVydGV4
QXR0cmlicyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1ZF
UlRFWF9BVFRSSUJTKTsKICAgICBtX21heFZlcnRleEF0dHJpYnMgPSBudW1WZXJ0ZXhBdHRyaWJz
OwogICAgIAotICAgIG1fbWF4VGV4dHVyZVNpemUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9URVhUVVJFX1NJWkUsICZtX21heFRleHR1cmVT
aXplKTsKKyAgICBtX21heFRleHR1cmVTaXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBo
aWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9TSVpFKTsKICAgICBtX21heFRleHR1cmVMZXZlbCA9
IFdlYkdMVGV4dHVyZTo6Y29tcHV0ZUxldmVsQ291bnQobV9tYXhUZXh0dXJlU2l6ZSwgbV9tYXhU
ZXh0dXJlU2l6ZSk7Ci0gICAgbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUgPSAwOwotICAgIG1fY29u
dGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DVUJFX01BUF9URVhUVVJF
X1NJWkUsICZtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSk7CisgICAgbV9tYXhDdWJlTWFwVGV4dHVy
ZVNpemUgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DVUJF
X01BUF9URVhUVVJFX1NJWkUpOwogICAgIG1fbWF4Q3ViZU1hcFRleHR1cmVMZXZlbCA9IFdlYkdM
VGV4dHVyZTo6Y29tcHV0ZUxldmVsQ291bnQobV9tYXhDdWJlTWFwVGV4dHVyZVNpemUsIG1fbWF4
Q3ViZU1hcFRleHR1cmVTaXplKTsKLSAgICBtX21heFJlbmRlcmJ1ZmZlclNpemUgPSAwOwotICAg
IG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9SRU5ERVJCVUZG
RVJfU0laRSwgJm1fbWF4UmVuZGVyYnVmZmVyU2l6ZSk7CisgICAgbV9tYXhSZW5kZXJidWZmZXJT
aXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfUkVOREVS
QlVGRkVSX1NJWkUpOwogCiAgICAgLy8gVGhlc2UgdHdvIHZhbHVlcyBmcm9tIEVYVF9kcmF3X2J1
ZmZlcnMgYXJlIGxhemlseSBxdWVyaWVkLgogICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSAwOwpAQCAt
MTc0MSw4ICsxNzM2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxl
U2hhZGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIpCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiY29tcGlsZVNoYWRlciIsICZz
aGFkZXIpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKHNo
YWRlci5vYmplY3QoKSk7Ci0gICAgR0NHTGludCB2YWx1ZTsKLSAgICBtX2NvbnRleHQtPmdldFNo
YWRlcml2KHNoYWRlci5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVT
LCAmdmFsdWUpOworICAgIEdDR0xpbnQgdmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hh
ZGVyLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMpOwogICAgIHNo
YWRlci5zZXRWYWxpZCh2YWx1ZSk7CiAKICAgICBhdXRvKiBjYW52YXMgPSBodG1sQ2FudmFzKCk7
CkBAIC0yODg4LDggKzI4ODIsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRCdWZmZXJQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICBtX2Nv
bnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7CisgICAg
R0NHTGludCB2YWx1ZSA9IG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBu
YW1lKTsKICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJVRkZFUl9TSVpFKQog
ICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2
YWx1ZSk7CkBAIC0zMTg5LDI2ICszMTgyLDI2IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1P
clNoYWRlcigiZ2V0UHJvZ3JhbVBhcmFtZXRlciIsICZwcm9ncmFtKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVMRVRFX1NUQVRVUzoKICAgICAgICAgcmV0
dXJuIHByb2dyYW0uaXNEZWxldGVkKCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VkFM
SURBVEVfU1RBVFVTOgotICAgICAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9i
amVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fY29udGV4dC0+Z2V0
UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpMSU5LX1NUQVRVUzoKICAgICAgICAgcmV0dXJuIHByb2dyYW0uZ2V0TGlua1N0YXR1
cygpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkFUVEFDSEVEX1NIQURFUlM6Ci0gICAg
ICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFs
dWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdl
dFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUzoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpB
Q1RJVkVfVU5JRk9STVM6CiAjaWYgVVNFKEFOR0xFKQotICAgICAgICBtX2NvbnRleHQtPmdldFBy
b2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpOwogI2Vsc2UK
LSAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQu
Z2V0KCkpLT5nZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQocHJvZ3JhbS5vYmplY3QoKSwg
cG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIEdDR0xpbnQgdmFsdWUgPSAw
OworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2Nv
bnRleHQuZ2V0KCkpLT5nZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQocHJvZ3JhbS5vYmpl
Y3QoKSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAg
IH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCi0gICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBkZWZh
dWx0OgogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgICAgIGlmIChpc1dlYkdMMigpKSB7CkBAIC0z
MjE2LDggKzMyMDksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQ
cm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgICAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFOgogICAg
ICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJ
TkdTOgogICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1f
QkxPQ0tTOgotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0u
b2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9i
amVjdCgpLCBwbmFtZSk7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMzI4MCw3ICszMjcyLDYgQEAgV2ViR0xBbnkgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKEdDR0xlbnVtIHRh
cmdldCwgR0MKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAotICAgIEdDR0xpbnQgdmFs
dWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpSRU5ERVJCVUZGRVJfU0FNUExFUzoKICAgICAgICAgaWYgKCFpc1dlYkdMMigpKSB7CkBAIC0z
Mjk2LDggKzMyODcsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQwogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJF
TkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQ6CiAgICAgICAgIHJldHVybiBtX3JlbmRlcmJ1ZmZl
ckJpbmRpbmctPmdldEludGVybmFsRm9ybWF0KCk7CiAgICAgZGVmYXVsdDoKQEAgLTMzMTAsMTYg
KzMzMDAsMTMgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVy
UGFyYW1ldGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIsIEdDR0wKIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRTaGFk
ZXJQYXJhbWV0ZXIiLCAmc2hhZGVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgR0NH
TGludCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkRFTEVURV9TVEFUVVM6CiAgICAgICAgIHJldHVybiBzaGFkZXIuaXNEZWxldGVk
KCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVM6Ci0gICAgICAg
IG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGJvb2w+KG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIub2JqZWN0KCks
IHBuYW1lKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U0hBREVSX1RZUEU6Ci0gICAg
ICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVl
KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSk7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRl
ci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0U2hhZGVyUGFyYW1ldGVy
IiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0zMzc4LDIwICszMzY1LDE1IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFRleFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuCiAgICAgYXV0byB0
ZXggPSB2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKCJnZXRUZXhQYXJhbWV0ZXIiLCB0YXJnZXQpOwog
ICAgIGlmICghdGV4KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBHQ0dMaW50IHZhbHVl
ID0gMDsKLSAgICBHQ0dMZmxvYXQgZlZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQUdfRklMVEVSOgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUjoKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX1dSQVBfUzoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX1dSQVBfVDoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSkpOwogICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogLy8gRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljCi0gICAgICAgIGlmIChtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewotICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmZlZh
bHVlKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oZlZhbHVlKTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAobV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpCisgICAg
ICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUp
OwogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9F
TlVNLCAiZ2V0VGV4UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0
dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBkZWZhdWx0OgpAQCAtMzYyNCw3ICszNjA2LDcgQEAgUmVmUHRyPFdlYkdMVW5p
Zm9ybUxvY2F0aW9uPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRp
b24oV2ViR0wKIAogICAgIEdDR0xpbnQgYWN0aXZlVW5pZm9ybXMgPSAwOwogI2lmIFVTRShBTkdM
RSkKLSAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGlj
c0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOworICAgIGFjdGl2
ZVVuaWZvcm1zID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBHcmFw
aGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TKTsKICNlbHNlCiAgICAgc3RhdGljX2Nhc3Q8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5nZXROb25CdWlsdElu
QWN0aXZlU3ltYm9sQ291bnQocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFD
VElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKICNlbmRpZgpAQCAtNjIzNyw5ICs2MjE5
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN1bWUoKQogCiBib29sIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xlYW5QYXJhbWV0ZXIoR0NHTGVudW0gcG5h
bWUpCiB7Ci0gICAgR0NHTGJvb2xlYW4gdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0Qm9v
bGVhbnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldEJvb2xlYW4ocG5hbWUpOwogfQogCiBWZWN0b3I8Ym9vbD4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQpA
QCAtNjI1OCwyMyArNjIzOCwxNyBAQCBWZWN0b3I8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogCiBmbG9hdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRGbG9hdFBhcmFtZXRlcihHQ0dMZW51bSBwbmFt
ZSkKIHsKLSAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2
KHBuYW1lLCAmdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0
LT5nZXRGbG9hdChwbmFtZSk7CiB9CiAKIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRJbnRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7
Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4g
dmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihwbmFtZSk7CiB9CiAKIHVu
c2lnbmVkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuc2lnbmVkSW50UGFyYW1ldGVy
KEdDR0xlbnVtIHBuYW1lKQogewotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4
dC0+Z2V0SW50ZWdlcnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldEludGVnZXIocG5hbWUpOwogfQogCiBSZWZQdHI8RmxvYXQzMkFy
cmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0
ZXIoR0NHTGVudW0gcG5hbWUpCkBAIC03NjI2LDkgKzc2MDAsOSBAQCBHQ0dMaW50IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldE1heERyYXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRz
RHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZm
ZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RS
QVdfQlVGRkVSU19FWFQsICZtX21heERyYXdCdWZmZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVm
ZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZF
UlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250
ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQs
ICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMg
PSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVO
VFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FU
VEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCiAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4
RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50cyk7CiB9CkBAIC03NjM4LDcgKzc2MTIs
NyBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldE1heENvbG9yQXR0YWNo
bWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4g
MDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21h
eENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2Nv
bnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhU
KTsKICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IDM0ZjE3ZWM2MWIz
MzEwMzcxYzJkZGJkMGEwMTc1YzYwYjkzZDE2ZjUuLmJhODY1YjMzMDhlNmM5NDU4MjIxMjIzNzc5
NmQ2ZmQ1Nzc0ODQ3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnNHTC5oCkBAIC0zMDYsMjEgKzMwNiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNv
cikgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZsb2F0dlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xmbG9hdCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldElu
dGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQ
cm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRT
aGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lk
KiogcG9pbnRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9p
ZCogcGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lk
KiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKQEAgLTMzNiwxNCArMzIxLDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIGRhdGEpID0gMDsgLy8gTk9MSU5UCiAgICAgdmlydHVhbCB2
b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2
NCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogZGF0YSkgPSAwOyAvLyBOT0xJTlQKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludDY0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IGQ5ZTU4OGFmYTMwZGJhNzMwOTMwZjk2Yzk4NzI5MTM0MDEyOThjMWUuLmY4ZDcx
NTY4NzA1MjhkZTllMTlkM2RkYTEwYmM1YWMwMGZjYTRmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtOTg2LDMx
ICs5ODYsMzAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCi0gICAgdmly
dHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldEJ1ZmZl
clBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAg
Ly8gZ2V0UGFyYW1ldGVyCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5h
bWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2Vy
aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0
KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudihH
Q0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQo
R0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRp
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgR0NHTGlu
dCBnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMYm9vbGVhbj4gdmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTGVudW0gZ2V0RXJy
b3IoKSA9IDA7CiAKICAgICAvLyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCog
dmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVt
IHBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRQcm9ncmFtUGFyYW1ldGVyCiAgICAgdmlydHVhbCBT
dHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgLy8g
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZh
bHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8gZ2V0U2hhZGVy
UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGlu
dCBnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBw
cmVjaXNpb24pID0gMDsKQEAgLTEwMTgsMTkgKzEwMTcsMTkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAgICAv
LyBnZXRUZXhQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFRl
eFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZp
cnR1YWwgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpID0gMDsKIAogICAgIC8vIGdldFVuaWZvcm0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5p
Zm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZs
b2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5p
Zm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1
aW50PiB2YWx1ZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlv
bihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAogICAgIC8vIGdl
dFZlcnRleEF0dHJpYgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJm
dihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwogCiAgICAg
dmlydHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCkBAIC0xMjM2LDcgKzEyMzUsMTMgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0
cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAw
OwogCisgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gcGFyYW1zKSA9IDA7CisKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCisgICAg
R0NHTGZsb2F0IGdldEZsb2F0KEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMYm9vbGVhbiBnZXRC
b29sZWFuKEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMaW50IGdldEludGVnZXIoR0NHTGVudW0g
cG5hbWUpOworICAgIEdDR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdHRyczsgfQogICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7IH0KQEAg
LTEzNjcsNiArMTM3MiwzNSBAQCBwcml2YXRlOgogICAgIERlc3RpbmF0aW9uIG1fZGVzdGluYXRp
b247CiB9OwogCitpbmxpbmUgR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdChH
Q0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMZmxvYXQgdmFsdWVbMV0geyB9OworICAgIGdldEZs
b2F0dihwbmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdD
R0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMOjpnZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKQor
eworICAgIEdDR0xib29sZWFuIHZhbHVlWzFdIHsgfTsKKyAgICBnZXRCb29sZWFudihwbmFtZSwg
dmFsdWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0w6OmdldEludGVnZXIoR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NHTGludCB2
YWx1ZVsxXSB7IH07CisgICAgZ2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4g
dmFsdWVbMF07Cit9CisKK2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMaW50IHZhbHVlWzFdIHsgfTsKKyAgICBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUs
IHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWVbMF07Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlc0dMLmgKaW5kZXggNjk5ZGUyOGJhZWI5MmNjMjUzMzk0ZGJhODBiN2U3YTc4
ZTEzZjQ0NS4uZGIwZjAzYzhiMmUyNWM4MzU5ZDMwNmY5NDJiNmJmYTIyYTczMGIxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgK
QEAgLTI1LDcgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxsaW1pdHM+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIC8vIEdD
R0wgdHlwZXMgbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBP
cGVuR0wgRVMgMi4wCiAvLyBoZWFkZXIgZmlsZSBnbDIuaCBmcm9tIGtocm9ub3Mub3JnLgpAQCAt
NTUsMyArNTcsNTEgQEAgdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2JqZWN0OwogI2lmICFQ
TEFURk9STShDT0NPQSkKIHR5cGVkZWYgdW5zaWduZWQgR0x1aW50OwogI2VuZGlmCisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpPgorc3RydWN0IEdDR0xTcGFuOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IEV4dGVudD4KK3N0cnVjdCBHQ0dMU3BhbiB7CisgICAgZXhwbGljaXQgR0NHTFNwYW4oVCogYXJy
YXkpCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICB7IH0KKyAgICBHQ0dMU3BhbihUICgmYXJy
YXkpW0V4dGVudF0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICB7IH0KKyAgICBUJiBvcGVy
YXRvcltdKHNpemVfdCBpKSB7IEFTU0VSVChkYXRhKTsgQVNTRVJUKGkgPCBidWZTaXplKTsgcmV0
dXJuIGRhdGFbaV07IH0KKyAgICBUJiBvcGVyYXRvciooKSB7ICBBU1NFUlQoZGF0YSk7IHJldHVy
biAqZGF0YTsgfQorICAgIFQqIGRhdGE7CisgICAgY29uc3RleHByIHN0YXRpYyBzaXplX3QgYnVm
U2l6ZSA9IEV4dGVudDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR0NHTFNw
YW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4geworICAgIEdDR0xTcGFu
KFQqIGFycmF5LCBzaXplX3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAg
ICAgLCBidWZTaXplKGJ1ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHNpemVfdCBTej4g
R0NHTFNwYW4oVCAoJmFycmF5KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAg
LCBidWZTaXplKFN6KQorICAgIHsgfQorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JiBhcnJh
eSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXplKGFycmF5
LnNpemUoKSkKKyAgICB7IH0KKyAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IEFTU0VSVChk
YXRhKTsgQVNTRVJUKGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KKyAgICBUJiBvcGVy
YXRvciooKSB7IEFTU0VSVChkYXRhKTsgcmV0dXJuICpkYXRhOyB9CisgICAgVCogZGF0YTsKKyAg
ICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBOPgorR0NHTFNwYW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQsIE4+OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK0dDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBz
aXplX3QgY291bnQpCit7CisgICAgcmV0dXJuIEdDR0xTcGFuPFQ+IHsgZGF0YSwgY291bnQgfTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAxYzhiYzQyNTUwZjFjMWQ5NWMzMDgyZjY3
Mzc2YTU2OTUwNmJmYWIzLi40ZDAyNWI5OTM0MjI3NzZiOWI1ZjRhYWJjMzlhMGM3ODkxOTQwYTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC0xMTMsOCArMTEzLDcgQEAgU3RyaW5nIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1H
TE9iamVjdCBzaGFkZXIKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGludCBzb3VyY2VMZW5ndGggPSAwOwot
ICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9T
T1VSQ0VfTEVOR1RIX0FOR0xFLCAmc291cmNlTGVuZ3RoKTsKKyAgICBpbnQgc291cmNlTGVuZ3Ro
ID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09V
UkNFX0xFTkdUSF9BTkdMRSk7CiAgICAgaWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsg
Ly8gR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxs
IHRlcm1pbmF0aW9uLgpAQCAtMjc5LDEyNiArMjc4LDYgQEAgR0NHTGVudW0gRXh0ZW5zaW9uc0dM
QU5HTEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5h
bGYKIH0KIAogLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBk
YXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RmxvYXR2
Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEZsb2F0dlJvYnVz
dEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5H
TEUodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJv
Z3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFByb2dyYW1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2hhZGVyaXZSb2J1c3RBTkdMRShzaGFk
ZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFVuaWZvcm1mdlJvYnVz
dEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybWl2Um9idXN0
QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0
cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRl
eEF0dHJpYml2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBvaW50ZXIpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4
ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywg
dm9pZCAqcGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKQEAgLTUxNywxNCArMzk2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVy
UG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHAKICAgICBnbDo6
R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJpX3ZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwg
ZGF0YSk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVybmFsZm9ybWF0aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpA
QCAtNTU3LDMwICs0MjgsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJs
b2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJ
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2Um9idXN0QU5HTEUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVn
ZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdl
cjY0dlJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0xpbnQ2NCo+KGRhdGEpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdl
cjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUodGFyZ2V0LCBpbmRleCwgYnVmU2l6
ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihkYXRhKSk7Ci19Ci0KIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IDEyNTY5NTY3YzE3Yzky
NmI3MWE5MWJiNGJiMTE5NTU2YmEwNmYxNzAuLjU3YmI5M2JjODRjMzM1OTBmYmNmNGIzZjdhMWVi
NWE1NWM1OTI1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNzMsMjEgKzczLDYgQEAgcHVi
bGljOgogICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0K
IAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCBnZXRCb29s
ZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1
ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRh
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBv
aW50ZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBv
dmVycmlkZTsKICAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7
CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykg
b3ZlcnJpZGU7CkBAIC0xMDMsMTQgKzg4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFF1ZXJ5
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAq
cGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVn
ZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpIG92ZXJyaWRlOyAv
LyBOT0xJTlQKICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2
NCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAogICAgIHZv
aWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBkZjZmMzRjOWQ2MThkMDdhZGYyMTk4NWEzMDFj
YmU0MTQyOTM5MDhhLi4wNmUyMTZjMzU4ZjJhNDU5MzYxNzAxZGViYTI1MTA1YjJjNDQ5ZGMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzMwLDQ5ICszMzAsMzAgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIGludGUKICAgICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJn
ZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVl
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKKyAgICBnbDo6R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShw
bmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiAKICAgICBzd2l0Y2gg
KHBuYW1lKSB7Ci0gICAgY2FzZSBNQVhfVEVYVFVSRV9TSVpFOgotICAgICAgICBnbDo6R2V0SW50
ZWdlcnYoTUFYX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9u
cygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQotICAgICAgICAgICAg
KnZhbHVlID0gc3RkOjptaW4oNDA5NiwgKnZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoTUFY
X0NVQkVfTUFQX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9u
cygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQotICAgICAgICAgICAg
KnZhbHVlID0gc3RkOjptaW4oMTAyNCwgKnZhbHVlKTsKLSAgICAgICAgYnJlYWs7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIC8vIFNvbWUgb2xkZXIgaGFyZHdhcmUgYWR2ZXJ0aXNlcyBhIGxhcmdl
ciBtYXhpbXVtIHRoYW4gdGhleQogICAgIC8vIGNhbiBhY3R1YWxseSBoYW5kbGUuIFJhdGhlciB0
aGFuIGRldGVjdGluZyBzdWNoIGRldmljZXMsIHNpbXBseQogICAgIC8vIGNsYW1wIHRoZSBtYXhp
bXVtIHRvIDgxOTIsIHdoaWNoIGlzIGJpZyBlbm91Z2ggZm9yIGEgNUsgZGlzcGxheS4KICAgICBj
YXNlIE1BWF9SRU5ERVJCVUZGRVJfU0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9S
RU5ERVJCVUZGRVJfU0laRSwgdmFsdWUpOwogICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbig4MTky
LCAqdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1BWF9WSUVXUE9SVF9ESU1TOgot
ICAgICAgICBnbDo6R2V0SW50ZWdlcnYoTUFYX1ZJRVdQT1JUX0RJTVMsIHZhbHVlKTsKICAgICAg
ICAgdmFsdWVbMF0gPSBzdGQ6Om1pbig4MTkyLCB2YWx1ZVswXSk7CiAgICAgICAgIHZhbHVlWzFd
ID0gc3RkOjptaW4oODE5MiwgdmFsdWVbMV0pOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAg
IGRlZmF1bHQ6Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAg
ICBicmVhazsKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldElu
dGVnZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkK
LXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKLX0KLQogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNo
YWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50
KiBwcmVjaXNpb24pCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTEyMTEs
NyArMTE5Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZv
cm1JbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHCiAKICAgICBHTGludCBtYXhVbmlm
b3JtU2l6ZSA9IDA7CiAgICAgZ2w6OkdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5J
Rk9STV9NQVhfTEVOR1RILCAmbWF4VW5pZm9ybVNpemUpOwotCiAgICAgVmVjdG9yPEdMY2hhcj4g
bmFtZShtYXhVbmlmb3JtU2l6ZSk7IC8vIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5j
bHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAg
IEdMaW50IHNpemUgPSAwOwpAQCAtMTgxOCw2NCArMTc5OCw2NyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAg
ICBnbDo6QmluZFZlcnRleEFycmF5KGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2YWx1ZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldEJvb2xlYW52KHBuYW1lLCB2
YWx1ZSk7CisgICAgZ2w6OkdldEJvb2xlYW52Um9idXN0QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNp
emUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1
ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBH
Q0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwg
dmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0
dihHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2
YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBnbDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEZsb2F0dlJv
YnVzdEFOR0xFKHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0K
ICAgICAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYoR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50NjQgdmFs
dWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgICp2YWx1ZSA9IDA7Ci0gICAgZ2w6OkdldEludGVnZXI2NHYocG5hbWUsIHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUo
cG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0gcG5hbWUs
IEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKQorR0NHTGludDY0IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRl
eCkKIHsKKyAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICp2YWx1ZSA9IDA7Ci0gICAgZ2w6OkdldElu
dGVnZXI2NGlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgIGdsOjpHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIDEsIG51bGxw
dHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dM
ZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KKyAgICAgICAgcmV0dXJuIHZhbHVlOwog
ICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkKICAgICAgICAg
YXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVOVCwg
ZWl0aGVyIHdvcmtzLgotICAgIGdsOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBhdHRhY2htZW50LCBw
bmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1pdihw
cm9ncmFtLCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6Okdl
dFByb2dyYW1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbm1hbmdsZWRJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyc1syXSwgR0NHTHNp
emVpIGNvdW50LCBjb25zdCBTdHJpbmcmIGxvZykKQEAgLTE5MjEsMjIgKzE5MDQsMjMgQEAgU3Ry
aW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0pCiAgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywg
Y291bnQsIFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgZ2w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBw
bmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51
bSBwbmFtZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKLQorICAgIEdDR0xpbnQgdmFsdWUgPSAw
OwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2
YWx1ZTsKKyAgICBnbDo6R2V0U2hhZGVyaXZSb2J1c3RBTkdMRShzaGFkZXIsIHBuYW1lLCAxLCBu
dWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KQpAQCAtMTk2NCw0NCArMTk0OCw0NiBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KQogICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJm
dihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NH
TGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGZsb2F0IHZhbHVlID0gMC5mOwog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVy
biB2YWx1ZTsKKyAgICBnbDo6R2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBu
YW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRlcml2KHRhcmdl
dCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRUZXhQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9y
bWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2
YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9u
LCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0VW5pZm9ybWl2KHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKHBy
b2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbDo6R2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplLCBudWxs
cHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAogR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5n
JiBuYW1lKQpAQCAtMjAxNCwyMCArMjAwMCwyMCBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwog
ICAgIHJldHVybiBnbDo6R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRh
dGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJp
YmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0
VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFZlcnRleEF0
dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2
YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4
QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6Okdl
dFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRWZXJ0ZXhB
dHRyaWJpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwg
dmFsdWUuZGF0YSk7CiB9CiAKIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKQEAg
LTIwMzYsNyArMjAyMiw3IEBAIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgR0x2b2lkKiBwb2ludGVyID0gMDsKLSAgICBnbDo6R2V0VmVydGV4QXR0cmli
UG9pbnRlcnYoaW5kZXgsIHBuYW1lLCAmcG9pbnRlcik7CisgICAgZ2w6OkdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCAxLCBudWxscHRyLCAmcG9pbnRlcik7
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4ocG9pbnRlcikpOwogfQogCkBAIC0yOTUzLDYgKzI5MzksMTQgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmEKICAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVu
Z3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3Jh
bSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSwgbnVsbHB0ciwgcGFy
YW1zLmRhdGEpOworfQorCisKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04p
CiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAppbmRleCA2ZDUwM2JjYmE3NWFmYjhjNTA3
OTBiMWMyNGUyODI4MzZjNTVkOTQ5Li5jYmFmMDYwYjU1NjM5ZmRiNTVhYjdlYWU0MTdlZjVkMjA0
MzlkOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9H
cmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKQEAgLTQ2NCw4ICs0NjQs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9i
amVjdHMoKQogCiAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyRGlyZWN0KHZlcnRleFNoYWRl
cik7CiAKLSAgICBHQ0dMaW50IHN0YXR1cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJp
dih2ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1
cyk7CisgICAgR0NHTGludCBzdGF0dXMgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkodmVydGV4U2hh
ZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMpOwogICAgIGlmICghc3RhdHVz
KSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlh
bGl6ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gVmVydGV4IHNoYWRlciBmYWlsZWQgdG8gY29tcGls
ZS4iLCB0aGlzKTsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVy
KTsKQEAgLTQ4MCw3ICs0NzksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5p
dGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogCiAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVy
RGlyZWN0KGZyYWdtZW50U2hhZGVyKTsKIAotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoZnJh
Z21lbnRTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7
CisgICAgc3RhdHVzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGZyYWdtZW50U2hhZGVyLCBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMpOwogICAgIGlmICghc3RhdHVzKSB7CiAgICAg
ICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29u
dGV4dE9iamVjdHMoJXApIC0gRnJhZ21lbnQgc2hhZGVyIGZhaWxlZCB0byBjb21waWxlLiIsIHRo
aXMpOwogICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwpAQCAt
NDkzLDcgKzQ5Miw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXpl
VVZDb250ZXh0T2JqZWN0cygpCiAgICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIobV95dXZQcm9n
cmFtLCBmcmFnbWVudFNoYWRlcik7CiAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShtX3l1dlBy
b2dyYW0pOwogCi0gICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYobV95dXZQcm9ncmFtLCBHcmFw
aGljc0NvbnRleHRHTDo6TElOS19TVEFUVVMsICZzdGF0dXMpOworICAgIHN0YXR1cyA9IG1fY29u
dGV4dC0+Z2V0UHJvZ3JhbWkobV95dXZQcm9ncmFtLCBHcmFwaGljc0NvbnRleHRHTDo6TElOS19T
VEFUVVMpOwogICAgIGlmICghc3RhdHVzKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNz
Q29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gUHJvZ3Jh
bSBmYWlsZWQgdG8gbGluay4iLCB0aGlzKTsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFk
ZXIodmVydGV4U2hhZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAK
aW5kZXggODA2MTBkZTdkNDMxY2Y0MjYyOTk3ZjRmZmNlMzdiNmJlMWVlNzQwNC4uMzRmZWYwNWI2
MjM3ODcwZDA1YmQxYTMyYzJmNDVhNDE5MWIzZjcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIFNo
QnVpbHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlcyA9IGNvbXBpbGVyLmdldFJlc291cmNlcygp
OwogICAgICAgICBpZiAoIUFOR0xFUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMpIHsKICAgICAg
ICAgICAgIEFOR0xFUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMgPSAxOwotICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhU
LCAmQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMpOworICAgICAgICAgICAgQU5HTEVSZXNv
dXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dM
OjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJj
ZXMoQU5HTEVSZXNvdXJjZXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09ICJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgewpAQCAtMTcyLDcgKzE3Miw3IEBAIFN0cmluZyBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQ
bGF0Zm9ybUdMT2JqZWN0CiAKICAgICBBTkdMRVdlYktpdEJyaWRnZSYgY29tcGlsZXIgPSBtX2Nv
bnRleHQtPm1fY29tcGlsZXI7CiAKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwg
R3JhcGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFLCAmR0xzaGFkZXJUeXBlKTsKKyAgICBHTHNo
YWRlclR5cGUgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHcmFwaGljc0NvbnRleHRH
TDo6U0hBREVSX1RZUEUpOwogCiAgICAgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRl
eHRHTDo6VkVSVEVYX1NIQURFUikKICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX1ZF
UlRFWDsKQEAgLTI1NCw4MSArMjU0LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMaW4KICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xib29sZWFuICopCi17Ci0gICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RmxvYXR2Um9idXN0
QU5HTEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xF
KEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCB2b2lkICoq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1JvYnVz
dEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQg
KikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKQEAgLTQwMCwxMSArMzI1LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLAogICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xpbnQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTQzMCwxNiArMzUwLDYgQEAgdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVp
bnQsIEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXI2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VyNjRp
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgKaW5kZXggMDQ4OTRiOTFjODJjYzRiMWIyMDlhN2FmZDIyOWNiZGNhOWEwMWE0
My4uOTdlZWRmYjc0ODVjODMyZjc5M2M4Y2ZmMGZhMTdmYmZmYmU2NTg4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNjksMjEgKzY5LDYgQEAgcHVibGljOgogICAg
IGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAogICAgIC8v
IEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCBnZXRCb29sZWFudlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVy
dGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVycmlkZTsK
ICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywg
R0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4SW1h
Z2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9p
ZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTk5LDE0ICs4NCwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRCdWZmZXJQ
b2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBpbnQgKmRh
dGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
NjQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVm
ZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5jcHAKaW5kZXggYWI4Y2I1NGY1ZTg3OWVmNGI4YTkwZDE5YTdlYzkyYzg5Y2UyMDU3
Yi4uZDI4ZjRhMDMxZWJkYzQ4Mzg3NWQzOTg0ODdkNTc4NzQ4ZmRlNDdlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC03NCwxMSArNzQsOCBAQCBib29sIEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBGb3IgR0xfRVhUX3JvYnVzdG5lc3MsIGNoZWNrIHRoYXQgdGhlIGNv
bnRleHQgc3VwcG9ydHMgcm9idXN0IGFjY2Vzcy4KLSAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3Jv
YnVzdG5lc3MiKSB7Ci0gICAgICAgIEdMaW50IHJvYnVzdEFjY2VzcyA9IEdMX0ZBTFNFOwotICAg
ICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6Q09OVEVYVF9ST0JVU1Rf
QUNDRVNTLCAmcm9idXN0QWNjZXNzKTsKLSAgICAgICAgcmV0dXJuIHJvYnVzdEFjY2VzcyA9PSBH
TF9UUlVFOwotICAgIH0KKyAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3JvYnVzdG5lc3MiKQorICAg
ICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6Q09OVEVYVF9S
T0JVU1RfQUNDRVNTKSA9PSBHTF9UUlVFOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDc3NWY5MDQwNmY0MmE2MDkxZGRjM2ZlYTFl
NTBiN2MyYjBhZTRkYTEuLmMzZjQ4ZThjNjg5ZjBiMzk3YjZmN2U1NjgzNDgyNGE2YThiOWY3NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0xOTcsMzUgKzE5NywzNCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7CiAgICAgdm9pZCBnZXRBdHRh
Y2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQs
IEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOwogICAg
IEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5n
JiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
Ym9vbGVhbiogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAg
IHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2
YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUp
IGZpbmFsOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEludGVnZXJpX3YoR0NHTGVudW0gcG5h
bWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRJ
bnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZhbHVlKSBmaW5hbDsKLSAgICB2
b2lkIGdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQ2NCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2
b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkg
ZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFs
OworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+
IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1l
KSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAjaWYgIVVTRShBTkdMRSkKICAg
ICB2b2lkIGdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSk7CiAjZW5kaWYgLy8gIVVTRShB
TkdMRSkKICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgZmlu
YWw7CiAgICAgU3RyaW5nIGdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVjdFsyXSwg
R0NHTHNpemVpLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBm
aW5hbDsKLSAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdD
R0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CiAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAg
ICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NH
TGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikg
ZmluYWw7CiAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5h
bDsKICAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpIGZpbmFsOwotICAgIHZvaWQg
Z2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsK
LSAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRUZXhQ
YXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdD
R0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZv
aWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVp
dihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdD
R0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxh
dGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZl
cnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2
YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRl
eEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZs
b2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAg
ICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBtb2RlKSBmaW5hbDsKQEAgLTQzOCw2ICs0MzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0
cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmlu
YWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykgZmluYWw7CiAKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgcmVhZFBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNzUwZWQzMjZl
Y2U2NWU4OGY2YjQxMzYwMTVjNGY5MzM3NDQ4OWNhNS4uY2VmMDA2MGM3OTkzMDExMjc5MWQ3YTQ0
ZTQ4ZjY0NzM4ZDgwOWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAg
IDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vy
dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpCiB7CiAgICAgLy8gTmVlZCB0byBlbXVsYXRlIE1BWF9GUkFHTUVOVC9WRVJURVhfVU5JRk9S
TV9WRUNUT1JTIGFuZCBNQVhfVkFSWUlOR19WRUNUT1JTCiAgICAgLy8gYmVjYXVzZSBkZXNrdG9w
IEdMJ3MgY29ycmVzcG9uZGluZyBxdWVyaWVzIHJldHVybiB0aGUgbnVtYmVyIG9mIGNvbXBvbmVu
dHMKQEAgLTI3MiwzOSArMjcyLDM5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKICAgICBzd2l0Y2ggKHBu
YW1lKSB7CiAjaWYgVVNFKE9QRU5HTCkKICAgICBjYXNlIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZF
Q1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9D
T01QT05FTlRTLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01F
TlRfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgKnZhbHVlIC89IDQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6Ci0g
ICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUywg
dmFsdWUpOworICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NP
TVBPTkVOVFMsIHZhbHVlLmRhdGEpOwogICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNQVhfVkFSWUlOR19WRUNUT1JTOgogICAgICAgICBpZiAoaXNHTEVTMkNv
bXBsaWFudCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoOjpnbEdldEVycm9yKCkgPT0gR0xfTk9f
RVJST1IpOwotICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RP
UlMsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19W
RUNUT1JTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgICAgIGlmICg6OmdsR2V0RXJyb3IoKSA9PSBH
TF9JTlZBTElEX0VOVU0pIHsKLSAgICAgICAgICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFY
X1ZBUllJTkdfQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAgICAgICAgICAgIDo6Z2xHZXRJbnRl
Z2VydihHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgICAg
ICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlKTsKKyAg
ICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlLmRh
dGEpOwogICAgICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAjZW5kaWYKICAgICBjYXNlIE1BWF9URVhUVVJFX1NJWkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRl
Z2VydihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihN
QVhfVEVYVFVSRV9TSVpFLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMo
KS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkKICAgICAgICAgICAgICp2
YWx1ZSA9IHN0ZDo6bWluKDQwOTYsICp2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRToKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9D
VUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KE1B
WF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVlLmRhdGEpOwogICAgICAgICBpZiAoZ2V0RXh0
ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAgICAg
ICAgICAgKnZhbHVlID0gc3RkOjptaW4oMTAyNCwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAg
ICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuZGF0YSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBiMGMxZjFk
ZmQ0M2Q0MTUwNDI3ZmY1MjFhY2Y2ODQzNjI3MjQwMDVhLi5lNjRjN2Y3MWJkM2JiNDcxN2EzMDA3
ZGU5ZmFmOWU5MGViZjM5YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvbW1vbi5jcHAKQEAgLTE3MTcsMTIgKzE3MTcsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAjZW5k
aWYKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVu
dW0gcG5hbWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFs
dWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEJvb2xlYW52
KHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCogdmFsdWUpCkBAIC0xNzMzLDY1ICsxNzMzLDU3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hCiAgICAgOjpnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBu
YW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xH
ZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5k
YXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdihH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludDY0
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgICp2YWx1
ZSA9IDA7Ci0gICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBtdXN0
IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQgaW5pdGlh
bGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KLSAgICAvLyA6Omds
R2V0SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKLX0KLQotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2
YWx1ZSkKLXsKLSAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICp2YWx1ZSA9IDA7CisgICAgR0NHTGlu
dDY0IHZhbHVlID0gMDsKICAgICAvLyBGSVhNRSAxNDExNzg6IEJlZm9yZSBlbmFibGluZyB0aGlz
IHdlIG11c3QgZmlyc3Qgc3dpdGNoIG92ZXIgdG8gdXNpbmcgZ2wzLmggYW5kIGNyZWF0aW5nIGFu
ZCBpbml0aWFsaW5nIHRoZSBXZWJHTDIgY29udGV4dCB1c2luZyBPcGVuR0wgRVMgMy4wLgogICAg
IC8vIDo6Z2xHZXRJbnRlZ2VyNjR2KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YoR0NHTGVu
dW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKQorR0NHTGludDY0IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
dWludCBpbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwogICAgIFVOVVNFRF9QQVJB
TShpbmRleCk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgKnZhbHVlID0gMDsKKyAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwogICAgIC8vIEZJ
WE1FIDE0MTE3ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0Y2ggb3Zl
ciB0byB1c2luZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdlYkdMMiBj
b250ZXh0IHVzaW5nIE9wZW5HTCBFUyAzLjAuCiAgICAgLy8gOjpnbEdldEludGVnZXI2NGlfdihw
bmFtZSwgaW5kZXgsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQsIEdDR0xlbnVtIHBuYW1lCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKGF0dGFjaG1l
bnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQogICAgICAgICBhdHRhY2htZW50ID0gREVQ
VEhfQVRUQUNITUVOVDsgLy8gT3IgU1RFTkNJTF9BVFRBQ0hNRU5ULCBlaXRoZXIgd29ya3MuCi0g
ICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dy
YW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2
YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFByb2dyYW1pdihw
cm9ncmFtLCBwbmFtZSwgdmFsdWUpOworICAgIEdDR0xpbnQgdmFsdWUgcCA9IDA7CisgICAgOjpn
bEdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVT
eW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50KiB2YWx1ZSkKQEAgLTE4OTksMjAgKzE4OTEsMjEgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCiAg
ICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhpbmZv
LmRhdGEoKSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQodGFy
Z2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0
dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJp
dihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVl
KQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdM
T2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7Ci0K
KyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogCiAgICAgY29uc3QgYXV0
byYgcmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwpAQCAtMTkyMCw3ICsx
OTEzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYoUGxhdGZv
cm1HTE9iamVjdCBzaGFkZXIsIEdDR0xlbnVtIHBuYW0KICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAg
ICAgY2FzZSBERUxFVEVfU1RBVFVTOgogICAgIGNhc2UgU0hBREVSX1RZUEU6Ci0gICAgICAgIDo6
Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRTaGFk
ZXJpdihzaGFkZXIsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENP
TVBJTEVfU1RBVFVTOgogICAgICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVu
ZCgpKSB7CkBAIC0xOTQyLDYgKzE5MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbQogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfRU5VTSk7CiAgICAg
fQorICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpAQCAtMTk4NiwzOSAr
MTk4MCw0MSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJj
ZShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZS5zb3Vy
Y2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmZ2
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dM
ZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwLmY7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpn
bEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0
ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1
ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1l
LCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBs
b2NhdGlvbiwgdmFsdWUpOworICAgIDo6Z2xHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24s
IHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlm
b3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+
IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAg
ICA6OmdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5kYXRhKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CkBAIC0y
MDM3LDIwICsyMDMzLDIwIEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIDo6
Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVkTmFtZS51dGY4KCkuZGF0YSgpKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZihHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFZlcnRleEF0
dHJpYmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihp
bmRleCwgcG5hbWUsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2
YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAg
OjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUuZGF0YSk7CiB9CiAKIEdD
R0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKQEAgLTMxNDMsNyArMzEzOSwxMiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7CiB9CiAK
LQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2dy
YW0pOworICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgVU5VU0VEX1BB
UkFNKHBuYW1lKTsKKyAgICBVTlVTRURfUEFSQU0ocGFyYW1zKTsKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiAoVVNFKE9QRU5HTCkgfHwgVVNFKE9QRU5HTF9F
UykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggNjBmZGZj
NjVmODczOTU4OTU3OTVhODRlZjFlMDlhYmY2ZDdhYTg0My4uNTI0MTlmNTY2YjFmMjU4YTdkYTQx
MmQxMzFjZjY3ZjZlMDk2MTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTk2LDEyICsxOTYsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGUKICAg
ICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYo
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVl
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRJbnRlZ2Vydihw
bmFtZSwgdmFsdWUuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVj
aXNpb25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQpAQCAtMzMwLDEz
ICszMzAsMTMgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBTaEJ1aWx0SW5SZXNvdXJj
ZXMgQU5HTEVSZXNvdXJjZXM7CiAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmQU5HTEVSZXNv
dXJjZXMpOwogICAgIAotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpN
QVhfVkVSVEVYX0FUVFJJQlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRyaWJzKTsKLSAg
ICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9VTklGT1JN
X1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7Ci0gICAg
Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WQVJZSU5HX1ZFQ1RPUlMs
ICZBTkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFO
R0xFUmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5J
VFMsICZBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBn
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5J
VFMsICZBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdl
cnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMs
ICZBTkdMRVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKTsKKyAgICA6OmdsR2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfQVRUUklCUywgJkFO
R0xFUmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJl
c291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7CisgICAgOjpnbEdldEludGVnZXJ2KEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTLCAmQU5HTEVSZXNvdXJj
ZXMuTWF4VmFyeWluZ1ZlY3RvcnMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJj
ZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZB
TkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICA6OmdsR2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRT
LCAmQU5HTEVSZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIDo6Z2xHZXRJbnRl
Z2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9S
UywgJkFOR0xFUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOwogICAgIAogICAg
IC8vIEFsd2F5cyBzZXQgdG8gMSBmb3IgT3BlbkdMIEVTLgogICAgIEFOR0xFUmVzb3VyY2VzLk1h
eERyYXdCdWZmZXJzID0gMTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414229</attachid>
            <date>2020-11-16 06:09:03 -0800</date>
            <delta_ts>2020-11-16 12:34:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201116160901.patch</filename>
            <type>text/plain</type>
            <size>111462</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFiMzgwY2VlY2RkMjk1
NGU1ZGM4NGU3MGZlMzc2YmIyZTBjYmQ0OS4uYjIyNWMyZDFkYmRmZTEyMDMyMzY3MzU3MTMwZTEz
NGM0NGMxYjdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMiBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRo
ZSB2YWx1ZSBpcyBhIG5vcm1hbCB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIHJlZHVjZXMgdGhlIHJp
c2sKKyAgICAgICAgb2YgaGF2aW5nIHVuaW5pdGlhbGl6ZWQgcmVjZWl2ZSBsb2NhdGlvbi4KKwor
ICAgICAgICBDaGFuZ2UgdGhlIGdldHRlcnMgdGhhdCBhcmUgb25seSB1c2VkIHRvIG9idGFpbiBz
aW5nbGUgdmFsdWVzIHNvCisgICAgICAgIHRoYXQgdGhlIGdldHRlciBpdHNlbGYgaGFzIHRoZSBy
ZXR1cm4gdmFsdWUuCisgICAgICAgIEFkZCBhIHNpbmdsZS12YWx1ZSBnZXR0ZXIgZm9yIGdldHRl
cnMgdGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gYWxzbworICAgICAgICBtdWx0aXBsZSB2YWx1ZXMu
CisKKyAgICAgICAgQWRkIEdDR0xTcGFuIHR5cGUgdGhhdCBpcyB1c2VkIHRvIGNvbW11bmljYXRl
IHBhaXI6IHB0ciwgbnVtYmVyIG9mCisgICAgICAgIGVsZW1lbnRzLgorCisgICAgICAgIFVzZSB0
aGUgUm9idXN0QU5HTEUgdmFyaWFudHMgb2YgdGhlIEdMIEFQSSBpbXBsZW1lbnRhdGlvbiB0byBv
YnRhaW4KKyAgICAgICAgdGhlIHZhbHVlcy4KKworICAgICAgICBSZW1vdmUgdGhlIGNvcnJlc3Bv
bmRpbmcgUm9idXN0QU5HTEUgdmFyaWFudHMgZnJvbSBFeHRlbnNpb25zR0wsIHRoZXkgYXJlCisg
ICAgICAgIGRlYWQgY29kZSBhbmQgdW51c2VkLgorCisgICAgICAgIFRoZSB0eXBlIEdDR0xTcGFu
IHdpbGwgYmUgdXNlZCB0byBzaW1wbGlmeSB0aGUgR1BVIHByb2Nlc3MgaW1wbGVtZW50YXRpb24s
CisgICAgICAgIHNpbmNlIHRoZSBidWZTaXplIHdpbGwgYmUgZXhwbGljaXRseSBhc3NvY2lhdGVk
IGluIHRoZSBwYXNzZWQgZGF0YSBwdHIsCisgICAgICAgIGluc2lkZSB0aGUgR0NHTFNwYW4gdHlw
ZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NHTFNwYW4gd2lsbCBiZSB1c2Vk
IGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAgaS5lLiBhcmJpdHJhcnkgYnVm
ZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKworICAgICAgICBSZW1vdmVzIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSB3b3JrYXJvdW5kIGZyb20gQU5HTEUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY29kZSwgaXQgd2FzIGRlYWQgY29kZSAo
aS5lIGZsYWcgYWx3YXlzIGZhbHNlKS4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBB
TkdMRSBsZXZlbC4KKworICAgICAgICBGaXhlcyBidWdzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFs
dWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlIGxvY2F0aW9uIG9mIHRoZQorICAgICAgICBnb3R0ZW4g
cHJvcGVyeS4gVGhpcyB2YWx1ZSB3b3VsZCBiZSB1bndyaXR0ZW4gaW4gZWRnZS1jYXNlcyBsaWtl
IEdMIGVycm9ycywgYW5kCisgICAgICAgIHRodXMgdGhlIHJlYWQgd291bGQgdG91Y2ggdW51aW5p
dGlhbGl6ZWQgdmFsdWUuCisKKyAgICAgICAgRml4ZXMgYSBidWcgd2hlcmUgdW5pZm9ybSBibG9j
ayB2YXJpYWJsZXMgY29kZSB3b3VsZCBwYXNzIGluIHRvbyBsYXJnZSBidWZmZXIKKyAgICAgICAg
c2l6ZSB0byB0aGUgUm9idXN0QU5HTEUgY2FsbC4gVGhlIGJ1ZlNpemUgcmVmZXJzIHRvIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMsIGJ1dAorICAgICAgICB0aGUgY29kZSBwYXNzZWQgaW4gdGhlIHNp
emUgb2YgdGhlIGJ1ZmZlciAoaS5lLiBudW1iZXIgb2YgZWxlbWVudHMgKiBzaXplIG9mCisgICAg
ICAgIGVsZW1lbnQpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSByZWZhY3Rvci4KKworICAg
ICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNj
cmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFBy
b2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXpl
TmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRCb29sZWFuUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZsb2F0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEludFBhcmFtZXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OmdldEZs
b2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRCb29sZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRJbnRlZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaDoKKyAgICAgICAg
KEdDR0xTcGFuOjpHQ0dMU3Bhbik6CisgICAgICAgIChHQ0dMU3Bhbjo6b3BlcmF0b3JbXSk6Cisg
ICAgICAgIChHQ0dMU3Bhbjo6b3BlcmF0b3IqKToKKyAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KToKKyAgICAgICAgKG1ha2VHQ0dMU3Bhbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RmxvYXR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZl
cnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50
ZWdlcjY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vydik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJv
b2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWkpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRl
cmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRTaGFkZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0
aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFu
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldElu
dGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
SW50ZWdlcjY0aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdl
cnYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4
UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50
ZWdlcjY0dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcjY0aV92KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
UHJvZ3JhbWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRl
cmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRUZXhQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vydik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wpOgorCiAyMDIwLTExLTE2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CiAKICAgICAgICAgRmluYWwgcmVmYWN0b3IgZm9yIFdlYkdMIGltcGxlbWVudGF0
aW9uIHRvIHVzZSBvbmx5IEdyYXBoaWNzQ29udGV4dEdMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNj
cmVlbkNhbnZhcy5jcHAKaW5kZXggMmVmMTBiMGE0ZjM0NmVmZTFiOTM4ZTQ2ZTAwNTNhOGEzMzk0
NTM0NC4uMDRiMzBmOGY2NDY0MTQ2ODA2N2UzMDkyNmU3NGU0ZjJkOWMxOGI5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0lt
YWdlQml0bWFwKCkKICAgICAgICAgLy8gY3JlYXRlcyBhIG5ldyBiYWNraW5nIHN0b3JlLiBTaW5j
ZSB3ZSdyZSBub3QgZG9pbmcgdGhhdCB5ZXQsIHdlCiAgICAgICAgIC8vIG5lZWQgdG8gZXJhc2Ug
d2hhdCdzIHRoZXJlLgogCi0gICAgICAgIEdDR0xmbG9hdCBjbGVhckNvbG9yWzRdOworICAgICAg
ICBHQ0dMZmxvYXQgY2xlYXJDb2xvcls0XSB7IH07CiAgICAgICAgIGdjM2QtPmdldEZsb2F0dihH
cmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQ0xFQVJfVkFMVUUsIGNsZWFyQ29sb3IpOwogICAgICAg
ICBnYzNkLT5jbGVhckNvbG9yKDAsIDAsIDAsIDApOwogICAgICAgICBnYzNkLT5jbGVhcihHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJVCB8IEdyYXBoaWNzQ29udGV4dEdMOjpERVBU
SF9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IDgwNzNhZGMxMTE0OTIxNWY1NmQxZTQ1ZGE2ODRkZTgyODU4MTdlOTIuLjU1
YmMxZjhkYjI0OWQzMzgyMmU3ODg5Y2E3ODNmNWJlYzAyNWEyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0x
NTksOSArMTU5LDkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3
Q29udGV4dCgpCiAgICAgbV91bnBhY2tTa2lwUm93cyA9IDA7CiAgICAgbV91bnBhY2tTa2lwSW1h
Z2VzID0gMDsKIAotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
Ok1BWF8zRF9URVhUVVJFX1NJWkUsICZtX21heDNEVGV4dHVyZVNpemUpOworICAgIG1fbWF4M0RU
ZXh0dXJlU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFY
XzNEX1RFWFRVUkVfU0laRSk7CiAgICAgbV9tYXgzRFRleHR1cmVMZXZlbCA9IFdlYkdMVGV4dHVy
ZTo6Y29tcHV0ZUxldmVsQ291bnQobV9tYXgzRFRleHR1cmVTaXplLCBtX21heDNEVGV4dHVyZVNp
emUpOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9B
UlJBWV9URVhUVVJFX0xBWUVSUywgJm1fbWF4QXJyYXlUZXh0dXJlTGF5ZXJzKTsKKyAgICBtX21h
eEFycmF5VGV4dHVyZUxheWVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRl
eHRHTDo6TUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTKTsKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCk7CiAKQEAgLTIwOCw5ICsyMDgsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVVbnBhY2tQYXJhbWV0ZXJzKCkKIAog
bG9uZyBsb25nIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0UGFyYW1ldGVyKEdDR0xl
bnVtIHBuYW1lKQogewotICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyNjR2KHBuYW1lLCAmdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjQocG5hbWUpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKQpAQCAtMTA1NSwyMyAr
MTA1MywxNCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZQogICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9MRVZFTFM6CiAg
ICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVf
V1JBUF9SOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9JTU1V
VEFCTEVfRk9STUFUOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2Nv
bnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih2YWx1ZSk7Ci0gICAgfQorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9SOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVDoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSk7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgogICAgICAgICBGQUxMVEhS
T1VHSDsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6IHsKLSAg
ICAgICAgR0NHTGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJh
bWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0g
ICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDoKKyAgICAg
ICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VGV4UGFyYW1ldGVyKHRhcmdldCwgcG5hbWUpOwogICAgIH0KQEAgLTI0NDUsMTEgKzI0MzQsOCBA
QCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX1NJWkU6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VU5JRk9STV9CVUZGRVJfU1RBUlQ6IHsKLSAgICAgICAgR0NHTGludDY0IHZhbHVlID0gMDsKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpX3YodGFyZ2V0LCBpbmRleCwgJnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpVTklGT1JNX0JVRkZFUl9TVEFSVDoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50
ZWdlcjY0aSh0YXJnZXQsIGluZGV4KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0JVRkZFUl9CSU5ESU5HOgogICAgICAgICBpZiAoaW5kZXggPj0gbV9ib3VuZEluZGV4ZWRV
bmlmb3JtQnVmZmVycy5zaXplKCkpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZ2V0SW5kZXhlZFBhcmFtZXRlciIsICJp
bmRleCBvdXQgb2YgcmFuZ2UiKTsKQEAgLTI1MjQsMjQgKzI1MTAsMjAgQEAgV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKFdlYkdM
UHJvZ3JhbSYgcHIKICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybUJs
b2NrUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBH
Q0dMaW50IHJlc3VsdCA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX0JMT0NLX0RBVEFfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUzoKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHNpemVvZihyZXN1bHQpLCBudWxs
cHRyLCAmcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50PihyZXN1
bHQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybUJsb2NraShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwg
cG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0FDVElW
RV9VTklGT1JNX0lORElDRVM6IHsKLSAgICAgICAgR0NHTGludCBzaXplID0gMDsKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RB
TkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TLCBzaXplb2Yoc2l6ZSksIG51bGxwdHIs
ICZzaXplKTsKKyAgICAgICAgR0NHTGludCBzaXplID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBHcmFwaGljc0Nv
bnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVMpOwogICAgICAgICBWZWN0b3I8
R0NHTGludD4gcGFyYW1zKHNpemUsIDApOwotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCks
IHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgc2l6ZW9mKHBhcmFtc1swXSkgKiBwYXJhbXMuc2l6
ZSgpLCBudWxscHRyLCBwYXJhbXMuZGF0YSgpKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgICAgIHJldHVybiBwYXJhbXMubWFwKFtdKGF1dG8geCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKICAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVI6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX0ZS
QUdNRU5UX1NIQURFUjoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0QWN0
aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxv
Y2tJbmRleCwgcG5hbWUsIHNpemVvZihyZXN1bHQpLCBudWxscHRyLCAmcmVzdWx0KTsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHJlc3VsdCk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2kocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lKSk7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdl
dEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjc3Miw5ICsyNzU0LDcgQEAgV2ViR0xBbnkg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KEdDR0xlbnVtIHRhcmcKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXR0YWNobWVudCIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwogICAgIH0KICAg
ICBpZiAoIXZhbGlkYXRlTm9uRGVmYXVsdEZyYW1lYnVmZmVyQXR0YWNobWVudChmdW5jdGlvbk5h
bWUsIGF0dGFjaG1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3OTYsMTEgKzI3
NzYsOCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0RFUFRIX1NJWkU6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9TVEVOQ0lMX1NJWkU6Ci0g
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05F
TlRfVFlQRTogewotICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQs
IHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgfQogCiAgICAgaWYgKG9iamVj
dC0+aXNUZXh0dXJlKCkpIHsKQEAgLTI4MTEsMTEgKzI3ODgsOCBAQCBXZWJHTEFueSBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVu
dW0gdGFyZwogICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIocmVpbnRlcnByZXRfY2FzdDxX
ZWJHTFRleHR1cmUmPigqb2JqZWN0KSk7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZB
Q0U6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfQ09MT1JfRU5DT0RJTkc6IHsKLSAgICAgICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOwotICAgICAgICB9CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc6CisgICAgICAgICAgICByZXR1cm4gbV9jb250
ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVu
dCwgcG5hbWUpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxp
ZCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI4OTcsNyArMjg3MSw3IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dmFsaWRhdGVOb25EZWZhdWx0RnJhbWVidWZmZXJBdHRhY2htZW50KGNvbnN0IGNo
YXIqCiBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKCkK
IHsKICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlMsICZtX21heERyYXdCdWZm
ZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihH
cmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUyk7CiAgICAgcmV0dXJuIG1fbWF4RHJh
d0J1ZmZlcnM7CiB9CiAKQEAgLTI5MDUsNyArMjg3OSw3IEBAIEdDR0xpbnQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygpCiB7CiAgICAgLy8gRHJhd0J1ZmZl
cnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID09IE1BWF9EUkFXX0JVRkZFUlMKICAg
ICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRl
Z2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUywgJm1fbWF4Q29sb3JBdHRh
Y2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0
SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUyk7CiAgICAgcmV0dXJu
IG1fbWF4Q29sb3JBdHRhY2htZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRleCA5Y2IwZjg1NmI1OGUxMGU2ZjQ3MzA5ZTZm
ZTNjMTBlMjY3MDk3MTY2Li40OTQxNTZlMWU2NWI2MDI5MTkwZGI3YzFjMDI2YWRmODAzZGRhOGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cApAQCAtOTgsMTAgKzk4LDggQEAgYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJH
TFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiB3ZWIKICAgICBHcmFwaGlj
c0NvbnRleHRHTCogY29udGV4dCA9IHdlYmdsQ29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpOwog
CiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgd2UgbWFrZSBzdXJlIEdMX0VYVF9kcmF3X2J1
ZmZlcnMgaXMgc3VwcG9ydGVkLgotICAgIEdDR0xpbnQgbWF4RHJhd0J1ZmZlcnMgPSAwOwotICAg
IEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50cyA9IDA7Ci0gICAgY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJm1heERyYXdCdWZmZXJzKTsK
LSAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQsICZtYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICBHQ0dMaW50IG1heERyYXdCdWZm
ZXJzID0gY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNf
RVhUKTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRl
Z2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgaWYgKG1h
eERyYXdCdWZmZXJzIDwgNCB8fCBtYXhDb2xvckF0dGFjaG1lbnRzIDwgNCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuY3BwCmluZGV4IDAxYTAyZjUxZDcyZDg5MmVhYjhlOGMyNzA1MDZjYmZjNGU3MzY1NGEu
LmFmNGYwNDE3YjFiM2Q4ODk0ZWE1ZjkwZjM0YWRiNDI0YTdhMzVhZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC02MTMsMjAgKzYx
MywyMCBAQCBib29sIFdlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2htZW50cyhHcmFw
aGljc0NvbnRleHRHTCogZzNkLCBjb25zdCBjaGFyKgogICAgIEdDR0xib29sZWFuIGlzU2Npc3Nv
ckVuYWJsZWQgPSAwOwogICAgIEdDR0xib29sZWFuIGlzRGl0aGVyRW5hYmxlZCA9IDA7CiAgICAg
aWYgKGluaXRDb2xvcikgewotICAgICAgICBnM2QtPmdldEZsb2F0dihHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQ0xFQVJfVkFMVUUsIGNvbG9yQ2xlYXJWYWx1ZSk7Ci0gICAgICAgIGczZC0+Z2V0
Qm9vbGVhbnYoR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX1dSSVRFTUFTSywgY29sb3JNYXNrKTsK
KyAgICAgICAgY29sb3JDbGVhclZhbHVlID0gZzNkLT5nZXRGbG9hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQ0xFQVJfVkFMVUUpOworICAgICAgICBjb2xvck1hc2sgPSBnM2QtPmdldEJvb2xl
YW4oR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX1dSSVRFTUFTSyk7CiAgICAgICAgIGczZC0+Y2xl
YXJDb2xvcigwLCAwLCAwLCAwKTsKICAgICAgICAgZzNkLT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSk7CiAgICAgfQogICAgIGlmIChpbml0RGVwdGgpIHsKLSAgICAgICAgZzNkLT5n
ZXRGbG9hdHYoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NMRUFSX1ZBTFVFLCAmZGVwdGhDbGVh
clZhbHVlKTsKLSAgICAgICAgZzNkLT5nZXRCb29sZWFudihHcmFwaGljc0NvbnRleHRHTDo6REVQ
VEhfV1JJVEVNQVNLLCAmZGVwdGhNYXNrKTsKKyAgICAgICAgZGVwdGhDbGVhclZhbHVlID0gZzNk
LT5nZXRGbG9hdChHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ0xFQVJfVkFMVUUpOworICAgICAg
ICBkZXB0aE1hc2sgPSBnM2QtPmdldEJvb2xlYW4oR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX1dS
SVRFTUFTSyk7CiAgICAgICAgIGczZC0+Y2xlYXJEZXB0aCgxLjBmKTsKICAgICAgICAgZzNkLT5k
ZXB0aE1hc2sodHJ1ZSk7CiAgICAgfQogICAgIGlmIChpbml0U3RlbmNpbCkgewotICAgICAgICBn
M2QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFLCAm
c3RlbmNpbENsZWFyVmFsdWUpOwotICAgICAgICBnM2QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29u
dGV4dEdMOjpTVEVOQ0lMX1dSSVRFTUFTSywgcmVpbnRlcnByZXRfY2FzdDxHQ0dMaW50Kj4oJnN0
ZW5jaWxNYXNrKSk7CisgICAgICAgIHN0ZW5jaWxDbGVhclZhbHVlID0gZzNkLT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFKTsKKyAgICAgICAgc3RlbmNp
bE1hc2sgPSBnM2QtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfV1JJVEVN
QVNLKTsKICAgICAgICAgZzNkLT5jbGVhclN0ZW5jaWwoMCk7CiAgICAgICAgIGczZC0+c3RlbmNp
bE1hc2soMHhmZmZmZmZmZik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUHJvZ3JhbS5jcHAKaW5kZXggYzhjM2I4MjI2NTI1M2MwZTA0ZWUwMWE2YjQxMjljOWM1ZjE4
MDUyOS4uM2U0NmM1ZTU2ZDEzZGNmY2YyZWNjMmRhZDJhYzE5NmE1ZjdjZWE3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCkBAIC0yMTYsOCArMjE2LDcg
QEAgdm9pZCBXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKEdyYXBoaWNz
Q29udGV4dEdMKiBjb250ZXh0M2QpCiB7CiAgICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnMuY2xl
YXIoKTsKIAotICAgIEdDR0xpbnQgbnVtQXR0cmlicyA9IDA7Ci0gICAgY29udGV4dDNkLT5nZXRQ
cm9ncmFtaXYob2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUywg
Jm51bUF0dHJpYnMpOworICAgIEdDR0xpbnQgbnVtQXR0cmlicyA9IGNvbnRleHQzZC0+Z2V0UHJv
Z3JhbWkob2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUyk7CiAg
ICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnMucmVzaXplKHN0YXRpY19jYXN0PHNpemVfdD4obnVt
QXR0cmlicykpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXR0cmliczsgKytpKSB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGluZm87CkBAIC0yNDEsOCArMjQw
LDcgQEAgdm9pZCBXZWJHTFByb2dyYW06OmNhY2hlSW5mb0lmTmVlZGVkKCkKICAgICBHcmFwaGlj
c0NvbnRleHRHTCogY29udGV4dCA9IGdldEFHcmFwaGljc0NvbnRleHRHTCgpOwogICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIEdDR0xpbnQgbGlua1N0YXR1cyA9IDA7Ci0g
ICAgY29udGV4dC0+Z2V0UHJvZ3JhbWl2KG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6TElO
S19TVEFUVVMsICZsaW5rU3RhdHVzKTsKKyAgICBHQ0dMaW50IGxpbmtTdGF0dXMgPSBjb250ZXh0
LT5nZXRQcm9ncmFtaShvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsK
ICAgICBtX2xpbmtTdGF0dXMgPSBsaW5rU3RhdHVzOwogICAgIGlmIChtX2xpbmtTdGF0dXMpIHsK
ICAgICAgICAgY2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoY29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCBkMmZhYzIwMzYyNDk5NTg1ZTBkNTE1NTZjYzVjYTRlM2FhYzMzZGFmLi42OTNkNjIwNmYyYzkw
Zjk1ZmRhOTczYjk5OGViOTY0NjdkY2ZlYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMwNywxMSArMzA3LDgg
QEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2UKICAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRy
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xUZXh0dXJlJj4oKm9iamVjdCkpOwogICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6
CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKLSAgICAgICAgICAgIEdDR0xp
bnQgdmFsdWUgPSAwOwotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICB9CisgICAgICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDoKKyAgICAgICAg
ICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUg
Zm9yIHRleHR1cmUgYXR0YWNobWVudCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0zNDcsOSArMzQ0LDkgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERy
YXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdl
dEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQsICZtX21heERyYXdC
dWZmZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdl
cihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29s
b3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25z
R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOwor
ICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0
ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3
X2J1ZmZlcnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZF
UlMuCiAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRh
Y2htZW50cyk7CiB9CkBAIC0zNTksNyArMzU2LDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVm
ZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50
cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xP
Ul9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21h
eENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpN
QVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1l
bnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDZjMzcyOTlkNDM3N2FhMDNjMjk1MWMyNDA1
MDU4OWU4YjNjMzBmYTcuLjhhZmNjYTE0NDlkNTA4ZTE1OTQ1YjNiMDlkZGVhNDMyNDczMmI1ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC04NzIsOCArODcyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jbGVhclN0ZW5jaWwg
PSAwOwogICAgIG1fY29sb3JNYXNrWzBdID0gbV9jb2xvck1hc2tbMV0gPSBtX2NvbG9yTWFza1sy
XSA9IG1fY29sb3JNYXNrWzNdID0gdHJ1ZTsKIAotICAgIEdDR0xpbnQgbnVtQ29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZudW1Db21iaW5lZFRl
eHR1cmVJbWFnZVVuaXRzKTsKKyAgICBHQ0dMaW50IG51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5p
dHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT01CSU5F
RF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKICAgICBtX3RleHR1cmVVbml0cy5jbGVhcigpOwogICAg
IG1fdGV4dHVyZVVuaXRzLnJlc2l6ZShudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKICNp
ZiAhVVNFKEFOR0xFKQpAQCAtODgxLDE4ICs4ODAsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgICAgIG1fdW5yZW5kZXJhYmxl
VGV4dHVyZVVuaXRzLmFkZChpKTsKICNlbmRpZgogICAgIAotICAgIEdDR0xpbnQgbnVtVmVydGV4
QXR0cmlicyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRH
TDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAmbnVtVmVydGV4QXR0cmlicyk7CisgICAgR0NHTGludCBu
dW1WZXJ0ZXhBdHRyaWJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVkVSVEVYX0FUVFJJQlMpOwogICAgIG1fbWF4VmVydGV4QXR0cmlicyA9IG51bVZlcnRl
eEF0dHJpYnM7CiAgICAgCi0gICAgbV9tYXhUZXh0dXJlU2l6ZSA9IDA7Ci0gICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfU0laRSwgJm1fbWF4
VGV4dHVyZVNpemUpOworICAgIG1fbWF4VGV4dHVyZVNpemUgPSBtX2NvbnRleHQtPmdldEludGVn
ZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9URVhUVVJFX1NJWkUpOwogICAgIG1fbWF4VGV4dHVy
ZUxldmVsID0gV2ViR0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heFRleHR1cmVTaXpl
LCBtX21heFRleHR1cmVTaXplKTsKLSAgICBtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSA9IDA7Ci0g
ICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NVQkVfTUFQ
X1RFWFRVUkVfU0laRSwgJm1fbWF4Q3ViZU1hcFRleHR1cmVTaXplKTsKKyAgICBtX21heEN1YmVN
YXBUZXh0dXJlU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6
TUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSk7CiAgICAgbV9tYXhDdWJlTWFwVGV4dHVyZUxldmVs
ID0gV2ViR0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heEN1YmVNYXBUZXh0dXJlU2l6
ZSwgbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUpOwotICAgIG1fbWF4UmVuZGVyYnVmZmVyU2l6ZSA9
IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1JF
TkRFUkJVRkZFUl9TSVpFLCAmbV9tYXhSZW5kZXJidWZmZXJTaXplKTsKKyAgICBtX21heFJlbmRl
cmJ1ZmZlclNpemUgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1B
WF9SRU5ERVJCVUZGRVJfU0laRSk7CiAKICAgICAvLyBUaGVzZSB0d28gdmFsdWVzIGZyb20gRVhU
X2RyYXdfYnVmZmVycyBhcmUgbGF6aWx5IHF1ZXJpZWQuCiAgICAgbV9tYXhEcmF3QnVmZmVycyA9
IDA7CkBAIC0xNzQxLDggKzE3MzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJjb21waWxlU2hh
ZGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPmNvbXBpbGVT
aGFkZXIoc2hhZGVyLm9iamVjdCgpKTsKLSAgICBHQ0dMaW50IHZhbHVlOwotICAgIG1fY29udGV4
dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElM
RV9TVEFUVVMsICZ2YWx1ZSk7CisgICAgR0NHTGludCB2YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hh
ZGVyaShzaGFkZXIub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUyk7
CiAgICAgc2hhZGVyLnNldFZhbGlkKHZhbHVlKTsKIAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxD
YW52YXMoKTsKQEAgLTI4ODgsOCArMjg4Miw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwot
ICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVl
KTsKKyAgICBHQ0dMaW50IHZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRh
cmdldCwgcG5hbWUpOwogICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QlVGRkVS
X1NJWkUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHZhbHVlKTsKQEAgLTMxODksMjYgKzMxODIsMjYgQEAgV2ViR0xBbnkgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dy
YW0sIEcKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdM
UHJvZ3JhbU9yU2hhZGVyKCJnZXRQcm9ncmFtUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAo
cG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERUxFVEVfU1RBVFVTOgogICAg
ICAgICByZXR1cm4gcHJvZ3JhbS5pc0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpWQUxJREFURV9TVEFUVVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHBy
b2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Ym9vbD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250
ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTOgogICAgICAgICByZXR1cm4gcHJvZ3JhbS5nZXRM
aW5rU3RhdHVzKCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QVRUQUNIRURfU0hBREVS
UzoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5h
bWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkFDVElWRV9BVFRSSUJVVEVTOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkFDVElWRV9VTklGT1JNUzoKICNpZiBVU0UoQU5HTEUpCi0gICAgICAgIG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSk7
CiAjZWxzZQotICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1f
Y29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9i
amVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgeworICAgICAgICAgICAgR0NHTGludCB2
YWx1ZSA9IDA7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCo+KG1fY29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9n
cmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICAgICAgfQogI2VuZGlmIC8vIFVTRShBTkdMRSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwog
ICAgIGRlZmF1bHQ6CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICAgICAgaWYgKGlzV2ViR0wyKCkp
IHsKQEAgLTMyMTYsOCArMzIwOSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01P
REU6CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJB
Q0tfVkFSWUlOR1M6CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVf
VU5JRk9STV9CTE9DS1M6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYo
cHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgICAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1pKHBy
b2dyYW0ub2JqZWN0KCksIHBuYW1lKTsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMjgwLDcgKzMyNzIsNiBAQCBXZWJHTEFu
eSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQwogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCi0gICAgR0NH
TGludCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlJFTkRFUkJVRkZFUl9TQU1QTEVTOgogICAgICAgICBpZiAoIWlzV2ViR0wyKCkp
IHsKQEAgLTMyOTYsOCArMzI4Nyw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDCiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX0FMUEhBX1NJWkU6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX1NURU5DSUxfU0laRToKLSAgICAgICAgbV9jb250
ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwot
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKICAgICAgICAgcmV0dXJuIG1fcmVu
ZGVyYnVmZmVyQmluZGluZy0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKICAgICBkZWZhdWx0OgpAQCAt
MzMxMCwxNiArMzMwMCwxMyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIo
ImdldFNoYWRlclBhcmFtZXRlciIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6REVMRVRFX1NUQVRVUzoKICAgICAgICAgcmV0dXJuIHNoYWRlci5p
c0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUzoK
LSAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1lLCAm
dmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5v
YmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFERVJfVFlQ
RToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1l
LCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFNoYWRl
cmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRTaGFkZXJQ
YXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTMzNzgsMjAgKzMzNjUsMTUgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG4KICAg
ICBhdXRvIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImdldFRleFBhcmFtZXRlciIsIHRh
cmdldCk7CiAgICAgaWYgKCF0ZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEdDR0xp
bnQgdmFsdWUgPSAwOwotICAgIEdDR0xmbG9hdCBmVmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5h
bWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BR19GSUxURVI6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fRklMVEVSOgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9TOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOgotICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
Y29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSk7CiAgICAgY2FzZSBFeHRl
bnNpb25zR0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMKLSAgICAgICAgaWYgKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5h
bWUsICZmVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihmVmFs
dWUpOwotICAgICAgICB9CisgICAgICAgIGlmIChtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YykKKyAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0
LCBwbmFtZSk7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX0VOVU0sICJnZXRUZXhQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwg
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGRlZmF1bHQ6CkBAIC0zNjI0LDcgKzM2MDYsNyBAQCBSZWZQdHI8
V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm1Mb2NhdGlvbihXZWJHTAogCiAgICAgR0NHTGludCBhY3RpdmVVbmlmb3JtcyA9IDA7CiAjaWYg
VVNFKEFOR0xFKQotICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCks
IEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7Cisg
ICAgYWN0aXZlVW5pZm9ybXMgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0
KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMpOwogI2Vsc2UKICAgICBzdGF0
aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPmdldE5v
bkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGljc0NvbnRl
eHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOwogI2VuZGlmCkBAIC02MjM3
LDkgKzYyMTksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlc3VtZSgpCiAK
IGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Qm9vbGVhblBhcmFtZXRlcihHQ0dM
ZW51bSBwbmFtZSkKIHsKLSAgICBHQ0dMYm9vbGVhbiB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0
LT5nZXRCb29sZWFudihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0Qm9vbGVhbihwbmFtZSk7CiB9CiAKIFZlY3Rvcjxib29sPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCb29sZWFuQXJyYXlQYXJhbWV0ZXIoR0NHTGVudW0g
cG5hbWUpCkBAIC02MjU4LDIzICs2MjM4LDE3IEBAIFZlY3Rvcjxib29sPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRCb29sZWFuQXJyYXlQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAK
IGZsb2F0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZsb2F0UGFyYW1ldGVyKEdDR0xl
bnVtIHBuYW1lKQogewotICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5n
ZXRGbG9hdHYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBt
X2NvbnRleHQtPmdldEZsb2F0KHBuYW1lKTsKIH0KIAogaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldEludFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAgICBHQ0dMaW50IHZh
bHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAmdmFsdWUpOwotICAg
IHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKHBuYW1lKTsK
IH0KIAogdW5zaWduZWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5zaWduZWRJbnRQ
YXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWU7
CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihwbmFtZSk7CiB9CiAKIFJlZlB0cjxG
bG9hdDMyQXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdMRmxvYXRBcnJh
eVBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKQEAgLTc2MjYsOSArNzYwMCw5IEBAIEdDR0xpbnQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICgh
c3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4
RHJhd0J1ZmZlcnMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dM
OjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJm1fbWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBtX21h
eERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RS
QVdfQlVGRkVSU19FWFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAg
ICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1F
TlRTX0VYVCwgJm1fbWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRh
Y2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9B
VFRBQ0hNRU5UU19FWFQpOwogICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVycyByZXF1aXJlcyBNQVhf
Q09MT1JfQVRUQUNITUVOVFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KICAgICByZXR1cm4gc3RkOjpt
aW4obV9tYXhEcmF3QnVmZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKIH0KQEAgLTc2Mzgs
NyArNzYxMiw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29s
b3JBdHRhY2htZW50cygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2Nv
bnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VY
VCwgJm1fbWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50
cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMzRm
MTdlYzYxYjMzMTAzNzFjMmRkYmQwYTAxNzVjNjBiOTNkMTZmNS4uYmE4NjViMzMwOGU2Yzk0NTgy
MjEyMjM3Nzk2ZDZmZDU3NzQ4NDdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTMwNiwyMSArMzA2LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQot
ICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Rmxv
YXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRl
eFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHZvaWQqKiBwb2ludGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1
c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3Ms
IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHZvaWQqIHBpeGVscykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwpAQCAtMzM2LDE0ICszMjEsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogZGF0YSkgPSAwOyAvLyBOT0xJTlQKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5H
TEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludDY0KiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NGlfdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBkYXRhKSA9IDA7IC8vIE5PTElOVAog
ICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKaW5kZXggZDllNTg4YWZhMzBkYmE3MzA5MzBmOTZjOTg3MjkxMzQwMTI5OGMx
ZS4uZjhkNzE1Njg3MDUyOGRlOWUxOWQzZGRhMTBiYzVhYzAwZmNhNGY1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBA
IC05ODYsMzEgKzk4NiwzMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0QXR0
cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQg
Z2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7
CiAKICAgICAvLyBnZXRQYXJhbWV0ZXIKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTdHJpbmcoR0NH
TGVudW0gbmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcnYo
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dEludGVnZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1
ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50NjQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NGlfdihH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2NCogdmFsdWUpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJv
b2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludDY0IGdldElu
dGVnZXI2NChHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludDY0IGdldElu
dGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KSA9IDA7CisgICAgdmlydHVh
bCBHQ0dMaW50IGdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0g
cG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMZW51
bSBnZXRFcnJvcigpID0gMDsKIAogICAgIC8vIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
R0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIC8vIGdldFByb2dyYW1QYXJhbWV0ZXIKICAgICB2
aXJ0dWFsIFN0cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAK
ICAgICAvLyBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICAvLyBn
ZXRTaGFkZXJQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyaXYoUGxhdGZvcm1H
TE9iamVjdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVh
bCBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gcG5hbWUpID0g
MDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVj
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVu
dW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdD
R0xpbnQqIHByZWNpc2lvbikgPSAwOwpAQCAtMTAxOCwxOSArMTAxNywxOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QpID0gMDsK
IAogICAgIC8vIGdldFRleFBhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJmdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMZmxv
YXQgZ2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7
CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8gZ2V0VW5pZm9ybQotICAgIHZpcnR1YWwgdm9p
ZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZhbHVl
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlm
b3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTHVpbnQ+IHZhbHVlKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0VW5pZm9y
bUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCiAg
ICAgLy8gZ2V0VmVydGV4QXR0cmliCi0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFZlcnRl
eEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZs
b2F0PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7
CiAKICAgICB2aXJ0dWFsIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVp
bnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKQEAgLTEyMzYsNyArMTIzNSwxMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVu
aWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpID0gMDsKKwogICAgIC8vIE90aGVyIGZ1bmN0aW9u
cy4KKyAgICBHQ0dMZmxvYXQgZ2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpOworICAgIEdDR0xib29s
ZWFuIGdldEJvb2xlYW4oR0NHTGVudW0gcG5hbWUpOworICAgIEdDR0xpbnQgZ2V0SW50ZWdlcihH
Q0dMZW51bSBwbmFtZSk7CisgICAgR0NHTGludCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpKEdDR0x1
aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSk7
CiAKICAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBj
b25zdCB7IHJldHVybiBtX2F0dHJzOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0QXR0cmlidXRlcyhj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRy
czsgfQpAQCAtMTM2Nyw2ICsxMzcyLDM1IEBAIHByaXZhdGU6CiAgICAgRGVzdGluYXRpb24gbV9k
ZXN0aW5hdGlvbjsKIH07CiAKK2lubGluZSBHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0w6Omdl
dEZsb2F0KEdDR0xlbnVtIHBuYW1lKQoreworICAgIEdDR0xmbG9hdCB2YWx1ZVsxXSB7IH07Cisg
ICAgZ2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlWzBdOworfQorCitp
bmxpbmUgR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0w6OmdldEJvb2xlYW4oR0NHTGVudW0g
cG5hbWUpCit7CisgICAgR0NHTGJvb2xlYW4gdmFsdWVbMV0geyB9OworICAgIGdldEJvb2xlYW52
KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlWzBdOworfQorCitpbmxpbmUgR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0SW50ZWdlcihHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBH
Q0dMaW50IHZhbHVlWzFdIHsgfTsKKyAgICBnZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAg
IHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIEdDR0xpbnQgdmFsdWVbMV0geyB9
OworICAgIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4
LCBwbmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCA2OTlkZTI4YmFlYjkyY2MyNTMzOTRkYmE4
MGI3ZTdhNzhlMTNmNDQ1Li5kYjBmMDNjOGIyZTI1YzgzNTlkMzA2Zjk0MmI2YmZhMjJhNzMwYjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzR0wuaApAQCAtMjUsNyArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPGxp
bWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogLy8gR0NHTCB0eXBlcyBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyBHTCB0eXBlcyBhcyBkZWZp
bmVkIGluIE9wZW5HTCBFUyAyLjAKIC8vIGhlYWRlciBmaWxlIGdsMi5oIGZyb20ga2hyb25vcy5v
cmcuCkBAIC01NSwzICs1Nyw1MSBAQCB0eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmplY3Q7
CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdHlwZWRlZiB1bnNpZ25lZCBHTHVpbnQ7CiAjZW5kaWYK
KwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCk+CitzdHJ1Y3QgR0NHTFNwYW47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgRXh0ZW50Pgorc3RydWN0IEdDR0xTcGFuIHsKKyAgICBleHBsaWNpdCBHQ0dMU3Bh
bihUKiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5KQorICAgIHsgfQorICAgIEdDR0xTcGFu
KFQgKCZhcnJheSlbRXh0ZW50XSkKKyAgICAgICAgOiBkYXRhKGFycmF5KQorICAgIHsgfQorICAg
IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgQVNTRVJUKGRhdGEpOyBBU1NFUlQoaSA8IGJ1ZlNp
emUpOyByZXR1cm4gZGF0YVtpXTsgfQorICAgIFQmIG9wZXJhdG9yKigpIHsgIEFTU0VSVChkYXRh
KTsgcmV0dXJuICpkYXRhOyB9CisgICAgVCogZGF0YTsKKyAgICBjb25zdGV4cHIgc3RhdGljIHNp
emVfdCBidWZTaXplID0gRXh0ZW50OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVj
dCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7CisgICAg
R0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykKKyAgICAgICAgOiBkYXRhKGFycmF5
KQorICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCisgICAgeyB9CisgICAgdGVtcGxhdGU8c2l6
ZV90IFN6PiBHQ0dMU3BhbihUICgmYXJyYXkpW1N6XSkKKyAgICAgICAgOiBkYXRhKGFycmF5KQor
ICAgICAgICAsIGJ1ZlNpemUoU3opCisgICAgeyB9CisgICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8
VD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgICAgICAsIGJ1ZlNp
emUoYXJyYXkuc2l6ZSgpKQorICAgIHsgfQorICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsg
QVNTRVJUKGRhdGEpOyBBU1NFUlQoaSA8IGJ1ZlNpemUpOyByZXR1cm4gZGF0YVtpXTsgfQorICAg
IFQmIG9wZXJhdG9yKigpIHsgQVNTRVJUKGRhdGEpOyByZXR1cm4gKmRhdGE7IH0KKyAgICBUKiBk
YXRhOworICAgIGNvbnN0IHNpemVfdCBidWZTaXplOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IE4+CitHQ0dMU3BhbihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwgTj47CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitHQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYpIC0+IEdDR0xTcGFu
PFQ+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorR0NHTFNwYW48VD4gbWFrZUdDR0xTcGFuKFQq
IGRhdGEsIHNpemVfdCBjb3VudCkKK3sKKyAgICByZXR1cm4gR0NHTFNwYW48VD4geyBkYXRhLCBj
b3VudCB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDFjOGJjNDI1NTBmMWMxZDk1
YzMwODJmNjczNzZhNTY5NTA2YmZhYjMuLjRkMDI1Yjk5MzQyMjc3NmI5YjVmNGFhYmMzOWEwYzc4
OTE5NDBhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTExMyw4ICsxMTMsNyBAQCBT
dHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaW50IHNvdXJjZUxlbmd0
aCA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIEdMX1RSQU5TTEFURURf
U0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUsICZzb3VyY2VMZW5ndGgpOworICAgIGludCBzb3Vy
Y2VMZW5ndGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKICAgICBpZiAoIXNvdXJjZUxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VM
ZW5ndGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1
ZGVzIG51bGwgdGVybWluYXRpb24uCkBAIC0yNzksMTI2ICsyNzgsNiBAQCBHQ0dMZW51bSBFeHRl
bnNpb25zR0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVt
IGludGVybmFsZgogfQogCiAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRCb29sZWFudlJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0Rmxv
YXR2Um9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJ2Um9idXN0QU5H
TEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
aGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTaGFkZXJpdlJvYnVzdEFO
R0xFKHNoYWRlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9y
bWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3Jt
aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRW
ZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmli
UG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcG9pbnRlcik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVp
ICpyb3dzLCB2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQpAQCAtNTE3LDE0ICszOTYsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcAog
ICAgIGdsOjpHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50
ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUodGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwg
bGVuZ3RoLCBkYXRhKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZXJuYWxm
b3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCkBAIC01NTcsMzAgKzQyOCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVu
aWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sCiAgICAg
Z2w6OkdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QWN0aXZlVW5p
Zm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnBy
ZXRfY2FzdDxHTGludDY0Kj4oZGF0YSkpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSh0YXJnZXQsIGluZGV4
LCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+KGRhdGEpKTsKLX0K
LQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggMTI1Njk1
NjdjMTdjOTI2YjcxYTkxYmI0YmIxMTk1NTZiYTA2ZjE3MC4uNTdiYjkzYmM4NGMzMzU5MGZiY2Y0
YjNmN2ExZWI1YTU1YzU5MjU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC03MywyMSArNzMs
NiBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNp
emUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZTsgfQogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lk
IGdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQg
KmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
aGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJp
Yml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2
b2lkICoqcG9pbnRlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpw
aXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBv
dmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAq
cGFyYW1zKSBvdmVycmlkZTsKQEAgLTEwMywxNCArODgsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3Zl
cnJpZGU7IC8vIE5PTElOVAogICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJp
Ykl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5H
TEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5U
CiAgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKICAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IGRmNmYzNGM5ZDYxOGQwN2FkZjIx
OTg1YTMwMWNiZTQxNDI5MzkwOGEuLjA2ZTIxNmMzNThmMmE0NTkzNjE3MDFkZWJhMjUxMDViMmM0
NDlkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0zMzAsNDkgKzMz
MCwzMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIGdsOjpSZW5kZXJidWZmZXJTdG9y
YWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOworICAgIGdsOjpHZXRJbnRlZ2VydlJvYnVz
dEFOR0xFKHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIAogICAg
IHN3aXRjaCAocG5hbWUpIHsKLSAgICBjYXNlIE1BWF9URVhUVVJFX1NJWkU6Ci0gICAgICAgIGds
OjpHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7Ci0gICAgICAgIGlmIChnZXRF
eHRlbnNpb25zKCkucmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkpCi0gICAg
ICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbig0MDk2LCAqdmFsdWUpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkU6Ci0gICAgICAgIGdsOjpHZXRJbnRl
Z2VydihNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7Ci0gICAgICAgIGlmIChnZXRF
eHRlbnNpb25zKCkucmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkpCi0gICAg
ICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbigxMDI0LCAqdmFsdWUpOwotICAgICAgICBicmVhazsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gU29tZSBvbGRlciBoYXJkd2FyZSBhZHZlcnRpc2Vz
IGEgbGFyZ2VyIG1heGltdW0gdGhhbiB0aGV5CiAgICAgLy8gY2FuIGFjdHVhbGx5IGhhbmRsZS4g
UmF0aGVyIHRoYW4gZGV0ZWN0aW5nIHN1Y2ggZGV2aWNlcywgc2ltcGx5CiAgICAgLy8gY2xhbXAg
dGhlIG1heGltdW0gdG8gODE5Miwgd2hpY2ggaXMgYmlnIGVub3VnaCBmb3IgYSA1SyBkaXNwbGF5
LgogICAgIGNhc2UgTUFYX1JFTkRFUkJVRkZFUl9TSVpFOgotICAgICAgICBnbDo6R2V0SW50ZWdl
cnYoTUFYX1JFTkRFUkJVRkZFUl9TSVpFLCB2YWx1ZSk7CiAgICAgICAgICp2YWx1ZSA9IHN0ZDo6
bWluKDgxOTIsICp2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX1ZJRVdQT1JU
X0RJTVM6Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihNQVhfVklFV1BPUlRfRElNUywgdmFsdWUp
OwogICAgICAgICB2YWx1ZVswXSA9IHN0ZDo6bWluKDgxOTIsIHZhbHVlWzBdKTsKICAgICAgICAg
dmFsdWVbMV0gPSBzdGQ6Om1pbig4MTkyLCB2YWx1ZVsxXSk7CiAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCiAgICAgZGVmYXVsdDoKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7
CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0SW50ZWdlcmlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQq
IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRJbnRlZ2VyaV92KHBuYW1lLCBpbmRleCwgdmFsdWUpOwotfQotCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NH
TGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2Us
IEdDR0xpbnQqIHByZWNpc2lvbikKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpA
QCAtMTIxMSw3ICsxMTkyLDYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0
aXZlVW5pZm9ybUltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0cKIAogICAgIEdMaW50
IG1heFVuaWZvcm1TaXplID0gMDsKICAgICBnbDo6R2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FD
VElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhVbmlmb3JtU2l6ZSk7Ci0KICAgICBWZWN0b3I8
R0xjaGFyPiBuYW1lKG1heFVuaWZvcm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xF
TkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9
IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CkBAIC0xODE4LDY0ICsxNzk4LDY3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFy
cmF5KQogICAgIGdsOjpCaW5kVmVydGV4QXJyYXkoYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4q
IHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0Qm9vbGVhbnYo
cG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShwbmFtZSwgdmFs
dWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQog
eworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQs
IHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0QnVmZmVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
ZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdsOjpHZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0
RmxvYXR2Um9idXN0QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRh
dGEpOwogfQogICAgIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0
dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xp
bnQ2NCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgKnZhbHVlID0gMDsKLSAgICBnbDo6R2V0SW50ZWdlcjY0dihwbmFtZSwg
dmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldEludGVnZXI2NHZSb2J1
c3RBTkdMRShwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdihHQ0dMZW51
bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dMaW50NjQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1
aW50IGluZGV4KQogeworICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgKnZhbHVlID0gMDsKLSAgICBn
bDo6R2V0SW50ZWdlcjY0aV92KHBuYW1lLCBpbmRleCwgdmFsdWUpOworICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgZ2w6OkdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKHBuYW1lLCBpbmRleCwg
MSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQorICAgICAgICByZXR1cm4g
dmFsdWU7CiAgICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQog
ICAgICAgICBhdHRhY2htZW50ID0gREVQVEhfQVRUQUNITUVOVDsgLy8gT3IgU1RFTkNJTF9BVFRB
Q0hNRU5ULCBlaXRoZXIgd29ya3MuCi0gICAgZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIGF0dGFj
aG1lbnQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UHJv
Z3JhbWl2KHByb2dyYW0sIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICBnbDo6R2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgcG5hbWUsIDEsIG51bGxwdHIs
ICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJd
LCBHQ0dMc2l6ZWkgY291bnQsIGNvbnN0IFN0cmluZyYgbG9nKQpAQCAtMTkyMSwyMiArMTkwNCwy
MyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1JbmZvTG9nKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSkKICAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhz
aGFkZXJzLCBjb3VudCwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVy
biB2YWx1ZTsKKyAgICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0
YXJnZXQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm1HTE9i
amVjdCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIs
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIEFTU0VSVChzaGFkZXIpOwotCisgICAgR0NHTGludCB2
YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRTaGFkZXJpdlJvYnVzdEFOR0xFKHNoYWRlciwgcG5h
bWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVj
dCBzaGFkZXIpCkBAIC0xOTY0LDQ0ICsxOTQ4LDQ2IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QpCiAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmZ2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFs
dWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUg
PSAwLmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHRh
cmdldCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVy
aXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6
OkdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwg
JnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlKTsKKyAgICBnbDo6R2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwg
bG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRVbmlmb3Jt
aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbDo6R2V0VW5pZm9ybWl2Um9idXN0
QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRh
dGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVl
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1
ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGds
OjpHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNp
emUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCiBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25z
dCBTdHJpbmcmIG5hbWUpCkBAIC0yMDE0LDIwICsyMDAwLDIwIEBAIEdDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvCiAgICAgcmV0dXJuIGdsOjpHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51
dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVy
dGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZh
bHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0
VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51
bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkK
IHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBnbDo6R2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6Okdl
dFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBu
dWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAogR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lKQpAQCAtMjAzNiw3ICsyMDIyLDcgQEAgR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0wKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBHTHZvaWQqIHBvaW50ZXIgPSAwOwotICAgIGdsOjpHZXRWZXJ0
ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcG5hbWUsICZwb2ludGVyKTsKKyAgICBnbDo6R2V0VmVy
dGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIDEsIG51bGxwdHIsICZw
b2ludGVyKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZWludGVycHJl
dF9jYXN0PGludHB0cl90Pihwb2ludGVyKSk7CiB9CiAKQEAgLTI5NTMsNiArMjkzOSwxNCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYQogICAgIGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gcGFyYW1zKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdM
RShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcy5idWZTaXplLCBudWxs
cHRyLCBwYXJhbXMuZGF0YSk7Cit9CisKKwogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9V
TkRBVElPTikKIEdyYXBoaWNzQ29udGV4dEdMQ1YqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjph
c0NWKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCmluZGV4IDZkNTAzYmNiYTc1
YWZiOGM1MDc5MGIxYzI0ZTI4MjgzNmM1NWQ5NDkuLmNiYWYwNjBiNTU2MzlmZGI1NWFiN2VhZTQx
N2VmNWQyMDQzOWQ5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcApAQCAtNDY0
LDggKzQ2NCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZD
b250ZXh0T2JqZWN0cygpCiAKICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXJEaXJlY3QodmVy
dGV4U2hhZGVyKTsKIAotICAgIEdDR0xpbnQgc3RhdHVzID0gMDsKLSAgICBtX2NvbnRleHQtPmdl
dFNoYWRlcml2KHZlcnRleFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVT
LCAmc3RhdHVzKTsKKyAgICBHQ0dMaW50IHN0YXR1cyA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaSh2
ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUyk7CiAgICAgaWYg
KCFzdGF0dXMpIHsKICAgICAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
Ojppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cyglcCkgLSBWZXJ0ZXggc2hhZGVyIGZhaWxlZCB0
byBjb21waWxlLiIsIHRoaXMpOwogICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0
ZXhTaGFkZXIpOwpAQCAtNDgwLDcgKzQ3OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cygpCiAKICAgICBtX2NvbnRleHQtPmNvbXBp
bGVTaGFkZXJEaXJlY3QoZnJhZ21lbnRTaGFkZXIpOwogCi0gICAgbV9jb250ZXh0LT5nZXRTaGFk
ZXJpdihmcmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTLCAm
c3RhdHVzKTsKKyAgICBzdGF0dXMgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoZnJhZ21lbnRTaGFk
ZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUyk7CiAgICAgaWYgKCFzdGF0dXMp
IHsKICAgICAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFs
aXplVVZDb250ZXh0T2JqZWN0cyglcCkgLSBGcmFnbWVudCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBp
bGUuIiwgdGhpcyk7CiAgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRl
cik7CkBAIC00OTMsNyArNDkyLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6Omlu
aXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlciht
X3l1dlByb2dyYW0sIGZyYWdtZW50U2hhZGVyKTsKICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFt
KG1feXV2UHJvZ3JhbSk7CiAKLSAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihtX3l1dlByb2dy
YW0sIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5LX1NUQVRVUywgJnN0YXR1cyk7CisgICAgc3RhdHVz
ID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShtX3l1dlByb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdM
OjpMSU5LX1NUQVRVUyk7CiAgICAgaWYgKCFzdGF0dXMpIHsKICAgICAgICAgTE9HKFdlYkdMLCAi
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cyglcCkg
LSBQcm9ncmFtIGZhaWxlZCB0byBsaW5rLiIsIHRoaXMpOwogICAgICAgICBtX2NvbnRleHQtPmRl
bGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmNwcAppbmRleCA4MDYxMGRlN2Q0MzFjZjQyNjI5OTdmNGZmY2UzN2I2YmUxZWU3NDA0Li4z
NGZlZjA1YjYyMzc4NzBkMDViZDFhMzJjMmY0NWE0MTkxYjNmNzBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIEFOR0xFUmVzb3VyY2VzID0gY29tcGlsZXIuZ2V0UmVz
b3VyY2VzKCk7CiAgICAgICAgIGlmICghQU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykg
ewogICAgICAgICAgICAgQU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7Ci0gICAg
ICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVG
RkVSU19FWFQsICZBTkdMRVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyk7CisgICAgICAgICAgICBB
TkdMRVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRl
bnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICAgICAgICAgIGNvbXBpbGVyLnNl
dFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG5h
bWUgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSB7CkBAIC0xNzIsNyArMTcyLDcgQEAg
U3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKIAogICAgIEFOR0xFV2ViS2l0QnJpZGdlJiBjb21waWxl
ciA9IG1fY29udGV4dC0+bV9jb21waWxlcjsKIAotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYo
c2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6U0hBREVSX1RZUEUsICZHTHNoYWRlclR5cGUpOwor
ICAgIEdMc2hhZGVyVHlwZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIsIEdyYXBoaWNz
Q29udGV4dEdMOjpTSEFERVJfVFlQRSk7CiAKICAgICBpZiAoR0xzaGFkZXJUeXBlID09IEdyYXBo
aWNzQ29udGV4dEdMOjpWRVJURVhfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVS
X1RZUEVfVkVSVEVYOwpAQCAtMjU0LDgxICsyNTQsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xp
bgogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbnZSb2J1c3RB
TkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGJvb2xlYW4gKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGbG9h
dHZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNoYWRlcml2Um9i
dXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliUG9pbnRl
cnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IHZvaWQgKiopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkUGl4
ZWxzUm9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkg
Kiwgdm9pZCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwpAQCAtNDAwLDExICszMjUsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0s
CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VyaV92Um9idXN0
QU5HTEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlcm5hbGZv
cm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtNDMwLDE2ICszNTAsNiBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdM
RShHQ0dMdWludCwgR0NHTAogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMaW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldElu
dGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikKIHsKICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uaAppbmRleCAwNDg5NGI5MWM4MmNjNGIxYjIwOWE3YWZkMjI5Y2Jk
Y2E5YTAxYTQzLi45N2VlZGZiNzQ4NWM4MzJmNzkzYzhjZmYwZmExN2ZiZmZiZTY1ODhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC02OSwyMSArNjksNiBAQCBwdWJs
aWM6CiAgICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVy
cmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQog
CiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIGdldEJvb2xl
YW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKmRhdGEpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzaGFkZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4
QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpj
b2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtOTksMTQgKzg0LDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IGludCAqZGF0YSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4
QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
NjQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCBhYjhjYjU0ZjVlODc5ZWY0YjhhOTBkMTlhN2VjOTJj
ODljZTIwNTdiLi5kMjhmNGEwMzFlYmRjNDgzODc1ZDM5ODQ4N2Q1Nzg3NDhmZGU0N2U3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTc0LDExICs3NCw4IEBAIGJvb2wgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZvciBHTF9FWFRfcm9idXN0bmVzcywgY2hlY2sgdGhh
dCB0aGUgY29udGV4dCBzdXBwb3J0cyByb2J1c3QgYWNjZXNzLgotICAgIGlmIChuYW1lID09ICJH
TF9FWFRfcm9idXN0bmVzcyIpIHsKLSAgICAgICAgR0xpbnQgcm9idXN0QWNjZXNzID0gR0xfRkFM
U0U7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpDT05URVhU
X1JPQlVTVF9BQ0NFU1MsICZyb2J1c3RBY2Nlc3MpOwotICAgICAgICByZXR1cm4gcm9idXN0QWNj
ZXNzID09IEdMX1RSVUU7Ci0gICAgfQorICAgIGlmIChuYW1lID09ICJHTF9FWFRfcm9idXN0bmVz
cyIpCisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpD
T05URVhUX1JPQlVTVF9BQ0NFU1MpID09IEdMX1RSVUU7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggNzc1ZjkwNDA2ZjQyYTYwOTFk
ZGMzZmVhMWU1MGI3YzJiMGFlNGRhMS4uYzNmNDhlOGM2ODlmMGIzOTdiNmY3ZTU2ODM0ODI0YTZh
OGI5Zjc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTE5NywzNSAr
MTk3LDM0IEBAIHB1YmxpYzoKICAgICBib29sIGdldEFjdGl2ZVVuaWZvcm1JbXBsKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKICAgICB2b2lk
IGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBt
YXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgZmlu
YWw7CiAgICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25z
dCBTdHJpbmcmIG5hbWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xib29sZWFuKiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0
ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmlu
YWw7CisgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJv
b2xlYW4+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAgR0NHTGVudW0gZ2V0RXJy
b3IoKSBmaW5hbDsKLSAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0
KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0SW50ZWdlcmlfdihHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2
b2lkIGdldEludGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpIGZpbmFs
OwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRl
eCwgR0NHTGludDY0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRQcm9ncmFtaXYoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFs
OworICAgIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+
IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQoR0NHTGVu
dW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NHTGludCBnZXRQcm9ncmFtaShQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKICNpZiAhVVNFKEFO
R0xFKQogICAgIHZvaWQgZ2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKTsKICNlbmRpZiAv
LyAhVVNFKEFOR0xFKQogICAgIFN0cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2Jq
ZWN0KSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0VW5tYW5nbGVkSW5mb0xvZyhQbGF0Zm9ybUdMT2Jq
ZWN0WzJdLCBHQ0dMc2l6ZWksIGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCog
dmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2hhZGVyaXYoUGxhdGZvcm1HTE9iamVjdCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CisgICAgR0NHTGludCBnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1l
KSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0KSBm
aW5hbDsKICAgICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJU
eXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJl
Y2lzaW9uKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmpl
Y3QpIGZpbmFsOwogICAgIFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2KEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAg
ICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUp
IGZpbmFsOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGZsb2F0
IGdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CisgICAgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7
CisgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRV
bmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwotICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZp
bmFsOwogICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOwpAQCAtNDM4LDYgKzQzNyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHVu
aWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbDsKKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKIAogI2lmICFVU0UoQU5HTEUpCiAgICAgdm9pZCBy
ZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCA3
NTBlZDMyNmVjZTY1ZTg4ZjZiNDEzNjAxNWM0ZjkzMzc0NDg5Y2E1Li5jZWYwMDYwYzc5OTMwMTEy
NzkxZDdhNDRlNDhmNjQ3MzhkODA5YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xCYXNlLmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBp
bnRlCiAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQodGFyZ2V0LCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
aW50PiB2YWx1ZSkKIHsKICAgICAvLyBOZWVkIHRvIGVtdWxhdGUgTUFYX0ZSQUdNRU5UL1ZFUlRF
WF9VTklGT1JNX1ZFQ1RPUlMgYW5kIE1BWF9WQVJZSU5HX1ZFQ1RPUlMKICAgICAvLyBiZWNhdXNl
IGRlc2t0b3AgR0wncyBjb3JyZXNwb25kaW5nIHF1ZXJpZXMgcmV0dXJuIHRoZSBudW1iZXIgb2Yg
Y29tcG9uZW50cwpAQCAtMjcyLDM5ICsyNzIsMzkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQogICAgIHN3
aXRjaCAocG5hbWUpIHsKICNpZiBVU0UoT1BFTkdMKQogICAgIGNhc2UgTUFYX0ZSQUdNRU5UX1VO
SUZPUk1fVkVDVE9SUzoKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9GUkFHTUVOVF9V
TklGT1JNX0NPTVBPTkVOVFMsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01B
WF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMsIHZhbHVlLmRhdGEpOwogICAgICAgICAqdmFs
dWUgLz0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNQVhfVkVSVEVYX1VOSUZPUk1fVkVD
VE9SUzoKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01Q
T05FTlRTLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1VO
SUZPUk1fQ09NUE9ORU5UUywgdmFsdWUuZGF0YSk7CiAgICAgICAgICp2YWx1ZSAvPSA0OwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE1BWF9WQVJZSU5HX1ZFQ1RPUlM6CiAgICAgICAgIGlmIChp
c0dMRVMyQ29tcGxpYW50KCkpIHsKICAgICAgICAgICAgIEFTU0VSVCg6OmdsR2V0RXJyb3IoKSA9
PSBHTF9OT19FUlJPUik7Ci0gICAgICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJ
TkdfVkVDVE9SUywgdmFsdWUpOworICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9W
QVJZSU5HX1ZFQ1RPUlMsIHZhbHVlLmRhdGEpOwogICAgICAgICAgICAgaWYgKDo6Z2xHZXRFcnJv
cigpID09IEdMX0lOVkFMSURfRU5VTSkgewotICAgICAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2Vy
dihHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgOjpn
bEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMsIHZhbHVlLmRhdGEpOwogICAg
ICAgICAgICAgICAgICp2YWx1ZSAvPSA0OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX0ZMT0FUUywgdmFs
dWUpOworICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX0ZMT0FUUywg
dmFsdWUuZGF0YSk7CiAgICAgICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgTUFYX1RFWFRVUkVfU0laRToKLSAgICAgICAgOjpn
bEdldEludGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldElu
dGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUsIHZhbHVlLmRhdGEpOwogICAgICAgICBpZiAoZ2V0RXh0
ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAgICAg
ICAgICAgKnZhbHVlID0gc3RkOjptaW4oNDA5NiwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgotICAgICAgICA6OmdsR2V0SW50ZWdl
cnYoTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSwgdmFsdWUpOworICAgICAgICA6OmdsR2V0SW50
ZWdlcnYoTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSwgdmFsdWUuZGF0YSk7CiAgICAgICAgIGlm
IChnZXRFeHRlbnNpb25zKCkucmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkp
CiAgICAgICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbigxMDI0LCAqdmFsdWUpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICA6OmdsR2V0SW50ZWdlcnYocG5hbWUsIHZhbHVl
KTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5kYXRhKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4
IGIwYzFmMWRmZDQzZDQxNTA0MjdmZjUyMWFjZjY4NDM2MjcyNDAwNWEuLjc2ZjU5NTFhODU5YTc2
ZWZmMWZjYmVkNDY1MDkwY2EwMzU4ZmFhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTcxNywxMiArMTcxNywxMiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJh
eSkKICNlbmRpZgogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFu
dihHQ0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29s
ZWFuPiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICA6OmdsR2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0
Qm9vbGVhbnYocG5hbWUsIHZhbHVlLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKQEAgLTE3MzMsNjUgKzE3MzMsNTcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmEKICAgICA6OmdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwg
dmFsdWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYoR0NH
TGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
CiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgOjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRGbG9hdHYocG5hbWUs
IHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRl
Z2VyaV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpCitH
Q0dMaW50NjQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NChHQ0dMZW51bSBw
bmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShpbmRl
eCk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgKnZhbHVlID0gMDsKLSAgICAvLyBGSVhNRSAxNDExNzg6IEJlZm9yZSBlbmFibGluZyB0aGlz
IHdlIG11c3QgZmlyc3Qgc3dpdGNoIG92ZXIgdG8gdXNpbmcgZ2wzLmggYW5kIGNyZWF0aW5nIGFu
ZCBpbml0aWFsaW5nIHRoZSBXZWJHTDIgY29udGV4dCB1c2luZyBPcGVuR0wgRVMgMy4wLgotICAg
IC8vIDo6Z2xHZXRJbnRlZ2VyaV92KHBuYW1lLCBpbmRleCwgdmFsdWUpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50NjQqIHZhbHVlKQotewotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgKnZhbHVlID0gMDsKKyAg
ICBHQ0dMaW50NjQgdmFsdWUgPSAwOwogICAgIC8vIEZJWE1FIDE0MTE3ODogQmVmb3JlIGVuYWJs
aW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0Y2ggb3ZlciB0byB1c2luZyBnbDMuaCBhbmQgY3Jl
YXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdlYkdMMiBjb250ZXh0IHVzaW5nIE9wZW5HTCBFUyAz
LjAuCiAgICAgLy8gOjpnbEdldEludGVnZXI2NHYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlf
dihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dM
aW50NjQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGkoR0NHTGVudW0gcG5h
bWUsIEdDR0x1aW50IGluZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGluZGV4KTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICAqdmFsdWUgPSAwOworICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7CiAg
ICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBtdXN0IGZpcnN0IHN3
aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQgaW5pdGlhbGluZyB0aGUg
V2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KICAgICAvLyA6OmdsR2V0SW50ZWdl
cjY0aV92KHBuYW1lLCBpbmRleCwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwotCiAgICAgaWYg
KGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQogICAgICAgICBhdHRhY2ht
ZW50ID0gREVQVEhfQVRUQUNITUVOVDsgLy8gT3IgU1RFTkNJTF9BVFRBQ0hNRU5ULCBlaXRoZXIg
d29ya3MuCi0gICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRh
cmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVl
KTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dy
YW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFBy
b2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgdmFsdWUpOworICAgIEdDR0xpbnQgdmFsdWUgcCA9IDA7
CisgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1
cm4gdmFsdWU7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0
SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKQEAgLTE4OTksMjAgKzE4OTEsMjEgQEAgU3RyaW5nIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0pCiAgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0
cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXZFWFQodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAg
OjpnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgQVNTRVJUKHNo
YWRlcik7Ci0KKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogCiAgICAg
Y29uc3QgYXV0byYgcmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwpAQCAt
MTkyMCw3ICsxOTEzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVy
aXYoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIsIEdDR0xlbnVtIHBuYW0KICAgICBzd2l0Y2ggKHBu
YW1lKSB7CiAgICAgY2FzZSBERUxFVEVfU1RBVFVTOgogICAgIGNhc2UgU0hBREVSX1RZUEU6Ci0g
ICAgICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6
Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENPTVBJTEVfU1RBVFVTOgogICAgICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291
cmNlTWFwLmVuZCgpKSB7CkBAIC0xOTQyLDYgKzE5MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0g
cG5hbQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfRU5V
TSk7CiAgICAgfQorICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpAQCAt
MTk4NiwzOSArMTk4MCw0MSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNo
YWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKICAgICByZXR1cm4gcmVzdWx0LT52
YWx1ZS5zb3VyY2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmZ2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFs
dWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUg
PSAwLmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1l
LCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRU
ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NH
TGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFVuaWZvcm1mdihw
cm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIDo6Z2xHZXRVbmlmb3JtZnYocHJvZ3JhbSwg
bG9jYXRpb24sIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZv
cm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZh
bHVlKTsKKyAgICA6OmdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5kYXRh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7CkBAIC0yMDM3LDIwICsyMDMzLDIwIEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAg
cmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVkTmFtZS51dGY4KCku
ZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZihHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdl
dFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRWZXJ0ZXhB
dHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1
ZSk7CisgICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUuZGF0YSk7
CiB9CiAKIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKQEAgLTMxNDMsNyArMzEz
OSwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNl
dCk7CiB9CiAKLQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAgVU5VU0VEX1BB
UkFNKHByb2dyYW0pOworICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7CisgICAg
VU5VU0VEX1BBUkFNKHBuYW1lKTsKKyAgICBVTlVTRURfUEFSQU0ocGFyYW1zKTsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiAoVVNFKE9QRU5HTCkgfHwgVVNF
KE9QRU5HTF9FUykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5k
ZXggNjBmZGZjNjVmODczOTU4OTU3OTVhODRlZjFlMDlhYmY2ZDdhYTg0My4uNTI0MTlmNTY2YjFm
MjU4YTdkYTQxMmQxMzFjZjY3ZjZlMDk2MTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcApAQCAtMTk2LDEyICsxOTYsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGludGUKICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRJ
bnRlZ2VydihwbmFtZSwgdmFsdWUuZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dM
ZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQpA
QCAtMzMwLDEzICszMzAsMTMgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBTaEJ1aWx0
SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXM7CiAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygm
QU5HTEVSZXNvdXJjZXMpOwogICAgIAotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpNQVhfVkVSVEVYX0FUVFJJQlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRy
aWJzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRF
WF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9y
cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WQVJZSU5H
X1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7Ci0gICAgZ2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9V
TklUUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBn
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVf
SU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
KTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAg
Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9GUkFHTUVOVF9VTklGT1JN
X1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKTsKKyAg
ICA6OmdsR2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfQVRU
UklCUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMpOworICAgIDo6Z2xHZXRJbnRl
Z2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMs
ICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7CisgICAgOjpnbEdldElu
dGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTLCAmQU5H
TEVSZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5H
TEVSZXNvdXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIDo6Z2xHZXRJbnRl
Z2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0Vf
VU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKKyAg
ICA6OmdsR2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lN
QUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIDo6
Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0ZSQUdNRU5UX1VOSUZP
Uk1fVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOwog
ICAgIAogICAgIC8vIEFsd2F5cyBzZXQgdG8gMSBmb3IgT3BlbkdMIEVTLgogICAgIEFOR0xFUmVz
b3VyY2VzLk1heERyYXdCdWZmZXJzID0gMTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414269</attachid>
            <date>2020-11-16 12:34:44 -0800</date>
            <delta_ts>2020-11-16 22:02:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201116223442.patch</filename>
            <type>text/plain</type>
            <size>116214</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFiMzgwY2VlY2RkMjk1
NGU1ZGM4NGU3MGZlMzc2YmIyZTBjYmQ0OS4uYjIyNWMyZDFkYmRmZTEyMDMyMzY3MzU3MTMwZTEz
NGM0NGMxYjdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMiBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRo
ZSB2YWx1ZSBpcyBhIG5vcm1hbCB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIHJlZHVjZXMgdGhlIHJp
c2sKKyAgICAgICAgb2YgaGF2aW5nIHVuaW5pdGlhbGl6ZWQgcmVjZWl2ZSBsb2NhdGlvbi4KKwor
ICAgICAgICBDaGFuZ2UgdGhlIGdldHRlcnMgdGhhdCBhcmUgb25seSB1c2VkIHRvIG9idGFpbiBz
aW5nbGUgdmFsdWVzIHNvCisgICAgICAgIHRoYXQgdGhlIGdldHRlciBpdHNlbGYgaGFzIHRoZSBy
ZXR1cm4gdmFsdWUuCisgICAgICAgIEFkZCBhIHNpbmdsZS12YWx1ZSBnZXR0ZXIgZm9yIGdldHRl
cnMgdGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gYWxzbworICAgICAgICBtdWx0aXBsZSB2YWx1ZXMu
CisKKyAgICAgICAgQWRkIEdDR0xTcGFuIHR5cGUgdGhhdCBpcyB1c2VkIHRvIGNvbW11bmljYXRl
IHBhaXI6IHB0ciwgbnVtYmVyIG9mCisgICAgICAgIGVsZW1lbnRzLgorCisgICAgICAgIFVzZSB0
aGUgUm9idXN0QU5HTEUgdmFyaWFudHMgb2YgdGhlIEdMIEFQSSBpbXBsZW1lbnRhdGlvbiB0byBv
YnRhaW4KKyAgICAgICAgdGhlIHZhbHVlcy4KKworICAgICAgICBSZW1vdmUgdGhlIGNvcnJlc3Bv
bmRpbmcgUm9idXN0QU5HTEUgdmFyaWFudHMgZnJvbSBFeHRlbnNpb25zR0wsIHRoZXkgYXJlCisg
ICAgICAgIGRlYWQgY29kZSBhbmQgdW51c2VkLgorCisgICAgICAgIFRoZSB0eXBlIEdDR0xTcGFu
IHdpbGwgYmUgdXNlZCB0byBzaW1wbGlmeSB0aGUgR1BVIHByb2Nlc3MgaW1wbGVtZW50YXRpb24s
CisgICAgICAgIHNpbmNlIHRoZSBidWZTaXplIHdpbGwgYmUgZXhwbGljaXRseSBhc3NvY2lhdGVk
IGluIHRoZSBwYXNzZWQgZGF0YSBwdHIsCisgICAgICAgIGluc2lkZSB0aGUgR0NHTFNwYW4gdHlw
ZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NHTFNwYW4gd2lsbCBiZSB1c2Vk
IGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAgaS5lLiBhcmJpdHJhcnkgYnVm
ZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKworICAgICAgICBSZW1vdmVzIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSB3b3JrYXJvdW5kIGZyb20gQU5HTEUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY29kZSwgaXQgd2FzIGRlYWQgY29kZSAo
aS5lIGZsYWcgYWx3YXlzIGZhbHNlKS4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBB
TkdMRSBsZXZlbC4KKworICAgICAgICBGaXhlcyBidWdzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFs
dWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlIGxvY2F0aW9uIG9mIHRoZQorICAgICAgICBnb3R0ZW4g
cHJvcGVyeS4gVGhpcyB2YWx1ZSB3b3VsZCBiZSB1bndyaXR0ZW4gaW4gZWRnZS1jYXNlcyBsaWtl
IEdMIGVycm9ycywgYW5kCisgICAgICAgIHRodXMgdGhlIHJlYWQgd291bGQgdG91Y2ggdW51aW5p
dGlhbGl6ZWQgdmFsdWUuCisKKyAgICAgICAgRml4ZXMgYSBidWcgd2hlcmUgdW5pZm9ybSBibG9j
ayB2YXJpYWJsZXMgY29kZSB3b3VsZCBwYXNzIGluIHRvbyBsYXJnZSBidWZmZXIKKyAgICAgICAg
c2l6ZSB0byB0aGUgUm9idXN0QU5HTEUgY2FsbC4gVGhlIGJ1ZlNpemUgcmVmZXJzIHRvIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMsIGJ1dAorICAgICAgICB0aGUgY29kZSBwYXNzZWQgaW4gdGhlIHNp
emUgb2YgdGhlIGJ1ZmZlciAoaS5lLiBudW1iZXIgb2YgZWxlbWVudHMgKiBzaXplIG9mCisgICAg
ICAgIGVsZW1lbnQpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSByZWZhY3Rvci4KKworICAg
ICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNj
cmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFBy
b2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXpl
TmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRCb29sZWFuUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZsb2F0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEludFBhcmFtZXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OmdldEZs
b2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRCb29sZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRJbnRlZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaDoKKyAgICAgICAg
KEdDR0xTcGFuOjpHQ0dMU3Bhbik6CisgICAgICAgIChHQ0dMU3Bhbjo6b3BlcmF0b3JbXSk6Cisg
ICAgICAgIChHQ0dMU3Bhbjo6b3BlcmF0b3IqKToKKyAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KToKKyAgICAgICAgKG1ha2VHQ0dMU3Bhbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RmxvYXR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZl
cnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50
ZWdlcjY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vydik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJv
b2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWkpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRl
cmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRTaGFkZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0
aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFu
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldElu
dGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
SW50ZWdlcjY0aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdl
cnYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4
UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50
ZWdlcjY0dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcjY0aV92KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
UHJvZ3JhbWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRl
cmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRUZXhQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vydik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wpOgorCiAyMDIwLTExLTE2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CiAKICAgICAgICAgRmluYWwgcmVmYWN0b3IgZm9yIFdlYkdMIGltcGxlbWVudGF0
aW9uIHRvIHVzZSBvbmx5IEdyYXBoaWNzQ29udGV4dEdMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNj
cmVlbkNhbnZhcy5jcHAKaW5kZXggMmVmMTBiMGE0ZjM0NmVmZTFiOTM4ZTQ2ZTAwNTNhOGEzMzk0
NTM0NC4uMDRiMzBmOGY2NDY0MTQ2ODA2N2UzMDkyNmU3NGU0ZjJkOWMxOGI5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0lt
YWdlQml0bWFwKCkKICAgICAgICAgLy8gY3JlYXRlcyBhIG5ldyBiYWNraW5nIHN0b3JlLiBTaW5j
ZSB3ZSdyZSBub3QgZG9pbmcgdGhhdCB5ZXQsIHdlCiAgICAgICAgIC8vIG5lZWQgdG8gZXJhc2Ug
d2hhdCdzIHRoZXJlLgogCi0gICAgICAgIEdDR0xmbG9hdCBjbGVhckNvbG9yWzRdOworICAgICAg
ICBHQ0dMZmxvYXQgY2xlYXJDb2xvcls0XSB7IH07CiAgICAgICAgIGdjM2QtPmdldEZsb2F0dihH
cmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQ0xFQVJfVkFMVUUsIGNsZWFyQ29sb3IpOwogICAgICAg
ICBnYzNkLT5jbGVhckNvbG9yKDAsIDAsIDAsIDApOwogICAgICAgICBnYzNkLT5jbGVhcihHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJVCB8IEdyYXBoaWNzQ29udGV4dEdMOjpERVBU
SF9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IDgwNzNhZGMxMTE0OTIxNWY1NmQxZTQ1ZGE2ODRkZTgyODU4MTdlOTIuLjU1
YmMxZjhkYjI0OWQzMzgyMmU3ODg5Y2E3ODNmNWJlYzAyNWEyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0x
NTksOSArMTU5LDkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3
Q29udGV4dCgpCiAgICAgbV91bnBhY2tTa2lwUm93cyA9IDA7CiAgICAgbV91bnBhY2tTa2lwSW1h
Z2VzID0gMDsKIAotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
Ok1BWF8zRF9URVhUVVJFX1NJWkUsICZtX21heDNEVGV4dHVyZVNpemUpOworICAgIG1fbWF4M0RU
ZXh0dXJlU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFY
XzNEX1RFWFRVUkVfU0laRSk7CiAgICAgbV9tYXgzRFRleHR1cmVMZXZlbCA9IFdlYkdMVGV4dHVy
ZTo6Y29tcHV0ZUxldmVsQ291bnQobV9tYXgzRFRleHR1cmVTaXplLCBtX21heDNEVGV4dHVyZVNp
emUpOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9B
UlJBWV9URVhUVVJFX0xBWUVSUywgJm1fbWF4QXJyYXlUZXh0dXJlTGF5ZXJzKTsKKyAgICBtX21h
eEFycmF5VGV4dHVyZUxheWVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRl
eHRHTDo6TUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTKTsKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCk7CiAKQEAgLTIwOCw5ICsyMDgsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVVbnBhY2tQYXJhbWV0ZXJzKCkKIAog
bG9uZyBsb25nIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0UGFyYW1ldGVyKEdDR0xl
bnVtIHBuYW1lKQogewotICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyNjR2KHBuYW1lLCAmdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjQocG5hbWUpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKQpAQCAtMTA1NSwyMyAr
MTA1MywxNCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZQogICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9MRVZFTFM6CiAg
ICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVf
V1JBUF9SOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9JTU1V
VEFCTEVfRk9STUFUOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2Nv
bnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih2YWx1ZSk7Ci0gICAgfQorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9SOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVDoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSk7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgogICAgICAgICBGQUxMVEhS
T1VHSDsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6IHsKLSAg
ICAgICAgR0NHTGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJh
bWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0g
ICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDoKKyAgICAg
ICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VGV4UGFyYW1ldGVyKHRhcmdldCwgcG5hbWUpOwogICAgIH0KQEAgLTI0NDUsMTEgKzI0MzQsOCBA
QCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX1NJWkU6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VU5JRk9STV9CVUZGRVJfU1RBUlQ6IHsKLSAgICAgICAgR0NHTGludDY0IHZhbHVlID0gMDsKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpX3YodGFyZ2V0LCBpbmRleCwgJnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpVTklGT1JNX0JVRkZFUl9TVEFSVDoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50
ZWdlcjY0aSh0YXJnZXQsIGluZGV4KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0JVRkZFUl9CSU5ESU5HOgogICAgICAgICBpZiAoaW5kZXggPj0gbV9ib3VuZEluZGV4ZWRV
bmlmb3JtQnVmZmVycy5zaXplKCkpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZ2V0SW5kZXhlZFBhcmFtZXRlciIsICJp
bmRleCBvdXQgb2YgcmFuZ2UiKTsKQEAgLTI1MjQsMjQgKzI1MTAsMjAgQEAgV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKFdlYkdM
UHJvZ3JhbSYgcHIKICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybUJs
b2NrUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBH
Q0dMaW50IHJlc3VsdCA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX0JMT0NLX0RBVEFfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUzoKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHNpemVvZihyZXN1bHQpLCBudWxs
cHRyLCAmcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50PihyZXN1
bHQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybUJsb2NraShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwg
cG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0FDVElW
RV9VTklGT1JNX0lORElDRVM6IHsKLSAgICAgICAgR0NHTGludCBzaXplID0gMDsKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RB
TkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TLCBzaXplb2Yoc2l6ZSksIG51bGxwdHIs
ICZzaXplKTsKKyAgICAgICAgR0NHTGludCBzaXplID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBHcmFwaGljc0Nv
bnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVMpOwogICAgICAgICBWZWN0b3I8
R0NHTGludD4gcGFyYW1zKHNpemUsIDApOwotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCks
IHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgc2l6ZW9mKHBhcmFtc1swXSkgKiBwYXJhbXMuc2l6
ZSgpLCBudWxscHRyLCBwYXJhbXMuZGF0YSgpKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgICAgIHJldHVybiBwYXJhbXMubWFwKFtdKGF1dG8geCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKICAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVI6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX0ZS
QUdNRU5UX1NIQURFUjoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0QWN0
aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxv
Y2tJbmRleCwgcG5hbWUsIHNpemVvZihyZXN1bHQpLCBudWxscHRyLCAmcmVzdWx0KTsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHJlc3VsdCk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2kocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lKSk7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdl
dEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjc3Miw5ICsyNzU0LDcgQEAgV2ViR0xBbnkg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KEdDR0xlbnVtIHRhcmcKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXR0YWNobWVudCIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwogICAgIH0KICAg
ICBpZiAoIXZhbGlkYXRlTm9uRGVmYXVsdEZyYW1lYnVmZmVyQXR0YWNobWVudChmdW5jdGlvbk5h
bWUsIGF0dGFjaG1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3OTYsMTEgKzI3
NzYsOCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0RFUFRIX1NJWkU6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9TVEVOQ0lMX1NJWkU6Ci0g
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05F
TlRfVFlQRTogewotICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQs
IHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgfQogCiAgICAgaWYgKG9iamVj
dC0+aXNUZXh0dXJlKCkpIHsKQEAgLTI4MTEsMTEgKzI3ODgsOCBAQCBXZWJHTEFueSBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVu
dW0gdGFyZwogICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIocmVpbnRlcnByZXRfY2FzdDxX
ZWJHTFRleHR1cmUmPigqb2JqZWN0KSk7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZB
Q0U6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfQ09MT1JfRU5DT0RJTkc6IHsKLSAgICAgICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOwotICAgICAgICB9CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc6CisgICAgICAgICAgICByZXR1cm4gbV9jb250
ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVu
dCwgcG5hbWUpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxp
ZCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI4OTcsNyArMjg3MSw3IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dmFsaWRhdGVOb25EZWZhdWx0RnJhbWVidWZmZXJBdHRhY2htZW50KGNvbnN0IGNo
YXIqCiBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKCkK
IHsKICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlMsICZtX21heERyYXdCdWZm
ZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihH
cmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUyk7CiAgICAgcmV0dXJuIG1fbWF4RHJh
d0J1ZmZlcnM7CiB9CiAKQEAgLTI5MDUsNyArMjg3OSw3IEBAIEdDR0xpbnQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygpCiB7CiAgICAgLy8gRHJhd0J1ZmZl
cnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID09IE1BWF9EUkFXX0JVRkZFUlMKICAg
ICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRl
Z2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUywgJm1fbWF4Q29sb3JBdHRh
Y2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0
SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUyk7CiAgICAgcmV0dXJu
IG1fbWF4Q29sb3JBdHRhY2htZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRleCA5Y2IwZjg1NmI1OGUxMGU2ZjQ3MzA5ZTZm
ZTNjMTBlMjY3MDk3MTY2Li40OTQxNTZlMWU2NWI2MDI5MTkwZGI3YzFjMDI2YWRmODAzZGRhOGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cApAQCAtOTgsMTAgKzk4LDggQEAgYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJH
TFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiB3ZWIKICAgICBHcmFwaGlj
c0NvbnRleHRHTCogY29udGV4dCA9IHdlYmdsQ29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpOwog
CiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgd2UgbWFrZSBzdXJlIEdMX0VYVF9kcmF3X2J1
ZmZlcnMgaXMgc3VwcG9ydGVkLgotICAgIEdDR0xpbnQgbWF4RHJhd0J1ZmZlcnMgPSAwOwotICAg
IEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50cyA9IDA7Ci0gICAgY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJm1heERyYXdCdWZmZXJzKTsK
LSAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQsICZtYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICBHQ0dMaW50IG1heERyYXdCdWZm
ZXJzID0gY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNf
RVhUKTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRl
Z2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgaWYgKG1h
eERyYXdCdWZmZXJzIDwgNCB8fCBtYXhDb2xvckF0dGFjaG1lbnRzIDwgNCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuY3BwCmluZGV4IDAxYTAyZjUxZDcyZDg5MmVhYjhlOGMyNzA1MDZjYmZjNGU3MzY1NGEu
LmFmNGYwNDE3YjFiM2Q4ODk0ZWE1ZjkwZjM0YWRiNDI0YTdhMzVhZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC02MTMsMjAgKzYx
MywyMCBAQCBib29sIFdlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2htZW50cyhHcmFw
aGljc0NvbnRleHRHTCogZzNkLCBjb25zdCBjaGFyKgogICAgIEdDR0xib29sZWFuIGlzU2Npc3Nv
ckVuYWJsZWQgPSAwOwogICAgIEdDR0xib29sZWFuIGlzRGl0aGVyRW5hYmxlZCA9IDA7CiAgICAg
aWYgKGluaXRDb2xvcikgewotICAgICAgICBnM2QtPmdldEZsb2F0dihHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQ0xFQVJfVkFMVUUsIGNvbG9yQ2xlYXJWYWx1ZSk7Ci0gICAgICAgIGczZC0+Z2V0
Qm9vbGVhbnYoR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX1dSSVRFTUFTSywgY29sb3JNYXNrKTsK
KyAgICAgICAgY29sb3JDbGVhclZhbHVlID0gZzNkLT5nZXRGbG9hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQ0xFQVJfVkFMVUUpOworICAgICAgICBjb2xvck1hc2sgPSBnM2QtPmdldEJvb2xl
YW4oR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX1dSSVRFTUFTSyk7CiAgICAgICAgIGczZC0+Y2xl
YXJDb2xvcigwLCAwLCAwLCAwKTsKICAgICAgICAgZzNkLT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSk7CiAgICAgfQogICAgIGlmIChpbml0RGVwdGgpIHsKLSAgICAgICAgZzNkLT5n
ZXRGbG9hdHYoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NMRUFSX1ZBTFVFLCAmZGVwdGhDbGVh
clZhbHVlKTsKLSAgICAgICAgZzNkLT5nZXRCb29sZWFudihHcmFwaGljc0NvbnRleHRHTDo6REVQ
VEhfV1JJVEVNQVNLLCAmZGVwdGhNYXNrKTsKKyAgICAgICAgZGVwdGhDbGVhclZhbHVlID0gZzNk
LT5nZXRGbG9hdChHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ0xFQVJfVkFMVUUpOworICAgICAg
ICBkZXB0aE1hc2sgPSBnM2QtPmdldEJvb2xlYW4oR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX1dS
SVRFTUFTSyk7CiAgICAgICAgIGczZC0+Y2xlYXJEZXB0aCgxLjBmKTsKICAgICAgICAgZzNkLT5k
ZXB0aE1hc2sodHJ1ZSk7CiAgICAgfQogICAgIGlmIChpbml0U3RlbmNpbCkgewotICAgICAgICBn
M2QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFLCAm
c3RlbmNpbENsZWFyVmFsdWUpOwotICAgICAgICBnM2QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29u
dGV4dEdMOjpTVEVOQ0lMX1dSSVRFTUFTSywgcmVpbnRlcnByZXRfY2FzdDxHQ0dMaW50Kj4oJnN0
ZW5jaWxNYXNrKSk7CisgICAgICAgIHN0ZW5jaWxDbGVhclZhbHVlID0gZzNkLT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFKTsKKyAgICAgICAgc3RlbmNp
bE1hc2sgPSBnM2QtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfV1JJVEVN
QVNLKTsKICAgICAgICAgZzNkLT5jbGVhclN0ZW5jaWwoMCk7CiAgICAgICAgIGczZC0+c3RlbmNp
bE1hc2soMHhmZmZmZmZmZik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUHJvZ3JhbS5jcHAKaW5kZXggYzhjM2I4MjI2NTI1M2MwZTA0ZWUwMWE2YjQxMjljOWM1ZjE4
MDUyOS4uM2U0NmM1ZTU2ZDEzZGNmY2YyZWNjMmRhZDJhYzE5NmE1ZjdjZWE3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCkBAIC0yMTYsOCArMjE2LDcg
QEAgdm9pZCBXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKEdyYXBoaWNz
Q29udGV4dEdMKiBjb250ZXh0M2QpCiB7CiAgICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnMuY2xl
YXIoKTsKIAotICAgIEdDR0xpbnQgbnVtQXR0cmlicyA9IDA7Ci0gICAgY29udGV4dDNkLT5nZXRQ
cm9ncmFtaXYob2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUywg
Jm51bUF0dHJpYnMpOworICAgIEdDR0xpbnQgbnVtQXR0cmlicyA9IGNvbnRleHQzZC0+Z2V0UHJv
Z3JhbWkob2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUyk7CiAg
ICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnMucmVzaXplKHN0YXRpY19jYXN0PHNpemVfdD4obnVt
QXR0cmlicykpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXR0cmliczsgKytpKSB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGluZm87CkBAIC0yNDEsOCArMjQw
LDcgQEAgdm9pZCBXZWJHTFByb2dyYW06OmNhY2hlSW5mb0lmTmVlZGVkKCkKICAgICBHcmFwaGlj
c0NvbnRleHRHTCogY29udGV4dCA9IGdldEFHcmFwaGljc0NvbnRleHRHTCgpOwogICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIEdDR0xpbnQgbGlua1N0YXR1cyA9IDA7Ci0g
ICAgY29udGV4dC0+Z2V0UHJvZ3JhbWl2KG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6TElO
S19TVEFUVVMsICZsaW5rU3RhdHVzKTsKKyAgICBHQ0dMaW50IGxpbmtTdGF0dXMgPSBjb250ZXh0
LT5nZXRQcm9ncmFtaShvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsK
ICAgICBtX2xpbmtTdGF0dXMgPSBsaW5rU3RhdHVzOwogICAgIGlmIChtX2xpbmtTdGF0dXMpIHsK
ICAgICAgICAgY2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoY29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCBkMmZhYzIwMzYyNDk5NTg1ZTBkNTE1NTZjYzVjYTRlM2FhYzMzZGFmLi42OTNkNjIwNmYyYzkw
Zjk1ZmRhOTczYjk5OGViOTY0NjdkY2ZlYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMwNywxMSArMzA3LDgg
QEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2UKICAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRy
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xUZXh0dXJlJj4oKm9iamVjdCkpOwogICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6
CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKLSAgICAgICAgICAgIEdDR0xp
bnQgdmFsdWUgPSAwOwotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICB9CisgICAgICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDoKKyAgICAgICAg
ICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUg
Zm9yIHRleHR1cmUgYXR0YWNobWVudCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0zNDcsOSArMzQ0LDkgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERy
YXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdl
dEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQsICZtX21heERyYXdC
dWZmZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdl
cihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29s
b3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25z
R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOwor
ICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0
ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3
X2J1ZmZlcnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZF
UlMuCiAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRh
Y2htZW50cyk7CiB9CkBAIC0zNTksNyArMzU2LDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVm
ZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50
cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xP
Ul9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21h
eENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpN
QVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1l
bnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDZjMzcyOTlkNDM3N2FhMDNjMjk1MWMyNDA1
MDU4OWU4YjNjMzBmYTcuLjE0YmY5ZWU4ZTNjYWI2NzlkODFkOTI5ZjlhNmNjNzlhNjdiOGQ2MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC04NzIsOCArODcyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jbGVhclN0ZW5jaWwg
PSAwOwogICAgIG1fY29sb3JNYXNrWzBdID0gbV9jb2xvck1hc2tbMV0gPSBtX2NvbG9yTWFza1sy
XSA9IG1fY29sb3JNYXNrWzNdID0gdHJ1ZTsKIAotICAgIEdDR0xpbnQgbnVtQ29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZudW1Db21iaW5lZFRl
eHR1cmVJbWFnZVVuaXRzKTsKKyAgICBHQ0dMaW50IG51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5p
dHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT01CSU5F
RF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKICAgICBtX3RleHR1cmVVbml0cy5jbGVhcigpOwogICAg
IG1fdGV4dHVyZVVuaXRzLnJlc2l6ZShudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKICNp
ZiAhVVNFKEFOR0xFKQpAQCAtODgxLDE4ICs4ODAsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgICAgIG1fdW5yZW5kZXJhYmxl
VGV4dHVyZVVuaXRzLmFkZChpKTsKICNlbmRpZgogICAgIAotICAgIEdDR0xpbnQgbnVtVmVydGV4
QXR0cmlicyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRH
TDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAmbnVtVmVydGV4QXR0cmlicyk7CisgICAgR0NHTGludCBu
dW1WZXJ0ZXhBdHRyaWJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVkVSVEVYX0FUVFJJQlMpOwogICAgIG1fbWF4VmVydGV4QXR0cmlicyA9IG51bVZlcnRl
eEF0dHJpYnM7CiAgICAgCi0gICAgbV9tYXhUZXh0dXJlU2l6ZSA9IDA7Ci0gICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfU0laRSwgJm1fbWF4
VGV4dHVyZVNpemUpOworICAgIG1fbWF4VGV4dHVyZVNpemUgPSBtX2NvbnRleHQtPmdldEludGVn
ZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9URVhUVVJFX1NJWkUpOwogICAgIG1fbWF4VGV4dHVy
ZUxldmVsID0gV2ViR0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heFRleHR1cmVTaXpl
LCBtX21heFRleHR1cmVTaXplKTsKLSAgICBtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSA9IDA7Ci0g
ICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NVQkVfTUFQ
X1RFWFRVUkVfU0laRSwgJm1fbWF4Q3ViZU1hcFRleHR1cmVTaXplKTsKKyAgICBtX21heEN1YmVN
YXBUZXh0dXJlU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6
TUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSk7CiAgICAgbV9tYXhDdWJlTWFwVGV4dHVyZUxldmVs
ID0gV2ViR0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heEN1YmVNYXBUZXh0dXJlU2l6
ZSwgbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUpOwotICAgIG1fbWF4UmVuZGVyYnVmZmVyU2l6ZSA9
IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1JF
TkRFUkJVRkZFUl9TSVpFLCAmbV9tYXhSZW5kZXJidWZmZXJTaXplKTsKKyAgICBtX21heFJlbmRl
cmJ1ZmZlclNpemUgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1B
WF9SRU5ERVJCVUZGRVJfU0laRSk7CiAKICAgICAvLyBUaGVzZSB0d28gdmFsdWVzIGZyb20gRVhU
X2RyYXdfYnVmZmVycyBhcmUgbGF6aWx5IHF1ZXJpZWQuCiAgICAgbV9tYXhEcmF3QnVmZmVycyA9
IDA7CkBAIC0xNzQxLDggKzE3MzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJjb21waWxlU2hh
ZGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPmNvbXBpbGVT
aGFkZXIoc2hhZGVyLm9iamVjdCgpKTsKLSAgICBHQ0dMaW50IHZhbHVlOwotICAgIG1fY29udGV4
dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElM
RV9TVEFUVVMsICZ2YWx1ZSk7CisgICAgR0NHTGludCB2YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hh
ZGVyaShzaGFkZXIub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUyk7
CiAgICAgc2hhZGVyLnNldFZhbGlkKHZhbHVlKTsKIAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxD
YW52YXMoKTsKQEAgLTI4ODgsOCArMjg4Miw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwot
ICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVl
KTsKKyAgICBHQ0dMaW50IHZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRh
cmdldCwgcG5hbWUpOwogICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QlVGRkVS
X1NJWkUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHZhbHVlKTsKQEAgLTMxODksMjYgKzMxODIsMjYgQEAgV2ViR0xBbnkgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dy
YW0sIEcKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdM
UHJvZ3JhbU9yU2hhZGVyKCJnZXRQcm9ncmFtUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAo
cG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERUxFVEVfU1RBVFVTOgogICAg
ICAgICByZXR1cm4gcHJvZ3JhbS5pc0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpWQUxJREFURV9TVEFUVVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHBy
b2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Ym9vbD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250
ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTOgogICAgICAgICByZXR1cm4gcHJvZ3JhbS5nZXRM
aW5rU3RhdHVzKCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QVRUQUNIRURfU0hBREVS
UzoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5h
bWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkFDVElWRV9BVFRSSUJVVEVTOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkFDVElWRV9VTklGT1JNUzoKICNpZiBVU0UoQU5HTEUpCi0gICAgICAgIG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSk7
CiAjZWxzZQotICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1f
Y29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9i
amVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgeworICAgICAgICAgICAgR0NHTGludCB2
YWx1ZSA9IDA7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCo+KG1fY29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9n
cmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICAgICAgfQogI2VuZGlmIC8vIFVTRShBTkdMRSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwog
ICAgIGRlZmF1bHQ6CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICAgICAgaWYgKGlzV2ViR0wyKCkp
IHsKQEAgLTMyMTYsOCArMzIwOSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01P
REU6CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJB
Q0tfVkFSWUlOR1M6CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVf
VU5JRk9STV9CTE9DS1M6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYo
cHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgICAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1pKHBy
b2dyYW0ub2JqZWN0KCksIHBuYW1lKTsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMjgwLDcgKzMyNzIsNiBAQCBXZWJHTEFu
eSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQwogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCi0gICAgR0NH
TGludCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlJFTkRFUkJVRkZFUl9TQU1QTEVTOgogICAgICAgICBpZiAoIWlzV2ViR0wyKCkp
IHsKQEAgLTMyOTYsOCArMzI4Nyw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDCiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX0FMUEhBX1NJWkU6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX1NURU5DSUxfU0laRToKLSAgICAgICAgbV9jb250
ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwot
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKICAgICAgICAgcmV0dXJuIG1fcmVu
ZGVyYnVmZmVyQmluZGluZy0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKICAgICBkZWZhdWx0OgpAQCAt
MzMxMCwxNiArMzMwMCwxMyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIo
ImdldFNoYWRlclBhcmFtZXRlciIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6REVMRVRFX1NUQVRVUzoKICAgICAgICAgcmV0dXJuIHNoYWRlci5p
c0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUzoK
LSAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1lLCAm
dmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5v
YmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFERVJfVFlQ
RToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1l
LCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFNoYWRl
cmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRTaGFkZXJQ
YXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTMzNzgsMjAgKzMzNjUsMTUgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG4KICAg
ICBhdXRvIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImdldFRleFBhcmFtZXRlciIsIHRh
cmdldCk7CiAgICAgaWYgKCF0ZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEdDR0xp
bnQgdmFsdWUgPSAwOwotICAgIEdDR0xmbG9hdCBmVmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5h
bWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BR19GSUxURVI6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fRklMVEVSOgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9TOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOgotICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
Y29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSk7CiAgICAgY2FzZSBFeHRl
bnNpb25zR0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMKLSAgICAgICAgaWYgKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5h
bWUsICZmVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihmVmFs
dWUpOwotICAgICAgICB9CisgICAgICAgIGlmIChtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YykKKyAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0
LCBwbmFtZSk7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX0VOVU0sICJnZXRUZXhQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwg
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGRlZmF1bHQ6CkBAIC0zNTU1LDcgKzM1MzcsNyBAQCBXZWJHTEFu
eSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJv
Z3JhbSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
Z2V0blVuaWZvcm1mdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgMTYgKiBzaXplb2Yo
R0NHTGZsb2F0KSwgdmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7
CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLm9iamVjdCgpLCBs
b2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVlLCBsZW5ndGgpKTsKICAgICAgICAgaWYgKGxlbmd0
aCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwogICAgICAgICByZXR1cm4gRmxv
YXQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7CkBAIC0zNTY3LDE0ICszNTQ5LDE0
IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQ
cm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0
ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24s
IHZhbHVlKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0ub2Jq
ZWN0KCksIGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUsIGxlbmd0aCkpOwogICAgICAgICBp
ZiAobGVuZ3RoID09IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07CiAgICAgICAgIHJl
dHVybiBJbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7CiAgICAgfQogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVDogewogICAgICAgICBHQ0dMdWludCB2
YWx1ZVs0XSA9IHswfTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0u
b2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9y
bXVpdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVlLCBsZW5n
dGgpKTsKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVl
WzBdOwogICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3Ro
KTsKQEAgLTM1ODYsNyArMzU2OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0u
b2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAgICAg
IGVsc2UKICNlbmRpZgotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3Jh
bS5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
VW5pZm9ybWl2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUs
IGxlbmd0aCkpOwogICAgICAgICBpZiAobGVuZ3RoID4gMSkgewogICAgICAgICAgICAgVmVjdG9y
PGJvb2w+IHZlY3RvcihsZW5ndGgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IGxlbmd0aDsgaisrKQpAQCAtMzYyNCw3ICszNjA2LDcgQEAgUmVmUHRyPFdlYkdMVW5pZm9y
bUxvY2F0aW9uPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24o
V2ViR0wKIAogICAgIEdDR0xpbnQgYWN0aXZlVW5pZm9ybXMgPSAwOwogI2lmIFVTRShBTkdMRSkK
LSAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGljc0Nv
bnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOworICAgIGFjdGl2ZVVu
aWZvcm1zID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGlj
c0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TKTsKICNlbHNlCiAgICAgc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5nZXROb25CdWlsdEluQWN0
aXZlU3ltYm9sQ291bnQocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElW
RV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKICNlbmRpZgpAQCAtNjIzNyw5ICs2MjE5LDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN1bWUoKQogCiBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xlYW5QYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUp
CiB7Ci0gICAgR0NHTGJvb2xlYW4gdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVh
bnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2NvbnRl
eHQtPmdldEJvb2xlYW4ocG5hbWUpOwogfQogCiBWZWN0b3I8Ym9vbD4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQpAQCAt
NjI1OCwyMyArNjIzOCwxNyBAQCBWZWN0b3I8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogCiBmbG9hdCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRGbG9hdFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkK
IHsKLSAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2KHBu
YW1lLCAmdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRGbG9hdChwbmFtZSk7CiB9CiAKIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRJ
bnRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0g
ICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4gdmFs
dWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihwbmFtZSk7CiB9CiAKIHVuc2ln
bmVkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdD
R0xlbnVtIHBuYW1lKQogewotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+
Z2V0SW50ZWdlcnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVy
biBtX2NvbnRleHQtPmdldEludGVnZXIocG5hbWUpOwogfQogCiBSZWZQdHI8RmxvYXQzMkFycmF5
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIo
R0NHTGVudW0gcG5hbWUpCkBAIC03NjI2LDkgKzc2MDAsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldE1heERyYXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJh
d0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZmZXJz
KQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdf
QlVGRkVSU19FWFQsICZtX21heERyYXdCdWZmZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVmZmVy
cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNf
RVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZt
X21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNf
RVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFD
SE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCiAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4RHJh
d0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50cyk7CiB9CkBAIC03NjM4LDcgKzc2MTIsNyBA
QCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldE1heENvbG9yQXR0YWNobWVu
dHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJ
bnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21heENv
bG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRl
eHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsK
ICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IDM0ZjE3ZWM2MWIzMzEw
MzcxYzJkZGJkMGEwMTc1YzYwYjkzZDE2ZjUuLmJhODY1YjMzMDhlNmM5NDU4MjIxMjIzNzc5NmQ2
ZmQ1Nzc0ODQ3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4
dGVuc2lvbnNHTC5oCkBAIC0zMDYsMjEgKzMwNiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikg
PSAwOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZsb2F0dlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xmbG9hdCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVn
ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9n
cmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTaGFk
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZs
b2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cG9pbnRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCog
cGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBw
aXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKQEAgLTMzNiwxNCArMzIxLDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIGRhdGEpID0gMDsgLy8gTk9MSU5UCiAgICAgdmlydHVhbCB2b2lk
IGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCog
ZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogZGF0YSkgPSAwOyAvLyBOT0xJTlQKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludDY0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
CmluZGV4IGQ5ZTU4OGFmYTMwZGJhNzMwOTMwZjk2Yzk4NzI5MTM0MDEyOThjMWUuLmY4ZDcxNTY4
NzA1MjhkZTllMTlkM2RkYTEwYmM1YWMwMGZjYTRmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtOTg2LDMxICs5
ODYsMzAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9u
KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCi0gICAgdmlydHVh
bCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldEJ1ZmZlclBh
cmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8g
Z2V0UGFyYW1ldGVyCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxv
YXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyaV92
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2
YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0gcG5h
bWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudihHQ0dM
ZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQoR0NH
TGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRpKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBn
ZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMYm9vbGVhbj4gdmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTGVudW0gZ2V0RXJyb3Io
KSA9IDA7CiAKICAgICAvLyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBu
YW1lKSA9IDA7CiAKICAgICAvLyBnZXRQcm9ncmFtUGFyYW1ldGVyCiAgICAgdmlydHVhbCBTdHJp
bmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgLy8gZ2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVl
KSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8gZ2V0U2hhZGVyUGFy
YW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3QsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBn
ZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2
aXJ0dWFsIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5
cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVj
aXNpb24pID0gMDsKQEAgLTEwMTgsMTkgKzEwMTcsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAgICAvLyBn
ZXRUZXhQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFRleFBh
cmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1
YWwgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUpID0gMDsKIAogICAgIC8vIGdldFVuaWZvcm0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9y
bWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9y
bWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50
PiB2YWx1ZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAogICAgIC8vIGdldFZl
cnRleEF0dHJpYgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwogCiAgICAgdmly
dHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSkgPSAwOwogCkBAIC0xMjM2LDcgKzEyMzUsMTMgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwog
CisgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gcGFyYW1zKSA9IDA7CisKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCisgICAgR0NH
TGZsb2F0IGdldEZsb2F0KEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMYm9vbGVhbiBnZXRCb29s
ZWFuKEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMaW50IGdldEludGVnZXIoR0NHTGVudW0gcG5h
bWUpOworICAgIEdDR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1
cm4gbV9hdHRyczsgfQogICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7IH0KQEAgLTEz
NjcsNiArMTM3MiwzNSBAQCBwcml2YXRlOgogICAgIERlc3RpbmF0aW9uIG1fZGVzdGluYXRpb247
CiB9OwogCitpbmxpbmUgR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdChHQ0dM
ZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMZmxvYXQgdmFsdWVbMV0geyB9OworICAgIGdldEZsb2F0
dihwbmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xi
b29sZWFuIEdyYXBoaWNzQ29udGV4dEdMOjpnZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKQorewor
ICAgIEdDR0xib29sZWFuIHZhbHVlWzFdIHsgfTsKKyAgICBnZXRCb29sZWFudihwbmFtZSwgdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0w6OmdldEludGVnZXIoR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NHTGludCB2YWx1
ZVsxXSB7IH07CisgICAgZ2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFs
dWVbMF07Cit9CisKK2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tpKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMaW50IHZhbHVlWzFdIHsgfTsKKyAgICBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHZh
bHVlKTsKKyAgICByZXR1cm4gdmFsdWVbMF07Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUeXBlc0dMLmgKaW5kZXggNjk5ZGUyOGJhZWI5MmNjMjUzMzk0ZGJhODBiN2U3YTc4ZTEz
ZjQ0NS4uZGIwZjAzYzhiMmUyNWM4MzU5ZDMwNmY5NDJiNmJmYTIyYTczMGIxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAg
LTI1LDcgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIC8vIEdDR0wg
dHlwZXMgbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVu
R0wgRVMgMi4wCiAvLyBoZWFkZXIgZmlsZSBnbDIuaCBmcm9tIGtocm9ub3Mub3JnLgpAQCAtNTUs
MyArNTcsNTEgQEAgdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2JqZWN0OwogI2lmICFQTEFU
Rk9STShDT0NPQSkKIHR5cGVkZWYgdW5zaWduZWQgR0x1aW50OwogI2VuZGlmCisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpPgorc3RydWN0IEdDR0xTcGFuOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4
dGVudD4KK3N0cnVjdCBHQ0dMU3BhbiB7CisgICAgZXhwbGljaXQgR0NHTFNwYW4oVCogYXJyYXkp
CisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICB7IH0KKyAgICBHQ0dMU3BhbihUICgmYXJyYXkp
W0V4dGVudF0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICB7IH0KKyAgICBUJiBvcGVyYXRv
cltdKHNpemVfdCBpKSB7IEFTU0VSVChkYXRhKTsgQVNTRVJUKGkgPCBidWZTaXplKTsgcmV0dXJu
IGRhdGFbaV07IH0KKyAgICBUJiBvcGVyYXRvciooKSB7ICBBU1NFUlQoZGF0YSk7IHJldHVybiAq
ZGF0YTsgfQorICAgIFQqIGRhdGE7CisgICAgY29uc3RleHByIHN0YXRpYyBzaXplX3QgYnVmU2l6
ZSA9IEV4dGVudDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR0NHTFNwYW48
VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4geworICAgIEdDR0xTcGFuKFQq
IGFycmF5LCBzaXplX3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAg
LCBidWZTaXplKGJ1ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHNpemVfdCBTej4gR0NH
TFNwYW4oVCAoJmFycmF5KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBi
dWZTaXplKFN6KQorICAgIHsgfQorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JiBhcnJheSkK
KyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXplKGFycmF5LnNp
emUoKSkKKyAgICB7IH0KKyAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IEFTU0VSVChkYXRh
KTsgQVNTRVJUKGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KKyAgICBUJiBvcGVyYXRv
ciooKSB7IEFTU0VSVChkYXRhKTsgcmV0dXJuICpkYXRhOyB9CisgICAgVCogZGF0YTsKKyAgICBj
b25zdCBzaXplX3QgYnVmU2l6ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBO
PgorR0NHTFNwYW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQsIE4+OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK0dDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXpl
X3QgY291bnQpCit7CisgICAgcmV0dXJuIEdDR0xTcGFuPFQ+IHsgZGF0YSwgY291bnQgfTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAxYzhiYzQyNTUwZjFjMWQ5NWMzMDgyZjY3Mzc2
YTU2OTUwNmJmYWIzLi40ZDAyNWI5OTM0MjI3NzZiOWI1ZjRhYWJjMzlhMGM3ODkxOTQwYTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC0xMTMsOCArMTEzLDcgQEAgU3RyaW5nIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9i
amVjdCBzaGFkZXIKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGludCBzb3VyY2VMZW5ndGggPSAwOwotICAg
IG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VS
Q0VfTEVOR1RIX0FOR0xFLCAmc291cmNlTGVuZ3RoKTsKKyAgICBpbnQgc291cmNlTGVuZ3RoID0g
bV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNF
X0xFTkdUSF9BTkdMRSk7CiAgICAgaWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8g
R0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRl
cm1pbmF0aW9uLgpAQCAtMjc5LDEyNiArMjc4LDYgQEAgR0NHTGVudW0gRXh0ZW5zaW9uc0dMQU5H
TEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGYK
IH0KIAogLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRh
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RmxvYXR2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGZsb2F0ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEZsb2F0dlJvYnVzdEFO
R0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRh
dGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3Jh
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFByb2dyYW1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0
YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2hhZGVyaXZSb2J1c3RBTkdMRShzaGFkZXIs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFVuaWZvcm1mdlJvYnVzdEFO
R0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmli
ZnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0
dHJpYml2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBvaW50ZXIpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxz
Um9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9p
ZCAqcGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
QEAgLTUxNywxNCArMzk2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHAKICAgICBnbDo6R2V0
QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJpX3ZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
SW50ZWdlcmlfdlJvYnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0
YSk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVybmFsZm9ybWF0aXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAt
NTU3LDMwICs0MjgsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRVbmlm
b3JtdWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
Um9idXN0QU5HTEUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcjY0
dlJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xp
bnQ2NCo+KGRhdGEpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0
aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUodGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwg
bGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihkYXRhKSk7Ci19Ci0KIHZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IDEyNTY5NTY3YzE3YzkyNmI3
MWE5MWJiNGJiMTE5NTU2YmEwNmYxNzAuLjU3YmI5M2JjODRjMzM1OTBmYmNmNGIzZjdhMWViNWE1
NWM1OTI1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNzMsMjEgKzczLDYgQEAgcHVibGlj
OgogICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAog
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCBnZXRCb29sZWFu
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50
ZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVy
cmlkZTsKICAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7CkBAIC0xMDMsMTQgKzg4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFF1ZXJ5aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXJp
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpIG92ZXJyaWRlOyAvLyBO
T0xJTlQKICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAq
ZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAogICAgIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0
ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBkZjZmMzRjOWQ2MThkMDdhZGYyMTk4NWEzMDFjYmU0
MTQyOTM5MDhhLi4wNmUyMTZjMzU4ZjJhNDU5MzYxNzAxZGViYTI1MTA1YjJjNDQ5ZGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzMwLDQ5ICszMzAsMzAgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGludGUKICAgICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKKyAgICBnbDo6R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShwbmFt
ZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiAKICAgICBzd2l0Y2ggKHBu
YW1lKSB7Ci0gICAgY2FzZSBNQVhfVEVYVFVSRV9TSVpFOgotICAgICAgICBnbDo6R2V0SW50ZWdl
cnYoTUFYX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygp
LnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQotICAgICAgICAgICAgKnZh
bHVlID0gc3RkOjptaW4oNDA5NiwgKnZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBN
QVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoTUFYX0NV
QkVfTUFQX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygp
LnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQotICAgICAgICAgICAgKnZh
bHVlID0gc3RkOjptaW4oMTAyNCwgKnZhbHVlKTsKLSAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIC8vIFNvbWUgb2xkZXIgaGFyZHdhcmUgYWR2ZXJ0aXNlcyBhIGxhcmdlciBt
YXhpbXVtIHRoYW4gdGhleQogICAgIC8vIGNhbiBhY3R1YWxseSBoYW5kbGUuIFJhdGhlciB0aGFu
IGRldGVjdGluZyBzdWNoIGRldmljZXMsIHNpbXBseQogICAgIC8vIGNsYW1wIHRoZSBtYXhpbXVt
IHRvIDgxOTIsIHdoaWNoIGlzIGJpZyBlbm91Z2ggZm9yIGEgNUsgZGlzcGxheS4KICAgICBjYXNl
IE1BWF9SRU5ERVJCVUZGRVJfU0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9SRU5E
RVJCVUZGRVJfU0laRSwgdmFsdWUpOwogICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbig4MTkyLCAq
dmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1BWF9WSUVXUE9SVF9ESU1TOgotICAg
ICAgICBnbDo6R2V0SW50ZWdlcnYoTUFYX1ZJRVdQT1JUX0RJTVMsIHZhbHVlKTsKICAgICAgICAg
dmFsdWVbMF0gPSBzdGQ6Om1pbig4MTkyLCB2YWx1ZVswXSk7CiAgICAgICAgIHZhbHVlWzFdID0g
c3RkOjptaW4oODE5MiwgdmFsdWVbMV0pOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBi
cmVhazsKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkKLXsK
LSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKLX0KLQogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBw
cmVjaXNpb24pCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTEyMTEsNyAr
MTE5Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1J
bXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHCiAKICAgICBHTGludCBtYXhVbmlmb3Jt
U2l6ZSA9IDA7CiAgICAgZ2w6OkdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9S
TV9NQVhfTEVOR1RILCAmbWF4VW5pZm9ybVNpemUpOwotCiAgICAgVmVjdG9yPEdMY2hhcj4gbmFt
ZShtYXhVbmlmb3JtU2l6ZSk7IC8vIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVk
ZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdM
aW50IHNpemUgPSAwOwpAQCAtMTgxOCw2NCArMTc5OCw2NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICBn
bDo6QmluZFZlcnRleEFycmF5KGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1
ZSk7CisgICAgZ2w6OkdldEJvb2xlYW52Um9idXN0QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUs
IG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZl
clBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dM
aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFs
dWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1
cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1
ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEZsb2F0dlJvYnVz
dEFOR0xFKHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KICAg
ICAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYoR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50NjQgdmFsdWUg
PSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgICp2YWx1ZSA9IDA7Ci0gICAgZ2w6OkdldEludGVnZXI2NHYocG5hbWUsIHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUocG5h
bWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0gcG5hbWUsIEdD
R0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKQorR0NHTGludDY0IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkK
IHsKKyAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICp2YWx1ZSA9IDA7Ci0gICAgZ2w6OkdldEludGVn
ZXI2NGlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
IGdsOjpHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIDEsIG51bGxwdHIs
ICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkK
K0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51
bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KKyAgICAgICAgcmV0dXJuIHZhbHVlOwogICAg
IGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkKICAgICAgICAgYXR0
YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVOVCwgZWl0
aGVyIHdvcmtzLgotICAgIGdsOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVu
dW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1pdihwcm9n
cmFtLCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFBy
b2dyYW1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOwor
ICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbm1hbmdsZWRJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyc1syXSwgR0NHTHNpemVp
IGNvdW50LCBjb25zdCBTdHJpbmcmIGxvZykKQEAgLTE5MjEsMjIgKzE5MDQsMjMgQEAgU3RyaW5n
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0pCiAgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291
bnQsIFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgZ2w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFt
ZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBw
bmFtZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKLQorICAgIEdDR0xpbnQgdmFsdWUgPSAwOwog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICBnbDo6R2V0U2hhZGVyaXZSb2J1c3RBTkdMRShzaGFkZXIsIHBuYW1lLCAxLCBudWxs
cHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpA
QCAtMTk2NCw0NCArMTk0OCw0NiBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KQogICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmdihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZs
b2F0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGZsb2F0IHZhbHVlID0gMC5mOwogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2
YWx1ZTsKKyAgICBnbDo6R2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1l
LCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUp
CiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRlcml2KHRhcmdldCwg
cG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRUZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7Cisg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRV
bmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NH
TGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBnbDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZSk7CisgICAgZ2w6OkdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCB2
YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0VW5pZm9ybWl2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6Okdl
dFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbDo6R2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplLCBudWxscHRy
LCB2YWx1ZS5kYXRhKTsKIH0KIAogR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBu
YW1lKQpAQCAtMjAxNCwyMCArMjAwMCwyMCBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAg
IHJldHVybiBnbDo6R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEo
KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0VmVy
dGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFZlcnRleEF0dHJp
YmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1
ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFZl
cnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRy
aWJpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFs
dWUuZGF0YSk7CiB9CiAKIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKQEAgLTIw
MzYsNyArMjAyMiw3IEBAIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgR0x2b2lkKiBwb2ludGVyID0gMDsKLSAgICBnbDo6R2V0VmVydGV4QXR0cmliUG9p
bnRlcnYoaW5kZXgsIHBuYW1lLCAmcG9pbnRlcik7CisgICAgZ2w6OkdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCAxLCBudWxscHRyLCAmcG9pbnRlcik7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4ocG9pbnRlcikpOwogfQogCkBAIC0yOTUzLDYgKzI5MzksMTQgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmEKICAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3Ro
LCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+
IHBhcmFtcykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1
cm47CisgICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbSwg
dW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSwgbnVsbHB0ciwgcGFyYW1z
LmRhdGEpOworfQorCisKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiBH
cmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0Nv
bnRleHRHTENWQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAppbmRleCA2ZDUwM2JjYmE3NWFmYjhjNTA3OTBi
MWMyNGUyODI4MzZjNTVkOTQ5Li5jYmFmMDYwYjU1NjM5ZmRiNTVhYjdlYWU0MTdlZjVkMjA0Mzlk
OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFw
aGljc0NvbnRleHRHTENWQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKQEAgLTQ2NCw4ICs0NjQsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVj
dHMoKQogCiAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyRGlyZWN0KHZlcnRleFNoYWRlcik7
CiAKLSAgICBHQ0dMaW50IHN0YXR1cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdih2
ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7
CisgICAgR0NHTGludCBzdGF0dXMgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkodmVydGV4U2hhZGVy
LCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMpOwogICAgIGlmICghc3RhdHVzKSB7
CiAgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6
ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gVmVydGV4IHNoYWRlciBmYWlsZWQgdG8gY29tcGlsZS4i
LCB0aGlzKTsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsK
QEAgLTQ4MCw3ICs0NzksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlh
bGl6ZVVWQ29udGV4dE9iamVjdHMoKQogCiAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyRGly
ZWN0KGZyYWdtZW50U2hhZGVyKTsKIAotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoZnJhZ21l
bnRTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7Cisg
ICAgc3RhdHVzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGZyYWdtZW50U2hhZGVyLCBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMpOwogICAgIGlmICghc3RhdHVzKSB7CiAgICAgICAg
IExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4
dE9iamVjdHMoJXApIC0gRnJhZ21lbnQgc2hhZGVyIGZhaWxlZCB0byBjb21waWxlLiIsIHRoaXMp
OwogICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwpAQCAtNDkz
LDcgKzQ5Miw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZD
b250ZXh0T2JqZWN0cygpCiAgICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIobV95dXZQcm9ncmFt
LCBmcmFnbWVudFNoYWRlcik7CiAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShtX3l1dlByb2dy
YW0pOwogCi0gICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYobV95dXZQcm9ncmFtLCBHcmFwaGlj
c0NvbnRleHRHTDo6TElOS19TVEFUVVMsICZzdGF0dXMpOworICAgIHN0YXR1cyA9IG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWkobV95dXZQcm9ncmFtLCBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFU
VVMpOwogICAgIGlmICghc3RhdHVzKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gUHJvZ3JhbSBm
YWlsZWQgdG8gbGluay4iLCB0aGlzKTsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIo
dmVydGV4U2hhZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5k
ZXggODA2MTBkZTdkNDMxY2Y0MjYyOTk3ZjRmZmNlMzdiNmJlMWVlNzQwNC4uMzRmZWYwNWI2MjM3
ODcwZDA1YmQxYTMyYzJmNDVhNDE5MWIzZjcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIFNoQnVp
bHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlcyA9IGNvbXBpbGVyLmdldFJlc291cmNlcygpOwog
ICAgICAgICBpZiAoIUFOR0xFUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMpIHsKICAgICAgICAg
ICAgIEFOR0xFUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMgPSAxOwotICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAm
QU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMpOworICAgICAgICAgICAgQU5HTEVSZXNvdXJj
ZXMuTWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpN
QVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJjZXMo
QU5HTEVSZXNvdXJjZXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09ICJHTF9F
WFRfc2hhZGVyX3RleHR1cmVfbG9kIikgewpAQCAtMTcyLDcgKzE3Miw3IEBAIFN0cmluZyBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0CiAKICAgICBBTkdMRVdlYktpdEJyaWRnZSYgY29tcGlsZXIgPSBtX2NvbnRl
eHQtPm1fY29tcGlsZXI7CiAKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgR3Jh
cGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFLCAmR0xzaGFkZXJUeXBlKTsKKyAgICBHTHNoYWRl
clR5cGUgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6
U0hBREVSX1RZUEUpOwogCiAgICAgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHRH
TDo6VkVSVEVYX1NIQURFUikKICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX1ZFUlRF
WDsKQEAgLTI1NCw4MSArMjU0LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMaW4KICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xib29sZWFuICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RmxvYXR2Um9idXN0QU5H
TEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xm
bG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5H
TEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCB2b2lkICoqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFO
R0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKikK
IHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKQEAgLTQwMCwxMSArMzI1LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLAogICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
CiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0xpbnQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKQEAgLTQzMCwxNiArMzUwLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQs
IEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXI2NHZS
b2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VyNjRpX3ZS
b2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmgKaW5kZXggMDQ4OTRiOTFjODJjYzRiMWIyMDlhN2FmZDIyOWNiZGNhOWEwMWE0My4u
OTdlZWRmYjc0ODVjODMyZjc5M2M4Y2ZmMGZhMTdmYmZmYmU2NTg4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNjksMjEgKzY5LDYgQEAgcHVibGljOgogICAgIGJv
b2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAogICAgIC8vIEdM
X0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCBnZXRCb29sZWFudlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4
QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NH
THNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAq
cGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTk5LDE0ICs4NCwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRCdWZmZXJQb2lu
dGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBpbnQgKmRhdGEp
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQg
KmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5jcHAKaW5kZXggYWI4Y2I1NGY1ZTg3OWVmNGI4YTkwZDE5YTdlYzkyYzg5Y2UyMDU3Yi4u
ZDI4ZjRhMDMxZWJkYzQ4Mzg3NWQzOTg0ODdkNTc4NzQ4ZmRlNDdlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCkBAIC03NCwxMSArNzQsOCBAQCBib29sIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBGb3IgR0xfRVhUX3JvYnVzdG5lc3MsIGNoZWNrIHRoYXQgdGhlIGNvbnRl
eHQgc3VwcG9ydHMgcm9idXN0IGFjY2Vzcy4KLSAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3JvYnVz
dG5lc3MiKSB7Ci0gICAgICAgIEdMaW50IHJvYnVzdEFjY2VzcyA9IEdMX0ZBTFNFOwotICAgICAg
ICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6Q09OVEVYVF9ST0JVU1RfQUND
RVNTLCAmcm9idXN0QWNjZXNzKTsKLSAgICAgICAgcmV0dXJuIHJvYnVzdEFjY2VzcyA9PSBHTF9U
UlVFOwotICAgIH0KKyAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3JvYnVzdG5lc3MiKQorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6Q09OVEVYVF9ST0JV
U1RfQUNDRVNTKSA9PSBHTF9UUlVFOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDc3NWY5MDQwNmY0MmE2MDkxZGRjM2ZlYTFlNTBi
N2MyYjBhZTRkYTEuLmMzZjQ4ZThjNjg5ZjBiMzk3YjZmN2U1NjgzNDgyNGE2YThiOWY3NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0xOTcsMzUgKzE5NywzNCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7CiAgICAgdm9pZCBnZXRBdHRhY2hl
ZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdD
R0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOwogICAgIEdD
R0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9v
bGVhbiogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAgIHZv
aWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1
ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7
Ci0gICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZp
bmFsOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCog
dmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEludGVnZXJpX3YoR0NHTGVudW0gcG5hbWUs
IEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRJbnRl
Z2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lk
IGdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2
NCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lk
IGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmlu
YWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAjaWYgIVVTRShBTkdMRSkKICAgICB2
b2lkIGdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSk7CiAjZW5kaWYgLy8gIVVTRShBTkdM
RSkKICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7
CiAgICAgU3RyaW5nIGdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVjdFsyXSwgR0NH
THNpemVpLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5h
bDsKLSAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAg
ICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAg
dm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVu
dW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmlu
YWw7CiAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsK
ICAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0
VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0
KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRV
bmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAg
ICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMdWludCogdmFsdWUpIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJh
bWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5h
bDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQg
Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1
aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZv
cm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRl
eEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1
ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0
dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0
PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBH
Q0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBtb2RlKSBmaW5hbDsKQEAgLTQzOCw2ICs0MzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmlm
b3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7
CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+
IHBhcmFtcykgZmluYWw7CiAKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgcmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNzUwZWQzMjZlY2U2
NWU4OGY2YjQxMzYwMTVjNGY5MzM3NDQ4OWNhNS4uY2VmMDA2MGM3OTkzMDExMjc5MWQ3YTQ0ZTQ4
ZjY0NzM4ZDgwOWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIDo6
Z2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUp
CiB7CiAgICAgLy8gTmVlZCB0byBlbXVsYXRlIE1BWF9GUkFHTUVOVC9WRVJURVhfVU5JRk9STV9W
RUNUT1JTIGFuZCBNQVhfVkFSWUlOR19WRUNUT1JTCiAgICAgLy8gYmVjYXVzZSBkZXNrdG9wIEdM
J3MgY29ycmVzcG9uZGluZyBxdWVyaWVzIHJldHVybiB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMK
QEAgLTI3MiwzOSArMjcyLDM5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldElu
dGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKICAgICBzd2l0Y2ggKHBuYW1l
KSB7CiAjaWYgVVNFKE9QRU5HTCkKICAgICBjYXNlIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RP
UlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01Q
T05FTlRTLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01FTlRf
VU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgKnZhbHVlIC89IDQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAg
ICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFs
dWUpOworICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBP
TkVOVFMsIHZhbHVlLmRhdGEpOwogICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNQVhfVkFSWUlOR19WRUNUT1JTOgogICAgICAgICBpZiAoaXNHTEVTMkNvbXBs
aWFudCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoOjpnbEdldEVycm9yKCkgPT0gR0xfTk9fRVJS
T1IpOwotICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMs
IHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNU
T1JTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgICAgIGlmICg6OmdsR2V0RXJyb3IoKSA9PSBHTF9J
TlZBTElEX0VOVU0pIHsKLSAgICAgICAgICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZB
UllJTkdfQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2Vy
dihHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgICAgICAg
ICAqdmFsdWUgLz0gNDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlKTsKKyAgICAg
ICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlLmRhdGEp
OwogICAgICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKICAgICBjYXNlIE1BWF9URVhUVVJFX1NJWkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2Vy
dihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhf
VEVYVFVSRV9TSVpFLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5y
ZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkKICAgICAgICAgICAgICp2YWx1
ZSA9IHN0ZDo6bWluKDQwOTYsICp2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFY
X0NVQkVfTUFQX1RFWFRVUkVfU0laRToKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJF
X01BUF9URVhUVVJFX1NJWkUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9D
VUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVlLmRhdGEpOwogICAgICAgICBpZiAoZ2V0RXh0ZW5z
aW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAgICAgICAg
ICAgKnZhbHVlID0gc3RkOjptaW4oMTAyNCwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAg
IDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuZGF0YSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBiMGMxZjFkZmQ0
M2Q0MTUwNDI3ZmY1MjFhY2Y2ODQzNjI3MjQwMDVhLi41ZTQzYTY3MzdjY2M3YjI5MDczM2M1MzFl
YzNiOTUzODNiZGM3OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHAKQEAgLTE3MTcsMTIgKzE3MTcsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAjZW5kaWYK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0g
cG5hbWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUp
CiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEJvb2xlYW52KHBu
YW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCkBAIC0xNzMzLDY1ICsxNzMzLDU3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
CiAgICAgOjpnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Rmxv
YXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRG
bG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5kYXRh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdihHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludDY0IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgICp2YWx1ZSA9
IDA7Ci0gICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBtdXN0IGZp
cnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQgaW5pdGlhbGlu
ZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KLSAgICAvLyA6OmdsR2V0
SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2YWx1
ZSkKLXsKLSAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICp2YWx1ZSA9IDA7CisgICAgR0NHTGludDY0
IHZhbHVlID0gMDsKICAgICAvLyBGSVhNRSAxNDExNzg6IEJlZm9yZSBlbmFibGluZyB0aGlzIHdl
IG11c3QgZmlyc3Qgc3dpdGNoIG92ZXIgdG8gdXNpbmcgZ2wzLmggYW5kIGNyZWF0aW5nIGFuZCBp
bml0aWFsaW5nIHRoZSBXZWJHTDIgY29udGV4dCB1c2luZyBPcGVuR0wgRVMgMy4wLgogICAgIC8v
IDo6Z2xHZXRJbnRlZ2VyNjR2KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKQorR0NHTGludDY0IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWlu
dCBpbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwogICAgIFVOVVNFRF9QQVJBTShp
bmRleCk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgKnZhbHVlID0gMDsKKyAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwogICAgIC8vIEZJWE1F
IDE0MTE3ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0Y2ggb3ZlciB0
byB1c2luZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdlYkdMMiBjb250
ZXh0IHVzaW5nIE9wZW5HTCBFUyAzLjAuCiAgICAgLy8gOjpnbEdldEludGVnZXI2NGlfdihwbmFt
ZSwgaW5kZXgsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQs
IEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKLQogICAgIGlmIChhdHRhY2htZW50
ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkKICAgICAgICAgYXR0YWNobWVudCA9IERFUFRI
X0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgotICAg
IDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFj
aG1lbnQsIHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0
dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFt
aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFs
dWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaShQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJv
Z3JhbSwgcG5hbWUsIHZhbHVlKTsKKyAgICBHQ0dMaW50IHZhbHVlIHAgPSAwOworICAgIDo6Z2xH
ZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXROb25CdWlsdEluQWN0aXZlU3lt
Ym9sQ291bnQoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCkBAIC0xODk5LDIwICsxODkxLDIxIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtKQogICAg
IHJldHVybiBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIGNvdW50LCBTdHJpbmcoaW5mby5k
YXRhKCksIHNpemUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAg
R0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdl
dCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYo
UGxhdGZvcm1HTE9iamVjdCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkK
K0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9i
amVjdCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIEFTU0VSVChzaGFkZXIpOwotCisg
ICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKIAogICAgIGNvbnN0IGF1dG8m
IHJlc3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKQEAgLTE5MjAsMjggKzE5
MTMsMjkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYoUGxhdGZv
cm1HTE9iamVjdCBzaGFkZXIsIEdDR0xlbnVtIHBuYW0KICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAg
ICAgY2FzZSBERUxFVEVfU1RBVFVTOgogICAgIGNhc2UgU0hBREVSX1RZUEU6Ci0gICAgICAgIDo6
Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRTaGFk
ZXJpdihzaGFkZXIsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENP
TVBJTEVfU1RBVFVTOgogICAgICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVu
ZCgpKSB7Ci0gICAgICAgICAgICAqdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KGZhbHNlKTsKKyAg
ICAgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8aW50PihmYWxzZSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKnZhbHVlID0gc3RhdGljX2Nhc3Q8aW50PihyZXN1
bHQtPnZhbHVlLmlzVmFsaWQpOworICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PGludD4ocmVz
dWx0LT52YWx1ZS5pc1ZhbGlkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkZPX0xPR19M
RU5HVEg6CiAgICAgICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpIHsK
LSAgICAgICAgICAgICp2YWx1ZSA9IDA7CisgICAgICAgICAgICB2YWx1ZSA9IDA7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKnZhbHVlID0gZ2V0U2hhZGVySW5mb0xv
ZyhzaGFkZXIpLmxlbmd0aCgpOworICAgICAgICB2YWx1ZSA9IGdldFNoYWRlckluZm9Mb2coc2hh
ZGVyKS5sZW5ndGgoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTSEFERVJfU09VUkNFX0xF
TkdUSDoKLSAgICAgICAgKnZhbHVlID0gZ2V0U2hhZGVyU291cmNlKHNoYWRlcikubGVuZ3RoKCk7
CisgICAgICAgIHZhbHVlID0gZ2V0U2hhZGVyU291cmNlKHNoYWRlcikubGVuZ3RoKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFM
SURfRU5VTSk7CiAgICAgfQorICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KQpAQCAtMTk4NiwzOSArMTk4MCw0MSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKICAgICByZXR1cm4gcmVz
dWx0LT52YWx1ZS5zb3VyY2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9h
dCogdmFsdWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFt
ZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQg
dmFsdWUgPSAwLmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQs
IHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7Cisg
ICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUs
IHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFVuaWZv
cm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIDo6Z2xHZXRVbmlmb3JtZnYocHJv
Z3JhbSwgbG9jYXRpb24sIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRp
b24sIHZhbHVlKTsKKyAgICA6OmdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVp
dihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2
YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4g
dmFsdWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTShs
b2NhdGlvbik7CkBAIC0yMDM3LDIwICsyMDMzLDIwIEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNv
CiAgICAgcmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVkTmFtZS51
dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVy
dGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZh
bHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0
VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFt
ZSwgdmFsdWUpOworICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVl
LmRhdGEpOwogfQogCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0zMTQz
LDcgKzMxMzksMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJBTShk
c3RPZmZzZXQpOwogfQogCi0KK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQoreworICAgIFVO
VVNFRF9QQVJBTShwcm9ncmFtKTsKKyAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrSW5kZXgp
OworICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhcmFtcyk7CiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgKFVTRShPUEVOR0wp
IHx8IFVTRShPUEVOR0xfRVMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwCmluZGV4IDYwZmRmYzY1Zjg3Mzk1ODk1Nzk1YTg0ZWYxZTA5YWJmNmQ3YWE4NDMuLjUyNDE5
ZjU2NmIxZjI1OGE3ZGE0MTJkMTMxY2Y2N2Y2ZTA5NjEzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTE5NiwxMiArMTk2LDEyIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBpbnRlCiAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICA6
OmdsR2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlw
ZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNp
c2lvbikKQEAgLTMzMCwxMyArMzMwLDEzIEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAg
U2hCdWlsdEluUmVzb3VyY2VzIEFOR0xFUmVzb3VyY2VzOwogICAgIFNoSW5pdEJ1aWx0SW5SZXNv
dXJjZXMoJkFOR0xFUmVzb3VyY2VzKTsKICAgICAKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVy
dGV4QXR0cmlicyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1B
WF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9y
bVZlY3RvcnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhf
VkFSWUlOR19WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMpOwotICAg
IGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX1RFWFRVUkVf
SU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7
Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9DT01CSU5FRF9U
RVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1h
Z2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9U
RVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMp
OwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfRlJBR01FTlRf
VU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9y
cyk7CisgICAgOjpnbEdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVS
VEVYX0FUVFJJQlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRyaWJzKTsKKyAgICA6Omds
R2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVU5JRk9STV9W
RUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOworICAgIDo6
Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZBUllJTkdfVkVDVE9S
UywgJkFOR0xFUmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzKTsKKyAgICA6OmdsR2V0SW50ZWdl
cnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklU
UywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICA6Omds
R2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9DT01CSU5FRF9URVhUVVJF
X0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0
cyk7CisgICAgOjpnbEdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVEVY
VFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzKTsK
KyAgICA6OmdsR2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9GUkFHTUVO
VF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0
b3JzKTsKICAgICAKICAgICAvLyBBbHdheXMgc2V0IHRvIDEgZm9yIE9wZW5HTCBFUy4KICAgICBB
TkdMRVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDg5ZDE0ZDI5NTZiNzJmYTQyZWU5ODM2
MmFiODBkMmJiMzBhYjNlZDIuLmE5YjhlMjhlM2M3ZTZhMjQ3MGI3ZjVkNTRjZjdiYmFmYzAxYmU2
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3Bw
CkBAIC0zMTEsMTMgKzMxMSwxMyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIFNoQnVp
bHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlczsKICAgICBzaDo6SW5pdEJ1aWx0SW5SZXNvdXJj
ZXMoJkFOR0xFUmVzb3VyY2VzKTsKIAotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpNQVhfVkVSVEVYX0FUVFJJQlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRy
aWJzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRF
WF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9y
cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WQVJZSU5H
X1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7Ci0gICAgZ2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9V
TklUUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBn
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVf
SU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
KTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAg
Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9GUkFHTUVOVF9VTklGT1JN
X1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKTsKKyAg
ICBBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRyaWJzID0gZ2V0SW50ZWdlcnYoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfQVRUUklCUyk7CisgICAgQU5HTEVSZXNvdXJjZXMu
TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPSBnZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4
VmFyeWluZ1ZlY3RvcnMgPSBnZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhf
VkFSWUlOR19WRUNUT1JTKTsKKyAgICBBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1h
Z2VVbml0cyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhf
VEVYVFVSRV9JTUFHRV9VTklUUyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9D
T01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKKyAgICBBTkdMRVJlc291cmNlcy5NYXhUZXh0
dXJlSW1hZ2VVbml0cyA9IGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhf
VEVYVFVSRV9JTUFHRV9VTklUUyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlm
b3JtVmVjdG9ycyA9IGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfRlJB
R01FTlRfVU5JRk9STV9WRUNUT1JTKTsKIAogICAgIC8vIEFsd2F5cyBzZXQgdG8gMSBmb3IgT3Bl
bkdMIEVTLgogICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gMTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414307</attachid>
            <date>2020-11-16 22:02:43 -0800</date>
            <delta_ts>2020-11-16 23:12:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201117080241.patch</filename>
            <type>text/plain</type>
            <size>116686</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFiMzgwY2VlY2RkMjk1
NGU1ZGM4NGU3MGZlMzc2YmIyZTBjYmQ0OS4uYjIyNWMyZDFkYmRmZTEyMDMyMzY3MzU3MTMwZTEz
NGM0NGMxYjdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMiBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRo
ZSB2YWx1ZSBpcyBhIG5vcm1hbCB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIHJlZHVjZXMgdGhlIHJp
c2sKKyAgICAgICAgb2YgaGF2aW5nIHVuaW5pdGlhbGl6ZWQgcmVjZWl2ZSBsb2NhdGlvbi4KKwor
ICAgICAgICBDaGFuZ2UgdGhlIGdldHRlcnMgdGhhdCBhcmUgb25seSB1c2VkIHRvIG9idGFpbiBz
aW5nbGUgdmFsdWVzIHNvCisgICAgICAgIHRoYXQgdGhlIGdldHRlciBpdHNlbGYgaGFzIHRoZSBy
ZXR1cm4gdmFsdWUuCisgICAgICAgIEFkZCBhIHNpbmdsZS12YWx1ZSBnZXR0ZXIgZm9yIGdldHRl
cnMgdGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gYWxzbworICAgICAgICBtdWx0aXBsZSB2YWx1ZXMu
CisKKyAgICAgICAgQWRkIEdDR0xTcGFuIHR5cGUgdGhhdCBpcyB1c2VkIHRvIGNvbW11bmljYXRl
IHBhaXI6IHB0ciwgbnVtYmVyIG9mCisgICAgICAgIGVsZW1lbnRzLgorCisgICAgICAgIFVzZSB0
aGUgUm9idXN0QU5HTEUgdmFyaWFudHMgb2YgdGhlIEdMIEFQSSBpbXBsZW1lbnRhdGlvbiB0byBv
YnRhaW4KKyAgICAgICAgdGhlIHZhbHVlcy4KKworICAgICAgICBSZW1vdmUgdGhlIGNvcnJlc3Bv
bmRpbmcgUm9idXN0QU5HTEUgdmFyaWFudHMgZnJvbSBFeHRlbnNpb25zR0wsIHRoZXkgYXJlCisg
ICAgICAgIGRlYWQgY29kZSBhbmQgdW51c2VkLgorCisgICAgICAgIFRoZSB0eXBlIEdDR0xTcGFu
IHdpbGwgYmUgdXNlZCB0byBzaW1wbGlmeSB0aGUgR1BVIHByb2Nlc3MgaW1wbGVtZW50YXRpb24s
CisgICAgICAgIHNpbmNlIHRoZSBidWZTaXplIHdpbGwgYmUgZXhwbGljaXRseSBhc3NvY2lhdGVk
IGluIHRoZSBwYXNzZWQgZGF0YSBwdHIsCisgICAgICAgIGluc2lkZSB0aGUgR0NHTFNwYW4gdHlw
ZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NHTFNwYW4gd2lsbCBiZSB1c2Vk
IGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAgaS5lLiBhcmJpdHJhcnkgYnVm
ZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKworICAgICAgICBSZW1vdmVzIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSB3b3JrYXJvdW5kIGZyb20gQU5HTEUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY29kZSwgaXQgd2FzIGRlYWQgY29kZSAo
aS5lIGZsYWcgYWx3YXlzIGZhbHNlKS4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBB
TkdMRSBsZXZlbC4KKworICAgICAgICBGaXhlcyBidWdzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgdmFs
dWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlIGxvY2F0aW9uIG9mIHRoZQorICAgICAgICBnb3R0ZW4g
cHJvcGVyeS4gVGhpcyB2YWx1ZSB3b3VsZCBiZSB1bndyaXR0ZW4gaW4gZWRnZS1jYXNlcyBsaWtl
IEdMIGVycm9ycywgYW5kCisgICAgICAgIHRodXMgdGhlIHJlYWQgd291bGQgdG91Y2ggdW51aW5p
dGlhbGl6ZWQgdmFsdWUuCisKKyAgICAgICAgRml4ZXMgYSBidWcgd2hlcmUgdW5pZm9ybSBibG9j
ayB2YXJpYWJsZXMgY29kZSB3b3VsZCBwYXNzIGluIHRvbyBsYXJnZSBidWZmZXIKKyAgICAgICAg
c2l6ZSB0byB0aGUgUm9idXN0QU5HTEUgY2FsbC4gVGhlIGJ1ZlNpemUgcmVmZXJzIHRvIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMsIGJ1dAorICAgICAgICB0aGUgY29kZSBwYXNzZWQgaW4gdGhlIHNp
emUgb2YgdGhlIGJ1ZmZlciAoaS5lLiBudW1iZXIgb2YgZWxlbWVudHMgKiBzaXplIG9mCisgICAg
ICAgIGVsZW1lbnQpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSByZWZhY3Rvci4KKworICAg
ICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNj
cmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFBy
b2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXpl
TmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRCb29sZWFuUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZsb2F0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEludFBhcmFtZXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OmdldEZs
b2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRCb29sZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRJbnRlZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaDoKKyAgICAgICAg
KEdDR0xTcGFuOjpHQ0dMU3Bhbik6CisgICAgICAgIChHQ0dMU3Bhbjo6b3BlcmF0b3JbXSk6Cisg
ICAgICAgIChHQ0dMU3Bhbjo6b3BlcmF0b3IqKToKKyAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KToKKyAgICAgICAgKG1ha2VHQ0dMU3Bhbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbnZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RmxvYXR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZl
cnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50
ZWdlcjY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vydik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJv
b2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWkpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRl
cmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEJ1ZmZlclBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRTaGFkZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0
aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFu
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldElu
dGVnZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
SW50ZWdlcjY0aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdl
cnYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4
UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50
ZWdlcjY0dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0SW50ZWdlcjY0aV92KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
UHJvZ3JhbWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRl
cmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRUZXhQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vydik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wpOgorCiAyMDIwLTExLTE2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CiAKICAgICAgICAgRmluYWwgcmVmYWN0b3IgZm9yIFdlYkdMIGltcGxlbWVudGF0
aW9uIHRvIHVzZSBvbmx5IEdyYXBoaWNzQ29udGV4dEdMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNj
cmVlbkNhbnZhcy5jcHAKaW5kZXggMmVmMTBiMGE0ZjM0NmVmZTFiOTM4ZTQ2ZTAwNTNhOGEzMzk0
NTM0NC4uMDRiMzBmOGY2NDY0MTQ2ODA2N2UzMDkyNmU3NGU0ZjJkOWMxOGI5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0lt
YWdlQml0bWFwKCkKICAgICAgICAgLy8gY3JlYXRlcyBhIG5ldyBiYWNraW5nIHN0b3JlLiBTaW5j
ZSB3ZSdyZSBub3QgZG9pbmcgdGhhdCB5ZXQsIHdlCiAgICAgICAgIC8vIG5lZWQgdG8gZXJhc2Ug
d2hhdCdzIHRoZXJlLgogCi0gICAgICAgIEdDR0xmbG9hdCBjbGVhckNvbG9yWzRdOworICAgICAg
ICBHQ0dMZmxvYXQgY2xlYXJDb2xvcls0XSB7IH07CiAgICAgICAgIGdjM2QtPmdldEZsb2F0dihH
cmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQ0xFQVJfVkFMVUUsIGNsZWFyQ29sb3IpOwogICAgICAg
ICBnYzNkLT5jbGVhckNvbG9yKDAsIDAsIDAsIDApOwogICAgICAgICBnYzNkLT5jbGVhcihHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJVCB8IEdyYXBoaWNzQ29udGV4dEdMOjpERVBU
SF9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IDgwNzNhZGMxMTE0OTIxNWY1NmQxZTQ1ZGE2ODRkZTgyODU4MTdlOTIuLjU1
YmMxZjhkYjI0OWQzMzgyMmU3ODg5Y2E3ODNmNWJlYzAyNWEyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0x
NTksOSArMTU5LDkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3
Q29udGV4dCgpCiAgICAgbV91bnBhY2tTa2lwUm93cyA9IDA7CiAgICAgbV91bnBhY2tTa2lwSW1h
Z2VzID0gMDsKIAotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
Ok1BWF8zRF9URVhUVVJFX1NJWkUsICZtX21heDNEVGV4dHVyZVNpemUpOworICAgIG1fbWF4M0RU
ZXh0dXJlU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFY
XzNEX1RFWFRVUkVfU0laRSk7CiAgICAgbV9tYXgzRFRleHR1cmVMZXZlbCA9IFdlYkdMVGV4dHVy
ZTo6Y29tcHV0ZUxldmVsQ291bnQobV9tYXgzRFRleHR1cmVTaXplLCBtX21heDNEVGV4dHVyZVNp
emUpOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9B
UlJBWV9URVhUVVJFX0xBWUVSUywgJm1fbWF4QXJyYXlUZXh0dXJlTGF5ZXJzKTsKKyAgICBtX21h
eEFycmF5VGV4dHVyZUxheWVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRl
eHRHTDo6TUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTKTsKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCk7CiAKQEAgLTIwOCw5ICsyMDgsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVVbnBhY2tQYXJhbWV0ZXJzKCkKIAog
bG9uZyBsb25nIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0UGFyYW1ldGVyKEdDR0xl
bnVtIHBuYW1lKQogewotICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyNjR2KHBuYW1lLCAmdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjQocG5hbWUpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKQpAQCAtMTA1NSwyMyAr
MTA1MywxNCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZQogICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9MRVZFTFM6CiAg
ICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVf
V1JBUF9SOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9JTU1V
VEFCTEVfRk9STUFUOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2Nv
bnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih2YWx1ZSk7Ci0gICAgfQorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9SOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVDoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSk7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgogICAgICAgICBGQUxMVEhS
T1VHSDsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6IHsKLSAg
ICAgICAgR0NHTGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJh
bWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0g
ICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDoKKyAgICAg
ICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VGV4UGFyYW1ldGVyKHRhcmdldCwgcG5hbWUpOwogICAgIH0KQEAgLTI0NDUsMTEgKzI0MzQsOCBA
QCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX1NJWkU6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VU5JRk9STV9CVUZGRVJfU1RBUlQ6IHsKLSAgICAgICAgR0NHTGludDY0IHZhbHVlID0gMDsKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpX3YodGFyZ2V0LCBpbmRleCwgJnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpVTklGT1JNX0JVRkZFUl9TVEFSVDoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50
ZWdlcjY0aSh0YXJnZXQsIGluZGV4KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0JVRkZFUl9CSU5ESU5HOgogICAgICAgICBpZiAoaW5kZXggPj0gbV9ib3VuZEluZGV4ZWRV
bmlmb3JtQnVmZmVycy5zaXplKCkpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZ2V0SW5kZXhlZFBhcmFtZXRlciIsICJp
bmRleCBvdXQgb2YgcmFuZ2UiKTsKQEAgLTI1MjQsMjQgKzI1MTAsMjAgQEAgV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKFdlYkdM
UHJvZ3JhbSYgcHIKICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybUJs
b2NrUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBH
Q0dMaW50IHJlc3VsdCA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX0JMT0NLX0RBVEFfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUzoKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHNpemVvZihyZXN1bHQpLCBudWxs
cHRyLCAmcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50PihyZXN1
bHQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybUJsb2NraShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwg
cG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0FDVElW
RV9VTklGT1JNX0lORElDRVM6IHsKLSAgICAgICAgR0NHTGludCBzaXplID0gMDsKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RB
TkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TLCBzaXplb2Yoc2l6ZSksIG51bGxwdHIs
ICZzaXplKTsKKyAgICAgICAgR0NHTGludCBzaXplID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBHcmFwaGljc0Nv
bnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVMpOwogICAgICAgICBWZWN0b3I8
R0NHTGludD4gcGFyYW1zKHNpemUsIDApOwotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCks
IHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgc2l6ZW9mKHBhcmFtc1swXSkgKiBwYXJhbXMuc2l6
ZSgpLCBudWxscHRyLCBwYXJhbXMuZGF0YSgpKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgICAgIHJldHVybiBwYXJhbXMubWFwKFtdKGF1dG8geCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKICAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVI6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX0ZS
QUdNRU5UX1NIQURFUjoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0QWN0
aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxv
Y2tJbmRleCwgcG5hbWUsIHNpemVvZihyZXN1bHQpLCBudWxscHRyLCAmcmVzdWx0KTsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHJlc3VsdCk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2kocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lKSk7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdl
dEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjc3Miw5ICsyNzU0LDcgQEAgV2ViR0xBbnkg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KEdDR0xlbnVtIHRhcmcKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXR0YWNobWVudCIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwogICAgIH0KICAg
ICBpZiAoIXZhbGlkYXRlTm9uRGVmYXVsdEZyYW1lYnVmZmVyQXR0YWNobWVudChmdW5jdGlvbk5h
bWUsIGF0dGFjaG1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3OTYsMTEgKzI3
NzYsOCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0RFUFRIX1NJWkU6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9TVEVOQ0lMX1NJWkU6Ci0g
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05F
TlRfVFlQRTogewotICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQs
IHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgfQogCiAgICAgaWYgKG9iamVj
dC0+aXNUZXh0dXJlKCkpIHsKQEAgLTI4MTEsMTEgKzI3ODgsOCBAQCBXZWJHTEFueSBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVu
dW0gdGFyZwogICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIocmVpbnRlcnByZXRfY2FzdDxX
ZWJHTFRleHR1cmUmPigqb2JqZWN0KSk7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZB
Q0U6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfQ09MT1JfRU5DT0RJTkc6IHsKLSAgICAgICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOwotICAgICAgICB9CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc6CisgICAgICAgICAgICByZXR1cm4gbV9jb250
ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVu
dCwgcG5hbWUpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxp
ZCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI4OTcsNyArMjg3MSw3IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dmFsaWRhdGVOb25EZWZhdWx0RnJhbWVidWZmZXJBdHRhY2htZW50KGNvbnN0IGNo
YXIqCiBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKCkK
IHsKICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlMsICZtX21heERyYXdCdWZm
ZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihH
cmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUyk7CiAgICAgcmV0dXJuIG1fbWF4RHJh
d0J1ZmZlcnM7CiB9CiAKQEAgLTI5MDUsNyArMjg3OSw3IEBAIEdDR0xpbnQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygpCiB7CiAgICAgLy8gRHJhd0J1ZmZl
cnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID09IE1BWF9EUkFXX0JVRkZFUlMKICAg
ICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRl
Z2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUywgJm1fbWF4Q29sb3JBdHRh
Y2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0
SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUyk7CiAgICAgcmV0dXJu
IG1fbWF4Q29sb3JBdHRhY2htZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRleCA5Y2IwZjg1NmI1OGUxMGU2ZjQ3MzA5ZTZm
ZTNjMTBlMjY3MDk3MTY2Li40OTQxNTZlMWU2NWI2MDI5MTkwZGI3YzFjMDI2YWRmODAzZGRhOGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cApAQCAtOTgsMTAgKzk4LDggQEAgYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJH
TFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiB3ZWIKICAgICBHcmFwaGlj
c0NvbnRleHRHTCogY29udGV4dCA9IHdlYmdsQ29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpOwog
CiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgd2UgbWFrZSBzdXJlIEdMX0VYVF9kcmF3X2J1
ZmZlcnMgaXMgc3VwcG9ydGVkLgotICAgIEdDR0xpbnQgbWF4RHJhd0J1ZmZlcnMgPSAwOwotICAg
IEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50cyA9IDA7Ci0gICAgY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJm1heERyYXdCdWZmZXJzKTsK
LSAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQsICZtYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICBHQ0dMaW50IG1heERyYXdCdWZm
ZXJzID0gY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNf
RVhUKTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRl
Z2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgaWYgKG1h
eERyYXdCdWZmZXJzIDwgNCB8fCBtYXhDb2xvckF0dGFjaG1lbnRzIDwgNCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuY3BwCmluZGV4IDAxYTAyZjUxZDcyZDg5MmVhYjhlOGMyNzA1MDZjYmZjNGU3MzY1NGEu
LmFmNGYwNDE3YjFiM2Q4ODk0ZWE1ZjkwZjM0YWRiNDI0YTdhMzVhZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC02MTMsMjAgKzYx
MywyMCBAQCBib29sIFdlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2htZW50cyhHcmFw
aGljc0NvbnRleHRHTCogZzNkLCBjb25zdCBjaGFyKgogICAgIEdDR0xib29sZWFuIGlzU2Npc3Nv
ckVuYWJsZWQgPSAwOwogICAgIEdDR0xib29sZWFuIGlzRGl0aGVyRW5hYmxlZCA9IDA7CiAgICAg
aWYgKGluaXRDb2xvcikgewotICAgICAgICBnM2QtPmdldEZsb2F0dihHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQ0xFQVJfVkFMVUUsIGNvbG9yQ2xlYXJWYWx1ZSk7Ci0gICAgICAgIGczZC0+Z2V0
Qm9vbGVhbnYoR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX1dSSVRFTUFTSywgY29sb3JNYXNrKTsK
KyAgICAgICAgY29sb3JDbGVhclZhbHVlID0gZzNkLT5nZXRGbG9hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQ0xFQVJfVkFMVUUpOworICAgICAgICBjb2xvck1hc2sgPSBnM2QtPmdldEJvb2xl
YW4oR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX1dSSVRFTUFTSyk7CiAgICAgICAgIGczZC0+Y2xl
YXJDb2xvcigwLCAwLCAwLCAwKTsKICAgICAgICAgZzNkLT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSk7CiAgICAgfQogICAgIGlmIChpbml0RGVwdGgpIHsKLSAgICAgICAgZzNkLT5n
ZXRGbG9hdHYoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NMRUFSX1ZBTFVFLCAmZGVwdGhDbGVh
clZhbHVlKTsKLSAgICAgICAgZzNkLT5nZXRCb29sZWFudihHcmFwaGljc0NvbnRleHRHTDo6REVQ
VEhfV1JJVEVNQVNLLCAmZGVwdGhNYXNrKTsKKyAgICAgICAgZGVwdGhDbGVhclZhbHVlID0gZzNk
LT5nZXRGbG9hdChHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ0xFQVJfVkFMVUUpOworICAgICAg
ICBkZXB0aE1hc2sgPSBnM2QtPmdldEJvb2xlYW4oR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX1dS
SVRFTUFTSyk7CiAgICAgICAgIGczZC0+Y2xlYXJEZXB0aCgxLjBmKTsKICAgICAgICAgZzNkLT5k
ZXB0aE1hc2sodHJ1ZSk7CiAgICAgfQogICAgIGlmIChpbml0U3RlbmNpbCkgewotICAgICAgICBn
M2QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFLCAm
c3RlbmNpbENsZWFyVmFsdWUpOwotICAgICAgICBnM2QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29u
dGV4dEdMOjpTVEVOQ0lMX1dSSVRFTUFTSywgcmVpbnRlcnByZXRfY2FzdDxHQ0dMaW50Kj4oJnN0
ZW5jaWxNYXNrKSk7CisgICAgICAgIHN0ZW5jaWxDbGVhclZhbHVlID0gZzNkLT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFKTsKKyAgICAgICAgc3RlbmNp
bE1hc2sgPSBnM2QtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfV1JJVEVN
QVNLKTsKICAgICAgICAgZzNkLT5jbGVhclN0ZW5jaWwoMCk7CiAgICAgICAgIGczZC0+c3RlbmNp
bE1hc2soMHhmZmZmZmZmZik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUHJvZ3JhbS5jcHAKaW5kZXggYzhjM2I4MjI2NTI1M2MwZTA0ZWUwMWE2YjQxMjljOWM1ZjE4
MDUyOS4uM2U0NmM1ZTU2ZDEzZGNmY2YyZWNjMmRhZDJhYzE5NmE1ZjdjZWE3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCkBAIC0yMTYsOCArMjE2LDcg
QEAgdm9pZCBXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKEdyYXBoaWNz
Q29udGV4dEdMKiBjb250ZXh0M2QpCiB7CiAgICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnMuY2xl
YXIoKTsKIAotICAgIEdDR0xpbnQgbnVtQXR0cmlicyA9IDA7Ci0gICAgY29udGV4dDNkLT5nZXRQ
cm9ncmFtaXYob2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUywg
Jm51bUF0dHJpYnMpOworICAgIEdDR0xpbnQgbnVtQXR0cmlicyA9IGNvbnRleHQzZC0+Z2V0UHJv
Z3JhbWkob2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUyk7CiAg
ICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnMucmVzaXplKHN0YXRpY19jYXN0PHNpemVfdD4obnVt
QXR0cmlicykpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXR0cmliczsgKytpKSB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGluZm87CkBAIC0yNDEsOCArMjQw
LDcgQEAgdm9pZCBXZWJHTFByb2dyYW06OmNhY2hlSW5mb0lmTmVlZGVkKCkKICAgICBHcmFwaGlj
c0NvbnRleHRHTCogY29udGV4dCA9IGdldEFHcmFwaGljc0NvbnRleHRHTCgpOwogICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIEdDR0xpbnQgbGlua1N0YXR1cyA9IDA7Ci0g
ICAgY29udGV4dC0+Z2V0UHJvZ3JhbWl2KG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6TElO
S19TVEFUVVMsICZsaW5rU3RhdHVzKTsKKyAgICBHQ0dMaW50IGxpbmtTdGF0dXMgPSBjb250ZXh0
LT5nZXRQcm9ncmFtaShvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsK
ICAgICBtX2xpbmtTdGF0dXMgPSBsaW5rU3RhdHVzOwogICAgIGlmIChtX2xpbmtTdGF0dXMpIHsK
ICAgICAgICAgY2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoY29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCBkMmZhYzIwMzYyNDk5NTg1ZTBkNTE1NTZjYzVjYTRlM2FhYzMzZGFmLi42OTNkNjIwNmYyYzkw
Zjk1ZmRhOTczYjk5OGViOTY0NjdkY2ZlYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMwNywxMSArMzA3LDgg
QEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2UKICAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRy
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xUZXh0dXJlJj4oKm9iamVjdCkpOwogICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6
CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKLSAgICAgICAgICAgIEdDR0xp
bnQgdmFsdWUgPSAwOwotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICB9CisgICAgICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDoKKyAgICAgICAg
ICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUg
Zm9yIHRleHR1cmUgYXR0YWNobWVudCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0zNDcsOSArMzQ0LDkgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERy
YXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdl
dEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQsICZtX21heERyYXdC
dWZmZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdl
cihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29s
b3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25z
R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOwor
ICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0
ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3
X2J1ZmZlcnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZF
UlMuCiAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRh
Y2htZW50cyk7CiB9CkBAIC0zNTksNyArMzU2LDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVm
ZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50
cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xP
Ul9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21h
eENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpN
QVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1l
bnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDZjMzcyOTlkNDM3N2FhMDNjMjk1MWMyNDA1
MDU4OWU4YjNjMzBmYTcuLjE0YmY5ZWU4ZTNjYWI2NzlkODFkOTI5ZjlhNmNjNzlhNjdiOGQ2MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC04NzIsOCArODcyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jbGVhclN0ZW5jaWwg
PSAwOwogICAgIG1fY29sb3JNYXNrWzBdID0gbV9jb2xvck1hc2tbMV0gPSBtX2NvbG9yTWFza1sy
XSA9IG1fY29sb3JNYXNrWzNdID0gdHJ1ZTsKIAotICAgIEdDR0xpbnQgbnVtQ29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZudW1Db21iaW5lZFRl
eHR1cmVJbWFnZVVuaXRzKTsKKyAgICBHQ0dMaW50IG51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5p
dHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT01CSU5F
RF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKICAgICBtX3RleHR1cmVVbml0cy5jbGVhcigpOwogICAg
IG1fdGV4dHVyZVVuaXRzLnJlc2l6ZShudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKICNp
ZiAhVVNFKEFOR0xFKQpAQCAtODgxLDE4ICs4ODAsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgICAgIG1fdW5yZW5kZXJhYmxl
VGV4dHVyZVVuaXRzLmFkZChpKTsKICNlbmRpZgogICAgIAotICAgIEdDR0xpbnQgbnVtVmVydGV4
QXR0cmlicyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRH
TDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAmbnVtVmVydGV4QXR0cmlicyk7CisgICAgR0NHTGludCBu
dW1WZXJ0ZXhBdHRyaWJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVkVSVEVYX0FUVFJJQlMpOwogICAgIG1fbWF4VmVydGV4QXR0cmlicyA9IG51bVZlcnRl
eEF0dHJpYnM7CiAgICAgCi0gICAgbV9tYXhUZXh0dXJlU2l6ZSA9IDA7Ci0gICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfU0laRSwgJm1fbWF4
VGV4dHVyZVNpemUpOworICAgIG1fbWF4VGV4dHVyZVNpemUgPSBtX2NvbnRleHQtPmdldEludGVn
ZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9URVhUVVJFX1NJWkUpOwogICAgIG1fbWF4VGV4dHVy
ZUxldmVsID0gV2ViR0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heFRleHR1cmVTaXpl
LCBtX21heFRleHR1cmVTaXplKTsKLSAgICBtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSA9IDA7Ci0g
ICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NVQkVfTUFQ
X1RFWFRVUkVfU0laRSwgJm1fbWF4Q3ViZU1hcFRleHR1cmVTaXplKTsKKyAgICBtX21heEN1YmVN
YXBUZXh0dXJlU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6
TUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSk7CiAgICAgbV9tYXhDdWJlTWFwVGV4dHVyZUxldmVs
ID0gV2ViR0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heEN1YmVNYXBUZXh0dXJlU2l6
ZSwgbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUpOwotICAgIG1fbWF4UmVuZGVyYnVmZmVyU2l6ZSA9
IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1JF
TkRFUkJVRkZFUl9TSVpFLCAmbV9tYXhSZW5kZXJidWZmZXJTaXplKTsKKyAgICBtX21heFJlbmRl
cmJ1ZmZlclNpemUgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1B
WF9SRU5ERVJCVUZGRVJfU0laRSk7CiAKICAgICAvLyBUaGVzZSB0d28gdmFsdWVzIGZyb20gRVhU
X2RyYXdfYnVmZmVycyBhcmUgbGF6aWx5IHF1ZXJpZWQuCiAgICAgbV9tYXhEcmF3QnVmZmVycyA9
IDA7CkBAIC0xNzQxLDggKzE3MzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJjb21waWxlU2hh
ZGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPmNvbXBpbGVT
aGFkZXIoc2hhZGVyLm9iamVjdCgpKTsKLSAgICBHQ0dMaW50IHZhbHVlOwotICAgIG1fY29udGV4
dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElM
RV9TVEFUVVMsICZ2YWx1ZSk7CisgICAgR0NHTGludCB2YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hh
ZGVyaShzaGFkZXIub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUyk7
CiAgICAgc2hhZGVyLnNldFZhbGlkKHZhbHVlKTsKIAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxD
YW52YXMoKTsKQEAgLTI4ODgsOCArMjg4Miw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwot
ICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVl
KTsKKyAgICBHQ0dMaW50IHZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRh
cmdldCwgcG5hbWUpOwogICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QlVGRkVS
X1NJWkUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHZhbHVlKTsKQEAgLTMxODksMjYgKzMxODIsMjYgQEAgV2ViR0xBbnkgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dy
YW0sIEcKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdM
UHJvZ3JhbU9yU2hhZGVyKCJnZXRQcm9ncmFtUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAo
cG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERUxFVEVfU1RBVFVTOgogICAg
ICAgICByZXR1cm4gcHJvZ3JhbS5pc0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpWQUxJREFURV9TVEFUVVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHBy
b2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Ym9vbD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250
ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTOgogICAgICAgICByZXR1cm4gcHJvZ3JhbS5nZXRM
aW5rU3RhdHVzKCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QVRUQUNIRURfU0hBREVS
UzoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5h
bWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkFDVElWRV9BVFRSSUJVVEVTOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkFDVElWRV9VTklGT1JNUzoKICNpZiBVU0UoQU5HTEUpCi0gICAgICAgIG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSk7
CiAjZWxzZQotICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1f
Y29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9i
amVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgeworICAgICAgICAgICAgR0NHTGludCB2
YWx1ZSA9IDA7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCo+KG1fY29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9n
cmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICAgICAgfQogI2VuZGlmIC8vIFVTRShBTkdMRSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwog
ICAgIGRlZmF1bHQ6CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICAgICAgaWYgKGlzV2ViR0wyKCkp
IHsKQEAgLTMyMTYsOCArMzIwOSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01P
REU6CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJB
Q0tfVkFSWUlOR1M6CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVf
VU5JRk9STV9CTE9DS1M6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYo
cHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgICAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1pKHBy
b2dyYW0ub2JqZWN0KCksIHBuYW1lKTsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMjgwLDcgKzMyNzIsNiBAQCBXZWJHTEFu
eSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQwogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCi0gICAgR0NH
TGludCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlJFTkRFUkJVRkZFUl9TQU1QTEVTOgogICAgICAgICBpZiAoIWlzV2ViR0wyKCkp
IHsKQEAgLTMyOTYsOCArMzI4Nyw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDCiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX0FMUEhBX1NJWkU6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX1NURU5DSUxfU0laRToKLSAgICAgICAgbV9jb250
ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwot
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKICAgICAgICAgcmV0dXJuIG1fcmVu
ZGVyYnVmZmVyQmluZGluZy0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKICAgICBkZWZhdWx0OgpAQCAt
MzMxMCwxNiArMzMwMCwxMyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIo
ImdldFNoYWRlclBhcmFtZXRlciIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6REVMRVRFX1NUQVRVUzoKICAgICAgICAgcmV0dXJuIHNoYWRlci5p
c0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUzoK
LSAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1lLCAm
dmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5v
YmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFERVJfVFlQ
RToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1l
LCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFNoYWRl
cmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRTaGFkZXJQ
YXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTMzNzgsMjAgKzMzNjUsMTUgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG4KICAg
ICBhdXRvIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImdldFRleFBhcmFtZXRlciIsIHRh
cmdldCk7CiAgICAgaWYgKCF0ZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEdDR0xp
bnQgdmFsdWUgPSAwOwotICAgIEdDR0xmbG9hdCBmVmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5h
bWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BR19GSUxURVI6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fRklMVEVSOgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9TOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOgotICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
Y29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSk7CiAgICAgY2FzZSBFeHRl
bnNpb25zR0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMKLSAgICAgICAgaWYgKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5h
bWUsICZmVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihmVmFs
dWUpOwotICAgICAgICB9CisgICAgICAgIGlmIChtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YykKKyAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0
LCBwbmFtZSk7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX0VOVU0sICJnZXRUZXhQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwg
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGRlZmF1bHQ6CkBAIC0zNTU1LDcgKzM1MzcsNyBAQCBXZWJHTEFu
eSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJv
Z3JhbSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
Z2V0blVuaWZvcm1mdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgMTYgKiBzaXplb2Yo
R0NHTGZsb2F0KSwgdmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7
CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLm9iamVjdCgpLCBs
b2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVlLCBsZW5ndGgpKTsKICAgICAgICAgaWYgKGxlbmd0
aCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwogICAgICAgICByZXR1cm4gRmxv
YXQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7CkBAIC0zNTY3LDE0ICszNTQ5LDE0
IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQ
cm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0
ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24s
IHZhbHVlKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0ub2Jq
ZWN0KCksIGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUsIGxlbmd0aCkpOwogICAgICAgICBp
ZiAobGVuZ3RoID09IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07CiAgICAgICAgIHJl
dHVybiBJbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7CiAgICAgfQogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVDogewogICAgICAgICBHQ0dMdWludCB2
YWx1ZVs0XSA9IHswfTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0u
b2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9y
bXVpdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVlLCBsZW5n
dGgpKTsKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVl
WzBdOwogICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3Ro
KTsKQEAgLTM1ODYsNyArMzU2OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0u
b2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAgICAg
IGVsc2UKICNlbmRpZgotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3Jh
bS5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
VW5pZm9ybWl2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUs
IGxlbmd0aCkpOwogICAgICAgICBpZiAobGVuZ3RoID4gMSkgewogICAgICAgICAgICAgVmVjdG9y
PGJvb2w+IHZlY3RvcihsZW5ndGgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IGxlbmd0aDsgaisrKQpAQCAtMzYyNCw3ICszNjA2LDcgQEAgUmVmUHRyPFdlYkdMVW5pZm9y
bUxvY2F0aW9uPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24o
V2ViR0wKIAogICAgIEdDR0xpbnQgYWN0aXZlVW5pZm9ybXMgPSAwOwogI2lmIFVTRShBTkdMRSkK
LSAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGljc0Nv
bnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOworICAgIGFjdGl2ZVVu
aWZvcm1zID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGlj
c0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TKTsKICNlbHNlCiAgICAgc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5nZXROb25CdWlsdEluQWN0
aXZlU3ltYm9sQ291bnQocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElW
RV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKICNlbmRpZgpAQCAtNjIzNyw5ICs2MjE5LDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN1bWUoKQogCiBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xlYW5QYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUp
CiB7Ci0gICAgR0NHTGJvb2xlYW4gdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVh
bnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2NvbnRl
eHQtPmdldEJvb2xlYW4ocG5hbWUpOwogfQogCiBWZWN0b3I8Ym9vbD4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQpAQCAt
NjI1OCwyMyArNjIzOCwxNyBAQCBWZWN0b3I8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogCiBmbG9hdCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRGbG9hdFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkK
IHsKLSAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2KHBu
YW1lLCAmdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRGbG9hdChwbmFtZSk7CiB9CiAKIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRJ
bnRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0g
ICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4gdmFs
dWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihwbmFtZSk7CiB9CiAKIHVuc2ln
bmVkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdD
R0xlbnVtIHBuYW1lKQogewotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+
Z2V0SW50ZWdlcnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVy
biBtX2NvbnRleHQtPmdldEludGVnZXIocG5hbWUpOwogfQogCiBSZWZQdHI8RmxvYXQzMkFycmF5
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIo
R0NHTGVudW0gcG5hbWUpCkBAIC03NjI2LDkgKzc2MDAsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldE1heERyYXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJh
d0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZmZXJz
KQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdf
QlVGRkVSU19FWFQsICZtX21heERyYXdCdWZmZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVmZmVy
cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNf
RVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZt
X21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNf
RVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFD
SE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCiAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4RHJh
d0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50cyk7CiB9CkBAIC03NjM4LDcgKzc2MTIsNyBA
QCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldE1heENvbG9yQXR0YWNobWVu
dHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJ
bnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21heENv
bG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRl
eHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsK
ICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IDM0ZjE3ZWM2MWIzMzEw
MzcxYzJkZGJkMGEwMTc1YzYwYjkzZDE2ZjUuLmJhODY1YjMzMDhlNmM5NDU4MjIxMjIzNzc5NmQ2
ZmQ1Nzc0ODQ3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4
dGVuc2lvbnNHTC5oCkBAIC0zMDYsMjEgKzMwNiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikg
PSAwOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZsb2F0dlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xmbG9hdCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVn
ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9n
cmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTaGFk
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZs
b2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cG9pbnRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCog
cGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBw
aXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKQEAgLTMzNiwxNCArMzIxLDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIGRhdGEpID0gMDsgLy8gTk9MSU5UCiAgICAgdmlydHVhbCB2b2lk
IGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCog
ZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogZGF0YSkgPSAwOyAvLyBOT0xJTlQKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludDY0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
CmluZGV4IGQ5ZTU4OGFmYTMwZGJhNzMwOTMwZjk2Yzk4NzI5MTM0MDEyOThjMWUuLmY4ZDcxNTY4
NzA1MjhkZTllMTlkM2RkYTEwYmM1YWMwMGZjYTRmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtOTg2LDMxICs5
ODYsMzAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9u
KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCi0gICAgdmlydHVh
bCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldEJ1ZmZlclBh
cmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8g
Z2V0UGFyYW1ldGVyCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxv
YXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyaV92
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2
YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0gcG5h
bWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudihHQ0dM
ZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQoR0NH
TGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRpKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBn
ZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMYm9vbGVhbj4gdmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTGVudW0gZ2V0RXJyb3Io
KSA9IDA7CiAKICAgICAvLyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBu
YW1lKSA9IDA7CiAKICAgICAvLyBnZXRQcm9ncmFtUGFyYW1ldGVyCiAgICAgdmlydHVhbCBTdHJp
bmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgLy8gZ2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVl
KSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8gZ2V0U2hhZGVyUGFy
YW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3QsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBn
ZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2
aXJ0dWFsIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5
cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVj
aXNpb24pID0gMDsKQEAgLTEwMTgsMTkgKzEwMTcsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAgICAvLyBn
ZXRUZXhQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFRleFBh
cmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1
YWwgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUpID0gMDsKIAogICAgIC8vIGdldFVuaWZvcm0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9y
bWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9y
bWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50
PiB2YWx1ZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAogICAgIC8vIGdldFZl
cnRleEF0dHJpYgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwogCiAgICAgdmly
dHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSkgPSAwOwogCkBAIC0xMjM2LDcgKzEyMzUsMTMgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwog
CisgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gcGFyYW1zKSA9IDA7CisKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCisgICAgR0NH
TGZsb2F0IGdldEZsb2F0KEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMYm9vbGVhbiBnZXRCb29s
ZWFuKEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMaW50IGdldEludGVnZXIoR0NHTGVudW0gcG5h
bWUpOworICAgIEdDR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1
cm4gbV9hdHRyczsgfQogICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7IH0KQEAgLTEz
NjcsNiArMTM3MiwzNSBAQCBwcml2YXRlOgogICAgIERlc3RpbmF0aW9uIG1fZGVzdGluYXRpb247
CiB9OwogCitpbmxpbmUgR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdChHQ0dM
ZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMZmxvYXQgdmFsdWVbMV0geyB9OworICAgIGdldEZsb2F0
dihwbmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xi
b29sZWFuIEdyYXBoaWNzQ29udGV4dEdMOjpnZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKQorewor
ICAgIEdDR0xib29sZWFuIHZhbHVlWzFdIHsgfTsKKyAgICBnZXRCb29sZWFudihwbmFtZSwgdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0w6OmdldEludGVnZXIoR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NHTGludCB2YWx1
ZVsxXSB7IH07CisgICAgZ2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFs
dWVbMF07Cit9CisKK2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tpKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMaW50IHZhbHVlWzFdIHsgfTsKKyAgICBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHZh
bHVlKTsKKyAgICByZXR1cm4gdmFsdWVbMF07Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUeXBlc0dMLmgKaW5kZXggNjk5ZGUyOGJhZWI5MmNjMjUzMzk0ZGJhODBiN2U3YTc4ZTEz
ZjQ0NS4uZGIwZjAzYzhiMmUyNWM4MzU5ZDMwNmY5NDJiNmJmYTIyYTczMGIxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAg
LTI1LDcgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIC8vIEdDR0wg
dHlwZXMgbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVu
R0wgRVMgMi4wCiAvLyBoZWFkZXIgZmlsZSBnbDIuaCBmcm9tIGtocm9ub3Mub3JnLgpAQCAtNTUs
MyArNTcsNTEgQEAgdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2JqZWN0OwogI2lmICFQTEFU
Rk9STShDT0NPQSkKIHR5cGVkZWYgdW5zaWduZWQgR0x1aW50OwogI2VuZGlmCisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpPgorc3RydWN0IEdDR0xTcGFuOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4
dGVudD4KK3N0cnVjdCBHQ0dMU3BhbiB7CisgICAgZXhwbGljaXQgR0NHTFNwYW4oVCogYXJyYXkp
CisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICB7IH0KKyAgICBHQ0dMU3BhbihUICgmYXJyYXkp
W0V4dGVudF0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICB7IH0KKyAgICBUJiBvcGVyYXRv
cltdKHNpemVfdCBpKSB7IEFTU0VSVChkYXRhKTsgQVNTRVJUKGkgPCBidWZTaXplKTsgcmV0dXJu
IGRhdGFbaV07IH0KKyAgICBUJiBvcGVyYXRvciooKSB7ICBBU1NFUlQoZGF0YSk7IHJldHVybiAq
ZGF0YTsgfQorICAgIFQqIGRhdGE7CisgICAgY29uc3RleHByIHN0YXRpYyBzaXplX3QgYnVmU2l6
ZSA9IEV4dGVudDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR0NHTFNwYW48
VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4geworICAgIEdDR0xTcGFuKFQq
IGFycmF5LCBzaXplX3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAg
LCBidWZTaXplKGJ1ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHNpemVfdCBTej4gR0NH
TFNwYW4oVCAoJmFycmF5KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBi
dWZTaXplKFN6KQorICAgIHsgfQorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JiBhcnJheSkK
KyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXplKGFycmF5LnNp
emUoKSkKKyAgICB7IH0KKyAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IEFTU0VSVChkYXRh
KTsgQVNTRVJUKGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KKyAgICBUJiBvcGVyYXRv
ciooKSB7IEFTU0VSVChkYXRhKTsgcmV0dXJuICpkYXRhOyB9CisgICAgVCogZGF0YTsKKyAgICBj
b25zdCBzaXplX3QgYnVmU2l6ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBO
PgorR0NHTFNwYW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQsIE4+OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK0dDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXpl
X3QgY291bnQpCit7CisgICAgcmV0dXJuIEdDR0xTcGFuPFQ+IHsgZGF0YSwgY291bnQgfTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAxYzhiYzQyNTUwZjFjMWQ5NWMzMDgyZjY3Mzc2
YTU2OTUwNmJmYWIzLi40ZDAyNWI5OTM0MjI3NzZiOWI1ZjRhYWJjMzlhMGM3ODkxOTQwYTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC0xMTMsOCArMTEzLDcgQEAgU3RyaW5nIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9i
amVjdCBzaGFkZXIKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGludCBzb3VyY2VMZW5ndGggPSAwOwotICAg
IG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VS
Q0VfTEVOR1RIX0FOR0xFLCAmc291cmNlTGVuZ3RoKTsKKyAgICBpbnQgc291cmNlTGVuZ3RoID0g
bV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNF
X0xFTkdUSF9BTkdMRSk7CiAgICAgaWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8g
R0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRl
cm1pbmF0aW9uLgpAQCAtMjc5LDEyNiArMjc4LDYgQEAgR0NHTGVudW0gRXh0ZW5zaW9uc0dMQU5H
TEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGYK
IH0KIAogLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRh
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RmxvYXR2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGZsb2F0ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEZsb2F0dlJvYnVzdEFO
R0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRh
dGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3Jh
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFByb2dyYW1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0
YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2hhZGVyaXZSb2J1c3RBTkdMRShzaGFkZXIs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFVuaWZvcm1mdlJvYnVzdEFO
R0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmli
ZnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0
dHJpYml2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBvaW50ZXIpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxz
Um9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9p
ZCAqcGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
QEAgLTUxNywxNCArMzk2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHAKICAgICBnbDo6R2V0
QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJpX3ZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
SW50ZWdlcmlfdlJvYnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0
YSk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVybmFsZm9ybWF0aXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAt
NTU3LDMwICs0MjgsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRVbmlm
b3JtdWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
Um9idXN0QU5HTEUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcjY0
dlJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xp
bnQ2NCo+KGRhdGEpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0
aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUodGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwg
bGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihkYXRhKSk7Ci19Ci0KIHZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IDEyNTY5NTY3YzE3YzkyNmI3
MWE5MWJiNGJiMTE5NTU2YmEwNmYxNzAuLjU3YmI5M2JjODRjMzM1OTBmYmNmNGIzZjdhMWViNWE1
NWM1OTI1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNzMsMjEgKzczLDYgQEAgcHVibGlj
OgogICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAog
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCBnZXRCb29sZWFu
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50
ZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVy
cmlkZTsKICAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7CkBAIC0xMDMsMTQgKzg4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFF1ZXJ5aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXJp
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpIG92ZXJyaWRlOyAvLyBO
T0xJTlQKICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAq
ZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAogICAgIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0
ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBkZjZmMzRjOWQ2MThkMDdhZGYyMTk4NWEzMDFjYmU0
MTQyOTM5MDhhLi40OTE4YzYzOThiZTE1Mjc2MjhhNjI4YTc5NmIzMDljOWNhMWJhMTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzMwLDQ5ICszMzAsMzAgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGludGUKICAgICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKKyAgICBnbDo6R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShwbmFt
ZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiAKICAgICBzd2l0Y2ggKHBu
YW1lKSB7Ci0gICAgY2FzZSBNQVhfVEVYVFVSRV9TSVpFOgotICAgICAgICBnbDo6R2V0SW50ZWdl
cnYoTUFYX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygp
LnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQotICAgICAgICAgICAgKnZh
bHVlID0gc3RkOjptaW4oNDA5NiwgKnZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBN
QVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoTUFYX0NV
QkVfTUFQX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygp
LnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQotICAgICAgICAgICAgKnZh
bHVlID0gc3RkOjptaW4oMTAyNCwgKnZhbHVlKTsKLSAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIC8vIFNvbWUgb2xkZXIgaGFyZHdhcmUgYWR2ZXJ0aXNlcyBhIGxhcmdlciBt
YXhpbXVtIHRoYW4gdGhleQogICAgIC8vIGNhbiBhY3R1YWxseSBoYW5kbGUuIFJhdGhlciB0aGFu
IGRldGVjdGluZyBzdWNoIGRldmljZXMsIHNpbXBseQogICAgIC8vIGNsYW1wIHRoZSBtYXhpbXVt
IHRvIDgxOTIsIHdoaWNoIGlzIGJpZyBlbm91Z2ggZm9yIGEgNUsgZGlzcGxheS4KICAgICBjYXNl
IE1BWF9SRU5ERVJCVUZGRVJfU0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9SRU5E
RVJCVUZGRVJfU0laRSwgdmFsdWUpOwogICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbig4MTkyLCAq
dmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1BWF9WSUVXUE9SVF9ESU1TOgotICAg
ICAgICBnbDo6R2V0SW50ZWdlcnYoTUFYX1ZJRVdQT1JUX0RJTVMsIHZhbHVlKTsKICAgICAgICAg
dmFsdWVbMF0gPSBzdGQ6Om1pbig4MTkyLCB2YWx1ZVswXSk7CiAgICAgICAgIHZhbHVlWzFdID0g
c3RkOjptaW4oODE5MiwgdmFsdWVbMV0pOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBi
cmVhazsKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkKLXsK
LSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKLX0KLQogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBw
cmVjaXNpb24pCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTEyMTEsNyAr
MTE5Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1J
bXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHCiAKICAgICBHTGludCBtYXhVbmlmb3Jt
U2l6ZSA9IDA7CiAgICAgZ2w6OkdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9S
TV9NQVhfTEVOR1RILCAmbWF4VW5pZm9ybVNpemUpOwotCiAgICAgVmVjdG9yPEdMY2hhcj4gbmFt
ZShtYXhVbmlmb3JtU2l6ZSk7IC8vIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVk
ZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdM
aW50IHNpemUgPSAwOwpAQCAtMTgxOCw2NCArMTc5OCw2NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICBn
bDo6QmluZFZlcnRleEFycmF5KGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1
ZSk7CisgICAgZ2w6OkdldEJvb2xlYW52Um9idXN0QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUs
IG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZl
clBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dM
aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFs
dWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1
cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1
ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnbDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEZsb2F0dlJvYnVz
dEFOR0xFKHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KICAg
ICAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYoR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50NjQgdmFsdWUg
PSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgICp2YWx1ZSA9IDA7Ci0gICAgZ2w6OkdldEludGVnZXI2NHYocG5hbWUsIHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUocG5h
bWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0gcG5hbWUsIEdD
R0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKQorR0NHTGludDY0IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkK
IHsKKyAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICp2YWx1ZSA9IDA7Ci0gICAgZ2w6OkdldEludGVn
ZXI2NGlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
IGdsOjpHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIDEsIG51bGxwdHIs
ICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkK
K0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51
bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KKyAgICAgICAgcmV0dXJuIHZhbHVlOwogICAg
IGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkKICAgICAgICAgYXR0
YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVOVCwgZWl0
aGVyIHdvcmtzLgotICAgIGdsOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVu
dW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1pdihwcm9n
cmFtLCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFBy
b2dyYW1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOwor
ICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbm1hbmdsZWRJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyc1syXSwgR0NHTHNpemVp
IGNvdW50LCBjb25zdCBTdHJpbmcmIGxvZykKQEAgLTE5MjEsMjIgKzE5MDQsMjMgQEAgU3RyaW5n
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0pCiAgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291
bnQsIFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgZ2w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFt
ZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBw
bmFtZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKLQorICAgIEdDR0xpbnQgdmFsdWUgPSAwOwog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICBnbDo6R2V0U2hhZGVyaXZSb2J1c3RBTkdMRShzaGFkZXIsIHBuYW1lLCAxLCBudWxs
cHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpA
QCAtMTk2NCw0NCArMTk0OCw0OSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KQogICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmdihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZs
b2F0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGZsb2F0IHZhbHVlID0gMC5mOwogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2
YWx1ZTsKKyAgICBnbDo6R2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1l
LCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUp
CiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRlcml2KHRhcmdldCwg
cG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRUZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7Cisg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRV
bmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NH
TGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZSk7CisgICAgLy8gRklYTUU6IEJ1ZyBpbiBBTkdMRSBidWZTaXplIHZhbGlkYXRpb24gZm9yIHVu
aWZvcm1zLgorICAgIGF1dG8gYnVmU2l6ZSA9IHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoKnZhbHVl
KTsKKyAgICBnbDo6R2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1
ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRp
b24sIHZhbHVlKTsKKyAgICAvLyBGSVhNRTogQnVnIGluIEFOR0xFIGJ1ZlNpemUgdmFsaWRhdGlv
biBmb3IgdW5pZm9ybXMuCisgICAgYXV0byBidWZTaXplID0gdmFsdWUuYnVmU2l6ZSAqIHNpemVv
ZigqdmFsdWUpOworICAgIGdsOjpHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2Nh
dGlvbiwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtdWl2KHBy
b2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgLy8gRklYTUU6IEJ1ZyBpbiBBTkdMRSBidWZT
aXplIHZhbGlkYXRpb24gZm9yIHVuaWZvcm1zLgorICAgIGF1dG8gYnVmU2l6ZSA9IHZhbHVlLmJ1
ZlNpemUgKiBzaXplb2YoKnZhbHVlKTsKKyAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
KHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAog
R0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMjAxNCwyMCArMjAw
MywyMCBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRp
b24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJldHVybiBnbDo6R2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBu
YW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgs
IHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYml2KGluZGV4LCBw
bmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGluZGV4
LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKIEdDR0xz
aXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKQEAgLTIwMzYsNyArMjAyNSw3IEBAIEdDR0xz
aXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdD
R0x1aW50IGluZGV4LCBHQ0dMCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgR0x2b2lkKiBwb2lu
dGVyID0gMDsKLSAgICBnbDo6R2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBuYW1lLCAm
cG9pbnRlcik7CisgICAgZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoaW5k
ZXgsIHBuYW1lLCAxLCBudWxscHRyLCAmcG9pbnRlcik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDR0xzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQog
CkBAIC0yOTUzLDYgKzI5NDIsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmEKICAgICBnbDo6
VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBz
cmNPZmZzZXQpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm47CisgICAgZ2w6OkdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBu
YW1lLCBwYXJhbXMuYnVmU2l6ZSwgbnVsbHB0ciwgcGFyYW1zLmRhdGEpOworfQorCisKICNpZiBF
TkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiBHcmFwaGljc0NvbnRleHRHTENWKiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmNwcAppbmRleCA2ZDUwM2JjYmE3NWFmYjhjNTA3OTBiMWMyNGUyODI4MzZjNTVkOTQ5Li5j
YmFmMDYwYjU1NjM5ZmRiNTVhYjdlYWU0MTdlZjVkMjA0MzlkOTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRS5jcHAKQEAgLTQ2NCw4ICs0NjQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogCiAgICAgbV9jb250ZXh0
LT5jb21waWxlU2hhZGVyRGlyZWN0KHZlcnRleFNoYWRlcik7CiAKLSAgICBHQ0dMaW50IHN0YXR1
cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdih2ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7CisgICAgR0NHTGludCBzdGF0dXMg
PSBtX2NvbnRleHQtPmdldFNoYWRlcmkodmVydGV4U2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUElMRV9TVEFUVVMpOwogICAgIGlmICghc3RhdHVzKSB7CiAgICAgICAgIExPRyhXZWJHTCwg
IkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoJXAp
IC0gVmVydGV4IHNoYWRlciBmYWlsZWQgdG8gY29tcGlsZS4iLCB0aGlzKTsKICAgICAgICAgbV9j
b250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKQEAgLTQ4MCw3ICs0NzksNyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMo
KQogCiAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyRGlyZWN0KGZyYWdtZW50U2hhZGVyKTsK
IAotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoZnJhZ21lbnRTaGFkZXIsIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7CisgICAgc3RhdHVzID0gbV9jb250ZXh0
LT5nZXRTaGFkZXJpKGZyYWdtZW50U2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9T
VEFUVVMpOwogICAgIGlmICghc3RhdHVzKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNz
Q29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gRnJhZ21l
bnQgc2hhZGVyIGZhaWxlZCB0byBjb21waWxlLiIsIHRoaXMpOwogICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwpAQCAtNDkzLDcgKzQ5Miw3IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cygpCiAgICAg
bV9jb250ZXh0LT5hdHRhY2hTaGFkZXIobV95dXZQcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CiAg
ICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShtX3l1dlByb2dyYW0pOwogCi0gICAgbV9jb250ZXh0
LT5nZXRQcm9ncmFtaXYobV95dXZQcm9ncmFtLCBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFU
VVMsICZzdGF0dXMpOworICAgIHN0YXR1cyA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkobV95dXZQ
cm9ncmFtLCBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFUVVMpOwogICAgIGlmICghc3RhdHVz
KSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlh
bGl6ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gUHJvZ3JhbSBmYWlsZWQgdG8gbGluay4iLCB0aGlz
KTsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggODA2MTBkZTdkNDMxY2Y0MjYy
OTk3ZjRmZmNlMzdiNmJlMWVlNzQwNC4uMzRmZWYwNWI2MjM3ODcwZDA1YmQxYTMyYzJmNDVhNDE5
MWIzZjcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTEy
OCw3ICsxMjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6ZW5zdXJlRW5hYmxl
ZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIFNoQnVpbHRJblJlc291cmNlcyBBTkdMRVJl
c291cmNlcyA9IGNvbXBpbGVyLmdldFJlc291cmNlcygpOwogICAgICAgICBpZiAoIUFOR0xFUmVz
b3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMpIHsKICAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLkVY
VF9kcmF3X2J1ZmZlcnMgPSAxOwotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihF
eHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAmQU5HTEVSZXNvdXJjZXMuTWF4RHJh
d0J1ZmZlcnMpOworICAgICAgICAgICAgQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7
CiAgICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNvdXJjZXMpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9k
IikgewpAQCAtMTcyLDcgKzE3Miw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAKICAgICBB
TkdMRVdlYktpdEJyaWRnZSYgY29tcGlsZXIgPSBtX2NvbnRleHQtPm1fY29tcGlsZXI7CiAKLSAg
ICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OlNIQURF
Ul9UWVBFLCAmR0xzaGFkZXJUeXBlKTsKKyAgICBHTHNoYWRlclR5cGUgPSBtX2NvbnRleHQtPmdl
dFNoYWRlcmkoc2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6U0hBREVSX1RZUEUpOwogCiAgICAg
aWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VkVSVEVYX1NIQURFUikKICAg
ICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX1ZFUlRFWDsKQEAgLTI1NCw4MSArMjU0LDYg
QEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVp
bnQsIGludCwgR0NHTHNpemVpLCBHQ0dMaW4KICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xib29sZWFuICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRl
Z2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZvcm1mdlJvYnVzdEFO
R0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliZnZS
b2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCB2b2lkICoqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTQwMCwxMSArMzI1LDYg
QEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0
QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLAogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKIHsKICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAg
LTQzMCwxNiArMzUwLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0wKICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwg
R0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dDY0ICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggMDQ4OTRi
OTFjODJjYzRiMWIyMDlhN2FmZDIyOWNiZGNhOWEwMWE0My4uOTdlZWRmYjc0ODVjODMyZjc5M2M4
Y2ZmMGZhMTdmYmZmYmU2NTg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
aApAQCAtNjksMjEgKzY5LDYgQEAgcHVibGljOgogICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVk
TWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0
ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRf
bWVtb3J5Ci0gICAgdm9pZCBnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RmxvYXR2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGZsb2F0ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdl
cnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1p
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNoYWRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9y
bWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVy
dGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1
c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpw
aXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAg
ICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKQEAgLTk5LDE0ICs4NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBpbnQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQg
KmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFy
YW0pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggYWI4Y2I1
NGY1ZTg3OWVmNGI4YTkwZDE5YTdlYzkyYzg5Y2UyMDU3Yi4uZDI4ZjRhMDMxZWJkYzQ4Mzg3NWQz
OTg0ODdkNTc4NzQ4ZmRlNDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBA
IC03NCwxMSArNzQsOCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjppc0VuYWJsZWQoY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGb3IgR0xf
RVhUX3JvYnVzdG5lc3MsIGNoZWNrIHRoYXQgdGhlIGNvbnRleHQgc3VwcG9ydHMgcm9idXN0IGFj
Y2Vzcy4KLSAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3JvYnVzdG5lc3MiKSB7Ci0gICAgICAgIEdM
aW50IHJvYnVzdEFjY2VzcyA9IEdMX0ZBTFNFOwotICAgICAgICBtX2NvbnRleHQtPmdldEludGVn
ZXJ2KEV4dGVuc2lvbnNHTDo6Q09OVEVYVF9ST0JVU1RfQUNDRVNTLCAmcm9idXN0QWNjZXNzKTsK
LSAgICAgICAgcmV0dXJuIHJvYnVzdEFjY2VzcyA9PSBHTF9UUlVFOwotICAgIH0KKyAgICBpZiAo
bmFtZSA9PSAiR0xfRVhUX3JvYnVzdG5lc3MiKQorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6Q09OVEVYVF9ST0JVU1RfQUNDRVNTKSA9PSBHTF9UUlVF
OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CmluZGV4IDc3NWY5MDQwNmY0MmE2MDkxZGRjM2ZlYTFlNTBiN2MyYjBhZTRkYTEuLmMzZjQ4ZThj
Njg5ZjBiMzk3YjZmN2U1NjgzNDgyNGE2YThiOWY3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oCkBAIC0xOTcsMzUgKzE5NywzNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRB
Y3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4
LCBBY3RpdmVJbmZvJik7CiAgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRm
b3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRp
b24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lk
IGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGlu
dCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZp
bmFsOwogICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRGbG9hdHYo
R0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZv
aWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAg
ICB2b2lkIGdldEludGVnZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dM
aW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50NjQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEludGVnZXI2NGlfdihHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2NCogdmFsdWUpIGZpbmFsOwotICAg
IHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBw
bmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcnYo
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dM
aW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQg
Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAg
IEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBw
bmFtZSkgZmluYWw7CiAjaWYgIVVTRShBTkdMRSkKICAgICB2b2lkIGdldE5vbkJ1aWx0SW5BY3Rp
dmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSk7CiAjZW5kaWYgLy8gIVVTRShBTkdMRSkKICAgICBTdHJpbmcgZ2V0UHJv
Z3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFVubWFu
Z2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVjdFsyXSwgR0NHTHNpemVpLCBjb25zdCBTdHJpbmcm
KTsKLSAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNoYWRl
cml2KFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmlu
YWw7CisgICAgR0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAgU3RyaW5nIGdldFNoYWRlcklu
Zm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNp
b25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NH
TGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CiAgICAgU3RyaW5nIGdldFNo
YWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0U3RyaW5n
KEdDR0xlbnVtIG5hbWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAg
dm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsK
LSAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm11aXYo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFs
dWUpIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZv
cm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAg
ICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4
QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAg
ICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTQz
OCw2ICs0MzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1
bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVV
bmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAKICNp
ZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNzUwZWQzMjZlY2U2NWU4OGY2YjQxMzYwMTVjNGY5MzM3
NDQ4OWNhNS4uY2VmMDA2MGM3OTkzMDExMjc5MWQ3YTQ0ZTQ4ZjY0NzM4ZDgwOWMzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTI2MCw3ICsyNjAs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdl
RVhUKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgLy8gTmVlZCB0byBl
bXVsYXRlIE1BWF9GUkFHTUVOVC9WRVJURVhfVU5JRk9STV9WRUNUT1JTIGFuZCBNQVhfVkFSWUlO
R19WRUNUT1JTCiAgICAgLy8gYmVjYXVzZSBkZXNrdG9wIEdMJ3MgY29ycmVzcG9uZGluZyBxdWVy
aWVzIHJldHVybiB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMKQEAgLTI3MiwzOSArMjcyLDM5IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAjaWYgVVNFKE9QRU5HTCkK
ICAgICBjYXNlIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJ
bnRlZ2VydihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZSk7CisgICAg
ICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTLCB2
YWx1ZS5kYXRhKTsKICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihH
TF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAgICA6OmdsR2V0
SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMsIHZhbHVlLmRhdGEpOwog
ICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNQVhfVkFSWUlO
R19WRUNUT1JTOgogICAgICAgICBpZiAoaXNHTEVTMkNvbXBsaWFudCgpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoOjpnbEdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOwotICAgICAgICAgICAgOjpn
bEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsIHZhbHVlKTsKKyAgICAgICAgICAg
IDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCB2YWx1ZS5kYXRhKTsKICAg
ICAgICAgICAgIGlmICg6OmdsR2V0RXJyb3IoKSA9PSBHTF9JTlZBTElEX0VOVU0pIHsKLSAgICAg
ICAgICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUywgdmFs
dWUpOworICAgICAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19DT01Q
T05FTlRTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihH
TF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2Vy
dihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlLmRhdGEpOwogICAgICAgICAgICAgKnZhbHVl
IC89IDQ7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIE1BWF9U
RVhUVVJFX1NJWkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpFLCB2
YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZS5k
YXRhKTsKICAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhp
bXVtVGV4dHVyZVNpemUoKSkKICAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYsICp2
YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0la
RToKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZh
bHVlKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUs
IHZhbHVlLmRhdGEpOwogICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJp
Y3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAgICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4o
MTAyNCwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgOjpn
bEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFt
ZSwgdmFsdWUuZGF0YSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBiMGMxZjFkZmQ0M2Q0MTUwNDI3ZmY1MjFhY2Y2ODQz
NjI3MjQwMDVhLi44NTM1M2EwNmRiYzdlZjZjZTdkN2QxOTkwMDExYmQ5ZTg5NTMxMTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTE3MTcs
ODEgKzE3MTcsNzMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFZlcnRleEFy
cmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAjZW5kaWYKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2
YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldEJvb2xlYW52KHBu
YW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0QnVmZmVy
UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRCdWZmZXJQYXJh
bWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVl
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRGbG9hdHYocG5hbWUsIHZhbHVl
KTsKKyAgICA6OmdsR2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKQotewotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAqdmFsdWUgPSAwOwotICAgIC8vIEZJWE1FIDE0MTE3ODog
QmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0Y2ggb3ZlciB0byB1c2luZyBn
bDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdlYkdMMiBjb250ZXh0IHVzaW5n
IE9wZW5HTCBFUyAzLjAuCi0gICAgLy8gOjpnbEdldEludGVnZXJpX3YocG5hbWUsIGluZGV4LCB2
YWx1ZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYo
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURf
UEFSQU0ocG5hbWUpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAqdmFsdWUgPSAwOworICAgIEdDR0xpbnQ2
NCB2YWx1ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3
ZSBtdXN0IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQg
aW5pdGlhbGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KICAgICAv
LyA6OmdsR2V0SW50ZWdlcjY0dihwbmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aV92KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKICAgICBVTlVTRURfUEFSQU0o
aW5kZXgpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAqdmFsdWUgPSAwOworICAgIEdDR0xpbnQ2NCB2YWx1
ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBtdXN0
IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQgaW5pdGlh
bGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KICAgICAvLyA6Omds
R2V0SW50ZWdlcjY0aV92KHBuYW1lLCBpbmRleCwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1
ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
CisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxf
QVRUQUNITUVOVCkKICAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9y
IFNURU5DSUxfQVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgotICAgIDo6Z2xHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1
ZSk7CisgICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdl
dCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CisgICAgOjpnbEdl
dFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1i
b2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkKQEAgLTE4OTksMjAgKzE4OTEsMjEgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCiAgICAg
cmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhpbmZvLmRh
dGEoKSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBH
Q0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICA6OmdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0
LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQor
R0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2Jq
ZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7Ci0KKyAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogCiAgICAgY29uc3QgYXV0byYg
cmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwpAQCAtMTkyMCwyOCArMTkx
MywyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbQogICAgIHN3aXRjaCAocG5hbWUpIHsKICAg
ICBjYXNlIERFTEVURV9TVEFUVVM6CiAgICAgY2FzZSBTSEFERVJfVFlQRToKLSAgICAgICAgOjpn
bEdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldFNoYWRl
cml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ09N
UElMRV9TVEFUVVM6Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5k
KCkpIHsKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PGludD4oZmFsc2UpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0
PGludD4ocmVzdWx0LT52YWx1ZS5pc1ZhbGlkKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBtX3No
YWRlclNvdXJjZU1hcC5lbmQoKSkKKyAgICAgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8aW50
PihyZXN1bHQtPnZhbHVlLmlzVmFsaWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIElORk9f
TE9HX0xFTkdUSDoKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQo
KSkgewotICAgICAgICAgICAgKnZhbHVlID0gMDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICAqdmFsdWUgPSBnZXRTaGFkZXJJbmZvTG9nKHNoYWRlcikubGVuZ3RoKCk7
CisgICAgICAgIGlmIChyZXN1bHQgIT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCisgICAgICAg
ICAgICB2YWx1ZSA9IGdldFNoYWRlckluZm9Mb2coc2hhZGVyKS5sZW5ndGgoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTSEFERVJfU09VUkNFX0xFTkdUSDoKLSAgICAgICAgKnZhbHVlID0g
Z2V0U2hhZGVyU291cmNlKHNoYWRlcikubGVuZ3RoKCk7CisgICAgICAgIHZhbHVlID0gZ2V0U2hh
ZGVyU291cmNlKHNoYWRlcikubGVuZ3RoKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfRU5VTSk7CiAgICAgfQorICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFk
ZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpAQCAtMTk4NiwzOSArMTk3NCw0MSBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlcikKICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZS5zb3VyY2U7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwLmY7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFRleFBh
cmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFy
YW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
CitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpn
bEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZv
cm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOworICAgIDo6Z2xHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmRh
dGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtaXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICA6OmdsR2V0
VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CkBAIC0yMDM3LDIwICsy
MDI3LDIwIEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIDo6Z2xHZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVkTmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihp
bmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBu
YW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2
YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
OjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRW
ZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlLmRhdGEpOwogfQogCiBHQ0dMc2l6ZWlw
dHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0zMTQzLDYgKzMxMzMsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwogfQogCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xT
cGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAg
VU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVTRURfUEFSQU0ocG5hbWUp
OworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOworfQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA2MGZkZmM2NWY4NzM5NTg5NTc5NWE4NGVmMWUw
OWFiZjZkN2FhODQzLi41MjQxOWY1NjZiMWYyNThhN2RhNDEyZDEzMWNmNjdmNmUwOTYxM2NhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xOTYsMTIgKzE5
NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9y
YWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldEludGVnZXJ2KHBu
YW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0
KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJh
bmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCkBAIC0zMzAsMTMgKzMzMCwxMyBAQCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIGF0dAogICAgIFNoQnVpbHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlczsKICAg
ICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZBTkdMRVJlc291cmNlcyk7CiAgICAgCi0gICAgZ2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfQVRUUklCUywgJkFO
R0xFUmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUywgJkFOR0xFUmVzb3Vy
Y2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6TUFYX1ZBUllJTkdfVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZh
cnlpbmdWZWN0b3JzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4
VGV4dHVyZUltYWdlVW5pdHMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1h
eENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpNQVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1h
eFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heEZy
YWdtZW50VW5pZm9ybVZlY3RvcnMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4
QXR0cmlicyk7CisgICAgOjpnbEdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpN
QVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFVuaWZv
cm1WZWN0b3JzKTsKKyAgICA6OmdsR2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
Ok1BWF9WQVJZSU5HX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7
CisgICAgOjpnbEdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVY
X1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1h
Z2VVbml0cyk7CisgICAgOjpnbEdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpN
QVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heENvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhU
ZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgOjpnbEdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4
RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk7CiAgICAgCiAgICAgLy8gQWx3YXlzIHNldCB0byAxIGZv
ciBPcGVuR0wgRVMuCiAgICAgQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSAxOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA4OWQx
NGQyOTU2YjcyZmE0MmVlOTgzNjJhYjgwZDJiYjMwYWIzZWQyLi4yNWYyNjQ3MzAyMDI5OTZkZTgy
NDRkOTI2NzJhYzBhZGY1YzgzYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzExLDEzICszMTEsMTMgQEAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHQKICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXM7CiAgICAgc2g6
OkluaXRCdWlsdEluUmVzb3VyY2VzKCZBTkdMRVJlc291cmNlcyk7CiAKLSAgICBnZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAmQU5HTEVSZXNv
dXJjZXMuTWF4VmVydGV4QXR0cmlicyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4
VmVydGV4VW5pZm9ybVZlY3RvcnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmFyeWluZ1Zl
Y3RvcnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVS
VEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJl
SW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1B
WF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4Q29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VGV4dHVy
ZUltYWdlVW5pdHMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpN
QVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4RnJhZ21lbnRV
bmlmb3JtVmVjdG9ycyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyA9IGdl
dEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfQVRUUklCUyk7Cisg
ICAgQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPSBnZXRJbnRlZ2VyKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyk7CisgICAg
QU5HTEVSZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMgPSBnZXRJbnRlZ2VyKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTKTsKKyAgICBBTkdMRVJlc291cmNlcy5N
YXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyk7CisgICAgQU5HTEVSZXNvdXJj
ZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKKyAgICBBTkdM
RVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKKyAgICBBTkdMRVJlc291cmNl
cy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0gZ2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyk7CiAKICAgICAvLyBBbHdheXMg
c2V0IHRvIDEgZm9yIE9wZW5HTCBFUy4KICAgICBBTkdMRVJlc291cmNlcy5NYXhEcmF3QnVmZmVy
cyA9IDE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414310</attachid>
            <date>2020-11-16 23:12:28 -0800</date>
            <delta_ts>2020-11-16 23:58:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201117091226.patch</filename>
            <type>text/plain</type>
            <size>117818</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFiMzgwY2VlY2RkMjk1
NGU1ZGM4NGU3MGZlMzc2YmIyZTBjYmQ0OS4uNmYwODlmNGEzMzM3OWFkM2MyZjM0MzYyZjJmMjA0
NGFkZTE0MjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyMSBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0IHRoZQorICAgICAg
ICB2YWx1ZSBpcyBhIG5vcm1hbCBmdW5jdGlvbiByZXR1cm4gdmFsdWUuIFRoaXMgcmVkdWNlcyB0
aGUgcmlzayBvZiBoYXZpbmcKKyAgICAgICAgdW5pbml0aWFsaXplZCBvdXQgcGFyYW1ldGVyIHJl
Y2VpdmUgbG9jYXRpb24uCisKKyAgICAgICAgQ2hhbmdlIHRoZSBnZXR0ZXJzIHRoYXQgYXJlIG9u
bHkgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRoZSBnZXR0
ZXIgaXRzZWxmIGhhcyB0aGUgcmV0dXJuIHZhbHVlLiBBZGQgYSBzaW5nbGUtdmFsdWUgZ2V0dGVy
IGZvcgorICAgICAgICBnZXR0ZXJzIHRoYXQgYXJlIHVzZWQgdG8gb2J0YWluIGFsc28gbXVsdGlw
bGUgdmFsdWVzLgorCisgICAgICAgIEFkZCBHQ0dMU3BhbiB0eXBlIHRoYXQgaXMgdXNlZCB0byBj
b21tdW5pY2F0ZSBwYWlyOiBwdHIsIG51bWJlciBvZgorICAgICAgICBlbGVtZW50cy4gVGhpcyBp
cyBzaW1pbGFyIHR5cGUgdG8gc3RkOjpzcGFuIGluIEMrKzIwLiBUaGUgdHlwZSB3aWxsIGJlCisg
ICAgICAgIHVzZWQgdG8gcmVjZWl2ZSB0aGUgbXVsdGktdmFsdWUgZ2V0dGVyIHJlc3VsdHMuIFVz
ZSBvZiBXVEY6OlZlY3RvciBhcworICAgICAgICB0aGUgcmV0dXJuIHZhbHVlIHdvdWxkIGJlIHBy
b2JsZW1hdGljIGJlY2F1c2UgdGhlIGNhbGwgc2VtYW50aWNzIG5lZWQKKyAgICAgICAgdGhlIGxl
bmd0aC4gVGh1cyB0aGUgbGVuZ3RoIHdvdWxkIGJlIG5lZWRlZCB0byBiZSBzcGVjaWZpZWQgYnkg
ZWl0aGVyCisgICAgICAgIHBhc3NpbmcgaW4gdGhlIHJlc2l6ZWQgdmVjdG9yIG9yIHBhc3Npbmcg
aW4gdGhlIGxlbmd0aC4gQm90aCBvZiB0aGUKKyAgICAgICAgb3B0aW9ucyBjb250YWluIHJlZHVu
YW5jeSBhbmQgcmVzaXphYmxlIHZlY3RvciB0eXBlIHdvdWxkIHN0aWxsIG9wZW4KKyAgICAgICAg
aW50ZXJwcmV0YXRpb24gdG8gaG93IHRoZSByZXN1bHQgdmFsdWUgd291bGQgYmVoYXZlLiBVc2lu
ZyBzdGQ6OmFycmF5CisgICAgICAgIHdvdWxkIGJlIHByb2JsZW1hdGljIGJlY2F1c2UgaXQgY2Fu
bm90IGhhdmUgZHluYW1pYyBsZW5ndGguIEdDR0xTcGFuIGlzCisgICAgICAgIG5vdCBhIHJldHVy
biB2YWx1ZSBzaW5jZSBpdCBkb2VzIG5vdCBjYXJyeSBpdHMgZGF0YS4gQSBzcGFuIGlzIG9ubHkg
YQorICAgICAgICB2aWV3IHRvIGV4aXN0aW5nIGRhdGEgc3RvcmUuCisKKyAgICAgICAgVGhlIHR5
cGUgR0NHTFNwYW4gd2lsbCBiZSB1c2VkIHRvIHNpbXBsaWZ5IHRoZSBHUFUgcHJvY2VzcworICAg
ICAgICBpbXBsZW1lbnRhdGlvbiwgc2luY2UgdGhlIGJ1ZlNpemUgd2lsbCBiZSBleHBsaWNpdGx5
IGFzc29jaWF0ZWQgaW4gdGhlCisgICAgICAgIHBhc3NlZCBkYXRhIHZhbHVlIHR5cGUsIGluc2lk
ZSB0aGUgR0NHTFNwYW4gdHlwZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NH
TFNwYW4gd2lsbCBiZSB1c2VkIGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAg
aS5lLiBhcmJpdHJhcnkgYnVmZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKwor
ICAgICAgICBVc2UgdGhlIFJvYnVzdEFOR0xFIHZhcmlhbnRzIG9mIHRoZSBHTCBBUEkgaW1wbGVt
ZW50YXRpb24gdG8gb2J0YWluIHRoZQorICAgICAgICB2YWx1ZXMuCisKKyAgICAgICAgUmVtb3Zl
IHRoZSBjb3JyZXNwb25kaW5nIFJvYnVzdEFOR0xFIHZhcmlhbnRzIGZyb20gRXh0ZW5zaW9uc0dM
LCB0aGV5CisgICAgICAgIGFyZSBkZWFkIGNvZGUgYW5kIHVudXNlZC4KKworICAgICAgICBSZW1v
dmVzIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSB3b3JrYXJvdW5kIGZyb20g
QU5HTEUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY29kZSwgaXQgd2FzIGRlYWQg
Y29kZSAoaS5lIGZsYWcgYWx3YXlzIGZhbHNlKS4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9u
ZSBpbiBBTkdMRSBsZXZlbC4KKworICAgICAgICBGaXhlcyBjb3NtZXRpYyBidWdzIHdoZXJlIHVu
aW5pdGlhbGl6ZWQgdmFsdWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlCisgICAgICAgIGxvY2F0aW9u
IG9mIHRoZSBnb3R0ZW4gcHJvcGVydHkuIFRoaXMgdmFsdWUgd291bGQgYmUgdW53cml0dGVuIGlu
CisgICAgICAgIGVkZ2UtY2FzZXMgbGlrZSBHTCBlcnJvcnMsIGFuZCB0aHVzIHRoZSByZWFkIHdv
dWxkIHRvdWNoIHVudWluaXRpYWxpemVkCisgICAgICAgIHZhbHVlLgorCisgICAgICAgIEZpeGVz
IGEgY29zbWV0aWMgYnVnIHdoZXJlIHVuaWZvcm0gYmxvY2sgdmFyaWFibGVzIGNvZGUgd291bGQg
cGFzcyBpbgorICAgICAgICB0b28gbGFyZ2UgYnVmZmVyIHNpemUgdG8gdGhlIFJvYnVzdEFOR0xF
IGNhbGwuIFRoZSBidWZTaXplIHJlZmVycyB0byB0aGUKKyAgICAgICAgbnVtYmVyIG9mIGVsZW1l
bnRzLCBidXQgdGhlIGNvZGUgcGFzc2VkIGluIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGkuZS4K
KyAgICAgICAgbnVtYmVyIG9mIGVsZW1lbnRzICogc2l6ZSBvZiBlbGVtZW50KS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNh
bnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9J
bWFnZUJpdG1hcCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFs
aXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRJbnQ2NFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6
aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJp
YkxvY2F0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlSW5mb0lm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCdWZmZXJQYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJv
Z3JhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Qm9vbGVh
blBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRGbG9hdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRJbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5zaWduZWRJbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRh
Y2htZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTDo6Z2V0SW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNwYW4pOgor
ICAgICAgICAoR0NHTFNwYW46Om9wZXJhdG9yW10pOgorICAgICAgICAoR0NHTFNwYW46Om9wZXJh
dG9yKik6CisgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCk6CisgICAg
ICAgIChtYWtlR0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW52Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dEZsb2F0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRl
Z2VydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
U2hhZGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0
ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyaV92Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0
aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyaV92KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJp
dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0SW50ZWdlcjY0dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aV92KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UHJvZ3JhbWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpl
bnN1cmVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGbG9hdHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJv
Z3JhbWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
U2hhZGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXJpX3ZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjppc0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcmkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhB
dHRyaWJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRW
ZXJ0ZXhBdHRyaWJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pdik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFNoYWRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmdik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKwogMjAyMC0x
MS0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
bmFsIHJlZmFjdG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFwaGlj
c0NvbnRleHRHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52
YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDJl
ZjEwYjBhNGYzNDZlZmUxYjkzOGU0NmUwMDUzYThhMzM5NDUzNDQuLjA0YjMwZjhmNjQ2NDE0Njgw
NjdlMzA5MjZlNzRlNGYyZDljMThiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRt
YXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIC8v
IGNyZWF0ZXMgYSBuZXcgYmFja2luZyBzdG9yZS4gU2luY2Ugd2UncmUgbm90IGRvaW5nIHRoYXQg
eWV0LCB3ZQogICAgICAgICAvLyBuZWVkIHRvIGVyYXNlIHdoYXQncyB0aGVyZS4KIAotICAgICAg
ICBHQ0dMZmxvYXQgY2xlYXJDb2xvcls0XTsKKyAgICAgICAgR0NHTGZsb2F0IGNsZWFyQ29sb3Jb
NF0geyB9OwogICAgICAgICBnYzNkLT5nZXRGbG9hdHYoR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0NMRUFSX1ZBTFVFLCBjbGVhckNvbG9yKTsKICAgICAgICAgZ2MzZC0+Y2xlYXJDb2xvcigwLCAw
LCAwLCAwKTsKICAgICAgICAgZ2MzZC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JV
RkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJVCB8IEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4MDczYWRjMTEx
NDkyMTVmNTZkMWU0NWRhNjg0ZGU4Mjg1ODE3ZTkyLi41NWJjMWY4ZGIyNDlkMzM4MjJlNzg4OWNh
NzgzZjViZWMwMjVhMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTU5LDkgKzE1OSw5IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQogICAgIG1fdW5wYWNr
U2tpcFJvd3MgPSAwOwogICAgIG1fdW5wYWNrU2tpcEltYWdlcyA9IDA7CiAKLSAgICBtX2NvbnRl
eHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfM0RfVEVYVFVSRV9TSVpFLCAm
bV9tYXgzRFRleHR1cmVTaXplKTsKKyAgICBtX21heDNEVGV4dHVyZVNpemUgPSBtX2NvbnRleHQt
PmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF8zRF9URVhUVVJFX1NJWkUpOwogICAg
IG1fbWF4M0RUZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6OmNvbXB1dGVMZXZlbENvdW50KG1f
bWF4M0RUZXh0dXJlU2l6ZSwgbV9tYXgzRFRleHR1cmVTaXplKTsKLSAgICBtX2NvbnRleHQtPmdl
dEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMsICZt
X21heEFycmF5VGV4dHVyZUxheWVycyk7CisgICAgbV9tYXhBcnJheVRleHR1cmVMYXllcnMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9BUlJBWV9URVhUVVJF
X0xBWUVSUyk7CiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3
Q29udGV4dCgpOwogCkBAIC0yMDgsOSArMjA4LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpyZXN0b3JlVW5wYWNrUGFyYW1ldGVycygpCiAKIGxvbmcgbG9uZyBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRJbnQ2NFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAgICBHQ0dM
aW50NjQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcjY0dihwbmFtZSwgJnZh
bHVlKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdl
cjY0KHBuYW1lKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXpl
VmVydGV4QXJyYXlPYmplY3RzKCkKQEAgLTEwNTUsMjMgKzEwNTMsMTQgQEAgV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTOgogICAgICAgICBGQUxMVEhST1VHSDsKLSAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUjogewotICAgICAgICBHQ0dM
aW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVDogewotICAgICAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9v
bD4odmFsdWUpOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dS
QVBfUjoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9G
T1JNQVQ6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdldFRl
eFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfTUlOX0xPRDoKICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VEVYVFVSRV9NQVhfTE9EOiB7Ci0gICAgICAgIEdDR0xmbG9hdCB2YWx1ZSA9
IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwg
JnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdl
dFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFtZXRlcih0YXJnZXQsIHBu
YW1lKTsKICAgICB9CkBAIC0yNDQ1LDExICsyNDM0LDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
X1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9TVEFSVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZFUl9T
SVpFOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX1NUQVJUOiB7
Ci0gICAgICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcjY0aV92KHRhcmdldCwgaW5kZXgsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsK
LSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZGRVJfU1RBUlQ6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXI2NGkodGFyZ2V0LCBpbmRleCk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZGRVJfQklORElORzoKICAg
ICAgICAgaWYgKGluZGV4ID49IG1fYm91bmRJbmRleGVkVW5pZm9ybUJ1ZmZlcnMuc2l6ZSgpKSB7
CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9WQUxVRSwgImdldEluZGV4ZWRQYXJhbWV0ZXIiLCAiaW5kZXggb3V0IG9mIHJhbmdlIik7CkBA
IC0yNTI0LDI0ICsyNTEwLDIwIEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByCiAjaWYgVVNFKEFO
R0xFKQogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQ
cm9ncmFtT3JTaGFkZXIoImdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlciIsICZwcm9ncmFt
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgR0NHTGludCByZXN1bHQgPSAwOwogICAg
IHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JM
T0NLX0JJTkRJTkc6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19E
QVRBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJ
VkVfVU5JRk9STVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2Nr
SW5kZXgsIHBuYW1lLCBzaXplb2YocmVzdWx0KSwgbnVsbHB0ciwgJnJlc3VsdCk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4ocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdDR0x1aW50PihtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2kocHJv
Z3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lKSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTOiB7Ci0g
ICAgICAgIEdDR0xpbnQgc2l6ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwg
dW5pZm9ybUJsb2NrSW5kZXgsIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0FDVElW
RV9VTklGT1JNUywgc2l6ZW9mKHNpemUpLCBudWxscHRyLCAmc2l6ZSk7CisgICAgICAgIEdDR0xp
bnQgc2l6ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShwcm9ncmFtLm9iamVj
dCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tf
QUNUSVZFX1VOSUZPUk1TKTsKICAgICAgICAgVmVjdG9yPEdDR0xpbnQ+IHBhcmFtcyhzaXplLCAw
KTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0QWN0aXZlVW5pZm9ybUJs
b2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5h
bWUsIHNpemVvZihwYXJhbXNbMF0pICogcGFyYW1zLnNpemUoKSwgbnVsbHB0ciwgcGFyYW1zLmRh
dGEoKSk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3Jh
bS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICBy
ZXR1cm4gcGFyYW1zLm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50
Pih4KTsgfSk7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxP
Q0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFERVI6Ci0gICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0
QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBzaXplb2Yo
cmVzdWx0KSwgbnVsbHB0ciwgJnJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxi
b29sPihyZXN1bHQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0
LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0lu
ZGV4LCBwbmFtZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJh
bWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI3NzIsOSArMjc1NCw3IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnCiAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBm
dW5jdGlvbk5hbWUsICJpbnZhbGlkIGF0dGFjaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBt
X2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAg
cmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJn
ZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZU5vbkRlZmF1
bHRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoZnVuY3Rpb25OYW1lLCBhdHRhY2htZW50KSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzk2LDExICsyNzc2LDggQEAgV2ViR0xBbnkgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xl
bnVtIHRhcmcKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX0FMUEhBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9ERVBUSF9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6IHsKLSAgICAgICAgR0NH
TGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFOgorICAgICAgICByZXR1cm4gbV9jb250
ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVu
dCwgcG5hbWUpOwogICAgIH0KIAogICAgIGlmIChvYmplY3QtPmlzVGV4dHVyZSgpKSB7CkBAIC0y
ODExLDExICsyNzg4LDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmcKICAgICAgICAgICAgIHJl
dHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xUZXh0dXJlJj4oKm9iamVjdCkp
OwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X1RFWFRVUkVfTEVWRUw6CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HOiB7Ci0g
ICAgICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSwgJnZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgfQorICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VO
Q09ESU5HOgorICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUgZm9yIHRl
eHR1cmUgYXR0YWNobWVudCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODk3
LDcgKzI4NzEsNyBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlTm9uRGVm
YXVsdEZyYW1lYnVmZmVyQXR0YWNobWVudChjb25zdCBjaGFyKgogR0NHTGludCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycygpCiB7CiAgICAgaWYgKCFtX21heERyYXdC
dWZmZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfRFJBV19CVUZGRVJTLCAmbV9tYXhEcmF3QnVmZmVycyk7CisgICAgICAgIG1fbWF4RHJh
d0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9E
UkFXX0JVRkZFUlMpOwogICAgIHJldHVybiBtX21heERyYXdCdWZmZXJzOwogfQogCkBAIC0yOTA1
LDcgKzI4NzksNyBAQCBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9y
QXR0YWNobWVudHMoKQogewogICAgIC8vIERyYXdCdWZmZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9B
VFRBQ0hNRU5UUyA9PSBNQVhfRFJBV19CVUZGRVJTCiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNo
bWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
Ok1BWF9EUkFXX0JVRkZFUlMsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21h
eENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0
R0w6Ok1BWF9EUkFXX0JVRkZFUlMpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5j
cHAKaW5kZXggOWNiMGY4NTZiNThlMTBlNmY0NzMwOWU2ZmUzYzEwZTI2NzA5NzE2Ni4uNDk0MTU2
ZTFlNjViNjAyOTE5MGRiN2MxYzAyNmFkZjgwM2RkYThkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKQEAgLTk4LDEwICs5OCw4IEBAIGJv
b2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQgPSB3
ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVk
IGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlzIHN1cHBvcnRlZC4KLSAg
ICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gMDsKLSAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNo
bWVudHMgPSAwOwotICAgIGNvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RS
QVdfQlVGRkVSU19FWFQsICZtYXhEcmF3QnVmZmVycyk7Ci0gICAgY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbWF4Q29sb3JBdHRh
Y2htZW50cyk7CisgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IGNvbnRleHQtPmdldEludGVn
ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgR0NHTGludCBtYXhD
b2xvckF0dGFjaG1lbnRzID0gY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIGlmIChtYXhEcmF3QnVmZmVycyA8IDQgfHwgbWF4
Q29sb3JBdHRhY2htZW50cyA8IDQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAppbmRleCAwMWEwMmY1
MWQ3MmQ4OTJlYWI4ZThjMjcwNTA2Y2JmYzRlNzM2NTRhLi4zNjU4ZWU4ZWFhZjdmMGRiYjg4NjNj
ZWQ1MDI0MjVmNGZiNGUyM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcApAQCAtNjE5LDE0ICs2MTksMTQgQEAgYm9vbCBXZWJHTEZyYW1l
YnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3NDb250ZXh0R0wqIGczZCwgY29u
c3QgY2hhcioKICAgICAgICAgZzNkLT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7
CiAgICAgfQogICAgIGlmIChpbml0RGVwdGgpIHsKLSAgICAgICAgZzNkLT5nZXRGbG9hdHYoR3Jh
cGhpY3NDb250ZXh0R0w6OkRFUFRIX0NMRUFSX1ZBTFVFLCAmZGVwdGhDbGVhclZhbHVlKTsKLSAg
ICAgICAgZzNkLT5nZXRCb29sZWFudihHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfV1JJVEVNQVNL
LCAmZGVwdGhNYXNrKTsKKyAgICAgICAgZGVwdGhDbGVhclZhbHVlID0gZzNkLT5nZXRGbG9hdChH
cmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ0xFQVJfVkFMVUUpOworICAgICAgICBkZXB0aE1hc2sg
PSBnM2QtPmdldEJvb2xlYW4oR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX1dSSVRFTUFTSyk7CiAg
ICAgICAgIGczZC0+Y2xlYXJEZXB0aCgxLjBmKTsKICAgICAgICAgZzNkLT5kZXB0aE1hc2sodHJ1
ZSk7CiAgICAgfQogICAgIGlmIChpbml0U3RlbmNpbCkgewotICAgICAgICBnM2QtPmdldEludGVn
ZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFLCAmc3RlbmNpbENsZWFy
VmFsdWUpOwotICAgICAgICBnM2QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVO
Q0lMX1dSSVRFTUFTSywgcmVpbnRlcnByZXRfY2FzdDxHQ0dMaW50Kj4oJnN0ZW5jaWxNYXNrKSk7
CisgICAgICAgIHN0ZW5jaWxDbGVhclZhbHVlID0gZzNkLT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29u
dGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFKTsKKyAgICAgICAgc3RlbmNpbE1hc2sgPSBnM2Qt
PmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfV1JJVEVNQVNLKTsKICAgICAg
ICAgZzNkLT5jbGVhclN0ZW5jaWwoMCk7CiAgICAgICAgIGczZC0+c3RlbmNpbE1hc2soMHhmZmZm
ZmZmZik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5j
cHAKaW5kZXggYzhjM2I4MjI2NTI1M2MwZTA0ZWUwMWE2YjQxMjljOWM1ZjE4MDUyOS4uM2U0NmM1
ZTU2ZDEzZGNmY2YyZWNjMmRhZDJhYzE5NmE1ZjdjZWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCkBAIC0yMTYsOCArMjE2LDcgQEAgdm9pZCBXZWJH
TFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dEdMKiBj
b250ZXh0M2QpCiB7CiAgICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnMuY2xlYXIoKTsKIAotICAg
IEdDR0xpbnQgbnVtQXR0cmlicyA9IDA7Ci0gICAgY29udGV4dDNkLT5nZXRQcm9ncmFtaXYob2Jq
ZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUywgJm51bUF0dHJpYnMp
OworICAgIEdDR0xpbnQgbnVtQXR0cmlicyA9IGNvbnRleHQzZC0+Z2V0UHJvZ3JhbWkob2JqZWN0
KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUyk7CiAgICAgbV9hY3RpdmVB
dHRyaWJMb2NhdGlvbnMucmVzaXplKHN0YXRpY19jYXN0PHNpemVfdD4obnVtQXR0cmlicykpOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXR0cmliczsgKytpKSB7CiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGluZm87CkBAIC0yNDEsOCArMjQwLDcgQEAgdm9pZCBX
ZWJHTFByb2dyYW06OmNhY2hlSW5mb0lmTmVlZGVkKCkKICAgICBHcmFwaGljc0NvbnRleHRHTCog
Y29udGV4dCA9IGdldEFHcmFwaGljc0NvbnRleHRHTCgpOwogICAgIGlmICghY29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwotICAgIEdDR0xpbnQgbGlua1N0YXR1cyA9IDA7Ci0gICAgY29udGV4dC0+
Z2V0UHJvZ3JhbWl2KG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFUVVMsICZs
aW5rU3RhdHVzKTsKKyAgICBHQ0dMaW50IGxpbmtTdGF0dXMgPSBjb250ZXh0LT5nZXRQcm9ncmFt
aShvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsKICAgICBtX2xpbmtT
dGF0dXMgPSBsaW5rU3RhdHVzOwogICAgIGlmIChtX2xpbmtTdGF0dXMpIHsKICAgICAgICAgY2Fj
aGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkMmZhYzIwMzYy
NDk5NTg1ZTBkNTE1NTZjYzVjYTRlM2FhYzMzZGFmLi42OTNkNjIwNmYyYzkwZjk1ZmRhOTczYjk5
OGViOTY0NjdkY2ZlYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMwNywxMSArMzA3LDggQEAgV2ViR0xBbnkg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
R0NHTGVudW0gdGFyZ2UKICAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViR0xUZXh0dXJlJj4oKm9iamVjdCkpOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAgICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJF
X01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKLSAgICAgICAgICAgIEdDR0xpbnQgdmFsdWUgPSAw
OwotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOwotICAgICAgICB9CisgICAgICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBt
X2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRh
Y2htZW50LCBwbmFtZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUgZm9yIHRleHR1cmUg
YXR0YWNobWVudCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNDcsOSArMzQ0
LDkgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKCkK
ICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
aWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4
dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQsICZtX21heERyYXdCdWZmZXJzKTsKKyAg
ICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25z
R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50
cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xP
Ul9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21h
eENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpN
QVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVx
dWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCiAgICAgcmV0
dXJuIHN0ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50cyk7CiB9
CkBAIC0zNTksNyArMzU2LDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1h
eENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5U
U19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNo
bWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRU
QUNITUVOVFNfRVhUKTsKICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCmluZGV4IDZjMzcyOTlkNDM3N2FhMDNjMjk1MWMyNDA1MDU4OWU4YjNjMzBm
YTcuLjE0YmY5ZWU4ZTNjYWI2NzlkODFkOTI5ZjlhNmNjNzlhNjdiOGQ2MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCkBAIC04NzIsOCArODcyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jbGVhclN0ZW5jaWwgPSAwOwogICAgIG1f
Y29sb3JNYXNrWzBdID0gbV9jb2xvck1hc2tbMV0gPSBtX2NvbG9yTWFza1syXSA9IG1fY29sb3JN
YXNrWzNdID0gdHJ1ZTsKIAotICAgIEdDR0xpbnQgbnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0
cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFY
X0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZudW1Db21iaW5lZFRleHR1cmVJbWFnZVVu
aXRzKTsKKyAgICBHQ0dMaW50IG51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgPSBtX2NvbnRl
eHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lN
QUdFX1VOSVRTKTsKICAgICBtX3RleHR1cmVVbml0cy5jbGVhcigpOwogICAgIG1fdGV4dHVyZVVu
aXRzLnJlc2l6ZShudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKICNpZiAhVVNFKEFOR0xF
KQpAQCAtODgxLDE4ICs4ODAsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpp
bml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgICAgIG1fdW5yZW5kZXJhYmxlVGV4dHVyZVVuaXRz
LmFkZChpKTsKICNlbmRpZgogICAgIAotICAgIEdDR0xpbnQgbnVtVmVydGV4QXR0cmlicyA9IDA7
Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1ZFUlRF
WF9BVFRSSUJTLCAmbnVtVmVydGV4QXR0cmlicyk7CisgICAgR0NHTGludCBudW1WZXJ0ZXhBdHRy
aWJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVkVSVEVY
X0FUVFJJQlMpOwogICAgIG1fbWF4VmVydGV4QXR0cmlicyA9IG51bVZlcnRleEF0dHJpYnM7CiAg
ICAgCi0gICAgbV9tYXhUZXh0dXJlU2l6ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfU0laRSwgJm1fbWF4VGV4dHVyZVNpemUp
OworICAgIG1fbWF4VGV4dHVyZVNpemUgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9URVhUVVJFX1NJWkUpOwogICAgIG1fbWF4VGV4dHVyZUxldmVsID0gV2Vi
R0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heFRleHR1cmVTaXplLCBtX21heFRleHR1
cmVTaXplKTsKLSAgICBtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSA9IDA7Ci0gICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NVQkVfTUFQX1RFWFRVUkVfU0la
RSwgJm1fbWF4Q3ViZU1hcFRleHR1cmVTaXplKTsKKyAgICBtX21heEN1YmVNYXBUZXh0dXJlU2l6
ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NVQkVfTUFQ
X1RFWFRVUkVfU0laRSk7CiAgICAgbV9tYXhDdWJlTWFwVGV4dHVyZUxldmVsID0gV2ViR0xUZXh0
dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSwgbV9tYXhDdWJl
TWFwVGV4dHVyZVNpemUpOwotICAgIG1fbWF4UmVuZGVyYnVmZmVyU2l6ZSA9IDA7Ci0gICAgbV9j
b250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1JFTkRFUkJVRkZFUl9T
SVpFLCAmbV9tYXhSZW5kZXJidWZmZXJTaXplKTsKKyAgICBtX21heFJlbmRlcmJ1ZmZlclNpemUg
PSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9SRU5ERVJCVUZG
RVJfU0laRSk7CiAKICAgICAvLyBUaGVzZSB0d28gdmFsdWVzIGZyb20gRVhUX2RyYXdfYnVmZmVy
cyBhcmUgbGF6aWx5IHF1ZXJpZWQuCiAgICAgbV9tYXhEcmF3QnVmZmVycyA9IDA7CkBAIC0xNzQx
LDggKzE3MzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFk
ZXIoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJjb21waWxlU2hhZGVyIiwgJnNoYWRl
cikpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoc2hhZGVy
Lm9iamVjdCgpKTsKLSAgICBHQ0dMaW50IHZhbHVlOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVy
aXYoc2hhZGVyLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZ2
YWx1ZSk7CisgICAgR0NHTGludCB2YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIu
b2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUyk7CiAgICAgc2hhZGVy
LnNldFZhbGlkKHZhbHVlKTsKIAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMoKTsKQEAg
LTI4ODgsOCArMjg4Miw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omdl
dEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4
dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICBHQ0dM
aW50IHZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUp
OwogICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QlVGRkVSX1NJWkUpCiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVl
KTsKQEAgLTMxODksMjYgKzMxODIsMjYgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEcKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hh
ZGVyKCJnZXRQcm9ncmFtUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERUxFVEVfU1RBVFVTOgogICAgICAgICByZXR1cm4g
cHJvZ3JhbS5pc0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpWQUxJREFU
RV9TVEFUVVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0
KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFs
dWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRQcm9n
cmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkxJTktfU1RBVFVTOgogICAgICAgICByZXR1cm4gcHJvZ3JhbS5nZXRMaW5rU3RhdHVzKCk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QVRUQUNIRURfU0hBREVSUzoKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7
Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0UHJv
Z3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkFDVElWRV9BVFRSSUJVVEVTOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElW
RV9VTklGT1JNUzoKICNpZiBVU0UoQU5HTEUpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3Jh
bWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gbV9j
b250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSk7CiAjZWxzZQotICAg
ICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQo
KSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgpLCBwbmFt
ZSwgJnZhbHVlKTsKKyAgICAgICAgeworICAgICAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Cisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4
dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgp
LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQog
I2VuZGlmIC8vIFVTRShBTkdMRSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIGRlZmF1bHQ6
CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICAgICAgaWYgKGlzV2ViR0wyKCkpIHsKQEAgLTMyMTYs
OCArMzIwOSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREU6CiAgICAgICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6
CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STV9CTE9D
S1M6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmpl
Y3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
ICAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0
KCksIHBuYW1lKTsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkBAIC0zMjgwLDcgKzMyNzIsNiBAQCBXZWJHTEFueSBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQwogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCi0gICAgR0NHTGludCB2YWx1ZSA9
IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJF
TkRFUkJVRkZFUl9TQU1QTEVTOgogICAgICAgICBpZiAoIWlzV2ViR0wyKCkpIHsKQEAgLTMyOTYs
OCArMzI4Nyw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkVOREVSQlVGRkVSX0FMUEhBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6UkVOREVSQlVGRkVSX1NURU5DSUxfU0laRToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcmkodGFyZ2V0LCBwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVS
QlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKICAgICAgICAgcmV0dXJuIG1fcmVuZGVyYnVmZmVyQmlu
ZGluZy0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKICAgICBkZWZhdWx0OgpAQCAtMzMxMCwxNiArMzMw
MCwxMyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJh
bWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAogewogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFNoYWRlclBh
cmFtZXRlciIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBHQ0dMaW50
IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6REVMRVRFX1NUQVRVUzoKICAgICAgICAgcmV0dXJuIHNoYWRlci5pc0RlbGV0ZWQoKTsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUzoKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5h
bWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFERVJfVFlQRToKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLm9i
amVjdCgpLCBwbmFtZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRTaGFkZXJQYXJhbWV0ZXIiLCAi
aW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMz
NzgsMjAgKzMzNjUsMTUgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG4KICAgICBhdXRvIHRleCA9
IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImdldFRleFBhcmFtZXRlciIsIHRhcmdldCk7CiAgICAg
aWYgKCF0ZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEdDR0xpbnQgdmFsdWUgPSAw
OwotICAgIEdDR0xmbG9hdCBmVmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BR19GSUxURVI6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fRklMVEVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfV1JBUF9TOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRV
UkVfV1JBUF9UOgotICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwg
cG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFs
dWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29udGV4dC0+Z2V0
VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSk7CiAgICAgY2FzZSBFeHRlbnNpb25zR0w6OlRF
WFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMKLSAgICAgICAgaWYgKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsICZmVmFsdWUp
OwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihmVmFsdWUpOwotICAgICAg
ICB9CisgICAgICAgIGlmIChtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykKKyAgICAgICAg
ICAgIHJldHVybiBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CiAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
ICJnZXRUZXhQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwgRVhUX3RleHR1cmVf
ZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGRlZmF1bHQ6CkBAIC0zNTU1LDcgKzM1MzcsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3Qg
V2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1m
dkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgMTYgKiBzaXplb2YoR0NHTGZsb2F0KSwg
dmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
VW5pZm9ybWZ2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgbWFr
ZUdDR0xTcGFuKHZhbHVlLCBsZW5ndGgpKTsKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwogICAgICAgICByZXR1cm4gRmxvYXQzMkFycmF5Ojp0
cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7CkBAIC0zNTY3LDE0ICszNTQ5LDE0IEBAIFdlYkdMQW55
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9n
cmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5n
ZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdD
R0xpbnQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgbV9jb250
ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVlKTsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0
aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUsIGxlbmd0aCkpOwogICAgICAgICBpZiAobGVuZ3RoID09
IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07CiAgICAgICAgIHJldHVybiBJbnQzMkFy
cmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlVOU0lHTkVEX0lOVDogewogICAgICAgICBHQ0dMdWludCB2YWx1ZVs0XSA9IHsw
fTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0ub2JqZWN0KCksIGxv
Y2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybXVpdihwcm9ncmFt
Lm9iamVjdCgpLCBsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVlLCBsZW5ndGgpKTsKICAgICAg
ICAgaWYgKGxlbmd0aCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwogICAgICAg
ICByZXR1cm4gVWludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKQEAgLTM1ODYs
NyArMzU2OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxv
Y2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKICNlbmRp
ZgotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbS5vYmplY3QoKSwg
bG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHBy
b2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUsIGxlbmd0aCkpOwog
ICAgICAgICBpZiAobGVuZ3RoID4gMSkgewogICAgICAgICAgICAgVmVjdG9yPGJvb2w+IHZlY3Rv
cihsZW5ndGgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGxlbmd0aDsg
aisrKQpAQCAtMzYyNCw3ICszNjA2LDcgQEAgUmVmUHRyPFdlYkdMVW5pZm9ybUxvY2F0aW9uPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0wKIAogICAg
IEdDR0xpbnQgYWN0aXZlVW5pZm9ybXMgPSAwOwogI2lmIFVTRShBTkdMRSkKLSAgICBtX2NvbnRl
eHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6QUNU
SVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOworICAgIGFjdGl2ZVVuaWZvcm1zID0gbV9j
b250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6
QUNUSVZFX1VOSUZPUk1TKTsKICNlbHNlCiAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5nZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291
bnQocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNUywg
JmFjdGl2ZVVuaWZvcm1zKTsKICNlbmRpZgpAQCAtNjIzNyw5ICs2MjE5LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN1bWUoKQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldEJvb2xlYW5QYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NH
TGJvb2xlYW4gdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsICZ2
YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldEJvb2xl
YW4ocG5hbWUpOwogfQogCiBWZWN0b3I8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQpAQCAtNjI1OCwyMyArNjIz
OCwxNyBAQCBWZWN0b3I8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Qm9vbGVh
bkFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogCiBmbG9hdCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRGbG9hdFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAgICBHQ0dM
ZmxvYXQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCAmdmFsdWUp
OwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRGbG9hdChwbmFt
ZSk7CiB9CiAKIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRJbnRQYXJhbWV0ZXIo
R0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihwbmFtZSk7CiB9CiAKIHVuc2lnbmVkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1l
KQogewotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYo
cG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2NvbnRleHQt
PmdldEludGVnZXIocG5hbWUpOwogfQogCiBSZWZQdHI8RmxvYXQzMkFycmF5PiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIoR0NHTGVudW0gcG5h
bWUpCkBAIC03NjI2LDkgKzc2MDAsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldE1heERyYXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBt
X2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQs
ICZtX21heERyYXdCdWZmZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4
dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICBp
ZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
dihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0
YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdl
dEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAv
LyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1B
WF9EUkFXX0JVRkZFUlMuCiAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1f
bWF4Q29sb3JBdHRhY2htZW50cyk7CiB9CkBAIC03NjM4LDcgKzc2MTIsNyBAQCBHQ0dMaW50IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldE1heENvbG9yQXR0YWNobWVudHMoKQogICAgIGlm
ICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1f
bWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRl
bnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0YWNobWVu
dHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVn
ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICByZXR1cm4g
bV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IDM0ZjE3ZWM2MWIzMzEwMzcxYzJkZGJkMGEw
MTc1YzYwYjkzZDE2ZjUuLmJhODY1YjMzMDhlNmM5NDU4MjIxMjIzNzc5NmQ2ZmQ1Nzc0ODQ3Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNH
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5o
CkBAIC0zMDYsMjEgKzMwNiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0
cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwogCiAgICAg
Ly8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9v
bGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
ZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJ2Um9idXN0QU5H
TEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTaGFkZXJpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4
QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcG9pbnRlcikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBw
YXJhbXMpID0gMDsKQEAgLTMzNiwxNCArMzIxLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIGRhdGEpID0gMDsgLy8gTk9MSU5UCiAgICAgdmlydHVhbCB2b2lkIGdldEludGVybmFs
Zm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmli
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogZGF0YSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQ2NCogZGF0YSkgPSAwOyAvLyBOT0xJTlQKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVm
ZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJh
bXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50KiBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGQ5ZTU4
OGFmYTMwZGJhNzMwOTMwZjk2Yzk4NzI5MTM0MDEyOThjMWUuLmY4ZDcxNTY4NzA1MjhkZTllMTlk
M2RkYTEwYmM1YWMwMGZjYTRmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtOTg2LDMxICs5ODYsMzAgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGdldEJ1
ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8gZ2V0UGFyYW1ldGVy
CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyaV92KEdDR0xlbnVtIHBu
YW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2YWx1ZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dy
YW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2
YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwg
R0NHTGJvb2xlYW4qIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEZsb2F0dihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUp
ID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUp
ID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRQcm9ncmFtaShQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4g
dmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTGVudW0gZ2V0RXJyb3IoKSA9IDA7CiAKICAg
ICAvLyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAg
ICB2aXJ0dWFsIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAK
ICAgICAvLyBnZXRQcm9ncmFtUGFyYW1ldGVyCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvZ3Jh
bUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgLy8gZ2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAg
dmlydHVhbCBHQ0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8gZ2V0U2hhZGVyUGFyYW1ldGVyCi0gICAg
dmlydHVhbCB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRTaGFkZXJpKFBs
YXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVt
IHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pID0gMDsK
QEAgLTEwMTgsMTkgKzEwMTcsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFNo
YWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAgICAvLyBnZXRUZXhQYXJhbWV0
ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFRleFBhcmFtZXRlcmYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBn
ZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAog
ICAgIC8vIGdldFVuaWZvcm0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xm
bG9hdD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgPSAw
OwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAogICAgIC8vIGdldFZlcnRleEF0dHJpYgot
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVy
dGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc2l6
ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSkgPSAwOwogCkBAIC0xMjM2LDcgKzEyMzUsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwogCisgICAgdmlydHVh
bCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50
IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFy
YW1zKSA9IDA7CisKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCisgICAgR0NHTGZsb2F0IGdldEZs
b2F0KEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMYm9vbGVhbiBnZXRCb29sZWFuKEdDR0xlbnVt
IHBuYW1lKTsKKyAgICBHQ0dMaW50IGdldEludGVnZXIoR0NHTGVudW0gcG5hbWUpOworICAgIEdD
R0xpbnQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyczsg
fQogICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7IH0KQEAgLTEzNjcsNiArMTM3Miwz
NSBAQCBwcml2YXRlOgogICAgIERlc3RpbmF0aW9uIG1fZGVzdGluYXRpb247CiB9OwogCitpbmxp
bmUgR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdChHQ0dMZW51bSBwbmFtZSkK
K3sKKyAgICBHQ0dMZmxvYXQgdmFsdWVbMV0geyB9OworICAgIGdldEZsb2F0dihwbmFtZSwgdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xib29sZWFuIEdyYXBo
aWNzQ29udGV4dEdMOjpnZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKQoreworICAgIEdDR0xib29s
ZWFuIHZhbHVlWzFdIHsgfTsKKyAgICBnZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgIHJl
dHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6Omdl
dEludGVnZXIoR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NHTGludCB2YWx1ZVsxXSB7IH07Cisg
ICAgZ2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWVbMF07Cit9CisK
K2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBw
bmFtZSkKK3sKKyAgICBHQ0dMaW50IHZhbHVlWzFdIHsgfTsKKyAgICBnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWVbMF07Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dM
LmgKaW5kZXggNjk5ZGUyOGJhZWI5MmNjMjUzMzk0ZGJhODBiN2U3YTc4ZTEzZjQ0NS4uZGIwZjAz
YzhiMmUyNWM4MzU5ZDMwNmY5NDJiNmJmYTIyYTczMGIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcgKzI1LDkg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIC8vIEdDR0wgdHlwZXMgbWF0Y2gg
dGhlIGNvcnJlc3BvbmRpbmcgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wgRVMgMi4wCiAv
LyBoZWFkZXIgZmlsZSBnbDIuaCBmcm9tIGtocm9ub3Mub3JnLgpAQCAtNTUsMyArNTcsNTEgQEAg
dHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2JqZWN0OwogI2lmICFQTEFURk9STShDT0NPQSkK
IHR5cGVkZWYgdW5zaWduZWQgR0x1aW50OwogI2VuZGlmCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBFeHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPgorc3Ry
dWN0IEdDR0xTcGFuOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4KK3N0cnVj
dCBHQ0dMU3BhbiB7CisgICAgZXhwbGljaXQgR0NHTFNwYW4oVCogYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheSkKKyAgICB7IH0KKyAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCisg
ICAgICAgIDogZGF0YShhcnJheSkKKyAgICB7IH0KKyAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBp
KSB7IEFTU0VSVChkYXRhKTsgQVNTRVJUKGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0K
KyAgICBUJiBvcGVyYXRvciooKSB7ICBBU1NFUlQoZGF0YSk7IHJldHVybiAqZGF0YTsgfQorICAg
IFQqIGRhdGE7CisgICAgY29uc3RleHByIHN0YXRpYyBzaXplX3QgYnVmU2l6ZSA9IEV4dGVudDsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4geworICAgIEdDR0xTcGFuKFQqIGFycmF5LCBzaXpl
X3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKGJ1
ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHNpemVfdCBTej4gR0NHTFNwYW4oVCAoJmFy
cmF5KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKFN6KQor
ICAgIHsgfQorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JiBhcnJheSkKKyAgICAgICAgOiBk
YXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXplKGFycmF5LnNpemUoKSkKKyAgICB7
IH0KKyAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IEFTU0VSVChkYXRhKTsgQVNTRVJUKGkg
PCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KKyAgICBUJiBvcGVyYXRvciooKSB7IEFTU0VS
VChkYXRhKTsgcmV0dXJuICpkYXRhOyB9CisgICAgVCogZGF0YTsKKyAgICBjb25zdCBzaXplX3Qg
YnVmU2l6ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorR0NHTFNwYW4o
VCAoJilbTl0pIC0+IEdDR0xTcGFuPFQsIE4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorR0NH
TFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK0dDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3QgY291bnQpCit7
CisgICAgcmV0dXJuIEdDR0xTcGFuPFQ+IHsgZGF0YSwgY291bnQgfTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmNwcAppbmRleCAxYzhiYzQyNTUwZjFjMWQ5NWMzMDgyZjY3Mzc2YTU2OTUwNmJmYWIz
Li40ZDAyNWI5OTM0MjI3NzZiOWI1ZjRhYWJjMzlhMGM3ODkxOTQwYTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9u
c0dMQU5HTEUuY3BwCkBAIC0xMTMsOCArMTEzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAotICAgIGludCBzb3VyY2VMZW5ndGggPSAwOwotICAgIG1fY29udGV4dC0+
Z2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FO
R0xFLCAmc291cmNlTGVuZ3RoKTsKKyAgICBpbnQgc291cmNlTGVuZ3RoID0gbV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdM
RSk7CiAgICAgaWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xfVFJBTlNMQVRF
RF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgpA
QCAtMjc5LDEyNiArMjc4LDYgQEAgR0NHTGVudW0gRXh0ZW5zaW9uc0dMQU5HTEU6OmFkanVzdFdl
YkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGYKIH0KIAogLy8gR0xf
QU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJv
b2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0Qm9v
bGVhbnZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRCdWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RmxvYXR2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEZsb2F0dlJvYnVzdEFOR0xFKHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBhdHRh
Y2htZW50LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBk
YXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFBy
b2dyYW1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0U2hhZGVyaXZSb2J1c3RBTkdMRShzaGFkZXIsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRl
eFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5h
bWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdl
dCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0s
IGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwg
bG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdM
RShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0
QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBvaW50
ZXIpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUo
aW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKQog
ewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTUxNywxNCAr
Mzk2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHAKICAgICBnbDo6R2V0QnVmZmVyUG9pbnRl
cnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcmlfdlJv
YnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0KIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtNTU3LDMwICs0Mjgs
NiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRVbmlmb3JtdWl2Um9idXN0
QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUo
cHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2NHZSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50NjQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xF
KHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+KGRhdGEp
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0aV92Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50
ZWdlcjY0aV92Um9idXN0QU5HTEUodGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCByZWlu
dGVycHJldF9jYXN0PEdMaW50NjQqPihkYXRhKSk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQ2NCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IDEyNTY5NTY3YzE3YzkyNmI3MWE5MWJiNGJiMTE5
NTU2YmEwNmYxNzAuLjU3YmI5M2JjODRjMzM1OTBmYmNmNGIzZjdhMWViNWE1NWM1OTI1NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lv
bnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNzMsMjEgKzczLDYgQEAgcHVibGljOgogICAgIGJvb2wg
cmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAogICAgIC8vIEdMX0FO
R0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCBnZXRCb29sZWFudlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmli
UG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkg
KmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2
b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CkBAIC0x
MDMsMTQgKzg4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2
b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKICAgICB2
b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAogICAgIHZvaWQgZ2V0QnVmZmVyUGFy
YW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAppbmRleCBkZjZmMzRjOWQ2MThkMDdhZGYyMTk4NWEzMDFjYmU0MTQyOTM5MDhhLi40
OTE4YzYzOThiZTE1Mjc2MjhhNjI4YTc5NmIzMDljOWNhMWJhMTUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzMwLDQ5ICszMzAsMzAgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGludGUKICAgICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKKyAgICBnbDo6R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShwbmFtZSwgdmFsdWUuYnVm
U2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiAKICAgICBzd2l0Y2ggKHBuYW1lKSB7Ci0gICAg
Y2FzZSBNQVhfVEVYVFVSRV9TSVpFOgotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoTUFYX1RFWFRV
UkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQotICAgICAgICAgICAgKnZhbHVlID0gc3RkOjpt
aW4oNDA5NiwgKnZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNQVhfQ1VCRV9NQVBf
VEVYVFVSRV9TSVpFOgotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoTUFYX0NVQkVfTUFQX1RFWFRV
UkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQotICAgICAgICAgICAgKnZhbHVlID0gc3RkOjpt
aW4oMTAyNCwgKnZhbHVlKTsKLSAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IC8vIFNvbWUgb2xkZXIgaGFyZHdhcmUgYWR2ZXJ0aXNlcyBhIGxhcmdlciBtYXhpbXVtIHRoYW4g
dGhleQogICAgIC8vIGNhbiBhY3R1YWxseSBoYW5kbGUuIFJhdGhlciB0aGFuIGRldGVjdGluZyBz
dWNoIGRldmljZXMsIHNpbXBseQogICAgIC8vIGNsYW1wIHRoZSBtYXhpbXVtIHRvIDgxOTIsIHdo
aWNoIGlzIGJpZyBlbm91Z2ggZm9yIGEgNUsgZGlzcGxheS4KICAgICBjYXNlIE1BWF9SRU5ERVJC
VUZGRVJfU0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9SRU5ERVJCVUZGRVJfU0la
RSwgdmFsdWUpOwogICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbig4MTkyLCAqdmFsdWUpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE1BWF9WSUVXUE9SVF9ESU1TOgotICAgICAgICBnbDo6R2V0
SW50ZWdlcnYoTUFYX1ZJRVdQT1JUX0RJTVMsIHZhbHVlKTsKICAgICAgICAgdmFsdWVbMF0gPSBz
dGQ6Om1pbig4MTkyLCB2YWx1ZVswXSk7CiAgICAgICAgIHZhbHVlWzFdID0gc3RkOjptaW4oODE5
MiwgdmFsdWVbMV0pOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIGdsOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBicmVhazsKICAgICB9
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3YoR0NHTGVu
dW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdl
cmlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xl
bnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTEyMTEsNyArMTE5Miw2IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHCiAKICAgICBHTGludCBtYXhVbmlmb3JtU2l6ZSA9IDA7CiAg
ICAgZ2w6OkdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RI
LCAmbWF4VW5pZm9ybVNpemUpOwotCiAgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShtYXhVbmlmb3Jt
U2l6ZSk7IC8vIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJt
aW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAw
OwpAQCAtMTgxOCw2NCArMTc5OCw2NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpi
aW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICBnbDo6QmluZFZlcnRl
eEFycmF5KGFycmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9v
bGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
Ym9vbGVhbj4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6
OkdldEJvb2xlYW52Um9idXN0QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZh
bHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQ
YXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0g
MDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
dGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFt
ZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZs
b2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0
RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEZsb2F0dlJvYnVzdEFOR0xFKHBuYW1l
LCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KICAgICAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQ2NCogdmFsdWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVn
ZXI2NChHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICp2YWx1ZSA9
IDA7Ci0gICAgZ2w6OkdldEludGVnZXI2NHYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgIGdsOjpHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUocG5hbWUsIDEsIG51bGxw
dHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4
LCBHQ0dMaW50NjQqIHZhbHVlKQorR0NHTGludDY0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKIHsKKyAgICBHQ0dM
aW50NjQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgICp2YWx1ZSA9IDA7Ci0gICAgZ2w6OkdldEludGVnZXI2NGlfdihwbmFt
ZSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRJbnRl
Z2VyNjRpX3ZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIDEsIG51bGxwdHIsICZ2YWx1ZSk7Cisg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKIHsK
KyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KKyAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIGlmIChhdHRhY2ht
ZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkKICAgICAgICAgYXR0YWNobWVudCA9IERF
UFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgot
ICAgIGdsOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFj
aG1lbnQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgMSwgbnVsbHB0
ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCiB7
CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwg
dmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFByb2dyYW1pdlJvYnVz
dEFOR0xFKHByb2dyYW0sIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2
YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbm1hbmdsZWRJ
bmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyc1syXSwgR0NHTHNpemVpIGNvdW50LCBjb25z
dCBTdHJpbmcmIGxvZykKQEAgLTE5MjEsMjIgKzE5MDQsMjMgQEAgU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0p
CiAgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhp
bmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsK
KyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFy
Z2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0
ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAg
ICBBU1NFUlQoc2hhZGVyKTsKLQorICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTaGFkZXJp
dihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6
R2V0U2hhZGVyaXZSb2J1c3RBTkdMRShzaGFkZXIsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpAQCAtMTk2NCw0NCAr
MTk0OCw0OSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJj
ZShQbGF0Zm9ybUdMT2JqZWN0KQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmdihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZsb2F0IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUpCiB7CisgICAgR0NHTGZsb2F0IHZhbHVlID0gMC5mOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0
ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBn
bDo6R2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCAxLCBudWxscHRy
LCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRU
ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NH
TGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKHRhcmdldCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZh
bHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVl
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1
ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgLy8g
RklYTUU6IEJ1ZyBpbiBBTkdMRSBidWZTaXplIHZhbGlkYXRpb24gZm9yIHVuaWZvcm1zLgorICAg
IGF1dG8gYnVmU2l6ZSA9IHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoKnZhbHVlKTsKKyAgICBnbDo6
R2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIG51bGxw
dHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRV
bmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
aW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xp
bnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsK
KyAgICAvLyBGSVhNRTogQnVnIGluIEFOR0xFIGJ1ZlNpemUgdmFsaWRhdGlvbiBmb3IgdW5pZm9y
bXMuCisgICAgYXV0byBidWZTaXplID0gdmFsdWUuYnVmU2l6ZSAqIHNpemVvZigqdmFsdWUpOwor
ICAgIGdsOjpHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6
ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMdWludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRV
bmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48R0NHTHVpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0
aW9uLCB2YWx1ZSk7CisgICAgLy8gRklYTUU6IEJ1ZyBpbiBBTkdMRSBidWZTaXplIHZhbGlkYXRp
b24gZm9yIHVuaWZvcm1zLgorICAgIGF1dG8gYnVmU2l6ZSA9IHZhbHVlLmJ1ZlNpemUgKiBzaXpl
b2YoKnZhbHVlKTsKKyAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxv
Y2F0aW9uLCBidWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAogR0NHTGludCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMjAxNCwyMCArMjAwMywyMCBAQCBHQ0dM
aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJldHVybiBnbDo6R2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZs
b2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBnbDo6R2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7
CisgICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1
ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUp
OworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFs
dWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKIEdDR0xzaXplaXB0ciBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSkKQEAgLTIwMzYsNyArMjAyNSw3IEBAIEdDR0xzaXplaXB0ciBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4
LCBHQ0dMCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgR0x2b2lkKiBwb2ludGVyID0gMDsKLSAg
ICBnbDo6R2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBuYW1lLCAmcG9pbnRlcik7Cisg
ICAgZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCAx
LCBudWxscHRyLCAmcG9pbnRlcik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0
cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCkBAIC0yOTUzLDYg
KzI5NDIsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmEKICAgICBnbDo6VW5pZm9ybU1hdHJp
eDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwog
fQogCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQorICAgICAgICByZXR1cm47CisgICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2Um9idXN0QU5HTEUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMu
YnVmU2l6ZSwgbnVsbHB0ciwgcGFyYW1zLmRhdGEpOworfQorCisKICNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShBVkZPVU5EQVRJT04pCiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6YXNDVigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAppbmRl
eCA2ZDUwM2JjYmE3NWFmYjhjNTA3OTBiMWMyNGUyODI4MzZjNTVkOTQ5Li5jYmFmMDYwYjU1NjM5
ZmRiNTVhYjdlYWU0MTdlZjVkMjA0MzlkOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RS5jcHAKQEAgLTQ2NCw4ICs0NjQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6
aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogCiAgICAgbV9jb250ZXh0LT5jb21waWxlU2hh
ZGVyRGlyZWN0KHZlcnRleFNoYWRlcik7CiAKLSAgICBHQ0dMaW50IHN0YXR1cyA9IDA7Ci0gICAg
bV9jb250ZXh0LT5nZXRTaGFkZXJpdih2ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QSUxFX1NUQVRVUywgJnN0YXR1cyk7CisgICAgR0NHTGludCBzdGF0dXMgPSBtX2NvbnRleHQt
PmdldFNoYWRlcmkodmVydGV4U2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFU
VVMpOwogICAgIGlmICghc3RhdHVzKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gVmVydGV4IHNo
YWRlciBmYWlsZWQgdG8gY29tcGlsZS4iLCB0aGlzKTsKICAgICAgICAgbV9jb250ZXh0LT5kZWxl
dGVTaGFkZXIodmVydGV4U2hhZGVyKTsKQEAgLTQ4MCw3ICs0NzksNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogCiAgICAgbV9j
b250ZXh0LT5jb21waWxlU2hhZGVyRGlyZWN0KGZyYWdtZW50U2hhZGVyKTsKIAotICAgIG1fY29u
dGV4dC0+Z2V0U2hhZGVyaXYoZnJhZ21lbnRTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
SUxFX1NUQVRVUywgJnN0YXR1cyk7CisgICAgc3RhdHVzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJp
KGZyYWdtZW50U2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMpOwogICAg
IGlmICghc3RhdHVzKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gRnJhZ21lbnQgc2hhZGVyIGZh
aWxlZCB0byBjb21waWxlLiIsIHRoaXMpOwogICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRl
cih2ZXJ0ZXhTaGFkZXIpOwpAQCAtNDkzLDcgKzQ5Miw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cygpCiAgICAgbV9jb250ZXh0LT5h
dHRhY2hTaGFkZXIobV95dXZQcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CiAgICAgbV9jb250ZXh0
LT5saW5rUHJvZ3JhbShtX3l1dlByb2dyYW0pOwogCi0gICAgbV9jb250ZXh0LT5nZXRQcm9ncmFt
aXYobV95dXZQcm9ncmFtLCBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFUVVMsICZzdGF0dXMp
OworICAgIHN0YXR1cyA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkobV95dXZQcm9ncmFtLCBHcmFw
aGljc0NvbnRleHRHTDo6TElOS19TVEFUVVMpOwogICAgIGlmICghc3RhdHVzKSB7CiAgICAgICAg
IExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4
dE9iamVjdHMoJXApIC0gUHJvZ3JhbSBmYWlsZWQgdG8gbGluay4iLCB0aGlzKTsKICAgICAgICAg
bV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggODA2MTBkZTdkNDMxY2Y0MjYyOTk3ZjRmZmNlMzdi
NmJlMWVlNzQwNC4uMzRmZWYwNWI2MjM3ODcwZDA1YmQxYTMyYzJmNDVhNDE5MWIzZjcwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBA
QCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgICAgIFNoQnVpbHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlcyA9IGNv
bXBpbGVyLmdldFJlc291cmNlcygpOwogICAgICAgICBpZiAoIUFOR0xFUmVzb3VyY2VzLkVYVF9k
cmF3X2J1ZmZlcnMpIHsKICAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZl
cnMgPSAxOwotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6
Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAmQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMpOwor
ICAgICAgICAgICAgQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdl
dEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgICAgICAg
ICBjb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNvdXJjZXMpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChuYW1lID09ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgewpAQCAtMTcy
LDcgKzE3Miw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAKICAgICBBTkdMRVdlYktpdEJy
aWRnZSYgY29tcGlsZXIgPSBtX2NvbnRleHQtPm1fY29tcGlsZXI7CiAKLSAgICBtX2NvbnRleHQt
PmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFLCAmR0xz
aGFkZXJUeXBlKTsKKyAgICBHTHNoYWRlclR5cGUgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hh
ZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6U0hBREVSX1RZUEUpOwogCiAgICAgaWYgKEdMc2hhZGVy
VHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VkVSVEVYX1NIQURFUikKICAgICAgICAgc2hhZGVy
VHlwZSA9IFNIQURFUl9UWVBFX1ZFUlRFWDsKQEAgLTI1NCw4MSArMjU0LDYgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIGludCwgR0NH
THNpemVpLCBHQ0dMaW4KICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJv
b2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xi
b29sZWFuICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZm
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VydlJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShH
Q0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50
LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShH
Q0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliaXZS
b2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRl
eEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCB2b2lkICoqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkg
KiwgR0NHTHNpemVpICosIHZvaWQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTQwMCwxMSArMzI1LDYgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVu
dW0sIEdDR0xlbnVtLAogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50
ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKIHsKICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTQzMCwxNiArMzUw
LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCiB7CiAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggMDQ4OTRiOTFjODJjYzRiMWIy
MDlhN2FmZDIyOWNiZGNhOWEwMWE0My4uOTdlZWRmYjc0ODVjODMyZjc5M2M4Y2ZmMGZhMTdmYmZm
YmU2NTg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNjksMjEg
KzY5LDYgQEAgcHVibGljOgogICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4
dHVyZVNpemU7IH0KIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAg
dm9pZCBnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
Kipwb2ludGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQg
eCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJy
aWRlOwogICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTk5
LDE0ICs4NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlP
YmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBpbnQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW50ZXJuYWxm
b3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVn
ZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50
ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggYWI4Y2I1NGY1ZTg3OWVmNGI4
YTkwZDE5YTdlYzkyYzg5Y2UyMDU3Yi4uZDI4ZjRhMDMxZWJkYzQ4Mzg3NWQzOTg0ODdkNTc4NzQ4
ZmRlNDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC03NCwxMSArNzQs
OCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGb3IgR0xfRVhUX3JvYnVzdG5l
c3MsIGNoZWNrIHRoYXQgdGhlIGNvbnRleHQgc3VwcG9ydHMgcm9idXN0IGFjY2Vzcy4KLSAgICBp
ZiAobmFtZSA9PSAiR0xfRVhUX3JvYnVzdG5lc3MiKSB7Ci0gICAgICAgIEdMaW50IHJvYnVzdEFj
Y2VzcyA9IEdMX0ZBTFNFOwotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lv
bnNHTDo6Q09OVEVYVF9ST0JVU1RfQUNDRVNTLCAmcm9idXN0QWNjZXNzKTsKLSAgICAgICAgcmV0
dXJuIHJvYnVzdEFjY2VzcyA9PSBHTF9UUlVFOwotICAgIH0KKyAgICBpZiAobmFtZSA9PSAiR0xf
RVhUX3JvYnVzdG5lc3MiKQorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4
dGVuc2lvbnNHTDo6Q09OVEVYVF9ST0JVU1RfQUNDRVNTKSA9PSBHTF9UUlVFOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDc3NWY5
MDQwNmY0MmE2MDkxZGRjM2ZlYTFlNTBiN2MyYjBhZTRkYTEuLmMzZjQ4ZThjNjg5ZjBiMzk3YjZm
N2U1NjgzNDgyNGE2YThiOWY3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CkBAIC0xOTcsMzUgKzE5NywzNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3Jt
SW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZv
Jik7CiAgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3Qq
IHNoYWRlcnMpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldEJvb2xlYW52
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0
QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIEdD
R0xlbnVtIGdldEVycm9yKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0SW50ZWdl
cnYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldElu
dGVnZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50NjQq
IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwg
R0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2NCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJv
Z3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50
ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0
aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0
UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CiAjaWYgIVVTRShBTkdMRSkKICAgICB2b2lkIGdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3Vu
dChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSk7CiAjZW5kaWYgLy8gIVVTRShBTkdMRSkKICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2co
UGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFVubWFuZ2xlZEluZm9Mb2co
UGxhdGZvcm1HTE9iamVjdFsyXSwgR0NHTHNpemVpLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lk
IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3Jt
R0xPYmplY3QsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NH
TGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0LCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZv
cm1HTE9iamVjdCkgZmluYWw7CiAgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NH
TGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2Us
IEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CiAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQ
bGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5h
bWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhQ
YXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdl
dFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpIGZpbmFsOwor
ICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4g
dmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBn
ZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBm
aW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5h
bDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTQzOCw2ICs0MzcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7
CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAKICNpZiAhVVNFKEFOR0xF
KQogICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnRwdHIgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKaW5kZXggNzUwZWQzMjZlY2U2NWU4OGY2YjQxMzYwMTVjNGY5MzM3NDQ4OWNhNS4uY2Vm
MDA2MGM3OTkzMDExMjc5MWQ3YTQ0ZTQ4ZjY0NzM4ZDgwOWMzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gaW50ZQogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgLy8gTmVlZCB0byBlbXVsYXRlIE1BWF9G
UkFHTUVOVC9WRVJURVhfVU5JRk9STV9WRUNUT1JTIGFuZCBNQVhfVkFSWUlOR19WRUNUT1JTCiAg
ICAgLy8gYmVjYXVzZSBkZXNrdG9wIEdMJ3MgY29ycmVzcG9uZGluZyBxdWVyaWVzIHJldHVybiB0
aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMKQEAgLTI3MiwzOSArMjcyLDM5IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2
YWx1ZSkKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAjaWYgVVNFKE9QRU5HTCkKICAgICBjYXNlIE1B
WF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9N
QVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJ
bnRlZ2VydihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZS5kYXRhKTsK
ICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX1ZFUlRF
WF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVY
X1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xf
TUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMsIHZhbHVlLmRhdGEpOwogICAgICAgICAqdmFs
dWUgLz0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNQVhfVkFSWUlOR19WRUNUT1JTOgog
ICAgICAgICBpZiAoaXNHTEVTMkNvbXBsaWFudCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoOjpn
bEdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOwotICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2
KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xHZXRJbnRl
Z2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgICAgIGlm
ICg6OmdsR2V0RXJyb3IoKSA9PSBHTF9JTlZBTElEX0VOVU0pIHsKLSAgICAgICAgICAgICAgICA6
OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAg
ICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTLCB2YWx1
ZS5kYXRhKTsKICAgICAgICAgICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlO
R19GTE9BVFMsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFS
WUlOR19GTE9BVFMsIHZhbHVlLmRhdGEpOwogICAgICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIE1BWF9URVhUVVJFX1NJWkU6
Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7CisgICAg
ICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZS5kYXRhKTsKICAgICAg
ICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNp
emUoKSkKICAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYsICp2YWx1ZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRToKLSAgICAgICAg
OjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVlKTsKKyAgICAg
ICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVlLmRhdGEp
OwogICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZSgpKQogICAgICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oMTAyNCwgKnZhbHVl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgOjpnbEdldEludGVnZXJ2
KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuZGF0
YSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcAppbmRleCBiMGMxZjFkZmQ0M2Q0MTUwNDI3ZmY1MjFhY2Y2ODQzNjI3MjQwMDVhLi5h
YmI3ZTI1YTA2ZjA4NWNjZWFjZmY1YWI2ZTgyMDQ1N2NlOWEyZDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTE3MTcsODEgKzE3MTcsNzUg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5KFBsYXRmb3Jt
R0xPYmplY3QgYXJyYXkpCiAjZW5kaWYKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7
CisgICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICA6
OmdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xH
ZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2
YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IDo6Z2xHZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0SW50ZWdlcmlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdD
R0xpbnQqIHZhbHVlKQotewotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGluZGV4KTsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAqdmFsdWUgPSAwOwotICAgIC8vIEZJWE1FIDE0MTE3ODogQmVmb3JlIGVuYWJs
aW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0Y2ggb3ZlciB0byB1c2luZyBnbDMuaCBhbmQgY3Jl
YXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdlYkdMMiBjb250ZXh0IHVzaW5nIE9wZW5HTCBFUyAz
LjAuCi0gICAgLy8gOjpnbEdldEludGVnZXJpX3YocG5hbWUsIGluZGV4LCB2YWx1ZSk7CisgICAg
OjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFs
dWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NChHQ0dM
ZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICAqdmFsdWUgPSAwOworICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQx
MTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBtdXN0IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVz
aW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQgaW5pdGlhbGluZyB0aGUgV2ViR0wyIGNvbnRleHQg
dXNpbmcgT3BlbkdMIEVTIDMuMC4KICAgICAvLyA6OmdsR2V0SW50ZWdlcjY0dihwbmFtZSwgdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGlu
dDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdl
cjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHBuYW1lKTsKICAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAqdmFs
dWUgPSAwOworICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQxMTc4OiBC
ZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBtdXN0IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGds
My5oIGFuZCBjcmVhdGluZyBhbmQgaW5pdGlhbGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcg
T3BlbkdMIEVTIDMuMC4KICAgICAvLyA6OmdsR2V0SW50ZWdlcjY0aV92KHBuYW1lLCBpbmRleCwg
dmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitH
Q0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0g
cG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChh
dHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkKICAgICAgICAgYXR0YWNobWVu
dCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVOVCwgZWl0aGVyIHdv
cmtzLgotICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJn
ZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRQcm9ncmFtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFt
aShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRQcm9n
cmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgR0NH
TGludCB2YWx1ZSA9IDA7CisgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgJnZh
bHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKQEAgLTE4OTksMjAgKzE4OTMsMjEg
QEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0pCiAgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hh
ZGVycywgY291bnQsIFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgOjpnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwg
cG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUpCiB7
CiAgICAgQVNTRVJUKHNoYWRlcik7Ci0KKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2
YWx1ZTsKIAogCiAgICAgY29uc3QgYXV0byYgcmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmlu
ZChzaGFkZXIpOwpAQCAtMTkyMCwyOCArMTkxNSwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5h
bQogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIERFTEVURV9TVEFUVVM6CiAgICAgY2Fz
ZSBTSEFERVJfVFlQRToKLSAgICAgICAgOjpnbEdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZh
bHVlKTsKKyAgICAgICAgOjpnbEdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ09NUElMRV9TVEFUVVM6Ci0gICAgICAgIGlmIChyZXN1
bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpIHsKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0
YXRpY19jYXN0PGludD4oZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PGludD4ocmVzdWx0LT52YWx1ZS5pc1ZhbGlkKTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKKyAgICAgICAg
ICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQtPnZhbHVlLmlzVmFsaWQpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIElORk9fTE9HX0xFTkdUSDoKLSAgICAgICAgaWYgKHJlc3Vs
dCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkgewotICAgICAgICAgICAgKnZhbHVlID0gMDsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAqdmFsdWUgPSBnZXRTaGFk
ZXJJbmZvTG9nKHNoYWRlcikubGVuZ3RoKCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gbV9zaGFk
ZXJTb3VyY2VNYXAuZW5kKCkpCisgICAgICAgICAgICB2YWx1ZSA9IGdldFNoYWRlckluZm9Mb2co
c2hhZGVyKS5sZW5ndGgoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTSEFERVJfU09VUkNF
X0xFTkdUSDoKLSAgICAgICAgKnZhbHVlID0gZ2V0U2hhZGVyU291cmNlKHNoYWRlcikubGVuZ3Ro
KCk7CisgICAgICAgIHZhbHVlID0gZ2V0U2hhZGVyU291cmNlKHNoYWRlcikubGVuZ3RoKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElO
VkFMSURfRU5VTSk7CiAgICAgfQorICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKQpAQCAtMTk4NiwzOSArMTk3Niw0MSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKICAgICByZXR1cm4g
cmVzdWx0LT52YWx1ZS5zb3VyY2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxv
YXQgdmFsdWUgPSAwLmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJn
ZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7
CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5h
bWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0
ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFVu
aWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIDo6Z2xHZXRVbmlmb3JtZnYo
cHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlKTsKKyAgICA6OmdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2
YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9y
bXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWlu
dD4gdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJB
TShsb2NhdGlvbik7CkBAIC0yMDM3LDIwICsyMDI5LDIwIEBAIEdDR0xpbnQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvCiAgICAgcmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVkTmFt
ZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQq
IHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVl
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6Omds
R2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBw
bmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZh
bHVlLmRhdGEpOwogfQogCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0z
MTQzLDYgKzMxMzUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJB
TShkc3RPZmZzZXQpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJ
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBV
TlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4
KTsKKyAgICBVTlVTRURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwor
fQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA2
MGZkZmM2NWY4NzM5NTg5NTc5NWE4NGVmMWUwOWFiZjZkN2FhODQzLi41MjQxOWY1NjZiMWYyNThh
N2RhNDEyZDEzMWNmNjdmNmUwOTYxM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwCkBAIC0xOTYsMTIgKzE5NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50
ZQogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRl
Z2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4g
dmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEludGVn
ZXJ2KHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVt
IHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCkBAIC0z
MzAsMTMgKzMzMCwxMyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIFNoQnVpbHRJblJl
c291cmNlcyBBTkdMRVJlc291cmNlczsKICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZBTkdM
RVJlc291cmNlcyk7CiAgICAgCi0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6Ok1BWF9WRVJURVhfQVRUUklCUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMp
OwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX1VO
SUZPUk1fVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzKTsK
LSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZBUllJTkdfVkVD
VE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzKTsKLSAgICBnZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRT
LCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOwotICAgIGdldElu
dGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfQ09NQklORURfVEVYVFVSRV9JTUFH
RV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwot
ICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVEVYVFVSRV9JTUFH
RV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVD
VE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOworICAgIDo6
Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9BVFRSSUJT
LCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyk7CisgICAgOjpnbEdldEludGVnZXJ2
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUywgJkFO
R0xFUmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzKTsKKyAgICA6OmdsR2V0SW50ZWdl
cnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WQVJZSU5HX1ZFQ1RPUlMsICZBTkdMRVJl
c291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7CisgICAgOjpnbEdldEludGVnZXJ2KEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJl
c291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgOjpnbEdldEludGVnZXJ2
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklU
UywgJkFOR0xFUmVzb3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOworICAgIDo6
Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1RFWFRVUkVfSU1BR0Vf
VU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgOjpnbEdl
dEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfRlJBR01FTlRfVU5JRk9STV9W
RUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk7CiAgICAg
CiAgICAgLy8gQWx3YXlzIHNldCB0byAxIGZvciBPcGVuR0wgRVMuCiAgICAgQU5HTEVSZXNvdXJj
ZXMuTWF4RHJhd0J1ZmZlcnMgPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyLmNwcAppbmRleCA4OWQxNGQyOTU2YjcyZmE0MmVlOTgzNjJhYjgwZDJiYjMw
YWIzZWQyLi5lYjYyYTQ0MDdhOWFkZjJiODQ2NGNjNDY5MzM2MWNhNTNlNjMwNTczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMjg5LDgg
KzI4OSw3IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgICAgIC8vIEZyb20gdmVyc2lv
biAzLjIgb24gd2UgdXNlIHRoZSBPcGVuR0wgQ29yZSBwcm9maWxlLCBhbmQgd2UgbmVlZCBhIFZB
TyBmb3IgcmVuZGVyaW5nLgogICAgICAgICAvLyBBIFZBTyBjb3VsZCBiZSBjcmVhdGVkIGFuZCBi
b3VuZCBieSBlYWNoIGNvbXBvbmVudCB1c2luZyBHTCByZW5kZXJpbmcgKFRleHR1cmVNYXBwZXIs
IFdlYkdMLCBldGMpLiBUaGlzIGlzCiAgICAgICAgIC8vIGEgc2ltcGxlciBzb2x1dGlvbjogdGhl
IGZpcnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNyZWF0ZWQgb24gYSBHTENvbnRleHQgd2ls
bCBjcmVhdGUgYW5kIGJpbmQgYSBWQU8gZm9yIHRoYXQgY29udGV4dC4KLSAgICAgICAgR0NHTGlu
dCBjdXJyZW50VkFPID0gMDsKLSAgICAgICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OlZFUlRFWF9BUlJBWV9CSU5ESU5HLCAmY3VycmVudFZBTyk7CisgICAgICAgIEdDR0xp
bnQgY3VycmVudFZBTyA9IGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpWRVJU
RVhfQVJSQVlfQklORElORyk7CiAgICAgICAgIGlmICghY3VycmVudFZBTykgewogICAgICAgICAg
ICAgbV92YW8gPSBjcmVhdGVWZXJ0ZXhBcnJheSgpOwogICAgICAgICAgICAgYmluZFZlcnRleEFy
cmF5KG1fdmFvKTsKQEAgLTMxMSwxMyArMzEwLDEzIEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0
CiAgICAgU2hCdWlsdEluUmVzb3VyY2VzIEFOR0xFUmVzb3VyY2VzOwogICAgIHNoOjpJbml0QnVp
bHRJblJlc291cmNlcygmQU5HTEVSZXNvdXJjZXMpOwogCi0gICAgZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfQVRUUklCUywgJkFOR0xFUmVzb3VyY2VzLk1h
eFZlcnRleEF0dHJpYnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFVu
aWZvcm1WZWN0b3JzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
TUFYX1ZBUllJTkdfVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzKTsK
LSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9URVhU
VVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5p
dHMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfQ09NQklO
RURfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heENvbWJpbmVkVGV4dHVy
ZUltYWdlVW5pdHMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpN
QVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVu
aXRzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0ZSQUdN
RU5UX1VOSUZPUk1fVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZl
Y3RvcnMpOworICAgIEFOR0xFUmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMgPSBnZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX0FUVFJJQlMpOworICAgIEFOR0xF
UmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzID0gZ2V0SW50ZWdlcihHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMpOworICAgIEFOR0xFUmVz
b3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzID0gZ2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6TUFYX1ZBUllJTkdfVkVDVE9SUyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4
VGV4dHVyZUltYWdlVW5pdHMgPSBnZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpN
QVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMpOworICAgIEFOR0xFUmVzb3VyY2VzLk1heENv
bWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgPSBnZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyk7CisgICAgQU5HTEVSZXNvdXJj
ZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMgPSBnZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4RnJh
Z21lbnRVbmlmb3JtVmVjdG9ycyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
Ok1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMpOwogCiAgICAgLy8gQWx3YXlzIHNldCB0byAx
IGZvciBPcGVuR0wgRVMuCiAgICAgQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSAxOwo=
</data>
<flag name="commit-queue"
          id="431157"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414311</attachid>
            <date>2020-11-16 23:25:10 -0800</date>
            <delta_ts>2020-11-17 00:40:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201117092508.patch</filename>
            <type>text/plain</type>
            <size>121006</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFiMzgwY2VlY2RkMjk1
NGU1ZGM4NGU3MGZlMzc2YmIyZTBjYmQ0OS4uNmYwODlmNGEzMzM3OWFkM2MyZjM0MzYyZjJmMjA0
NGFkZTE0MjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyMSBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0IHRoZQorICAgICAg
ICB2YWx1ZSBpcyBhIG5vcm1hbCBmdW5jdGlvbiByZXR1cm4gdmFsdWUuIFRoaXMgcmVkdWNlcyB0
aGUgcmlzayBvZiBoYXZpbmcKKyAgICAgICAgdW5pbml0aWFsaXplZCBvdXQgcGFyYW1ldGVyIHJl
Y2VpdmUgbG9jYXRpb24uCisKKyAgICAgICAgQ2hhbmdlIHRoZSBnZXR0ZXJzIHRoYXQgYXJlIG9u
bHkgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRoZSBnZXR0
ZXIgaXRzZWxmIGhhcyB0aGUgcmV0dXJuIHZhbHVlLiBBZGQgYSBzaW5nbGUtdmFsdWUgZ2V0dGVy
IGZvcgorICAgICAgICBnZXR0ZXJzIHRoYXQgYXJlIHVzZWQgdG8gb2J0YWluIGFsc28gbXVsdGlw
bGUgdmFsdWVzLgorCisgICAgICAgIEFkZCBHQ0dMU3BhbiB0eXBlIHRoYXQgaXMgdXNlZCB0byBj
b21tdW5pY2F0ZSBwYWlyOiBwdHIsIG51bWJlciBvZgorICAgICAgICBlbGVtZW50cy4gVGhpcyBp
cyBzaW1pbGFyIHR5cGUgdG8gc3RkOjpzcGFuIGluIEMrKzIwLiBUaGUgdHlwZSB3aWxsIGJlCisg
ICAgICAgIHVzZWQgdG8gcmVjZWl2ZSB0aGUgbXVsdGktdmFsdWUgZ2V0dGVyIHJlc3VsdHMuIFVz
ZSBvZiBXVEY6OlZlY3RvciBhcworICAgICAgICB0aGUgcmV0dXJuIHZhbHVlIHdvdWxkIGJlIHBy
b2JsZW1hdGljIGJlY2F1c2UgdGhlIGNhbGwgc2VtYW50aWNzIG5lZWQKKyAgICAgICAgdGhlIGxl
bmd0aC4gVGh1cyB0aGUgbGVuZ3RoIHdvdWxkIGJlIG5lZWRlZCB0byBiZSBzcGVjaWZpZWQgYnkg
ZWl0aGVyCisgICAgICAgIHBhc3NpbmcgaW4gdGhlIHJlc2l6ZWQgdmVjdG9yIG9yIHBhc3Npbmcg
aW4gdGhlIGxlbmd0aC4gQm90aCBvZiB0aGUKKyAgICAgICAgb3B0aW9ucyBjb250YWluIHJlZHVu
YW5jeSBhbmQgcmVzaXphYmxlIHZlY3RvciB0eXBlIHdvdWxkIHN0aWxsIG9wZW4KKyAgICAgICAg
aW50ZXJwcmV0YXRpb24gdG8gaG93IHRoZSByZXN1bHQgdmFsdWUgd291bGQgYmVoYXZlLiBVc2lu
ZyBzdGQ6OmFycmF5CisgICAgICAgIHdvdWxkIGJlIHByb2JsZW1hdGljIGJlY2F1c2UgaXQgY2Fu
bm90IGhhdmUgZHluYW1pYyBsZW5ndGguIEdDR0xTcGFuIGlzCisgICAgICAgIG5vdCBhIHJldHVy
biB2YWx1ZSBzaW5jZSBpdCBkb2VzIG5vdCBjYXJyeSBpdHMgZGF0YS4gQSBzcGFuIGlzIG9ubHkg
YQorICAgICAgICB2aWV3IHRvIGV4aXN0aW5nIGRhdGEgc3RvcmUuCisKKyAgICAgICAgVGhlIHR5
cGUgR0NHTFNwYW4gd2lsbCBiZSB1c2VkIHRvIHNpbXBsaWZ5IHRoZSBHUFUgcHJvY2VzcworICAg
ICAgICBpbXBsZW1lbnRhdGlvbiwgc2luY2UgdGhlIGJ1ZlNpemUgd2lsbCBiZSBleHBsaWNpdGx5
IGFzc29jaWF0ZWQgaW4gdGhlCisgICAgICAgIHBhc3NlZCBkYXRhIHZhbHVlIHR5cGUsIGluc2lk
ZSB0aGUgR0NHTFNwYW4gdHlwZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NH
TFNwYW4gd2lsbCBiZSB1c2VkIGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAg
aS5lLiBhcmJpdHJhcnkgYnVmZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKwor
ICAgICAgICBVc2UgdGhlIFJvYnVzdEFOR0xFIHZhcmlhbnRzIG9mIHRoZSBHTCBBUEkgaW1wbGVt
ZW50YXRpb24gdG8gb2J0YWluIHRoZQorICAgICAgICB2YWx1ZXMuCisKKyAgICAgICAgUmVtb3Zl
IHRoZSBjb3JyZXNwb25kaW5nIFJvYnVzdEFOR0xFIHZhcmlhbnRzIGZyb20gRXh0ZW5zaW9uc0dM
LCB0aGV5CisgICAgICAgIGFyZSBkZWFkIGNvZGUgYW5kIHVudXNlZC4KKworICAgICAgICBSZW1v
dmVzIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSB3b3JrYXJvdW5kIGZyb20g
QU5HTEUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY29kZSwgaXQgd2FzIGRlYWQg
Y29kZSAoaS5lIGZsYWcgYWx3YXlzIGZhbHNlKS4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9u
ZSBpbiBBTkdMRSBsZXZlbC4KKworICAgICAgICBGaXhlcyBjb3NtZXRpYyBidWdzIHdoZXJlIHVu
aW5pdGlhbGl6ZWQgdmFsdWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlCisgICAgICAgIGxvY2F0aW9u
IG9mIHRoZSBnb3R0ZW4gcHJvcGVydHkuIFRoaXMgdmFsdWUgd291bGQgYmUgdW53cml0dGVuIGlu
CisgICAgICAgIGVkZ2UtY2FzZXMgbGlrZSBHTCBlcnJvcnMsIGFuZCB0aHVzIHRoZSByZWFkIHdv
dWxkIHRvdWNoIHVudWluaXRpYWxpemVkCisgICAgICAgIHZhbHVlLgorCisgICAgICAgIEZpeGVz
IGEgY29zbWV0aWMgYnVnIHdoZXJlIHVuaWZvcm0gYmxvY2sgdmFyaWFibGVzIGNvZGUgd291bGQg
cGFzcyBpbgorICAgICAgICB0b28gbGFyZ2UgYnVmZmVyIHNpemUgdG8gdGhlIFJvYnVzdEFOR0xF
IGNhbGwuIFRoZSBidWZTaXplIHJlZmVycyB0byB0aGUKKyAgICAgICAgbnVtYmVyIG9mIGVsZW1l
bnRzLCBidXQgdGhlIGNvZGUgcGFzc2VkIGluIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGkuZS4K
KyAgICAgICAgbnVtYmVyIG9mIGVsZW1lbnRzICogc2l6ZSBvZiBlbGVtZW50KS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNh
bnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9J
bWFnZUJpdG1hcCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFs
aXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRJbnQ2NFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6
aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJp
YkxvY2F0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlSW5mb0lm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCdWZmZXJQYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJv
Z3JhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Qm9vbGVh
blBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRGbG9hdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRJbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5zaWduZWRJbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRh
Y2htZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTDo6Z2V0SW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNwYW4pOgor
ICAgICAgICAoR0NHTFNwYW46Om9wZXJhdG9yW10pOgorICAgICAgICAoR0NHTFNwYW46Om9wZXJh
dG9yKik6CisgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCk6CisgICAg
ICAgIChtYWtlR0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW52Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dEZsb2F0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRl
Z2VydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
U2hhZGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0
ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyaV92Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0
aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyaV92KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJp
dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0SW50ZWdlcjY0dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aV92KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UHJvZ3JhbWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpl
bnN1cmVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGbG9hdHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJv
Z3JhbWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
U2hhZGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXJpX3ZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjppc0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcmkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhB
dHRyaWJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRW
ZXJ0ZXhBdHRyaWJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pdik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFNoYWRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmdik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKwogMjAyMC0x
MS0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
bmFsIHJlZmFjdG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFwaGlj
c0NvbnRleHRHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52
YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDJl
ZjEwYjBhNGYzNDZlZmUxYjkzOGU0NmUwMDUzYThhMzM5NDUzNDQuLjA0YjMwZjhmNjQ2NDE0Njgw
NjdlMzA5MjZlNzRlNGYyZDljMThiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRt
YXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIC8v
IGNyZWF0ZXMgYSBuZXcgYmFja2luZyBzdG9yZS4gU2luY2Ugd2UncmUgbm90IGRvaW5nIHRoYXQg
eWV0LCB3ZQogICAgICAgICAvLyBuZWVkIHRvIGVyYXNlIHdoYXQncyB0aGVyZS4KIAotICAgICAg
ICBHQ0dMZmxvYXQgY2xlYXJDb2xvcls0XTsKKyAgICAgICAgR0NHTGZsb2F0IGNsZWFyQ29sb3Jb
NF0geyB9OwogICAgICAgICBnYzNkLT5nZXRGbG9hdHYoR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0NMRUFSX1ZBTFVFLCBjbGVhckNvbG9yKTsKICAgICAgICAgZ2MzZC0+Y2xlYXJDb2xvcigwLCAw
LCAwLCAwKTsKICAgICAgICAgZ2MzZC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JV
RkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJVCB8IEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4MDczYWRjMTEx
NDkyMTVmNTZkMWU0NWRhNjg0ZGU4Mjg1ODE3ZTkyLi41NWJjMWY4ZGIyNDlkMzM4MjJlNzg4OWNh
NzgzZjViZWMwMjVhMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTU5LDkgKzE1OSw5IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQogICAgIG1fdW5wYWNr
U2tpcFJvd3MgPSAwOwogICAgIG1fdW5wYWNrU2tpcEltYWdlcyA9IDA7CiAKLSAgICBtX2NvbnRl
eHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfM0RfVEVYVFVSRV9TSVpFLCAm
bV9tYXgzRFRleHR1cmVTaXplKTsKKyAgICBtX21heDNEVGV4dHVyZVNpemUgPSBtX2NvbnRleHQt
PmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF8zRF9URVhUVVJFX1NJWkUpOwogICAg
IG1fbWF4M0RUZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6OmNvbXB1dGVMZXZlbENvdW50KG1f
bWF4M0RUZXh0dXJlU2l6ZSwgbV9tYXgzRFRleHR1cmVTaXplKTsKLSAgICBtX2NvbnRleHQtPmdl
dEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMsICZt
X21heEFycmF5VGV4dHVyZUxheWVycyk7CisgICAgbV9tYXhBcnJheVRleHR1cmVMYXllcnMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9BUlJBWV9URVhUVVJF
X0xBWUVSUyk7CiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3
Q29udGV4dCgpOwogCkBAIC0yMDgsOSArMjA4LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpyZXN0b3JlVW5wYWNrUGFyYW1ldGVycygpCiAKIGxvbmcgbG9uZyBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRJbnQ2NFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAgICBHQ0dM
aW50NjQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcjY0dihwbmFtZSwgJnZh
bHVlKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdl
cjY0KHBuYW1lKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXpl
VmVydGV4QXJyYXlPYmplY3RzKCkKQEAgLTEwNTUsMjMgKzEwNTMsMTQgQEAgV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTOgogICAgICAgICBGQUxMVEhST1VHSDsKLSAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUjogewotICAgICAgICBHQ0dM
aW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVDogewotICAgICAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9v
bD4odmFsdWUpOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dS
QVBfUjoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9G
T1JNQVQ6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdldFRl
eFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfTUlOX0xPRDoKICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VEVYVFVSRV9NQVhfTE9EOiB7Ci0gICAgICAgIEdDR0xmbG9hdCB2YWx1ZSA9
IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwg
JnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdl
dFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFtZXRlcih0YXJnZXQsIHBu
YW1lKTsKICAgICB9CkBAIC0yNDQ1LDExICsyNDM0LDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
X1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9TVEFSVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZFUl9T
SVpFOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX1NUQVJUOiB7
Ci0gICAgICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcjY0aV92KHRhcmdldCwgaW5kZXgsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsK
LSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZGRVJfU1RBUlQ6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXI2NGkodGFyZ2V0LCBpbmRleCk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZGRVJfQklORElORzoKICAg
ICAgICAgaWYgKGluZGV4ID49IG1fYm91bmRJbmRleGVkVW5pZm9ybUJ1ZmZlcnMuc2l6ZSgpKSB7
CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9WQUxVRSwgImdldEluZGV4ZWRQYXJhbWV0ZXIiLCAiaW5kZXggb3V0IG9mIHJhbmdlIik7CkBA
IC0yNTI0LDI0ICsyNTEwLDIwIEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByCiAjaWYgVVNFKEFO
R0xFKQogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQ
cm9ncmFtT3JTaGFkZXIoImdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlciIsICZwcm9ncmFt
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgR0NHTGludCByZXN1bHQgPSAwOwogICAg
IHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JM
T0NLX0JJTkRJTkc6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19E
QVRBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJ
VkVfVU5JRk9STVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2Nr
SW5kZXgsIHBuYW1lLCBzaXplb2YocmVzdWx0KSwgbnVsbHB0ciwgJnJlc3VsdCk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4ocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdDR0x1aW50PihtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2kocHJv
Z3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lKSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTOiB7Ci0g
ICAgICAgIEdDR0xpbnQgc2l6ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwg
dW5pZm9ybUJsb2NrSW5kZXgsIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0FDVElW
RV9VTklGT1JNUywgc2l6ZW9mKHNpemUpLCBudWxscHRyLCAmc2l6ZSk7CisgICAgICAgIEdDR0xp
bnQgc2l6ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShwcm9ncmFtLm9iamVj
dCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tf
QUNUSVZFX1VOSUZPUk1TKTsKICAgICAgICAgVmVjdG9yPEdDR0xpbnQ+IHBhcmFtcyhzaXplLCAw
KTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0QWN0aXZlVW5pZm9ybUJs
b2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5h
bWUsIHNpemVvZihwYXJhbXNbMF0pICogcGFyYW1zLnNpemUoKSwgbnVsbHB0ciwgcGFyYW1zLmRh
dGEoKSk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3Jh
bS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICBy
ZXR1cm4gcGFyYW1zLm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50
Pih4KTsgfSk7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxP
Q0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFERVI6Ci0gICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0
QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBzaXplb2Yo
cmVzdWx0KSwgbnVsbHB0ciwgJnJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxi
b29sPihyZXN1bHQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0
LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0lu
ZGV4LCBwbmFtZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJh
bWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI3NzIsOSArMjc1NCw3IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnCiAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBm
dW5jdGlvbk5hbWUsICJpbnZhbGlkIGF0dGFjaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBt
X2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAg
cmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJn
ZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZU5vbkRlZmF1
bHRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoZnVuY3Rpb25OYW1lLCBhdHRhY2htZW50KSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzk2LDExICsyNzc2LDggQEAgV2ViR0xBbnkgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xl
bnVtIHRhcmcKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX0FMUEhBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9ERVBUSF9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6IHsKLSAgICAgICAgR0NH
TGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFOgorICAgICAgICByZXR1cm4gbV9jb250
ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVu
dCwgcG5hbWUpOwogICAgIH0KIAogICAgIGlmIChvYmplY3QtPmlzVGV4dHVyZSgpKSB7CkBAIC0y
ODExLDExICsyNzg4LDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmcKICAgICAgICAgICAgIHJl
dHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xUZXh0dXJlJj4oKm9iamVjdCkp
OwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X1RFWFRVUkVfTEVWRUw6CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HOiB7Ci0g
ICAgICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSwgJnZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgfQorICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VO
Q09ESU5HOgorICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUgZm9yIHRl
eHR1cmUgYXR0YWNobWVudCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODk3
LDcgKzI4NzEsNyBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlTm9uRGVm
YXVsdEZyYW1lYnVmZmVyQXR0YWNobWVudChjb25zdCBjaGFyKgogR0NHTGludCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycygpCiB7CiAgICAgaWYgKCFtX21heERyYXdC
dWZmZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfRFJBV19CVUZGRVJTLCAmbV9tYXhEcmF3QnVmZmVycyk7CisgICAgICAgIG1fbWF4RHJh
d0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9E
UkFXX0JVRkZFUlMpOwogICAgIHJldHVybiBtX21heERyYXdCdWZmZXJzOwogfQogCkBAIC0yOTA1
LDcgKzI4NzksNyBAQCBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9y
QXR0YWNobWVudHMoKQogewogICAgIC8vIERyYXdCdWZmZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9B
VFRBQ0hNRU5UUyA9PSBNQVhfRFJBV19CVUZGRVJTCiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNo
bWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
Ok1BWF9EUkFXX0JVRkZFUlMsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21h
eENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0
R0w6Ok1BWF9EUkFXX0JVRkZFUlMpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5j
cHAKaW5kZXggOWNiMGY4NTZiNThlMTBlNmY0NzMwOWU2ZmUzYzEwZTI2NzA5NzE2Ni4uNDk0MTU2
ZTFlNjViNjAyOTE5MGRiN2MxYzAyNmFkZjgwM2RkYThkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKQEAgLTk4LDEwICs5OCw4IEBAIGJv
b2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQgPSB3
ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVk
IGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlzIHN1cHBvcnRlZC4KLSAg
ICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gMDsKLSAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNo
bWVudHMgPSAwOwotICAgIGNvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RS
QVdfQlVGRkVSU19FWFQsICZtYXhEcmF3QnVmZmVycyk7Ci0gICAgY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbWF4Q29sb3JBdHRh
Y2htZW50cyk7CisgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IGNvbnRleHQtPmdldEludGVn
ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgR0NHTGludCBtYXhD
b2xvckF0dGFjaG1lbnRzID0gY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIGlmIChtYXhEcmF3QnVmZmVycyA8IDQgfHwgbWF4
Q29sb3JBdHRhY2htZW50cyA8IDQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAppbmRleCAwMWEwMmY1
MWQ3MmQ4OTJlYWI4ZThjMjcwNTA2Y2JmYzRlNzM2NTRhLi4zNjU4ZWU4ZWFhZjdmMGRiYjg4NjNj
ZWQ1MDI0MjVmNGZiNGUyM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcApAQCAtNjE5LDE0ICs2MTksMTQgQEAgYm9vbCBXZWJHTEZyYW1l
YnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3NDb250ZXh0R0wqIGczZCwgY29u
c3QgY2hhcioKICAgICAgICAgZzNkLT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7
CiAgICAgfQogICAgIGlmIChpbml0RGVwdGgpIHsKLSAgICAgICAgZzNkLT5nZXRGbG9hdHYoR3Jh
cGhpY3NDb250ZXh0R0w6OkRFUFRIX0NMRUFSX1ZBTFVFLCAmZGVwdGhDbGVhclZhbHVlKTsKLSAg
ICAgICAgZzNkLT5nZXRCb29sZWFudihHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfV1JJVEVNQVNL
LCAmZGVwdGhNYXNrKTsKKyAgICAgICAgZGVwdGhDbGVhclZhbHVlID0gZzNkLT5nZXRGbG9hdChH
cmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ0xFQVJfVkFMVUUpOworICAgICAgICBkZXB0aE1hc2sg
PSBnM2QtPmdldEJvb2xlYW4oR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX1dSSVRFTUFTSyk7CiAg
ICAgICAgIGczZC0+Y2xlYXJEZXB0aCgxLjBmKTsKICAgICAgICAgZzNkLT5kZXB0aE1hc2sodHJ1
ZSk7CiAgICAgfQogICAgIGlmIChpbml0U3RlbmNpbCkgewotICAgICAgICBnM2QtPmdldEludGVn
ZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFLCAmc3RlbmNpbENsZWFy
VmFsdWUpOwotICAgICAgICBnM2QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVO
Q0lMX1dSSVRFTUFTSywgcmVpbnRlcnByZXRfY2FzdDxHQ0dMaW50Kj4oJnN0ZW5jaWxNYXNrKSk7
CisgICAgICAgIHN0ZW5jaWxDbGVhclZhbHVlID0gZzNkLT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29u
dGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFKTsKKyAgICAgICAgc3RlbmNpbE1hc2sgPSBnM2Qt
PmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfV1JJVEVNQVNLKTsKICAgICAg
ICAgZzNkLT5jbGVhclN0ZW5jaWwoMCk7CiAgICAgICAgIGczZC0+c3RlbmNpbE1hc2soMHhmZmZm
ZmZmZik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5j
cHAKaW5kZXggYzhjM2I4MjI2NTI1M2MwZTA0ZWUwMWE2YjQxMjljOWM1ZjE4MDUyOS4uM2U0NmM1
ZTU2ZDEzZGNmY2YyZWNjMmRhZDJhYzE5NmE1ZjdjZWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCkBAIC0yMTYsOCArMjE2LDcgQEAgdm9pZCBXZWJH
TFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dEdMKiBj
b250ZXh0M2QpCiB7CiAgICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnMuY2xlYXIoKTsKIAotICAg
IEdDR0xpbnQgbnVtQXR0cmlicyA9IDA7Ci0gICAgY29udGV4dDNkLT5nZXRQcm9ncmFtaXYob2Jq
ZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUywgJm51bUF0dHJpYnMp
OworICAgIEdDR0xpbnQgbnVtQXR0cmlicyA9IGNvbnRleHQzZC0+Z2V0UHJvZ3JhbWkob2JqZWN0
KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUyk7CiAgICAgbV9hY3RpdmVB
dHRyaWJMb2NhdGlvbnMucmVzaXplKHN0YXRpY19jYXN0PHNpemVfdD4obnVtQXR0cmlicykpOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXR0cmliczsgKytpKSB7CiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGluZm87CkBAIC0yNDEsOCArMjQwLDcgQEAgdm9pZCBX
ZWJHTFByb2dyYW06OmNhY2hlSW5mb0lmTmVlZGVkKCkKICAgICBHcmFwaGljc0NvbnRleHRHTCog
Y29udGV4dCA9IGdldEFHcmFwaGljc0NvbnRleHRHTCgpOwogICAgIGlmICghY29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwotICAgIEdDR0xpbnQgbGlua1N0YXR1cyA9IDA7Ci0gICAgY29udGV4dC0+
Z2V0UHJvZ3JhbWl2KG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFUVVMsICZs
aW5rU3RhdHVzKTsKKyAgICBHQ0dMaW50IGxpbmtTdGF0dXMgPSBjb250ZXh0LT5nZXRQcm9ncmFt
aShvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsKICAgICBtX2xpbmtT
dGF0dXMgPSBsaW5rU3RhdHVzOwogICAgIGlmIChtX2xpbmtTdGF0dXMpIHsKICAgICAgICAgY2Fj
aGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkMmZhYzIwMzYy
NDk5NTg1ZTBkNTE1NTZjYzVjYTRlM2FhYzMzZGFmLi42OTNkNjIwNmYyYzkwZjk1ZmRhOTczYjk5
OGViOTY0NjdkY2ZlYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMwNywxMSArMzA3LDggQEAgV2ViR0xBbnkg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
R0NHTGVudW0gdGFyZ2UKICAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViR0xUZXh0dXJlJj4oKm9iamVjdCkpOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAgICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJF
X01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKLSAgICAgICAgICAgIEdDR0xpbnQgdmFsdWUgPSAw
OwotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOwotICAgICAgICB9CisgICAgICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBt
X2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRh
Y2htZW50LCBwbmFtZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUgZm9yIHRleHR1cmUg
YXR0YWNobWVudCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNDcsOSArMzQ0
LDkgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKCkK
ICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
aWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4
dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQsICZtX21heERyYXdCdWZmZXJzKTsKKyAg
ICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25z
R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50
cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xP
Ul9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21h
eENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpN
QVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVx
dWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCiAgICAgcmV0
dXJuIHN0ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50cyk7CiB9
CkBAIC0zNTksNyArMzU2LDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1h
eENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5U
U19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNo
bWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRU
QUNITUVOVFNfRVhUKTsKICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCmluZGV4IDZjMzcyOTlkNDM3N2FhMDNjMjk1MWMyNDA1MDU4OWU4YjNjMzBm
YTcuLjE4NWU4YzYyZTZmYmUzMWYzMTM4OGMwYzlmODBkODFjZWUyNGEzYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCkBAIC04NzIsOCArODcyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jbGVhclN0ZW5jaWwgPSAwOwogICAgIG1f
Y29sb3JNYXNrWzBdID0gbV9jb2xvck1hc2tbMV0gPSBtX2NvbG9yTWFza1syXSA9IG1fY29sb3JN
YXNrWzNdID0gdHJ1ZTsKIAotICAgIEdDR0xpbnQgbnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0
cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFY
X0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZudW1Db21iaW5lZFRleHR1cmVJbWFnZVVu
aXRzKTsKKyAgICBHQ0dMaW50IG51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgPSBtX2NvbnRl
eHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lN
QUdFX1VOSVRTKTsKICAgICBtX3RleHR1cmVVbml0cy5jbGVhcigpOwogICAgIG1fdGV4dHVyZVVu
aXRzLnJlc2l6ZShudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKICNpZiAhVVNFKEFOR0xF
KQpAQCAtODgxLDE4ICs4ODAsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpp
bml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgICAgIG1fdW5yZW5kZXJhYmxlVGV4dHVyZVVuaXRz
LmFkZChpKTsKICNlbmRpZgogICAgIAotICAgIEdDR0xpbnQgbnVtVmVydGV4QXR0cmlicyA9IDA7
Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1ZFUlRF
WF9BVFRSSUJTLCAmbnVtVmVydGV4QXR0cmlicyk7CisgICAgR0NHTGludCBudW1WZXJ0ZXhBdHRy
aWJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVkVSVEVY
X0FUVFJJQlMpOwogICAgIG1fbWF4VmVydGV4QXR0cmlicyA9IG51bVZlcnRleEF0dHJpYnM7CiAg
ICAgCi0gICAgbV9tYXhUZXh0dXJlU2l6ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfU0laRSwgJm1fbWF4VGV4dHVyZVNpemUp
OworICAgIG1fbWF4VGV4dHVyZVNpemUgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9URVhUVVJFX1NJWkUpOwogICAgIG1fbWF4VGV4dHVyZUxldmVsID0gV2Vi
R0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heFRleHR1cmVTaXplLCBtX21heFRleHR1
cmVTaXplKTsKLSAgICBtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSA9IDA7Ci0gICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NVQkVfTUFQX1RFWFRVUkVfU0la
RSwgJm1fbWF4Q3ViZU1hcFRleHR1cmVTaXplKTsKKyAgICBtX21heEN1YmVNYXBUZXh0dXJlU2l6
ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NVQkVfTUFQ
X1RFWFRVUkVfU0laRSk7CiAgICAgbV9tYXhDdWJlTWFwVGV4dHVyZUxldmVsID0gV2ViR0xUZXh0
dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSwgbV9tYXhDdWJl
TWFwVGV4dHVyZVNpemUpOwotICAgIG1fbWF4UmVuZGVyYnVmZmVyU2l6ZSA9IDA7Ci0gICAgbV9j
b250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1JFTkRFUkJVRkZFUl9T
SVpFLCAmbV9tYXhSZW5kZXJidWZmZXJTaXplKTsKKyAgICBtX21heFJlbmRlcmJ1ZmZlclNpemUg
PSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9SRU5ERVJCVUZG
RVJfU0laRSk7CiAKICAgICAvLyBUaGVzZSB0d28gdmFsdWVzIGZyb20gRVhUX2RyYXdfYnVmZmVy
cyBhcmUgbGF6aWx5IHF1ZXJpZWQuCiAgICAgbV9tYXhEcmF3QnVmZmVycyA9IDA7CkBAIC0xNzQx
LDggKzE3MzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFk
ZXIoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJjb21waWxlU2hhZGVyIiwgJnNoYWRl
cikpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoc2hhZGVy
Lm9iamVjdCgpKTsKLSAgICBHQ0dMaW50IHZhbHVlOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVy
aXYoc2hhZGVyLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZ2
YWx1ZSk7CisgICAgR0NHTGludCB2YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIu
b2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUyk7CiAgICAgc2hhZGVy
LnNldFZhbGlkKHZhbHVlKTsKIAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMoKTsKQEAg
LTI4ODgsOCArMjg4Miw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omdl
dEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4
dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICBHQ0dM
aW50IHZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUp
OwogICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QlVGRkVSX1NJWkUpCiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVl
KTsKQEAgLTMxODksMjYgKzMxODIsMjYgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEcKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hh
ZGVyKCJnZXRQcm9ncmFtUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERUxFVEVfU1RBVFVTOgogICAgICAgICByZXR1cm4g
cHJvZ3JhbS5pc0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpWQUxJREFU
RV9TVEFUVVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0
KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFs
dWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRQcm9n
cmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkxJTktfU1RBVFVTOgogICAgICAgICByZXR1cm4gcHJvZ3JhbS5nZXRMaW5rU3RhdHVzKCk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QVRUQUNIRURfU0hBREVSUzoKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7
Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0UHJv
Z3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkFDVElWRV9BVFRSSUJVVEVTOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElW
RV9VTklGT1JNUzoKICNpZiBVU0UoQU5HTEUpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3Jh
bWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gbV9j
b250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSk7CiAjZWxzZQotICAg
ICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQo
KSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgpLCBwbmFt
ZSwgJnZhbHVlKTsKKyAgICAgICAgeworICAgICAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Cisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4
dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgp
LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQog
I2VuZGlmIC8vIFVTRShBTkdMRSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIGRlZmF1bHQ6
CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICAgICAgaWYgKGlzV2ViR0wyKCkpIHsKQEAgLTMyMTYs
OCArMzIwOSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREU6CiAgICAgICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6
CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STV9CTE9D
S1M6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmpl
Y3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
ICAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0
KCksIHBuYW1lKTsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkBAIC0zMjgwLDcgKzMyNzIsNiBAQCBXZWJHTEFueSBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQwogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCi0gICAgR0NHTGludCB2YWx1ZSA9
IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJF
TkRFUkJVRkZFUl9TQU1QTEVTOgogICAgICAgICBpZiAoIWlzV2ViR0wyKCkpIHsKQEAgLTMyOTYs
OCArMzI4Nyw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkVOREVSQlVGRkVSX0FMUEhBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6UkVOREVSQlVGRkVSX1NURU5DSUxfU0laRToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcmkodGFyZ2V0LCBwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVS
QlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKICAgICAgICAgcmV0dXJuIG1fcmVuZGVyYnVmZmVyQmlu
ZGluZy0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKICAgICBkZWZhdWx0OgpAQCAtMzMxMCwxNiArMzMw
MCwxMyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJh
bWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAogewogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFNoYWRlclBh
cmFtZXRlciIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBHQ0dMaW50
IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6REVMRVRFX1NUQVRVUzoKICAgICAgICAgcmV0dXJuIHNoYWRlci5pc0RlbGV0ZWQoKTsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUzoKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5h
bWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFERVJfVFlQRToKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLm9i
amVjdCgpLCBwbmFtZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRTaGFkZXJQYXJhbWV0ZXIiLCAi
aW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMz
NTgsNyArMzM0NSw3IEBAIFJlZlB0cjxXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdD4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUHJlY2lzaW9uCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIEdDR0xpbnQgcmFuZ2VbMl0gPSB7MCwgMH07CisgICAgR0NH
TGludCByYW5nZVsyXSB7IH07CiAgICAgR0NHTGludCBwcmVjaXNpb24gPSAwOwogICAgIG1fY29u
dGV4dC0+Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUs
IHJhbmdlLCAmcHJlY2lzaW9uKTsKICAgICByZXR1cm4gV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQ6OmNyZWF0ZShyYW5nZVswXSwgcmFuZ2VbMV0sIHByZWNpc2lvbik7CkBAIC0zMzc4LDIwICsz
MzY1LDE1IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuCiAgICAgYXV0byB0ZXggPSB2YWxpZGF0
ZVRleHR1cmVCaW5kaW5nKCJnZXRUZXhQYXJhbWV0ZXIiLCB0YXJnZXQpOwogICAgIGlmICghdGV4
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICBH
Q0dMZmxvYXQgZlZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQUdfRklMVEVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX1dSQVBfUzoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBf
VDoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAm
dmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFRleFBhcmFt
ZXRlcmkodGFyZ2V0LCBwbmFtZSkpOwogICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpURVhUVVJFX01B
WF9BTklTT1RST1BZX0VYVDogLy8gRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCi0gICAg
ICAgIGlmIChtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewotICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmZlZhbHVlKTsKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oZlZhbHVlKTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAobV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpCisgICAgICAgICAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOwogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0VGV4
UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYyBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBk
ZWZhdWx0OgpAQCAtMzU1NSw3ICszNTM3LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtZnZFWFQocHJv
Z3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDE2ICogc2l6ZW9mKEdDR0xmbG9hdCksIHZhbHVlKTsK
ICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1m
dihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICAgICAgbV9jb250
ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIG1ha2VHQ0dMU3Bh
bih2YWx1ZSwgbGVuZ3RoKSk7CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAgICAg
IHJldHVybiB2YWx1ZVswXTsKICAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRl
KHZhbHVlLCBsZW5ndGgpOwpAQCAtMzU2NywxNCArMzU0OSwxNCBAQCBXZWJHTEFueSBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29u
c3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZv
cm1pdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQ0dMaW50KSwg
dmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
VW5pZm9ybWl2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgbWFr
ZUdDR0xTcGFuKHZhbHVlLCBsZW5ndGgpKTsKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwogICAgICAgICByZXR1cm4gSW50MzJBcnJheTo6dHJ5
Q3JlYXRlKHZhbHVlLCBsZW5ndGgpOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpVTlNJR05FRF9JTlQ6IHsKICAgICAgICAgR0NHTHVpbnQgdmFsdWVbNF0gPSB7MH07Ci0gICAg
ICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybXVpdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwg
dmFsdWUpOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm11aXYocHJvZ3JhbS5vYmplY3Qo
KSwgbG9jYXRpb24sIG1ha2VHQ0dMU3Bhbih2YWx1ZSwgbGVuZ3RoKSk7CiAgICAgICAgIGlmIChs
ZW5ndGggPT0gMSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsKICAgICAgICAgcmV0dXJu
IFVpbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7CkBAIC0zNTg2LDcgKzM1Njgs
NyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdM
UHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZ2V0blVuaWZvcm1pdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwg
NCAqIHNpemVvZihHQ0dMaW50KSwgdmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAg
ICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9u
LCB2YWx1ZSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLm9i
amVjdCgpLCBsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVlLCBsZW5ndGgpKTsKICAgICAgICAg
aWYgKGxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgIFZlY3Rvcjxib29sPiB2ZWN0b3IobGVuZ3Ro
KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGorKykKQEAg
LTM2MjQsNyArMzYwNiw3IEBAIFJlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMCiAKICAgICBHQ0dMaW50
IGFjdGl2ZVVuaWZvcm1zID0gMDsKICNpZiBVU0UoQU5HTEUpCi0gICAgbV9jb250ZXh0LT5nZXRQ
cm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklG
T1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKKyAgICBhY3RpdmVVbmlmb3JtcyA9IG1fY29udGV4dC0+
Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9V
TklGT1JNUyk7CiAjZWxzZQogICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Kj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dy
YW0ub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVV
bmlmb3Jtcyk7CiAjZW5kaWYKQEAgLTYyMzcsOSArNjIxOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cmVzdW1lKCkKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRCb29sZWFuUGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogewotICAgIEdDR0xib29sZWFu
IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCAmdmFsdWUpOwot
ICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRCb29sZWFuKHBuYW1l
KTsKIH0KIAogVmVjdG9yPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xl
YW5BcnJheVBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKQEAgLTYyNTgsMjMgKzYyMzgsMTcgQEAg
VmVjdG9yPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xlYW5BcnJheVBh
cmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIAogZmxvYXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0RmxvYXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGZsb2F0IHZh
bHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgJnZhbHVlKTsKLSAgICBy
ZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RmxvYXQocG5hbWUpOwogfQog
CiBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0SW50UGFyYW1ldGVyKEdDR0xlbnVt
IHBuYW1lKQogewotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldEludGVnZXIocG5hbWUpOwogfQogCiB1bnNpZ25lZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAm
dmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRl
Z2VyKHBuYW1lKTsKIH0KIAogUmVmUHRyPEZsb2F0MzJBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQpAQCAt
NzYyNiw5ICs3NjAwLDkgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRN
YXhEcmF3QnVmZmVycygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAmbV9tYXhE
cmF3QnVmZmVycyk7CisgICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldElu
dGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgaWYgKCFtX21h
eENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5z
aW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhDb2xvckF0dGFjaG1lbnRz
KTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xf
ZHJhd19idWZmZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19C
VUZGRVJTLgogICAgIHJldHVybiBzdGQ6Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9y
QXR0YWNobWVudHMpOwogfQpAQCAtNzYzOCw3ICs3NjEyLDcgQEAgR0NHTGludCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBv
cnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9y
QXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dM
OjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAg
ICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVu
c2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4Q29s
b3JBdHRhY2htZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaAppbmRleCAzNGYxN2VjNjFiMzMxMDM3MWMyZGRiZDBhMDE3NWM2MGI5
M2QxNmY1Li5iYTg2NWIzMzA4ZTZjOTQ1ODIyMTIyMzc3OTZkNmZkNTc3NDg0N2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMzA2
LDIxICszMDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FO
R0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIGRhdGEpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3Jt
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBvaW50ZXIpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkq
IGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9
IDA7CkBAIC0zMzYsMTQgKzMyMSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFF1
ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBk
YXRhKSA9IDA7IC8vIE5PTElOVAogICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIGRhdGEpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
NjQqIGRhdGEpID0gMDsgLy8gTk9MSU5UCiAgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCogcGFyYW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBkOWU1ODhhZmEzMGRi
YTczMDkzMGY5NmM5ODcyOTEzNDAxMjk4YzFlLi4wYTcxNTQwY2U4MDIwZmQ5ZjU4MTY4NjAzZjY3
NjliOTQ0NTIyNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTk4Niw1MSArOTg2LDUwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJh
bWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkg
PSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIC8vIGdldFBhcmFtZXRlcgogICAgIHZp
cnR1YWwgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51bSBuYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcmlfdihHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldElu
dGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwg
R0NHTGludDY0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtaXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29s
ZWFuKiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7Cisg
ICAgdmlydHVhbCBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSA9IDA7Cisg
ICAgdmlydHVhbCBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSA9
IDA7CiAKICAgICB2aXJ0dWFsIEdDR0xlbnVtIGdldEVycm9yKCkgPSAwOwogCiAgICAgLy8gZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVh
bCBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8g
Z2V0UHJvZ3JhbVBhcmFtZXRlcgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9n
KFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAogICAgIC8vIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cgotICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwg
R0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUpID0gMDsKIAogICAgIC8vIGdldFNoYWRlclBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U2hh
ZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNo
YWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNp
b25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBH
Q0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGlu
dCogcHJlY2lzaW9uKSA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTaGFkZXJTb3VyY2Uo
UGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgLy8gZ2V0VGV4UGFyYW1ldGVyCi0gICAgdmly
dHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0g
MDsKKyAgICB2aXJ0dWFsIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0VGV4UGFyYW1l
dGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRV
bmlmb3JtCi0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9y
bXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpID0gMDsKIAogICAgIHZp
cnR1YWwgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3Qg
U3RyaW5nJiBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRWZXJ0ZXhBdHRyaWIKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTHNpemVpcHRyIGdldFZl
cnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIApA
QCAtMTIzNiw3ICsxMjM1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1h
dHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgPSAwOwor
CiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgorICAgIEdDR0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51
bSBwbmFtZSk7CisgICAgR0NHTGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSk7Cisg
ICAgR0NHTGludCBnZXRJbnRlZ2VyKEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMaW50IGdldEFj
dGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2Nr
SW5kZXgsIEdDR0xlbnVtIHBuYW1lKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lk
IHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CkBAIC0xMzY3LDYgKzEzNzIsMzUgQEAgcHJpdmF0
ZToKICAgICBEZXN0aW5hdGlvbiBtX2Rlc3RpbmF0aW9uOwogfTsKIAoraW5saW5lIEdDR0xmbG9h
dCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NH
TGZsb2F0IHZhbHVlWzFdIHsgfTsKKyAgICBnZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWVbMF07Cit9CisKK2lubGluZSBHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRH
TDo6Z2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMYm9vbGVhbiB2YWx1ZVsx
XSB7IH07CisgICAgZ2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWVb
MF07Cit9CisKK2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRJbnRlZ2VyKEdD
R0xlbnVtIHBuYW1lKQoreworICAgIEdDR0xpbnQgdmFsdWVbMV0geyB9OworICAgIGdldEludGVn
ZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlWzBdOworfQorCitpbmxpbmUgR0NH
TGludCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpCit7Cisg
ICAgR0NHTGludCB2YWx1ZVsxXSB7IH07CisgICAgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJv
Z3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVl
WzBdOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IDY5
OWRlMjhiYWViOTJjYzI1MzM5NGRiYTgwYjdlN2E3OGUxM2Y0NDUuLmRiMGYwM2M4YjJlMjVjODM1
OWQzMDZmOTQyYjZiZmEyMmE3MzBiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0yNSw3ICsyNSw5IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAvLyBHQ0dMIHR5cGVzIG1hdGNoIHRoZSBjb3JyZXNw
b25kaW5nIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAogLy8gaGVhZGVyIGZp
bGUgZ2wyLmggZnJvbSBraHJvbm9zLm9yZy4KQEAgLTU1LDMgKzU3LDUxIEBAIHR5cGVkZWYgR0NH
THVpbnQgUGxhdGZvcm1HTE9iamVjdDsKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIHVu
c2lnbmVkIEdMdWludDsKICNlbmRpZgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0
ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4KK3N0cnVjdCBHQ0dMU3Bh
bjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+CitzdHJ1Y3QgR0NHTFNwYW4g
eworICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkp
CisgICAgeyB9CisgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQorICAgICAgICA6IGRh
dGEoYXJyYXkpCisgICAgeyB9CisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBBU1NFUlQo
ZGF0YSk7IEFTU0VSVChpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CisgICAgVCYgb3Bl
cmF0b3IqKCkgeyAgQVNTRVJUKGRhdGEpOyByZXR1cm4gKmRhdGE7IH0KKyAgICBUKiBkYXRhOwor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90IGJ1ZlNpemUgPSBFeHRlbnQ7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCk+IHsKKyAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1ZlNpemVf
KQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKKyAg
ICB7IH0KKyAgICB0ZW1wbGF0ZTxzaXplX3QgU3o+IEdDR0xTcGFuKFQgKCZhcnJheSlbU3pdKQor
ICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShTeikKKyAgICB7IH0KKyAg
ICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYgYXJyYXkpCisgICAgICAgIDogZGF0YShhcnJheS5k
YXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkpCisgICAgeyB9CisgICAgVCYg
b3BlcmF0b3JbXShzaXplX3QgaSkgeyBBU1NFUlQoZGF0YSk7IEFTU0VSVChpIDwgYnVmU2l6ZSk7
IHJldHVybiBkYXRhW2ldOyB9CisgICAgVCYgb3BlcmF0b3IqKCkgeyBBU1NFUlQoZGF0YSk7IHJl
dHVybiAqZGF0YTsgfQorICAgIFQqIGRhdGE7CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KK0dDR0xTcGFuKFQgKCYpW05dKSAt
PiBHQ0dMU3BhbjxULCBOPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK0dDR0xTcGFuKFdURjo6
VmVjdG9yPFQ+JikgLT4gR0NHTFNwYW48VD47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitHQ0dM
U3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNvdW50KQoreworICAgIHJldHVy
biBHQ0dMU3BhbjxUPiB7IGRhdGEsIGNvdW50IH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAK
aW5kZXggMWM4YmM0MjU1MGYxYzFkOTVjMzA4MmY2NzM3NmE1Njk1MDZiZmFiMy4uNGQwMjViOTkz
NDIyNzc2YjliNWY0YWFiYzM5YTBjNzg5MTk0MGE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cApAQCAtMTEzLDggKzExMyw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyCiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKLSAgICBpbnQgc291cmNlTGVuZ3RoID0gMDsKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2
KHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSwgJnNvdXJj
ZUxlbmd0aCk7CisgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShz
aGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUpOwogICAgIGlm
ICghc291cmNlTGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBWZWN0
b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NP
VVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KQEAgLTI3OSwxMjYg
KzI3OCw2IEBAIEdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJl
SW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmCiB9CiAKIC8vIEdMX0FOR0xFX3JvYnVz
dF9jbGllbnRfbWVtb3J5Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCb29sZWFudlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJvb2xlYW52Um9idXN0
QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRGbG9hdHZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgYXR0YWNobWVudCwgcG5h
bWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dEludGVnZXJ2Um9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRQcm9ncmFtaXZSb2J1
c3RBTkdMRShwcm9ncmFtLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFkZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldFNoYWRlcml2Um9idXN0QU5HTEUoc2hhZGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGluZGV4
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2
b2lkICoqcG9pbnRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJv
YnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwb2ludGVyKTsKLX0KLQog
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNp
emVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC01MTcsMTQgKzM5Niw2IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwCiAgICAgZ2w6OkdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5H
TEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSh0
YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCiB2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTU1NywzMCArNDI4LDYgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpk
YXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXI2NHZSb2J1c3RBTkdMRShwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihkYXRhKSk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludDY0ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXI2NGlfdlJv
YnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2Fz
dDxHTGludDY0Kj4oZGF0YSkpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZm
ZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFt
cykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9u
c0dMQU5HTEUuaAppbmRleCAxMjU2OTU2N2MxN2M5MjZiNzFhOTFiYjRiYjExOTU1NmJhMDZmMTcw
Li41N2JiOTNiYzg0YzMzNTkwZmJjZjRiM2Y3YTFlYjVhNTVjNTkyNTZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmgKQEAgLTczLDIxICs3Myw2IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNS
ZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3Rf
Y2xpZW50X21lbW9yeQotICAgIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAq
ZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZs
b2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQ
cm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTaGFkZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmli
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVycmlkZTsKICAgICB2b2lk
IHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBH
Q0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTAzLDE0ICs4OCwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCiAgICAgdm9pZCBnZXRJbnRl
cm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJp
YklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRh
dGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKICAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92
ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxv
YXQgKnBhcmFtKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5k
ZXggZGY2ZjM0YzlkNjE4ZDA3YWRmMjE5ODVhMzAxY2JlNDE0MjkzOTA4YS4uZDg4ZTQyNmUzNmU3
MjcwN2Y4Njc3YzIzMTU2ZWYyZDM0MmEyZmJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAKQEAgLTMzMCw1NSArMzMwLDM2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlCiAg
ICAgZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1
ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47Cisg
ICAgZ2w6OkdldEludGVnZXJ2Um9idXN0QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxw
dHIsIHZhbHVlLmRhdGEpOwogCiAgICAgc3dpdGNoIChwbmFtZSkgewotICAgIGNhc2UgTUFYX1RF
WFRVUkVfU0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUsIHZh
bHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhp
bXVtVGV4dHVyZVNpemUoKSkKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYsICp2
YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0la
RToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZh
bHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhp
bXVtVGV4dHVyZVNpemUoKSkKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDEwMjQsICp2
YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBTb21lIG9s
ZGVyIGhhcmR3YXJlIGFkdmVydGlzZXMgYSBsYXJnZXIgbWF4aW11bSB0aGFuIHRoZXkKICAgICAv
LyBjYW4gYWN0dWFsbHkgaGFuZGxlLiBSYXRoZXIgdGhhbiBkZXRlY3Rpbmcgc3VjaCBkZXZpY2Vz
LCBzaW1wbHkKICAgICAvLyBjbGFtcCB0aGUgbWF4aW11bSB0byA4MTkyLCB3aGljaCBpcyBiaWcg
ZW5vdWdoIGZvciBhIDVLIGRpc3BsYXkuCiAgICAgY2FzZSBNQVhfUkVOREVSQlVGRkVSX1NJWkU6
Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihNQVhfUkVOREVSQlVGRkVSX1NJWkUsIHZhbHVlKTsK
ICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oODE5MiwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNQVhfVklFV1BPUlRfRElNUzoKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1B
WF9WSUVXUE9SVF9ESU1TLCB2YWx1ZSk7CiAgICAgICAgIHZhbHVlWzBdID0gc3RkOjptaW4oODE5
MiwgdmFsdWVbMF0pOwogICAgICAgICB2YWx1ZVsxXSA9IHN0ZDo6bWluKDgxOTIsIHZhbHVlWzFd
KTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBkZWZhdWx0OgotICAgICAgICBnbDo6R2V0
SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyaV92KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXJpX3YocG5hbWUs
IGluZGV4LCB2YWx1ZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNo
YWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNp
b25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdl
LCBHQ0dMaW50KiBwcmVjaXNpb24pCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFk
ZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZSwgcHJlY2lzaW9uKTsKKyAgICBnbDo6R2V0U2hh
ZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLmRhdGEs
IHByZWNpc2lvbik7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCkBAIC0xMjEx
LDcgKzExOTIsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDRwogCiAgICAgR0xpbnQgbWF4VW5p
Zm9ybVNpemUgPSAwOwogICAgIGdsOjpHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VO
SUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZvcm1TaXplKTsKLQogICAgIFZlY3RvcjxHTGNoYXI+
IG5hbWUobWF4VW5pZm9ybVNpemUpOyAvLyBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGlu
Y2x1ZGVzIG51bGwgdGVybWluYXRpb24uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAg
ICBHTGludCBzaXplID0gMDsKQEAgLTE4MTgsNjQgKzE3OTgsNjcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAg
ICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheShhcnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRCb29sZWFudihwbmFtZSwg
dmFsdWUpOworICAgIGdsOjpHZXRCb29sZWFudlJvYnVzdEFOR0xFKHBuYW1lLCB2YWx1ZS5idWZT
aXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAg
R0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUs
IHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAg
cmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9h
dHYoR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4g
dmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZ2w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRGbG9hdHZS
b2J1c3RBTkdMRShwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9
CiAgICAgCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZhbHVlKQorR0NHTGludDY0IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludDY0IHZh
bHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAqdmFsdWUgPSAwOwotICAgIGdsOjpHZXRJbnRlZ2VyNjR2KHBuYW1lLCB2YWx1ZSk7
CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xF
KHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCwgR0NHTGludDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5k
ZXgpCiB7CisgICAgR0NHTGludDY0IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdmFsdWUgPSAwOwotICAgIGdsOjpHZXRJ
bnRlZ2VyNjRpX3YocG5hbWUsIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICBnbDo6R2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUocG5hbWUsIGluZGV4LCAxLCBudWxs
cHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFs
dWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NH
TGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgICAgIHJldHVybiB2YWx1ZTsK
ICAgICBpZiAoYXR0YWNobWVudCA9PSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCiAgICAgICAg
IGF0dGFjaG1lbnQgPSBERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBTVEVOQ0lMX0FUVEFDSE1FTlQs
IGVpdGhlciB3b3Jrcy4KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgYXR0YWNobWVudCwg
cG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRQcm9ncmFtaXYo
cHJvZ3JhbSwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpH
ZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVl
KTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcnNbMl0sIEdDR0xz
aXplaSBjb3VudCwgY29uc3QgU3RyaW5nJiBsb2cpCkBAIC0xOTIxLDIyICsxOTA0LDIzIEBAIFN0
cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtKQogICAgIHJldHVybiBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMs
IGNvdW50LCBTdHJpbmcoaW5mby5kYXRhKCksIHNpemUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIGdsOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwg
cG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNo
YWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVu
dW0gcG5hbWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7Ci0KKyAgICBHQ0dMaW50IHZhbHVlID0g
MDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgZ2w6OkdldFNoYWRlcml2Um9idXN0QU5HTEUoc2hhZGVyLCBwbmFtZSwgMSwg
bnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFN0cmluZyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHNoYWRl
cikKQEAgLTE5NjQsNDQgKzE5NDgsNDkgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCkKICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVy
ZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dD
R0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgZ2w6OkdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBw
bmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0VGV4
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZv
cm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOworICAgIC8vIEZJWE1FOiBCdWcgaW4gQU5HTEUgYnVmU2l6ZSB2YWxpZGF0aW9uIGZv
ciB1bmlmb3Jtcy4KKyAgICBhdXRvIGJ1ZlNpemUgPSB2YWx1ZS5idWZTaXplICogc2l6ZW9mKCp2
YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9u
LCBidWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxv
Y2F0aW9uLCB2YWx1ZSk7CisgICAgLy8gRklYTUU6IEJ1ZyBpbiBBTkdMRSBidWZTaXplIHZhbGlk
YXRpb24gZm9yIHVuaWZvcm1zLgorICAgIGF1dG8gYnVmU2l6ZSA9IHZhbHVlLmJ1ZlNpemUgKiBz
aXplb2YoKnZhbHVlKTsKKyAgICBnbDo6R2V0VW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwg
bG9jYXRpb24sIGJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybXVp
dihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIC8vIEZJWE1FOiBCdWcgaW4gQU5HTEUg
YnVmU2l6ZSB2YWxpZGF0aW9uIGZvciB1bmlmb3Jtcy4KKyAgICBhdXRvIGJ1ZlNpemUgPSB2YWx1
ZS5idWZTaXplICogc2l6ZW9mKCp2YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9
CiAKIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTIwMTQsMjAg
KzIwMDMsMjAgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxv
Y2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gZ2w6OkdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2KGluZGV4
LCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGlu
ZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdihpbmRl
eCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShp
bmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCiBH
Q0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNl
dChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0yMDM2LDcgKzIwMjUsNyBAQCBH
Q0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNl
dChHQ0dMdWludCBpbmRleCwgR0NHTAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEdMdm9pZCog
cG9pbnRlciA9IDA7Ci0gICAgZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwbmFt
ZSwgJnBvaW50ZXIpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xF
KGluZGV4LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnBvaW50ZXIpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMc2l6ZWlwdHI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsK
IH0KIApAQCAtMjk1Myw2ICsyOTQyLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhCiAgICAg
Z2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRh
ICsgc3JjT2Zmc2V0KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0
aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2Nr
SW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGdsOjpHZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4
LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUsIG51bGxwdHIsIHBhcmFtcy5kYXRhKTsKK30KKworCiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xD
ViogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5jcHAKaW5kZXggNmQ1MDNiY2JhNzVhZmI4YzUwNzkwYjFjMjRlMjgyODM2YzU1ZDk0
OS4uY2JhZjA2MGI1NTYzOWZkYjU1YWI3ZWFlNDE3ZWY1ZDIwNDM5ZDkzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuY3BwCkBAIC00NjQsOCArNDY0LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKIAogICAgIG1fY29u
dGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2ZXJ0ZXhTaGFkZXIpOwogCi0gICAgR0NHTGludCBz
dGF0dXMgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYodmVydGV4U2hhZGVyLCBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIEdDR0xpbnQgc3Rh
dHVzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHZlcnRleFNoYWRlciwgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBJTEVfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2Vi
R0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3Rz
KCVwKSAtIFZlcnRleCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwgdGhpcyk7CiAgICAgICAg
IG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CkBAIC00ODAsNyArNDc5LDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmpl
Y3RzKCkKIAogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdChmcmFnbWVudFNoYWRl
cik7CiAKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KGZyYWdtZW50U2hhZGVyLCBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIHN0YXR1cyA9IG1fY29u
dGV4dC0+Z2V0U2hhZGVyaShmcmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJ
TEVfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFw
aGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIEZy
YWdtZW50IHNoYWRlciBmYWlsZWQgdG8gY29tcGlsZS4iLCB0aGlzKTsKICAgICAgICAgbV9jb250
ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKQEAgLTQ5Myw3ICs0OTIsNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQog
ICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIp
OwogICAgIG1fY29udGV4dC0+bGlua1Byb2dyYW0obV95dXZQcm9ncmFtKTsKIAotICAgIG1fY29u
dGV4dC0+Z2V0UHJvZ3JhbWl2KG1feXV2UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktf
U1RBVFVTLCAmc3RhdHVzKTsKKyAgICBzdGF0dXMgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKG1f
eXV2UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsKICAgICBpZiAoIXN0
YXR1cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6Omlu
aXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIFByb2dyYW0gZmFpbGVkIHRvIGxpbmsuIiwg
dGhpcyk7CiAgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDgwNjEwZGU3ZDQzMWNm
NDI2Mjk5N2Y0ZmZjZTM3YjZiZTFlZTc0MDQuLjY4NmYyZDUxMTQ4ZWY5YjEyZmVmMTBiM2MyYWM3
MGIyYTM1ZDIxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBA
IC0xMjgsNyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVu
YWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5H
TEVSZXNvdXJjZXMgPSBjb21waWxlci5nZXRSZXNvdXJjZXMoKTsKICAgICAgICAgaWYgKCFBTkdM
RVJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzKSB7CiAgICAgICAgICAgICBBTkdMRVJlc291cmNl
cy5FWFRfZHJhd19idWZmZXJzID0gMTsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJkFOR0xFUmVzb3VyY2VzLk1h
eERyYXdCdWZmZXJzKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJz
ID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19F
WFQpOwogICAgICAgICAgICAgY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJl
X2xvZCIpIHsKQEAgLTE3Miw3ICsxNzIsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogCiAg
ICAgQU5HTEVXZWJLaXRCcmlkZ2UmIGNvbXBpbGVyID0gbV9jb250ZXh0LT5tX2NvbXBpbGVyOwog
Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpT
SEFERVJfVFlQRSwgJkdMc2hhZGVyVHlwZSk7CisgICAgR0xzaGFkZXJUeXBlID0gbV9jb250ZXh0
LT5nZXRTaGFkZXJpKHNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFKTsKIAog
ICAgIGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9TSEFERVIp
CiAgICAgICAgIHNoYWRlclR5cGUgPSBTSEFERVJfVFlQRV9WRVJURVg7CkBAIC0yNTQsODEgKzI1
NCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2RVhUKEdD
R0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTGluCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NH
TGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJvZ3Jh
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1
c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZvcm1pdlJv
YnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJp
YmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICopCiB7CiAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC00MDAsMTEgKzMy
NSw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCiB7
CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CkBAIC00MjUsMjEgKzM0NSw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpCiAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFO
R0xFKEdDR0x1aW50LCBHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldElu
dGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NH
TGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRl
Z2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCiB7CiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggMDQ4OTRiOTFjODJjYzRiMWIyMDlhN2FmZDIyOWNiZGNh
OWEwMWE0My4uOTdlZWRmYjc0ODVjODMyZjc5M2M4Y2ZmMGZhMTdmYmZmYmU2NTg4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNjksMjEgKzY5LDYgQEAgcHVibGlj
OgogICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAog
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCBnZXRCb29sZWFu
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1pdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVy
cmlkZTsKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29s
dW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQg
dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTk5LDE0ICs4NCwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRC
dWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBp
bnQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0
ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKaW5kZXggYWI4Y2I1NGY1ZTg3OWVmNGI4YTkwZDE5YTdlYzkyYzg5
Y2UyMDU3Yi4uZDI4ZjRhMDMxZWJkYzQ4Mzg3NWQzOTg0ODdkNTc4NzQ4ZmRlNDdlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC03NCwxMSArNzQsOCBAQCBib29sIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGb3IgR0xfRVhUX3JvYnVzdG5lc3MsIGNoZWNrIHRoYXQg
dGhlIGNvbnRleHQgc3VwcG9ydHMgcm9idXN0IGFjY2Vzcy4KLSAgICBpZiAobmFtZSA9PSAiR0xf
RVhUX3JvYnVzdG5lc3MiKSB7Ci0gICAgICAgIEdMaW50IHJvYnVzdEFjY2VzcyA9IEdMX0ZBTFNF
OwotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6Q09OVEVYVF9S
T0JVU1RfQUNDRVNTLCAmcm9idXN0QWNjZXNzKTsKLSAgICAgICAgcmV0dXJuIHJvYnVzdEFjY2Vz
cyA9PSBHTF9UUlVFOwotICAgIH0KKyAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3JvYnVzdG5lc3Mi
KQorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6Q09O
VEVYVF9ST0JVU1RfQUNDRVNTKSA9PSBHTF9UUlVFOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDc3NWY5MDQwNmY0MmE2MDkxZGRj
M2ZlYTFlNTBiN2MyYjBhZTRkYTEuLjA5OTI2NzhiOGRjMWUxODNkOTgyNTliNzczMTVjMzYxMjE3
MDEzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0xOTcsMzUgKzE5
NywzNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7CiAgICAgdm9pZCBn
ZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4
Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFs
OwogICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3Qg
U3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMYm9vbGVhbiogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVy
aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFs
OworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29s
ZWFuPiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVycm9y
KCkgZmluYWw7Ci0gICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCog
dmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEludGVnZXJpX3YoR0NHTGVu
dW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZhbHVlKSBmaW5hbDsK
LSAgICB2b2lkIGdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgs
IEdDR0xpbnQ2NCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsK
KyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2
YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUp
IGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVt
IHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAjaWYgIVVTRShBTkdM
RSkKICAgICB2b2lkIGdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSk7CiAjZW5kaWYgLy8g
IVVTRShBTkdMRSkKICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVj
dCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVj
dFsyXSwgR0NHTHNpemVpLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZh
bHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3QsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwor
ICAgIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CiAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlw
ZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNp
c2lvbikgZmluYWw7CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0g
c2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4g
cmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CiAgICAgU3RyaW5nIGdldFNoYWRlclNv
dXJjZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xl
bnVtIG5hbWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2
b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpIGZp
bmFsOworICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xm
bG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZp
bmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NH
TGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVl
KSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBn
ZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmli
T2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lk
IGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTQzOCw2ICs0
MzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3Jt
TWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAKICNpZiAhVVNF
KEFOR0xFKQogICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQmFzZS5jcHAKaW5kZXggNzUwZWQzMjZlY2U2NWU4OGY2YjQxMzYwMTVjNGY5MzM3NDQ4OWNh
NS4uOWQ3Y2M5MjE2ZTdhNDJjZjBkOTcxNjQ1NzIwODUxZjE0NTUxNzBkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRh
cmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFs
dWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBw
bmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgLy8gTmVlZCB0byBlbXVsYXRl
IE1BWF9GUkFHTUVOVC9WRVJURVhfVU5JRk9STV9WRUNUT1JTIGFuZCBNQVhfVkFSWUlOR19WRUNU
T1JTCiAgICAgLy8gYmVjYXVzZSBkZXNrdG9wIEdMJ3MgY29ycmVzcG9uZGluZyBxdWVyaWVzIHJl
dHVybiB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMKQEAgLTI3Miw0NiArMjcyLDQ2IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50KiB2YWx1ZSkKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAjaWYgVVNFKE9QRU5HTCkKICAgICBj
YXNlIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2Vy
dihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZSk7CisgICAgICAgIDo6
Z2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZS5k
YXRhKTsKICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFY
X1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhf
VkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAgICA6OmdsR2V0SW50ZWdl
cnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMsIHZhbHVlLmRhdGEpOwogICAgICAg
ICAqdmFsdWUgLz0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNQVhfVkFSWUlOR19WRUNU
T1JTOgogICAgICAgICBpZiAoaXNHTEVTMkNvbXBsaWFudCgpKSB7CiAgICAgICAgICAgICBBU1NF
UlQoOjpnbEdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOwotICAgICAgICAgICAgOjpnbEdldElu
dGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xH
ZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAg
ICAgIGlmICg6OmdsR2V0RXJyb3IoKSA9PSBHTF9JTlZBTElEX0VOVU0pIHsKLSAgICAgICAgICAg
ICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUywgdmFsdWUpOwor
ICAgICAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19DT01QT05FTlRT
LCB2YWx1ZS5kYXRhKTsKICAgICAgICAgICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhf
VkFSWUlOR19GTE9BVFMsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9N
QVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlLmRhdGEpOwogICAgICAgICAgICAgKnZhbHVlIC89IDQ7
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIE1BWF9URVhUVVJF
X1NJWkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7
CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZS5kYXRhKTsK
ICAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4
dHVyZVNpemUoKSkKICAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYsICp2YWx1ZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRToKLSAg
ICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVlKTsK
KyAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVl
LmRhdGEpOwogICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZSgpKQogICAgICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oMTAyNCwg
KnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgOjpnbEdldElu
dGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFs
dWUuZGF0YSk7CiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
aGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lz
aW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFk
ZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5n
ZSwgR0NHTGludCogcHJlY2lzaW9uKQogewogICAgIFVOVVNFRF9QQVJBTShzaGFkZXJUeXBlKTsK
LSAgICBBU1NFUlQocmFuZ2UpOworICAgIEFTU0VSVChyYW5nZS5kYXRhKTsKICAgICBBU1NFUlQo
cHJlY2lzaW9uKTsKIAogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBiMGMxZjFkZmQ0M2Q0
MTUwNDI3ZmY1MjFhY2Y2ODQzNjI3MjQwMDVhLi5hYmI3ZTI1YTA2ZjA4NWNjZWFjZmY1YWI2ZTgy
MDQ1N2NlOWEyZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
bW1vbi5jcHAKQEAgLTE3MTcsODEgKzE3MTcsNzUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAjZW5kaWYKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
OjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEJvb2xlYW52KHBuYW1l
LCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVm
ZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCog
dmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0
ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1
ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICA6OmdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFy
Z2V0LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQs
IHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVl
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRGbG9hdHYocG5hbWUsIHZhbHVl
KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdihHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKQotewotICAgIFVOVVNF
RF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdmFsdWUgPSAwOwotICAg
IC8vIEZJWE1FIDE0MTE3ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0
Y2ggb3ZlciB0byB1c2luZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdl
YkdMMiBjb250ZXh0IHVzaW5nIE9wZW5HTCBFUyAzLjAuCi0gICAgLy8gOjpnbEdldEludGVnZXJp
X3YocG5hbWUsIGluZGV4LCB2YWx1ZSk7CisgICAgOjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUu
ZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYo
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURf
UEFSQU0ocG5hbWUpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAqdmFsdWUgPSAwOworICAgIEdDR0xpbnQ2
NCB2YWx1ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3
ZSBtdXN0IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQg
aW5pdGlhbGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KICAgICAv
LyA6OmdsR2V0SW50ZWdlcjY0dihwbmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aV92KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKICAgICBVTlVTRURfUEFSQU0o
aW5kZXgpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAqdmFsdWUgPSAwOworICAgIEdDR0xpbnQ2NCB2YWx1
ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBtdXN0
IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQgaW5pdGlh
bGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KICAgICAvLyA6Omds
R2V0SW50ZWdlcjY0aV92KHBuYW1lLCBpbmRleCwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1
ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
CisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxf
QVRUQUNITUVOVCkKICAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9y
IFNURU5DSUxfQVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgotICAgIDo6Z2xHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1
ZSk7CisgICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdl
dCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CisgICAgOjpnbEdl
dFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1i
b2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkKQEAgLTE4OTksMjAgKzE4OTMsMjEgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCiAgICAg
cmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhpbmZvLmRh
dGEoKSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBH
Q0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICA6OmdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0
LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQor
R0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2Jq
ZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7Ci0KKyAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogCiAgICAgY29uc3QgYXV0byYg
cmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwpAQCAtMTkyMCwyOCArMTkx
NSwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbQogICAgIHN3aXRjaCAocG5hbWUpIHsKICAg
ICBjYXNlIERFTEVURV9TVEFUVVM6CiAgICAgY2FzZSBTSEFERVJfVFlQRToKLSAgICAgICAgOjpn
bEdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldFNoYWRl
cml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ09N
UElMRV9TVEFUVVM6Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5k
KCkpIHsKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PGludD4oZmFsc2UpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0
PGludD4ocmVzdWx0LT52YWx1ZS5pc1ZhbGlkKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBtX3No
YWRlclNvdXJjZU1hcC5lbmQoKSkKKyAgICAgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8aW50
PihyZXN1bHQtPnZhbHVlLmlzVmFsaWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIElORk9f
TE9HX0xFTkdUSDoKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQo
KSkgewotICAgICAgICAgICAgKnZhbHVlID0gMDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICAqdmFsdWUgPSBnZXRTaGFkZXJJbmZvTG9nKHNoYWRlcikubGVuZ3RoKCk7
CisgICAgICAgIGlmIChyZXN1bHQgIT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCisgICAgICAg
ICAgICB2YWx1ZSA9IGdldFNoYWRlckluZm9Mb2coc2hhZGVyKS5sZW5ndGgoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTSEFERVJfU09VUkNFX0xFTkdUSDoKLSAgICAgICAgKnZhbHVlID0g
Z2V0U2hhZGVyU291cmNlKHNoYWRlcikubGVuZ3RoKCk7CisgICAgICAgIHZhbHVlID0gZ2V0U2hh
ZGVyU291cmNlKHNoYWRlcikubGVuZ3RoKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfRU5VTSk7CiAgICAgfQorICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFk
ZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpAQCAtMTk4NiwzOSArMTk3Niw0MSBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlcikKICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZS5zb3VyY2U7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwLmY7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFRleFBh
cmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFy
YW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
CitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpn
bEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZv
cm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOworICAgIDo6Z2xHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmRh
dGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtaXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICA6OmdsR2V0
VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CkBAIC0yMDM3LDIwICsy
MDI5LDIwIEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIDo6Z2xHZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVkTmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihp
bmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBu
YW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2
YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
OjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRW
ZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlLmRhdGEpOwogfQogCiBHQ0dMc2l6ZWlw
dHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0zMTQzLDYgKzMxMzUsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwogfQogCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xT
cGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAg
VU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVTRURfUEFSQU0ocG5hbWUp
OworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOworfQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA2MGZkZmM2NWY4NzM5NTg5NTc5NWE4NGVmMWUw
OWFiZjZkN2FhODQzLi5hMWQ4MDkyYmNjYWUwMDhkNmU2OWU4Y2Q4ZjZkZGZiMTdhY2FmMDBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xOTYsMjMgKzE5
NiwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9y
YWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldEludGVnZXJ2KHBu
YW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0
KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJh
bmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJl
Y2lzaW9uVHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lv
bikKIHsKLSAgICBBU1NFUlQocmFuZ2UpOworICAgIEFTU0VSVChyYW5nZS5kYXRhKTsKICAgICBB
U1NFUlQocHJlY2lzaW9uKTsKIAogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlw
ZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsIHByZWNpc2lvbik7CisgICAgOjpnbEdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZS5kYXRhLCBwcmVj
aXNpb24pOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQpAQCAtMzMwLDE4ICsz
MzAsMTkgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMg
QU5HTEVSZXNvdXJjZXM7CiAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmQU5HTEVSZXNvdXJj
ZXMpOwogICAgIAotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhf
VkVSVEVYX0FUVFJJQlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRyaWJzKTsKLSAgICBn
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9VTklGT1JNX1ZF
Q1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7Ci0gICAgZ2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WQVJZSU5HX1ZFQ1RPUlMsICZB
TkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xF
UmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJbnRlZ2VydihH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMs
ICZBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMs
ICZBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMsICZB
TkdMRVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKTsKKyAgICA6OmdsR2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfQVRUUklCUywgJkFOR0xF
UmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291
cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7CisgICAgOjpnbEdldEludGVnZXJ2KEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMu
TWF4VmFyeWluZ1ZlY3RvcnMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMu
TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdM
RVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICA6OmdsR2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAm
QU5HTEVSZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIDo6Z2xHZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUywg
JkFOR0xFUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOwogICAgIAogICAgIC8v
IEFsd2F5cyBzZXQgdG8gMSBmb3IgT3BlbkdMIEVTLgogICAgIEFOR0xFUmVzb3VyY2VzLk1heERy
YXdCdWZmZXJzID0gMTsKICAgICAKLSAgICBHQ0dMaW50IHJhbmdlWzJdLCBwcmVjaXNpb247Cisg
ICAgR0NHTGludCByYW5nZVsyXSB7IH07CisgICAgR0NHTGludCBwcmVjaXNpb24gPSAwOwogICAg
IGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RlJBR01F
TlRfU0hBREVSLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6SElHSF9GTE9BVCwgcmFuZ2UsICZw
cmVjaXNpb24pOwogICAgIEFOR0xFUmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IChy
YW5nZVswXSB8fCByYW5nZVsxXSB8fCBwcmVjaXNpb24pOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA4OWQxNGQyOTU2YjcyZmE0
MmVlOTgzNjJhYjgwZDJiYjMwYWIzZWQyLi5jMTlkNzNkYzAyZGU4N2RjN2Y1OGYzNmZkYTU5ZDQw
ZWI4NGQ5ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcApAQCAtMjg5LDggKzI4OSw3IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAg
ICAgIC8vIEZyb20gdmVyc2lvbiAzLjIgb24gd2UgdXNlIHRoZSBPcGVuR0wgQ29yZSBwcm9maWxl
LCBhbmQgd2UgbmVlZCBhIFZBTyBmb3IgcmVuZGVyaW5nLgogICAgICAgICAvLyBBIFZBTyBjb3Vs
ZCBiZSBjcmVhdGVkIGFuZCBib3VuZCBieSBlYWNoIGNvbXBvbmVudCB1c2luZyBHTCByZW5kZXJp
bmcgKFRleHR1cmVNYXBwZXIsIFdlYkdMLCBldGMpLiBUaGlzIGlzCiAgICAgICAgIC8vIGEgc2lt
cGxlciBzb2x1dGlvbjogdGhlIGZpcnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNyZWF0ZWQg
b24gYSBHTENvbnRleHQgd2lsbCBjcmVhdGUgYW5kIGJpbmQgYSBWQU8gZm9yIHRoYXQgY29udGV4
dC4KLSAgICAgICAgR0NHTGludCBjdXJyZW50VkFPID0gMDsKLSAgICAgICAgZ2V0SW50ZWdlcnYo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlZFUlRFWF9BUlJBWV9CSU5ESU5HLCAmY3VycmVudFZB
Tyk7CisgICAgICAgIEdDR0xpbnQgY3VycmVudFZBTyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OlZFUlRFWF9BUlJBWV9CSU5ESU5HKTsKICAgICAgICAgaWYgKCFjdXJyZW50
VkFPKSB7CiAgICAgICAgICAgICBtX3ZhbyA9IGNyZWF0ZVZlcnRleEFycmF5KCk7CiAgICAgICAg
ICAgICBiaW5kVmVydGV4QXJyYXkobV92YW8pOwpAQCAtMzExLDIwICszMTAsMjEgQEAgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHQKICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXM7
CiAgICAgc2g6OkluaXRCdWlsdEluUmVzb3VyY2VzKCZBTkdMRVJlc291cmNlcyk7CiAKLSAgICBn
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAm
QU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNv
dXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4
VmFyeWluZ1ZlY3RvcnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0
ZXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMu
TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMu
TWF4VGV4dHVyZUltYWdlVW5pdHMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4
RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0
cmlicyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfQVRU
UklCUyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPSBnZXRJ
bnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9S
Uyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMgPSBnZXRJbnRlZ2VyKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTKTsKKyAgICBBTkdMRVJl
c291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA9IGdldEludGVnZXIoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyk7CisgICAgQU5H
TEVSZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9IGdldEludGVnZXIoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTKTsK
KyAgICBBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyA9IGdldEludGVnZXIoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKKyAgICBBTkdM
RVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0gZ2V0SW50ZWdlcihHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyk7CiAKICAgICAv
LyBBbHdheXMgc2V0IHRvIDEgZm9yIE9wZW5HTCBFUy4KICAgICBBTkdMRVJlc291cmNlcy5NYXhE
cmF3QnVmZmVycyA9IDE7CiAKLSAgICBHQ0dMaW50IHJhbmdlWzJdLCBwcmVjaXNpb247CisgICAg
R0NHTGludCByYW5nZVsyXSB7IH07CisgICAgR0NHTGludCBwcmVjaXNpb24gPSAwOwogICAgIGdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RlJBR01FTlRf
U0hBREVSLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6SElHSF9GTE9BVCwgcmFuZ2UsICZwcmVj
aXNpb24pOwotICAgIEFOR0xFUmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IChyYW5n
ZVswXSB8fCByYW5nZVsxXSB8fCBwcmVjaXNpb24pOworICAgIEFOR0xFUmVzb3VyY2VzLkZyYWdt
ZW50UHJlY2lzaW9uSGlnaCA9IChyYW5nZVswXSB8fCByYW5nZVsxXSB8fCBwcmVjaXNpb25bMF0p
OwogCiAgICAgbV9jb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNvdXJjZXMpOwogCg==
</data>
<flag name="commit-queue"
          id="431161"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414313</attachid>
            <date>2020-11-16 23:37:41 -0800</date>
            <delta_ts>2020-11-18 00:58:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201117093739.patch</filename>
            <type>text/plain</type>
            <size>120874</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFiMzgwY2VlY2RkMjk1
NGU1ZGM4NGU3MGZlMzc2YmIyZTBjYmQ0OS4uNmYwODlmNGEzMzM3OWFkM2MyZjM0MzYyZjJmMjA0
NGFkZTE0MjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyMSBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0IHRoZQorICAgICAg
ICB2YWx1ZSBpcyBhIG5vcm1hbCBmdW5jdGlvbiByZXR1cm4gdmFsdWUuIFRoaXMgcmVkdWNlcyB0
aGUgcmlzayBvZiBoYXZpbmcKKyAgICAgICAgdW5pbml0aWFsaXplZCBvdXQgcGFyYW1ldGVyIHJl
Y2VpdmUgbG9jYXRpb24uCisKKyAgICAgICAgQ2hhbmdlIHRoZSBnZXR0ZXJzIHRoYXQgYXJlIG9u
bHkgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRoZSBnZXR0
ZXIgaXRzZWxmIGhhcyB0aGUgcmV0dXJuIHZhbHVlLiBBZGQgYSBzaW5nbGUtdmFsdWUgZ2V0dGVy
IGZvcgorICAgICAgICBnZXR0ZXJzIHRoYXQgYXJlIHVzZWQgdG8gb2J0YWluIGFsc28gbXVsdGlw
bGUgdmFsdWVzLgorCisgICAgICAgIEFkZCBHQ0dMU3BhbiB0eXBlIHRoYXQgaXMgdXNlZCB0byBj
b21tdW5pY2F0ZSBwYWlyOiBwdHIsIG51bWJlciBvZgorICAgICAgICBlbGVtZW50cy4gVGhpcyBp
cyBzaW1pbGFyIHR5cGUgdG8gc3RkOjpzcGFuIGluIEMrKzIwLiBUaGUgdHlwZSB3aWxsIGJlCisg
ICAgICAgIHVzZWQgdG8gcmVjZWl2ZSB0aGUgbXVsdGktdmFsdWUgZ2V0dGVyIHJlc3VsdHMuIFVz
ZSBvZiBXVEY6OlZlY3RvciBhcworICAgICAgICB0aGUgcmV0dXJuIHZhbHVlIHdvdWxkIGJlIHBy
b2JsZW1hdGljIGJlY2F1c2UgdGhlIGNhbGwgc2VtYW50aWNzIG5lZWQKKyAgICAgICAgdGhlIGxl
bmd0aC4gVGh1cyB0aGUgbGVuZ3RoIHdvdWxkIGJlIG5lZWRlZCB0byBiZSBzcGVjaWZpZWQgYnkg
ZWl0aGVyCisgICAgICAgIHBhc3NpbmcgaW4gdGhlIHJlc2l6ZWQgdmVjdG9yIG9yIHBhc3Npbmcg
aW4gdGhlIGxlbmd0aC4gQm90aCBvZiB0aGUKKyAgICAgICAgb3B0aW9ucyBjb250YWluIHJlZHVu
YW5jeSBhbmQgcmVzaXphYmxlIHZlY3RvciB0eXBlIHdvdWxkIHN0aWxsIG9wZW4KKyAgICAgICAg
aW50ZXJwcmV0YXRpb24gdG8gaG93IHRoZSByZXN1bHQgdmFsdWUgd291bGQgYmVoYXZlLiBVc2lu
ZyBzdGQ6OmFycmF5CisgICAgICAgIHdvdWxkIGJlIHByb2JsZW1hdGljIGJlY2F1c2UgaXQgY2Fu
bm90IGhhdmUgZHluYW1pYyBsZW5ndGguIEdDR0xTcGFuIGlzCisgICAgICAgIG5vdCBhIHJldHVy
biB2YWx1ZSBzaW5jZSBpdCBkb2VzIG5vdCBjYXJyeSBpdHMgZGF0YS4gQSBzcGFuIGlzIG9ubHkg
YQorICAgICAgICB2aWV3IHRvIGV4aXN0aW5nIGRhdGEgc3RvcmUuCisKKyAgICAgICAgVGhlIHR5
cGUgR0NHTFNwYW4gd2lsbCBiZSB1c2VkIHRvIHNpbXBsaWZ5IHRoZSBHUFUgcHJvY2VzcworICAg
ICAgICBpbXBsZW1lbnRhdGlvbiwgc2luY2UgdGhlIGJ1ZlNpemUgd2lsbCBiZSBleHBsaWNpdGx5
IGFzc29jaWF0ZWQgaW4gdGhlCisgICAgICAgIHBhc3NlZCBkYXRhIHZhbHVlIHR5cGUsIGluc2lk
ZSB0aGUgR0NHTFNwYW4gdHlwZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NH
TFNwYW4gd2lsbCBiZSB1c2VkIGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAg
aS5lLiBhcmJpdHJhcnkgYnVmZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKwor
ICAgICAgICBVc2UgdGhlIFJvYnVzdEFOR0xFIHZhcmlhbnRzIG9mIHRoZSBHTCBBUEkgaW1wbGVt
ZW50YXRpb24gdG8gb2J0YWluIHRoZQorICAgICAgICB2YWx1ZXMuCisKKyAgICAgICAgUmVtb3Zl
IHRoZSBjb3JyZXNwb25kaW5nIFJvYnVzdEFOR0xFIHZhcmlhbnRzIGZyb20gRXh0ZW5zaW9uc0dM
LCB0aGV5CisgICAgICAgIGFyZSBkZWFkIGNvZGUgYW5kIHVudXNlZC4KKworICAgICAgICBSZW1v
dmVzIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSB3b3JrYXJvdW5kIGZyb20g
QU5HTEUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY29kZSwgaXQgd2FzIGRlYWQg
Y29kZSAoaS5lIGZsYWcgYWx3YXlzIGZhbHNlKS4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9u
ZSBpbiBBTkdMRSBsZXZlbC4KKworICAgICAgICBGaXhlcyBjb3NtZXRpYyBidWdzIHdoZXJlIHVu
aW5pdGlhbGl6ZWQgdmFsdWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlCisgICAgICAgIGxvY2F0aW9u
IG9mIHRoZSBnb3R0ZW4gcHJvcGVydHkuIFRoaXMgdmFsdWUgd291bGQgYmUgdW53cml0dGVuIGlu
CisgICAgICAgIGVkZ2UtY2FzZXMgbGlrZSBHTCBlcnJvcnMsIGFuZCB0aHVzIHRoZSByZWFkIHdv
dWxkIHRvdWNoIHVudWluaXRpYWxpemVkCisgICAgICAgIHZhbHVlLgorCisgICAgICAgIEZpeGVz
IGEgY29zbWV0aWMgYnVnIHdoZXJlIHVuaWZvcm0gYmxvY2sgdmFyaWFibGVzIGNvZGUgd291bGQg
cGFzcyBpbgorICAgICAgICB0b28gbGFyZ2UgYnVmZmVyIHNpemUgdG8gdGhlIFJvYnVzdEFOR0xF
IGNhbGwuIFRoZSBidWZTaXplIHJlZmVycyB0byB0aGUKKyAgICAgICAgbnVtYmVyIG9mIGVsZW1l
bnRzLCBidXQgdGhlIGNvZGUgcGFzc2VkIGluIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGkuZS4K
KyAgICAgICAgbnVtYmVyIG9mIGVsZW1lbnRzICogc2l6ZSBvZiBlbGVtZW50KS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNh
bnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9J
bWFnZUJpdG1hcCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFs
aXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRJbnQ2NFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6
aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJp
YkxvY2F0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlSW5mb0lm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCdWZmZXJQYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJv
Z3JhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Qm9vbGVh
blBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRGbG9hdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRJbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5zaWduZWRJbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRh
Y2htZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTDo6Z2V0SW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNwYW4pOgor
ICAgICAgICAoR0NHTFNwYW46Om9wZXJhdG9yW10pOgorICAgICAgICAoR0NHTFNwYW46Om9wZXJh
dG9yKik6CisgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCk6CisgICAg
ICAgIChtYWtlR0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW52Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dEZsb2F0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRl
Z2VydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
U2hhZGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0
ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyaV92Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0
aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyaV92KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJp
dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0SW50ZWdlcjY0dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aV92KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UHJvZ3JhbWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpl
bnN1cmVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGbG9hdHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJv
Z3JhbWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
U2hhZGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXJpX3ZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjppc0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcmkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhB
dHRyaWJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRW
ZXJ0ZXhBdHRyaWJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pdik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFNoYWRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmdik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKwogMjAyMC0x
MS0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
bmFsIHJlZmFjdG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFwaGlj
c0NvbnRleHRHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52
YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDJl
ZjEwYjBhNGYzNDZlZmUxYjkzOGU0NmUwMDUzYThhMzM5NDUzNDQuLjA0YjMwZjhmNjQ2NDE0Njgw
NjdlMzA5MjZlNzRlNGYyZDljMThiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRt
YXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIC8v
IGNyZWF0ZXMgYSBuZXcgYmFja2luZyBzdG9yZS4gU2luY2Ugd2UncmUgbm90IGRvaW5nIHRoYXQg
eWV0LCB3ZQogICAgICAgICAvLyBuZWVkIHRvIGVyYXNlIHdoYXQncyB0aGVyZS4KIAotICAgICAg
ICBHQ0dMZmxvYXQgY2xlYXJDb2xvcls0XTsKKyAgICAgICAgR0NHTGZsb2F0IGNsZWFyQ29sb3Jb
NF0geyB9OwogICAgICAgICBnYzNkLT5nZXRGbG9hdHYoR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0NMRUFSX1ZBTFVFLCBjbGVhckNvbG9yKTsKICAgICAgICAgZ2MzZC0+Y2xlYXJDb2xvcigwLCAw
LCAwLCAwKTsKICAgICAgICAgZ2MzZC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JV
RkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJVCB8IEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4MDczYWRjMTEx
NDkyMTVmNTZkMWU0NWRhNjg0ZGU4Mjg1ODE3ZTkyLi41NWJjMWY4ZGIyNDlkMzM4MjJlNzg4OWNh
NzgzZjViZWMwMjVhMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTU5LDkgKzE1OSw5IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQogICAgIG1fdW5wYWNr
U2tpcFJvd3MgPSAwOwogICAgIG1fdW5wYWNrU2tpcEltYWdlcyA9IDA7CiAKLSAgICBtX2NvbnRl
eHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfM0RfVEVYVFVSRV9TSVpFLCAm
bV9tYXgzRFRleHR1cmVTaXplKTsKKyAgICBtX21heDNEVGV4dHVyZVNpemUgPSBtX2NvbnRleHQt
PmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF8zRF9URVhUVVJFX1NJWkUpOwogICAg
IG1fbWF4M0RUZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6OmNvbXB1dGVMZXZlbENvdW50KG1f
bWF4M0RUZXh0dXJlU2l6ZSwgbV9tYXgzRFRleHR1cmVTaXplKTsKLSAgICBtX2NvbnRleHQtPmdl
dEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMsICZt
X21heEFycmF5VGV4dHVyZUxheWVycyk7CisgICAgbV9tYXhBcnJheVRleHR1cmVMYXllcnMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9BUlJBWV9URVhUVVJF
X0xBWUVSUyk7CiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3
Q29udGV4dCgpOwogCkBAIC0yMDgsOSArMjA4LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpyZXN0b3JlVW5wYWNrUGFyYW1ldGVycygpCiAKIGxvbmcgbG9uZyBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRJbnQ2NFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAgICBHQ0dM
aW50NjQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcjY0dihwbmFtZSwgJnZh
bHVlKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdl
cjY0KHBuYW1lKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXpl
VmVydGV4QXJyYXlPYmplY3RzKCkKQEAgLTEwNTUsMjMgKzEwNTMsMTQgQEAgV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTOgogICAgICAgICBGQUxMVEhST1VHSDsKLSAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUjogewotICAgICAgICBHQ0dM
aW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVDogewotICAgICAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9v
bD4odmFsdWUpOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dS
QVBfUjoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9G
T1JNQVQ6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdldFRl
eFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfTUlOX0xPRDoKICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VEVYVFVSRV9NQVhfTE9EOiB7Ci0gICAgICAgIEdDR0xmbG9hdCB2YWx1ZSA9
IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwg
JnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdl
dFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFtZXRlcih0YXJnZXQsIHBu
YW1lKTsKICAgICB9CkBAIC0yNDQ1LDExICsyNDM0LDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
X1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9TVEFSVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JVRkZFUl9T
SVpFOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX1NUQVJUOiB7
Ci0gICAgICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcjY0aV92KHRhcmdldCwgaW5kZXgsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsK
LSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZGRVJfU1RBUlQ6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXI2NGkodGFyZ2V0LCBpbmRleCk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CVUZGRVJfQklORElORzoKICAg
ICAgICAgaWYgKGluZGV4ID49IG1fYm91bmRJbmRleGVkVW5pZm9ybUJ1ZmZlcnMuc2l6ZSgpKSB7
CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9WQUxVRSwgImdldEluZGV4ZWRQYXJhbWV0ZXIiLCAiaW5kZXggb3V0IG9mIHJhbmdlIik7CkBA
IC0yNTI0LDI0ICsyNTEwLDIwIEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByCiAjaWYgVVNFKEFO
R0xFKQogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQ
cm9ncmFtT3JTaGFkZXIoImdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlciIsICZwcm9ncmFt
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgR0NHTGludCByZXN1bHQgPSAwOwogICAg
IHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JM
T0NLX0JJTkRJTkc6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19E
QVRBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJ
VkVfVU5JRk9STVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2Nr
SW5kZXgsIHBuYW1lLCBzaXplb2YocmVzdWx0KSwgbnVsbHB0ciwgJnJlc3VsdCk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4ocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdDR0x1aW50PihtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2kocHJv
Z3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lKSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTOiB7Ci0g
ICAgICAgIEdDR0xpbnQgc2l6ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwg
dW5pZm9ybUJsb2NrSW5kZXgsIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0FDVElW
RV9VTklGT1JNUywgc2l6ZW9mKHNpemUpLCBudWxscHRyLCAmc2l6ZSk7CisgICAgICAgIEdDR0xp
bnQgc2l6ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShwcm9ncmFtLm9iamVj
dCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tf
QUNUSVZFX1VOSUZPUk1TKTsKICAgICAgICAgVmVjdG9yPEdDR0xpbnQ+IHBhcmFtcyhzaXplLCAw
KTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0QWN0aXZlVW5pZm9ybUJs
b2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5h
bWUsIHNpemVvZihwYXJhbXNbMF0pICogcGFyYW1zLnNpemUoKSwgbnVsbHB0ciwgcGFyYW1zLmRh
dGEoKSk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3Jh
bS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICBy
ZXR1cm4gcGFyYW1zLm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50
Pih4KTsgfSk7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxP
Q0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFERVI6Ci0gICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0
QU5HTEUocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBzaXplb2Yo
cmVzdWx0KSwgbnVsbHB0ciwgJnJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxi
b29sPihyZXN1bHQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0
LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0lu
ZGV4LCBwbmFtZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJh
bWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI3NzIsOSArMjc1NCw3IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnCiAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBm
dW5jdGlvbk5hbWUsICJpbnZhbGlkIGF0dGFjaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBt
X2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAg
cmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJn
ZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZU5vbkRlZmF1
bHRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoZnVuY3Rpb25OYW1lLCBhdHRhY2htZW50KSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzk2LDExICsyNzc2LDggQEAgV2ViR0xBbnkgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xl
bnVtIHRhcmcKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX0FMUEhBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9ERVBUSF9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6IHsKLSAgICAgICAgR0NH
TGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFOgorICAgICAgICByZXR1cm4gbV9jb250
ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVu
dCwgcG5hbWUpOwogICAgIH0KIAogICAgIGlmIChvYmplY3QtPmlzVGV4dHVyZSgpKSB7CkBAIC0y
ODExLDExICsyNzg4LDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmcKICAgICAgICAgICAgIHJl
dHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xUZXh0dXJlJj4oKm9iamVjdCkp
OwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X1RFWFRVUkVfTEVWRUw6CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HOiB7Ci0g
ICAgICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSwgJnZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgfQorICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VO
Q09ESU5HOgorICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUgZm9yIHRl
eHR1cmUgYXR0YWNobWVudCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODk3
LDcgKzI4NzEsNyBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlTm9uRGVm
YXVsdEZyYW1lYnVmZmVyQXR0YWNobWVudChjb25zdCBjaGFyKgogR0NHTGludCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycygpCiB7CiAgICAgaWYgKCFtX21heERyYXdC
dWZmZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfRFJBV19CVUZGRVJTLCAmbV9tYXhEcmF3QnVmZmVycyk7CisgICAgICAgIG1fbWF4RHJh
d0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9E
UkFXX0JVRkZFUlMpOwogICAgIHJldHVybiBtX21heERyYXdCdWZmZXJzOwogfQogCkBAIC0yOTA1
LDcgKzI4NzksNyBAQCBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9y
QXR0YWNobWVudHMoKQogewogICAgIC8vIERyYXdCdWZmZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9B
VFRBQ0hNRU5UUyA9PSBNQVhfRFJBV19CVUZGRVJTCiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNo
bWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
Ok1BWF9EUkFXX0JVRkZFUlMsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21h
eENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0
R0w6Ok1BWF9EUkFXX0JVRkZFUlMpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5j
cHAKaW5kZXggOWNiMGY4NTZiNThlMTBlNmY0NzMwOWU2ZmUzYzEwZTI2NzA5NzE2Ni4uNDk0MTU2
ZTFlNjViNjAyOTE5MGRiN2MxYzAyNmFkZjgwM2RkYThkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKQEAgLTk4LDEwICs5OCw4IEBAIGJv
b2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQgPSB3
ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVk
IGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlzIHN1cHBvcnRlZC4KLSAg
ICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gMDsKLSAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNo
bWVudHMgPSAwOwotICAgIGNvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RS
QVdfQlVGRkVSU19FWFQsICZtYXhEcmF3QnVmZmVycyk7Ci0gICAgY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbWF4Q29sb3JBdHRh
Y2htZW50cyk7CisgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IGNvbnRleHQtPmdldEludGVn
ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgR0NHTGludCBtYXhD
b2xvckF0dGFjaG1lbnRzID0gY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIGlmIChtYXhEcmF3QnVmZmVycyA8IDQgfHwgbWF4
Q29sb3JBdHRhY2htZW50cyA8IDQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAppbmRleCAwMWEwMmY1
MWQ3MmQ4OTJlYWI4ZThjMjcwNTA2Y2JmYzRlNzM2NTRhLi4zNjU4ZWU4ZWFhZjdmMGRiYjg4NjNj
ZWQ1MDI0MjVmNGZiNGUyM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcApAQCAtNjE5LDE0ICs2MTksMTQgQEAgYm9vbCBXZWJHTEZyYW1l
YnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3NDb250ZXh0R0wqIGczZCwgY29u
c3QgY2hhcioKICAgICAgICAgZzNkLT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7
CiAgICAgfQogICAgIGlmIChpbml0RGVwdGgpIHsKLSAgICAgICAgZzNkLT5nZXRGbG9hdHYoR3Jh
cGhpY3NDb250ZXh0R0w6OkRFUFRIX0NMRUFSX1ZBTFVFLCAmZGVwdGhDbGVhclZhbHVlKTsKLSAg
ICAgICAgZzNkLT5nZXRCb29sZWFudihHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfV1JJVEVNQVNL
LCAmZGVwdGhNYXNrKTsKKyAgICAgICAgZGVwdGhDbGVhclZhbHVlID0gZzNkLT5nZXRGbG9hdChH
cmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ0xFQVJfVkFMVUUpOworICAgICAgICBkZXB0aE1hc2sg
PSBnM2QtPmdldEJvb2xlYW4oR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX1dSSVRFTUFTSyk7CiAg
ICAgICAgIGczZC0+Y2xlYXJEZXB0aCgxLjBmKTsKICAgICAgICAgZzNkLT5kZXB0aE1hc2sodHJ1
ZSk7CiAgICAgfQogICAgIGlmIChpbml0U3RlbmNpbCkgewotICAgICAgICBnM2QtPmdldEludGVn
ZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFLCAmc3RlbmNpbENsZWFy
VmFsdWUpOwotICAgICAgICBnM2QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpTVEVO
Q0lMX1dSSVRFTUFTSywgcmVpbnRlcnByZXRfY2FzdDxHQ0dMaW50Kj4oJnN0ZW5jaWxNYXNrKSk7
CisgICAgICAgIHN0ZW5jaWxDbGVhclZhbHVlID0gZzNkLT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29u
dGV4dEdMOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFKTsKKyAgICAgICAgc3RlbmNpbE1hc2sgPSBnM2Qt
PmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfV1JJVEVNQVNLKTsKICAgICAg
ICAgZzNkLT5jbGVhclN0ZW5jaWwoMCk7CiAgICAgICAgIGczZC0+c3RlbmNpbE1hc2soMHhmZmZm
ZmZmZik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5j
cHAKaW5kZXggYzhjM2I4MjI2NTI1M2MwZTA0ZWUwMWE2YjQxMjljOWM1ZjE4MDUyOS4uM2U0NmM1
ZTU2ZDEzZGNmY2YyZWNjMmRhZDJhYzE5NmE1ZjdjZWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCkBAIC0yMTYsOCArMjE2LDcgQEAgdm9pZCBXZWJH
TFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dEdMKiBj
b250ZXh0M2QpCiB7CiAgICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnMuY2xlYXIoKTsKIAotICAg
IEdDR0xpbnQgbnVtQXR0cmlicyA9IDA7Ci0gICAgY29udGV4dDNkLT5nZXRQcm9ncmFtaXYob2Jq
ZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUywgJm51bUF0dHJpYnMp
OworICAgIEdDR0xpbnQgbnVtQXR0cmlicyA9IGNvbnRleHQzZC0+Z2V0UHJvZ3JhbWkob2JqZWN0
KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUyk7CiAgICAgbV9hY3RpdmVB
dHRyaWJMb2NhdGlvbnMucmVzaXplKHN0YXRpY19jYXN0PHNpemVfdD4obnVtQXR0cmlicykpOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXR0cmliczsgKytpKSB7CiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGluZm87CkBAIC0yNDEsOCArMjQwLDcgQEAgdm9pZCBX
ZWJHTFByb2dyYW06OmNhY2hlSW5mb0lmTmVlZGVkKCkKICAgICBHcmFwaGljc0NvbnRleHRHTCog
Y29udGV4dCA9IGdldEFHcmFwaGljc0NvbnRleHRHTCgpOwogICAgIGlmICghY29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwotICAgIEdDR0xpbnQgbGlua1N0YXR1cyA9IDA7Ci0gICAgY29udGV4dC0+
Z2V0UHJvZ3JhbWl2KG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFUVVMsICZs
aW5rU3RhdHVzKTsKKyAgICBHQ0dMaW50IGxpbmtTdGF0dXMgPSBjb250ZXh0LT5nZXRQcm9ncmFt
aShvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsKICAgICBtX2xpbmtT
dGF0dXMgPSBsaW5rU3RhdHVzOwogICAgIGlmIChtX2xpbmtTdGF0dXMpIHsKICAgICAgICAgY2Fj
aGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkMmZhYzIwMzYy
NDk5NTg1ZTBkNTE1NTZjYzVjYTRlM2FhYzMzZGFmLi42OTNkNjIwNmYyYzkwZjk1ZmRhOTczYjk5
OGViOTY0NjdkY2ZlYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMwNywxMSArMzA3LDggQEAgV2ViR0xBbnkg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
R0NHTGVudW0gdGFyZ2UKICAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViR0xUZXh0dXJlJj4oKm9iamVjdCkpOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAgICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJF
X01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKLSAgICAgICAgICAgIEdDR0xpbnQgdmFsdWUgPSAw
OwotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOwotICAgICAgICB9CisgICAgICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBt
X2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRh
Y2htZW50LCBwbmFtZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUgZm9yIHRleHR1cmUg
YXR0YWNobWVudCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNDcsOSArMzQ0
LDkgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKCkK
ICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
aWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4
dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQsICZtX21heERyYXdCdWZmZXJzKTsKKyAg
ICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25z
R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50
cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xP
Ul9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21h
eENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpN
QVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVx
dWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCiAgICAgcmV0
dXJuIHN0ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50cyk7CiB9
CkBAIC0zNTksNyArMzU2LDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1h
eENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5U
U19FWFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNo
bWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRU
QUNITUVOVFNfRVhUKTsKICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCmluZGV4IDZjMzcyOTlkNDM3N2FhMDNjMjk1MWMyNDA1MDU4OWU4YjNjMzBm
YTcuLjE4NWU4YzYyZTZmYmUzMWYzMTM4OGMwYzlmODBkODFjZWUyNGEzYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCkBAIC04NzIsOCArODcyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jbGVhclN0ZW5jaWwgPSAwOwogICAgIG1f
Y29sb3JNYXNrWzBdID0gbV9jb2xvck1hc2tbMV0gPSBtX2NvbG9yTWFza1syXSA9IG1fY29sb3JN
YXNrWzNdID0gdHJ1ZTsKIAotICAgIEdDR0xpbnQgbnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0
cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFY
X0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZudW1Db21iaW5lZFRleHR1cmVJbWFnZVVu
aXRzKTsKKyAgICBHQ0dMaW50IG51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgPSBtX2NvbnRl
eHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lN
QUdFX1VOSVRTKTsKICAgICBtX3RleHR1cmVVbml0cy5jbGVhcigpOwogICAgIG1fdGV4dHVyZVVu
aXRzLnJlc2l6ZShudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKICNpZiAhVVNFKEFOR0xF
KQpAQCAtODgxLDE4ICs4ODAsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpp
bml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgICAgIG1fdW5yZW5kZXJhYmxlVGV4dHVyZVVuaXRz
LmFkZChpKTsKICNlbmRpZgogICAgIAotICAgIEdDR0xpbnQgbnVtVmVydGV4QXR0cmlicyA9IDA7
Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1ZFUlRF
WF9BVFRSSUJTLCAmbnVtVmVydGV4QXR0cmlicyk7CisgICAgR0NHTGludCBudW1WZXJ0ZXhBdHRy
aWJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVkVSVEVY
X0FUVFJJQlMpOwogICAgIG1fbWF4VmVydGV4QXR0cmlicyA9IG51bVZlcnRleEF0dHJpYnM7CiAg
ICAgCi0gICAgbV9tYXhUZXh0dXJlU2l6ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfU0laRSwgJm1fbWF4VGV4dHVyZVNpemUp
OworICAgIG1fbWF4VGV4dHVyZVNpemUgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9URVhUVVJFX1NJWkUpOwogICAgIG1fbWF4VGV4dHVyZUxldmVsID0gV2Vi
R0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heFRleHR1cmVTaXplLCBtX21heFRleHR1
cmVTaXplKTsKLSAgICBtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSA9IDA7Ci0gICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NVQkVfTUFQX1RFWFRVUkVfU0la
RSwgJm1fbWF4Q3ViZU1hcFRleHR1cmVTaXplKTsKKyAgICBtX21heEN1YmVNYXBUZXh0dXJlU2l6
ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NVQkVfTUFQ
X1RFWFRVUkVfU0laRSk7CiAgICAgbV9tYXhDdWJlTWFwVGV4dHVyZUxldmVsID0gV2ViR0xUZXh0
dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSwgbV9tYXhDdWJl
TWFwVGV4dHVyZVNpemUpOwotICAgIG1fbWF4UmVuZGVyYnVmZmVyU2l6ZSA9IDA7Ci0gICAgbV9j
b250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1JFTkRFUkJVRkZFUl9T
SVpFLCAmbV9tYXhSZW5kZXJidWZmZXJTaXplKTsKKyAgICBtX21heFJlbmRlcmJ1ZmZlclNpemUg
PSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9SRU5ERVJCVUZG
RVJfU0laRSk7CiAKICAgICAvLyBUaGVzZSB0d28gdmFsdWVzIGZyb20gRVhUX2RyYXdfYnVmZmVy
cyBhcmUgbGF6aWx5IHF1ZXJpZWQuCiAgICAgbV9tYXhEcmF3QnVmZmVycyA9IDA7CkBAIC0xNzQx
LDggKzE3MzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFk
ZXIoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJjb21waWxlU2hhZGVyIiwgJnNoYWRl
cikpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoc2hhZGVy
Lm9iamVjdCgpKTsKLSAgICBHQ0dMaW50IHZhbHVlOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVy
aXYoc2hhZGVyLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZ2
YWx1ZSk7CisgICAgR0NHTGludCB2YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIu
b2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUyk7CiAgICAgc2hhZGVy
LnNldFZhbGlkKHZhbHVlKTsKIAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMoKTsKQEAg
LTI4ODgsOCArMjg4Miw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omdl
dEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4
dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICBHQ0dM
aW50IHZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUp
OwogICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6QlVGRkVSX1NJWkUpCiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVl
KTsKQEAgLTMxODksMjYgKzMxODIsMjYgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEcKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hh
ZGVyKCJnZXRQcm9ncmFtUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERUxFVEVfU1RBVFVTOgogICAgICAgICByZXR1cm4g
cHJvZ3JhbS5pc0RlbGV0ZWQoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpWQUxJREFU
RV9TVEFUVVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0
KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFs
dWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRQcm9n
cmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkxJTktfU1RBVFVTOgogICAgICAgICByZXR1cm4gcHJvZ3JhbS5nZXRMaW5rU3RhdHVzKCk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QVRUQUNIRURfU0hBREVSUzoKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7
Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0UHJv
Z3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkFDVElWRV9BVFRSSUJVVEVTOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElW
RV9VTklGT1JNUzoKICNpZiBVU0UoQU5HTEUpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3Jh
bWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gbV9j
b250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSk7CiAjZWxzZQotICAg
ICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQo
KSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgpLCBwbmFt
ZSwgJnZhbHVlKTsKKyAgICAgICAgeworICAgICAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Cisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4
dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgp
LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQog
I2VuZGlmIC8vIFVTRShBTkdMRSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIGRlZmF1bHQ6
CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICAgICAgaWYgKGlzV2ViR0wyKCkpIHsKQEAgLTMyMTYs
OCArMzIwOSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREU6CiAgICAgICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6
CiAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STV9CTE9D
S1M6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmpl
Y3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
ICAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0
KCksIHBuYW1lKTsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkBAIC0zMjgwLDcgKzMyNzIsNiBAQCBXZWJHTEFueSBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQwogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCi0gICAgR0NHTGludCB2YWx1ZSA9
IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJF
TkRFUkJVRkZFUl9TQU1QTEVTOgogICAgICAgICBpZiAoIWlzV2ViR0wyKCkpIHsKQEAgLTMyOTYs
OCArMzI4Nyw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkVOREVSQlVGRkVSX0FMUEhBX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6UkVOREVSQlVGRkVSX1NURU5DSUxfU0laRToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcmkodGFyZ2V0LCBwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVS
QlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKICAgICAgICAgcmV0dXJuIG1fcmVuZGVyYnVmZmVyQmlu
ZGluZy0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKICAgICBkZWZhdWx0OgpAQCAtMzMxMCwxNiArMzMw
MCwxMyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJh
bWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAogewogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFNoYWRlclBh
cmFtZXRlciIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBHQ0dMaW50
IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6REVMRVRFX1NUQVRVUzoKICAgICAgICAgcmV0dXJuIHNoYWRlci5pc0RlbGV0ZWQoKTsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUzoKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5h
bWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFERVJfVFlQRToKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLm9i
amVjdCgpLCBwbmFtZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRTaGFkZXJQYXJhbWV0ZXIiLCAi
aW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMz
NTgsNyArMzM0NSw3IEBAIFJlZlB0cjxXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdD4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUHJlY2lzaW9uCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIEdDR0xpbnQgcmFuZ2VbMl0gPSB7MCwgMH07CisgICAgR0NH
TGludCByYW5nZVsyXSB7IH07CiAgICAgR0NHTGludCBwcmVjaXNpb24gPSAwOwogICAgIG1fY29u
dGV4dC0+Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUs
IHJhbmdlLCAmcHJlY2lzaW9uKTsKICAgICByZXR1cm4gV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQ6OmNyZWF0ZShyYW5nZVswXSwgcmFuZ2VbMV0sIHByZWNpc2lvbik7CkBAIC0zMzc4LDIwICsz
MzY1LDE1IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuCiAgICAgYXV0byB0ZXggPSB2YWxpZGF0
ZVRleHR1cmVCaW5kaW5nKCJnZXRUZXhQYXJhbWV0ZXIiLCB0YXJnZXQpOwogICAgIGlmICghdGV4
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICBH
Q0dMZmxvYXQgZlZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQUdfRklMVEVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX1dSQVBfUzoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBf
VDoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAm
dmFsdWUpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFRleFBhcmFt
ZXRlcmkodGFyZ2V0LCBwbmFtZSkpOwogICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpURVhUVVJFX01B
WF9BTklTT1RST1BZX0VYVDogLy8gRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCi0gICAg
ICAgIGlmIChtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewotICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmZlZhbHVlKTsKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oZlZhbHVlKTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAobV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpCisgICAgICAgICAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOwogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0VGV4
UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYyBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBk
ZWZhdWx0OgpAQCAtMzU1NSw3ICszNTM3LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtZnZFWFQocHJv
Z3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDE2ICogc2l6ZW9mKEdDR0xmbG9hdCksIHZhbHVlKTsK
ICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1m
dihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICAgICAgbV9jb250
ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIG1ha2VHQ0dMU3Bh
bih2YWx1ZSwgbGVuZ3RoKSk7CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAgICAg
IHJldHVybiB2YWx1ZVswXTsKICAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRl
KHZhbHVlLCBsZW5ndGgpOwpAQCAtMzU2NywxNCArMzU0OSwxNCBAQCBXZWJHTEFueSBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29u
c3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZv
cm1pdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQ0dMaW50KSwg
dmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
VW5pZm9ybWl2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgbWFr
ZUdDR0xTcGFuKHZhbHVlLCBsZW5ndGgpKTsKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwogICAgICAgICByZXR1cm4gSW50MzJBcnJheTo6dHJ5
Q3JlYXRlKHZhbHVlLCBsZW5ndGgpOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpVTlNJR05FRF9JTlQ6IHsKICAgICAgICAgR0NHTHVpbnQgdmFsdWVbNF0gPSB7MH07Ci0gICAg
ICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybXVpdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwg
dmFsdWUpOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm11aXYocHJvZ3JhbS5vYmplY3Qo
KSwgbG9jYXRpb24sIG1ha2VHQ0dMU3Bhbih2YWx1ZSwgbGVuZ3RoKSk7CiAgICAgICAgIGlmIChs
ZW5ndGggPT0gMSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsKICAgICAgICAgcmV0dXJu
IFVpbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7CkBAIC0zNTg2LDcgKzM1Njgs
NyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdM
UHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZ2V0blVuaWZvcm1pdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwg
NCAqIHNpemVvZihHQ0dMaW50KSwgdmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAg
ICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9u
LCB2YWx1ZSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLm9i
amVjdCgpLCBsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVlLCBsZW5ndGgpKTsKICAgICAgICAg
aWYgKGxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgIFZlY3Rvcjxib29sPiB2ZWN0b3IobGVuZ3Ro
KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGorKykKQEAg
LTM2MjQsNyArMzYwNiw3IEBAIFJlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMCiAKICAgICBHQ0dMaW50
IGFjdGl2ZVVuaWZvcm1zID0gMDsKICNpZiBVU0UoQU5HTEUpCi0gICAgbV9jb250ZXh0LT5nZXRQ
cm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklG
T1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKKyAgICBhY3RpdmVVbmlmb3JtcyA9IG1fY29udGV4dC0+
Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9V
TklGT1JNUyk7CiAjZWxzZQogICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Kj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dy
YW0ub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVV
bmlmb3Jtcyk7CiAjZW5kaWYKQEAgLTYyMzcsOSArNjIxOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cmVzdW1lKCkKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRCb29sZWFuUGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogewotICAgIEdDR0xib29sZWFu
IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCAmdmFsdWUpOwot
ICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRCb29sZWFuKHBuYW1l
KTsKIH0KIAogVmVjdG9yPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xl
YW5BcnJheVBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKQEAgLTYyNTgsMjMgKzYyMzgsMTcgQEAg
VmVjdG9yPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xlYW5BcnJheVBh
cmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIAogZmxvYXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0RmxvYXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGZsb2F0IHZh
bHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgJnZhbHVlKTsKLSAgICBy
ZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RmxvYXQocG5hbWUpOwogfQog
CiBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0SW50UGFyYW1ldGVyKEdDR0xlbnVt
IHBuYW1lKQogewotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldEludGVnZXIocG5hbWUpOwogfQogCiB1bnNpZ25lZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAm
dmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRl
Z2VyKHBuYW1lKTsKIH0KIAogUmVmUHRyPEZsb2F0MzJBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQpAQCAt
NzYyNiw5ICs3NjAwLDkgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRN
YXhEcmF3QnVmZmVycygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAmbV9tYXhE
cmF3QnVmZmVycyk7CisgICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldElu
dGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgaWYgKCFtX21h
eENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5z
aW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhDb2xvckF0dGFjaG1lbnRz
KTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xf
ZHJhd19idWZmZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19C
VUZGRVJTLgogICAgIHJldHVybiBzdGQ6Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9y
QXR0YWNobWVudHMpOwogfQpAQCAtNzYzOCw3ICs3NjEyLDcgQEAgR0NHTGludCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBv
cnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9y
QXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dM
OjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAg
ICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVu
c2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4Q29s
b3JBdHRhY2htZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaAppbmRleCAzNGYxN2VjNjFiMzMxMDM3MWMyZGRiZDBhMDE3NWM2MGI5
M2QxNmY1Li5iYTg2NWIzMzA4ZTZjOTQ1ODIyMTIyMzc3OTZkNmZkNTc3NDg0N2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMzA2
LDIxICszMDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FO
R0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIGRhdGEpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3Jt
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBvaW50ZXIpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkq
IGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9
IDA7CkBAIC0zMzYsMTQgKzMyMSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFF1
ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBk
YXRhKSA9IDA7IC8vIE5PTElOVAogICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIGRhdGEpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
NjQqIGRhdGEpID0gMDsgLy8gTk9MSU5UCiAgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCogcGFyYW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBkOWU1ODhhZmEzMGRi
YTczMDkzMGY5NmM5ODcyOTEzNDAxMjk4YzFlLi4wYTcxNTQwY2U4MDIwZmQ5ZjU4MTY4NjAzZjY3
NjliOTQ0NTIyNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTk4Niw1MSArOTg2LDUwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJh
bWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkg
PSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIC8vIGdldFBhcmFtZXRlcgogICAgIHZp
cnR1YWwgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51bSBuYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcmlfdihHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldElu
dGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwg
R0NHTGludDY0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtaXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29s
ZWFuKiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7Cisg
ICAgdmlydHVhbCBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSA9IDA7Cisg
ICAgdmlydHVhbCBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSA9
IDA7CiAKICAgICB2aXJ0dWFsIEdDR0xlbnVtIGdldEVycm9yKCkgPSAwOwogCiAgICAgLy8gZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVh
bCBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8g
Z2V0UHJvZ3JhbVBhcmFtZXRlcgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9n
KFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAogICAgIC8vIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cgotICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwg
R0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUpID0gMDsKIAogICAgIC8vIGdldFNoYWRlclBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U2hh
ZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNo
YWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNp
b25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBH
Q0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGlu
dCogcHJlY2lzaW9uKSA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTaGFkZXJTb3VyY2Uo
UGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgLy8gZ2V0VGV4UGFyYW1ldGVyCi0gICAgdmly
dHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0g
MDsKKyAgICB2aXJ0dWFsIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0VGV4UGFyYW1l
dGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRV
bmlmb3JtCi0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9y
bXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpID0gMDsKIAogICAgIHZp
cnR1YWwgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3Qg
U3RyaW5nJiBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRWZXJ0ZXhBdHRyaWIKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTHNpemVpcHRyIGdldFZl
cnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIApA
QCAtMTIzNiw3ICsxMjM1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1h
dHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgPSAwOwor
CiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgorICAgIEdDR0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51
bSBwbmFtZSk7CisgICAgR0NHTGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSk7Cisg
ICAgR0NHTGludCBnZXRJbnRlZ2VyKEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMaW50IGdldEFj
dGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2Nr
SW5kZXgsIEdDR0xlbnVtIHBuYW1lKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lk
IHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CkBAIC0xMzY3LDYgKzEzNzIsMzUgQEAgcHJpdmF0
ZToKICAgICBEZXN0aW5hdGlvbiBtX2Rlc3RpbmF0aW9uOwogfTsKIAoraW5saW5lIEdDR0xmbG9h
dCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NH
TGZsb2F0IHZhbHVlWzFdIHsgfTsKKyAgICBnZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWVbMF07Cit9CisKK2lubGluZSBHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRH
TDo6Z2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMYm9vbGVhbiB2YWx1ZVsx
XSB7IH07CisgICAgZ2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWVb
MF07Cit9CisKK2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRJbnRlZ2VyKEdD
R0xlbnVtIHBuYW1lKQoreworICAgIEdDR0xpbnQgdmFsdWVbMV0geyB9OworICAgIGdldEludGVn
ZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlWzBdOworfQorCitpbmxpbmUgR0NH
TGludCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpCit7Cisg
ICAgR0NHTGludCB2YWx1ZVsxXSB7IH07CisgICAgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJv
Z3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVl
WzBdOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IDY5
OWRlMjhiYWViOTJjYzI1MzM5NGRiYTgwYjdlN2E3OGUxM2Y0NDUuLmRiMGYwM2M4YjJlMjVjODM1
OWQzMDZmOTQyYjZiZmEyMmE3MzBiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0yNSw3ICsyNSw5IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAvLyBHQ0dMIHR5cGVzIG1hdGNoIHRoZSBjb3JyZXNw
b25kaW5nIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAogLy8gaGVhZGVyIGZp
bGUgZ2wyLmggZnJvbSBraHJvbm9zLm9yZy4KQEAgLTU1LDMgKzU3LDUxIEBAIHR5cGVkZWYgR0NH
THVpbnQgUGxhdGZvcm1HTE9iamVjdDsKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIHVu
c2lnbmVkIEdMdWludDsKICNlbmRpZgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0
ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4KK3N0cnVjdCBHQ0dMU3Bh
bjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+CitzdHJ1Y3QgR0NHTFNwYW4g
eworICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkp
CisgICAgeyB9CisgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQorICAgICAgICA6IGRh
dGEoYXJyYXkpCisgICAgeyB9CisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBBU1NFUlQo
ZGF0YSk7IEFTU0VSVChpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CisgICAgVCYgb3Bl
cmF0b3IqKCkgeyAgQVNTRVJUKGRhdGEpOyByZXR1cm4gKmRhdGE7IH0KKyAgICBUKiBkYXRhOwor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90IGJ1ZlNpemUgPSBFeHRlbnQ7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCk+IHsKKyAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1ZlNpemVf
KQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKKyAg
ICB7IH0KKyAgICB0ZW1wbGF0ZTxzaXplX3QgU3o+IEdDR0xTcGFuKFQgKCZhcnJheSlbU3pdKQor
ICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShTeikKKyAgICB7IH0KKyAg
ICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYgYXJyYXkpCisgICAgICAgIDogZGF0YShhcnJheS5k
YXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkpCisgICAgeyB9CisgICAgVCYg
b3BlcmF0b3JbXShzaXplX3QgaSkgeyBBU1NFUlQoZGF0YSk7IEFTU0VSVChpIDwgYnVmU2l6ZSk7
IHJldHVybiBkYXRhW2ldOyB9CisgICAgVCYgb3BlcmF0b3IqKCkgeyBBU1NFUlQoZGF0YSk7IHJl
dHVybiAqZGF0YTsgfQorICAgIFQqIGRhdGE7CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KK0dDR0xTcGFuKFQgKCYpW05dKSAt
PiBHQ0dMU3BhbjxULCBOPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK0dDR0xTcGFuKFdURjo6
VmVjdG9yPFQ+JikgLT4gR0NHTFNwYW48VD47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitHQ0dM
U3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNvdW50KQoreworICAgIHJldHVy
biBHQ0dMU3BhbjxUPiB7IGRhdGEsIGNvdW50IH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAK
aW5kZXggMWM4YmM0MjU1MGYxYzFkOTVjMzA4MmY2NzM3NmE1Njk1MDZiZmFiMy4uNGQwMjViOTkz
NDIyNzc2YjliNWY0YWFiYzM5YTBjNzg5MTk0MGE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cApAQCAtMTEzLDggKzExMyw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyCiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKLSAgICBpbnQgc291cmNlTGVuZ3RoID0gMDsKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2
KHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSwgJnNvdXJj
ZUxlbmd0aCk7CisgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShz
aGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUpOwogICAgIGlm
ICghc291cmNlTGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBWZWN0
b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NP
VVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KQEAgLTI3OSwxMjYg
KzI3OCw2IEBAIEdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJl
SW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmCiB9CiAKIC8vIEdMX0FOR0xFX3JvYnVz
dF9jbGllbnRfbWVtb3J5Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCb29sZWFudlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJvb2xlYW52Um9idXN0
QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRGbG9hdHZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgYXR0YWNobWVudCwgcG5h
bWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dEludGVnZXJ2Um9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRQcm9ncmFtaXZSb2J1
c3RBTkdMRShwcm9ncmFtLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFkZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldFNoYWRlcml2Um9idXN0QU5HTEUoc2hhZGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGluZGV4
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2
b2lkICoqcG9pbnRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJv
YnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwb2ludGVyKTsKLX0KLQog
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNp
emVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC01MTcsMTQgKzM5Niw2IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwCiAgICAgZ2w6OkdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5H
TEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSh0
YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCiB2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTU1NywzMCArNDI4LDYgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpk
YXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXI2NHZSb2J1c3RBTkdMRShwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihkYXRhKSk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludDY0ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXI2NGlfdlJv
YnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2Fz
dDxHTGludDY0Kj4oZGF0YSkpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZm
ZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFt
cykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9u
c0dMQU5HTEUuaAppbmRleCAxMjU2OTU2N2MxN2M5MjZiNzFhOTFiYjRiYjExOTU1NmJhMDZmMTcw
Li41N2JiOTNiYzg0YzMzNTkwZmJjZjRiM2Y3YTFlYjVhNTVjNTkyNTZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmgKQEAgLTczLDIxICs3Myw2IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNS
ZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3Rf
Y2xpZW50X21lbW9yeQotICAgIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAq
ZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZs
b2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQ
cm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTaGFkZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmli
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVycmlkZTsKICAgICB2b2lk
IHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBH
Q0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTAzLDE0ICs4OCwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCiAgICAgdm9pZCBnZXRJbnRl
cm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJp
YklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRh
dGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKICAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92
ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxv
YXQgKnBhcmFtKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5k
ZXggZGY2ZjM0YzlkNjE4ZDA3YWRmMjE5ODVhMzAxY2JlNDE0MjkzOTA4YS4uZDg4ZTQyNmUzNmU3
MjcwN2Y4Njc3YzIzMTU2ZWYyZDM0MmEyZmJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAKQEAgLTMzMCw1NSArMzMwLDM2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlCiAg
ICAgZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1
ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47Cisg
ICAgZ2w6OkdldEludGVnZXJ2Um9idXN0QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxw
dHIsIHZhbHVlLmRhdGEpOwogCiAgICAgc3dpdGNoIChwbmFtZSkgewotICAgIGNhc2UgTUFYX1RF
WFRVUkVfU0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUsIHZh
bHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhp
bXVtVGV4dHVyZVNpemUoKSkKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYsICp2
YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0la
RToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZh
bHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhp
bXVtVGV4dHVyZVNpemUoKSkKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDEwMjQsICp2
YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBTb21lIG9s
ZGVyIGhhcmR3YXJlIGFkdmVydGlzZXMgYSBsYXJnZXIgbWF4aW11bSB0aGFuIHRoZXkKICAgICAv
LyBjYW4gYWN0dWFsbHkgaGFuZGxlLiBSYXRoZXIgdGhhbiBkZXRlY3Rpbmcgc3VjaCBkZXZpY2Vz
LCBzaW1wbHkKICAgICAvLyBjbGFtcCB0aGUgbWF4aW11bSB0byA4MTkyLCB3aGljaCBpcyBiaWcg
ZW5vdWdoIGZvciBhIDVLIGRpc3BsYXkuCiAgICAgY2FzZSBNQVhfUkVOREVSQlVGRkVSX1NJWkU6
Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihNQVhfUkVOREVSQlVGRkVSX1NJWkUsIHZhbHVlKTsK
ICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oODE5MiwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNQVhfVklFV1BPUlRfRElNUzoKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1B
WF9WSUVXUE9SVF9ESU1TLCB2YWx1ZSk7CiAgICAgICAgIHZhbHVlWzBdID0gc3RkOjptaW4oODE5
MiwgdmFsdWVbMF0pOwogICAgICAgICB2YWx1ZVsxXSA9IHN0ZDo6bWluKDgxOTIsIHZhbHVlWzFd
KTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBkZWZhdWx0OgotICAgICAgICBnbDo6R2V0
SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyaV92KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXJpX3YocG5hbWUs
IGluZGV4LCB2YWx1ZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNo
YWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNp
b25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdl
LCBHQ0dMaW50KiBwcmVjaXNpb24pCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFk
ZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZSwgcHJlY2lzaW9uKTsKKyAgICBnbDo6R2V0U2hh
ZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLmRhdGEs
IHByZWNpc2lvbik7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCkBAIC0xMjEx
LDcgKzExOTIsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDRwogCiAgICAgR0xpbnQgbWF4VW5p
Zm9ybVNpemUgPSAwOwogICAgIGdsOjpHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VO
SUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZvcm1TaXplKTsKLQogICAgIFZlY3RvcjxHTGNoYXI+
IG5hbWUobWF4VW5pZm9ybVNpemUpOyAvLyBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGlu
Y2x1ZGVzIG51bGwgdGVybWluYXRpb24uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAg
ICBHTGludCBzaXplID0gMDsKQEAgLTE4MTgsNjQgKzE3OTgsNjcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAg
ICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheShhcnJheSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRCb29sZWFudihwbmFtZSwg
dmFsdWUpOworICAgIGdsOjpHZXRCb29sZWFudlJvYnVzdEFOR0xFKHBuYW1lLCB2YWx1ZS5idWZT
aXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAg
R0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUs
IHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAg
cmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9h
dHYoR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4g
dmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZ2w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRGbG9hdHZS
b2J1c3RBTkdMRShwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9
CiAgICAgCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZhbHVlKQorR0NHTGludDY0IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludDY0IHZh
bHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAqdmFsdWUgPSAwOwotICAgIGdsOjpHZXRJbnRlZ2VyNjR2KHBuYW1lLCB2YWx1ZSk7
CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xF
KHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCwgR0NHTGludDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5k
ZXgpCiB7CisgICAgR0NHTGludDY0IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdmFsdWUgPSAwOwotICAgIGdsOjpHZXRJ
bnRlZ2VyNjRpX3YocG5hbWUsIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICBnbDo6R2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUocG5hbWUsIGluZGV4LCAxLCBudWxs
cHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFs
dWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NH
TGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgICAgIHJldHVybiB2YWx1ZTsK
ICAgICBpZiAoYXR0YWNobWVudCA9PSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCiAgICAgICAg
IGF0dGFjaG1lbnQgPSBERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBTVEVOQ0lMX0FUVEFDSE1FTlQs
IGVpdGhlciB3b3Jrcy4KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgYXR0YWNobWVudCwg
cG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRQcm9ncmFtaXYo
cHJvZ3JhbSwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpH
ZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVl
KTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcnNbMl0sIEdDR0xz
aXplaSBjb3VudCwgY29uc3QgU3RyaW5nJiBsb2cpCkBAIC0xOTIxLDIyICsxOTA0LDIzIEBAIFN0
cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtKQogICAgIHJldHVybiBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMs
IGNvdW50LCBTdHJpbmcoaW5mby5kYXRhKCksIHNpemUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIGdsOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwg
cG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNo
YWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVu
dW0gcG5hbWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7Ci0KKyAgICBHQ0dMaW50IHZhbHVlID0g
MDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgZ2w6OkdldFNoYWRlcml2Um9idXN0QU5HTEUoc2hhZGVyLCBwbmFtZSwgMSwg
bnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFN0cmluZyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHNoYWRl
cikKQEAgLTE5NjQsNDQgKzE5NDgsNDkgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCkKICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVy
ZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dD
R0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgZ2w6OkdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBw
bmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0VGV4
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZv
cm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOworICAgIC8vIEZJWE1FOiBCdWcgaW4gQU5HTEUgYnVmU2l6ZSB2YWxpZGF0aW9uIGZv
ciB1bmlmb3Jtcy4KKyAgICBhdXRvIGJ1ZlNpemUgPSB2YWx1ZS5idWZTaXplICogc2l6ZW9mKCp2
YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9u
LCBidWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxv
Y2F0aW9uLCB2YWx1ZSk7CisgICAgLy8gRklYTUU6IEJ1ZyBpbiBBTkdMRSBidWZTaXplIHZhbGlk
YXRpb24gZm9yIHVuaWZvcm1zLgorICAgIGF1dG8gYnVmU2l6ZSA9IHZhbHVlLmJ1ZlNpemUgKiBz
aXplb2YoKnZhbHVlKTsKKyAgICBnbDo6R2V0VW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwg
bG9jYXRpb24sIGJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybXVp
dihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIC8vIEZJWE1FOiBCdWcgaW4gQU5HTEUg
YnVmU2l6ZSB2YWxpZGF0aW9uIGZvciB1bmlmb3Jtcy4KKyAgICBhdXRvIGJ1ZlNpemUgPSB2YWx1
ZS5idWZTaXplICogc2l6ZW9mKCp2YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9
CiAKIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTIwMTQsMjAg
KzIwMDMsMjAgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxv
Y2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gZ2w6OkdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2KGluZGV4
LCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGlu
ZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdihpbmRl
eCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShp
bmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogfQogCiBH
Q0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNl
dChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0yMDM2LDcgKzIwMjUsNyBAQCBH
Q0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNl
dChHQ0dMdWludCBpbmRleCwgR0NHTAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEdMdm9pZCog
cG9pbnRlciA9IDA7Ci0gICAgZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwbmFt
ZSwgJnBvaW50ZXIpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xF
KGluZGV4LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnBvaW50ZXIpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMc2l6ZWlwdHI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsK
IH0KIApAQCAtMjk1Myw2ICsyOTQyLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhCiAgICAg
Z2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRh
ICsgc3JjT2Zmc2V0KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0
aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2Nr
SW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGdsOjpHZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4
LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUsIG51bGxwdHIsIHBhcmFtcy5kYXRhKTsKK30KKworCiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xD
ViogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5jcHAKaW5kZXggNmQ1MDNiY2JhNzVhZmI4YzUwNzkwYjFjMjRlMjgyODM2YzU1ZDk0
OS4uY2JhZjA2MGI1NTYzOWZkYjU1YWI3ZWFlNDE3ZWY1ZDIwNDM5ZDkzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuY3BwCkBAIC00NjQsOCArNDY0LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKIAogICAgIG1fY29u
dGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2ZXJ0ZXhTaGFkZXIpOwogCi0gICAgR0NHTGludCBz
dGF0dXMgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYodmVydGV4U2hhZGVyLCBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIEdDR0xpbnQgc3Rh
dHVzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHZlcnRleFNoYWRlciwgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBJTEVfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2Vi
R0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3Rz
KCVwKSAtIFZlcnRleCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwgdGhpcyk7CiAgICAgICAg
IG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CkBAIC00ODAsNyArNDc5LDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmpl
Y3RzKCkKIAogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdChmcmFnbWVudFNoYWRl
cik7CiAKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KGZyYWdtZW50U2hhZGVyLCBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIHN0YXR1cyA9IG1fY29u
dGV4dC0+Z2V0U2hhZGVyaShmcmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJ
TEVfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFw
aGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIEZy
YWdtZW50IHNoYWRlciBmYWlsZWQgdG8gY29tcGlsZS4iLCB0aGlzKTsKICAgICAgICAgbV9jb250
ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKQEAgLTQ5Myw3ICs0OTIsNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQog
ICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIp
OwogICAgIG1fY29udGV4dC0+bGlua1Byb2dyYW0obV95dXZQcm9ncmFtKTsKIAotICAgIG1fY29u
dGV4dC0+Z2V0UHJvZ3JhbWl2KG1feXV2UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktf
U1RBVFVTLCAmc3RhdHVzKTsKKyAgICBzdGF0dXMgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKG1f
eXV2UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVTKTsKICAgICBpZiAoIXN0
YXR1cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6Omlu
aXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIFByb2dyYW0gZmFpbGVkIHRvIGxpbmsuIiwg
dGhpcyk7CiAgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDgwNjEwZGU3ZDQzMWNm
NDI2Mjk5N2Y0ZmZjZTM3YjZiZTFlZTc0MDQuLjY4NmYyZDUxMTQ4ZWY5YjEyZmVmMTBiM2MyYWM3
MGIyYTM1ZDIxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBA
IC0xMjgsNyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVu
YWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5H
TEVSZXNvdXJjZXMgPSBjb21waWxlci5nZXRSZXNvdXJjZXMoKTsKICAgICAgICAgaWYgKCFBTkdM
RVJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzKSB7CiAgICAgICAgICAgICBBTkdMRVJlc291cmNl
cy5FWFRfZHJhd19idWZmZXJzID0gMTsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJkFOR0xFUmVzb3VyY2VzLk1h
eERyYXdCdWZmZXJzKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJz
ID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19F
WFQpOwogICAgICAgICAgICAgY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJl
X2xvZCIpIHsKQEAgLTE3Miw3ICsxNzIsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogCiAg
ICAgQU5HTEVXZWJLaXRCcmlkZ2UmIGNvbXBpbGVyID0gbV9jb250ZXh0LT5tX2NvbXBpbGVyOwog
Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpT
SEFERVJfVFlQRSwgJkdMc2hhZGVyVHlwZSk7CisgICAgR0xzaGFkZXJUeXBlID0gbV9jb250ZXh0
LT5nZXRTaGFkZXJpKHNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFKTsKIAog
ICAgIGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9TSEFERVIp
CiAgICAgICAgIHNoYWRlclR5cGUgPSBTSEFERVJfVFlQRV9WRVJURVg7CkBAIC0yNTQsODEgKzI1
NCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2RVhUKEdD
R0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTGluCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NH
TGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJvZ3Jh
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtZnZSb2J1
c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZvcm1pdlJv
YnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJp
YmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICopCiB7CiAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC00MDAsMTEgKzMy
NSw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCiB7
CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CkBAIC00MjUsMjEgKzM0NSw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpCiAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFO
R0xFKEdDR0x1aW50LCBHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldElu
dGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NH
TGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRl
Z2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCiB7CiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggMDQ4OTRiOTFjODJjYzRiMWIyMDlhN2FmZDIyOWNiZGNh
OWEwMWE0My4uOTdlZWRmYjc0ODVjODMyZjc5M2M4Y2ZmMGZhMTdmYmZmYmU2NTg4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNjksMjEgKzY5LDYgQEAgcHVibGlj
OgogICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAog
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCBnZXRCb29sZWFu
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1pdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVy
cmlkZTsKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29s
dW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQg
dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTk5LDE0ICs4NCwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRC
dWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBp
bnQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0
ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKaW5kZXggYWI4Y2I1NGY1ZTg3OWVmNGI4YTkwZDE5YTdlYzkyYzg5
Y2UyMDU3Yi4uZDI4ZjRhMDMxZWJkYzQ4Mzg3NWQzOTg0ODdkNTc4NzQ4ZmRlNDdlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC03NCwxMSArNzQsOCBAQCBib29sIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGb3IgR0xfRVhUX3JvYnVzdG5lc3MsIGNoZWNrIHRoYXQg
dGhlIGNvbnRleHQgc3VwcG9ydHMgcm9idXN0IGFjY2Vzcy4KLSAgICBpZiAobmFtZSA9PSAiR0xf
RVhUX3JvYnVzdG5lc3MiKSB7Ci0gICAgICAgIEdMaW50IHJvYnVzdEFjY2VzcyA9IEdMX0ZBTFNF
OwotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6Q09OVEVYVF9S
T0JVU1RfQUNDRVNTLCAmcm9idXN0QWNjZXNzKTsKLSAgICAgICAgcmV0dXJuIHJvYnVzdEFjY2Vz
cyA9PSBHTF9UUlVFOwotICAgIH0KKyAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3JvYnVzdG5lc3Mi
KQorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6Q09O
VEVYVF9ST0JVU1RfQUNDRVNTKSA9PSBHTF9UUlVFOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDc3NWY5MDQwNmY0MmE2MDkxZGRj
M2ZlYTFlNTBiN2MyYjBhZTRkYTEuLjA5OTI2NzhiOGRjMWUxODNkOTgyNTliNzczMTVjMzYxMjE3
MDEzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0xOTcsMzUgKzE5
NywzNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7CiAgICAgdm9pZCBn
ZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4
Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFs
OwogICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3Qg
U3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMYm9vbGVhbiogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVy
aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFs
OworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29s
ZWFuPiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVycm9y
KCkgZmluYWw7Ci0gICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCog
dmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEludGVnZXJpX3YoR0NHTGVu
dW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZhbHVlKSBmaW5hbDsK
LSAgICB2b2lkIGdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgs
IEdDR0xpbnQ2NCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsK
KyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2
YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUp
IGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVt
IHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAjaWYgIVVTRShBTkdM
RSkKICAgICB2b2lkIGdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSk7CiAjZW5kaWYgLy8g
IVVTRShBTkdMRSkKICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVj
dCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVj
dFsyXSwgR0NHTHNpemVpLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZh
bHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3QsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwor
ICAgIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CiAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlw
ZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNp
c2lvbikgZmluYWw7CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0g
c2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4g
cmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CiAgICAgU3RyaW5nIGdldFNoYWRlclNv
dXJjZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xl
bnVtIG5hbWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2
b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpIGZp
bmFsOworICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xm
bG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZp
bmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NH
TGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVl
KSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBn
ZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmli
T2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lk
IGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTQzOCw2ICs0
MzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3Jt
TWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
ZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAKICNpZiAhVVNF
KEFOR0xFKQogICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQmFzZS5jcHAKaW5kZXggNzUwZWQzMjZlY2U2NWU4OGY2YjQxMzYwMTVjNGY5MzM3NDQ4OWNh
NS4uOWQ3Y2M5MjE2ZTdhNDJjZjBkOTcxNjQ1NzIwODUxZjE0NTUxNzBkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRh
cmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFs
dWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBw
bmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgLy8gTmVlZCB0byBlbXVsYXRl
IE1BWF9GUkFHTUVOVC9WRVJURVhfVU5JRk9STV9WRUNUT1JTIGFuZCBNQVhfVkFSWUlOR19WRUNU
T1JTCiAgICAgLy8gYmVjYXVzZSBkZXNrdG9wIEdMJ3MgY29ycmVzcG9uZGluZyBxdWVyaWVzIHJl
dHVybiB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMKQEAgLTI3Miw0NiArMjcyLDQ2IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50KiB2YWx1ZSkKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAjaWYgVVNFKE9QRU5HTCkKICAgICBj
YXNlIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2Vy
dihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZSk7CisgICAgICAgIDo6
Z2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZS5k
YXRhKTsKICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFY
X1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhf
VkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAgICA6OmdsR2V0SW50ZWdl
cnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMsIHZhbHVlLmRhdGEpOwogICAgICAg
ICAqdmFsdWUgLz0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNQVhfVkFSWUlOR19WRUNU
T1JTOgogICAgICAgICBpZiAoaXNHTEVTMkNvbXBsaWFudCgpKSB7CiAgICAgICAgICAgICBBU1NF
UlQoOjpnbEdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOwotICAgICAgICAgICAgOjpnbEdldElu
dGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xH
ZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAg
ICAgIGlmICg6OmdsR2V0RXJyb3IoKSA9PSBHTF9JTlZBTElEX0VOVU0pIHsKLSAgICAgICAgICAg
ICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUywgdmFsdWUpOwor
ICAgICAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19DT01QT05FTlRT
LCB2YWx1ZS5kYXRhKTsKICAgICAgICAgICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhf
VkFSWUlOR19GTE9BVFMsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9N
QVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlLmRhdGEpOwogICAgICAgICAgICAgKnZhbHVlIC89IDQ7
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIE1BWF9URVhUVVJF
X1NJWkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7
CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZS5kYXRhKTsK
ICAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4
dHVyZVNpemUoKSkKICAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYsICp2YWx1ZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRToKLSAg
ICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVlKTsK
KyAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVl
LmRhdGEpOwogICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZSgpKQogICAgICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oMTAyNCwg
KnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgOjpnbEdldElu
dGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFs
dWUuZGF0YSk7CiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
aGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lz
aW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFk
ZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5n
ZSwgR0NHTGludCogcHJlY2lzaW9uKQogewogICAgIFVOVVNFRF9QQVJBTShzaGFkZXJUeXBlKTsK
LSAgICBBU1NFUlQocmFuZ2UpOworICAgIEFTU0VSVChyYW5nZS5kYXRhKTsKICAgICBBU1NFUlQo
cHJlY2lzaW9uKTsKIAogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBiMGMxZjFkZmQ0M2Q0
MTUwNDI3ZmY1MjFhY2Y2ODQzNjI3MjQwMDVhLi5hYmI3ZTI1YTA2ZjA4NWNjZWFjZmY1YWI2ZTgy
MDQ1N2NlOWEyZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
bW1vbi5jcHAKQEAgLTE3MTcsODEgKzE3MTcsNzUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAjZW5kaWYKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
OjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEJvb2xlYW52KHBuYW1l
LCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVm
ZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCog
dmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0
ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1
ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICA6OmdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFy
Z2V0LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQs
IHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVl
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRGbG9hdHYocG5hbWUsIHZhbHVl
KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdihHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVlKQotewotICAgIFVOVVNF
RF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdmFsdWUgPSAwOwotICAg
IC8vIEZJWE1FIDE0MTE3ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2UgbXVzdCBmaXJzdCBzd2l0
Y2ggb3ZlciB0byB1c2luZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGluaXRpYWxpbmcgdGhlIFdl
YkdMMiBjb250ZXh0IHVzaW5nIE9wZW5HTCBFUyAzLjAuCi0gICAgLy8gOjpnbEdldEludGVnZXJp
X3YocG5hbWUsIGluZGV4LCB2YWx1ZSk7CisgICAgOjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUu
ZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYo
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURf
UEFSQU0ocG5hbWUpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAqdmFsdWUgPSAwOworICAgIEdDR0xpbnQ2
NCB2YWx1ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3
ZSBtdXN0IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQg
aW5pdGlhbGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KICAgICAv
LyA6OmdsR2V0SW50ZWdlcjY0dihwbmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aV92KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludDY0KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKICAgICBVTlVTRURfUEFSQU0o
aW5kZXgpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAqdmFsdWUgPSAwOworICAgIEdDR0xpbnQ2NCB2YWx1
ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3ZSBtdXN0
IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQgaW5pdGlh
bGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KICAgICAvLyA6Omds
R2V0SW50ZWdlcjY0aV92KHBuYW1lLCBpbmRleCwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1
ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
CisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxf
QVRUQUNITUVOVCkKICAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9y
IFNURU5DSUxfQVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgotICAgIDo6Z2xHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1
ZSk7CisgICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdl
dCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CisgICAgOjpnbEdl
dFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1i
b2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkKQEAgLTE4OTksMjAgKzE4OTMsMjEgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCiAgICAg
cmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhpbmZvLmRh
dGEoKSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBH
Q0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICA6OmdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0
LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQor
R0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2Jq
ZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7Ci0KKyAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogCiAgICAgY29uc3QgYXV0byYg
cmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwpAQCAtMTkyMCwyOCArMTkx
NSwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbQogICAgIHN3aXRjaCAocG5hbWUpIHsKICAg
ICBjYXNlIERFTEVURV9TVEFUVVM6CiAgICAgY2FzZSBTSEFERVJfVFlQRToKLSAgICAgICAgOjpn
bEdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldFNoYWRl
cml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ09N
UElMRV9TVEFUVVM6Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5k
KCkpIHsKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PGludD4oZmFsc2UpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0
PGludD4ocmVzdWx0LT52YWx1ZS5pc1ZhbGlkKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBtX3No
YWRlclNvdXJjZU1hcC5lbmQoKSkKKyAgICAgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8aW50
PihyZXN1bHQtPnZhbHVlLmlzVmFsaWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIElORk9f
TE9HX0xFTkdUSDoKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQo
KSkgewotICAgICAgICAgICAgKnZhbHVlID0gMDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICAqdmFsdWUgPSBnZXRTaGFkZXJJbmZvTG9nKHNoYWRlcikubGVuZ3RoKCk7
CisgICAgICAgIGlmIChyZXN1bHQgIT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCisgICAgICAg
ICAgICB2YWx1ZSA9IGdldFNoYWRlckluZm9Mb2coc2hhZGVyKS5sZW5ndGgoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTSEFERVJfU09VUkNFX0xFTkdUSDoKLSAgICAgICAgKnZhbHVlID0g
Z2V0U2hhZGVyU291cmNlKHNoYWRlcikubGVuZ3RoKCk7CisgICAgICAgIHZhbHVlID0gZ2V0U2hh
ZGVyU291cmNlKHNoYWRlcikubGVuZ3RoKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfRU5VTSk7CiAgICAgfQorICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFk
ZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpAQCAtMTk4NiwzOSArMTk3Niw0MSBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlcikKICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZS5zb3VyY2U7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmZ2KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwLmY7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFRleFBh
cmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFy
YW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
CitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpn
bEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZv
cm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOworICAgIDo6Z2xHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmRh
dGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtaXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICA6OmdsR2V0
VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CkBAIC0yMDM3LDIwICsy
MDI5LDIwIEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIDo6Z2xHZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVkTmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihp
bmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBu
YW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2
YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
OjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRW
ZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlLmRhdGEpOwogfQogCiBHQ0dMc2l6ZWlw
dHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0zMTQzLDYgKzMxMzUsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwogfQogCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xT
cGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAg
VU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVTRURfUEFSQU0ocG5hbWUp
OworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOworfQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA2MGZkZmM2NWY4NzM5NTg5NTc5NWE4NGVmMWUw
OWFiZjZkN2FhODQzLi5hMWQ4MDkyYmNjYWUwMDhkNmU2OWU4Y2Q4ZjZkZGZiMTdhY2FmMDBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xOTYsMjMgKzE5
NiwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9y
YWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldEludGVnZXJ2KHBu
YW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0
KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJh
bmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJl
Y2lzaW9uVHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lv
bikKIHsKLSAgICBBU1NFUlQocmFuZ2UpOworICAgIEFTU0VSVChyYW5nZS5kYXRhKTsKICAgICBB
U1NFUlQocHJlY2lzaW9uKTsKIAogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlw
ZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsIHByZWNpc2lvbik7CisgICAgOjpnbEdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZS5kYXRhLCBwcmVj
aXNpb24pOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQpAQCAtMzMwLDE4ICsz
MzAsMTkgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMg
QU5HTEVSZXNvdXJjZXM7CiAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmQU5HTEVSZXNvdXJj
ZXMpOwogICAgIAotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhf
VkVSVEVYX0FUVFJJQlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRyaWJzKTsKLSAgICBn
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9VTklGT1JNX1ZF
Q1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7Ci0gICAgZ2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WQVJZSU5HX1ZFQ1RPUlMsICZB
TkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xF
UmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJbnRlZ2VydihH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMs
ICZBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMs
ICZBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMsICZB
TkdMRVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKTsKKyAgICA6OmdsR2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfQVRUUklCUywgJkFOR0xF
UmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291
cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7CisgICAgOjpnbEdldEludGVnZXJ2KEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMu
TWF4VmFyeWluZ1ZlY3RvcnMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMu
TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdM
RVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICA6OmdsR2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAm
QU5HTEVSZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIDo6Z2xHZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUywg
JkFOR0xFUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOwogICAgIAogICAgIC8v
IEFsd2F5cyBzZXQgdG8gMSBmb3IgT3BlbkdMIEVTLgogICAgIEFOR0xFUmVzb3VyY2VzLk1heERy
YXdCdWZmZXJzID0gMTsKICAgICAKLSAgICBHQ0dMaW50IHJhbmdlWzJdLCBwcmVjaXNpb247Cisg
ICAgR0NHTGludCByYW5nZVsyXSB7IH07CisgICAgR0NHTGludCBwcmVjaXNpb24gPSAwOwogICAg
IGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RlJBR01F
TlRfU0hBREVSLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6SElHSF9GTE9BVCwgcmFuZ2UsICZw
cmVjaXNpb24pOwogICAgIEFOR0xFUmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IChy
YW5nZVswXSB8fCByYW5nZVsxXSB8fCBwcmVjaXNpb24pOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA4OWQxNGQyOTU2YjcyZmE0
MmVlOTgzNjJhYjgwZDJiYjMwYWIzZWQyLi42ODBhNTI5ZDY3NWRkNjFiOThjZWU4YTM5ZjE0MTVm
NzkzMGI4ZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcApAQCAtMjg5LDggKzI4OSw3IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAg
ICAgIC8vIEZyb20gdmVyc2lvbiAzLjIgb24gd2UgdXNlIHRoZSBPcGVuR0wgQ29yZSBwcm9maWxl
LCBhbmQgd2UgbmVlZCBhIFZBTyBmb3IgcmVuZGVyaW5nLgogICAgICAgICAvLyBBIFZBTyBjb3Vs
ZCBiZSBjcmVhdGVkIGFuZCBib3VuZCBieSBlYWNoIGNvbXBvbmVudCB1c2luZyBHTCByZW5kZXJp
bmcgKFRleHR1cmVNYXBwZXIsIFdlYkdMLCBldGMpLiBUaGlzIGlzCiAgICAgICAgIC8vIGEgc2lt
cGxlciBzb2x1dGlvbjogdGhlIGZpcnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNyZWF0ZWQg
b24gYSBHTENvbnRleHQgd2lsbCBjcmVhdGUgYW5kIGJpbmQgYSBWQU8gZm9yIHRoYXQgY29udGV4
dC4KLSAgICAgICAgR0NHTGludCBjdXJyZW50VkFPID0gMDsKLSAgICAgICAgZ2V0SW50ZWdlcnYo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlZFUlRFWF9BUlJBWV9CSU5ESU5HLCAmY3VycmVudFZB
Tyk7CisgICAgICAgIEdDR0xpbnQgY3VycmVudFZBTyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OlZFUlRFWF9BUlJBWV9CSU5ESU5HKTsKICAgICAgICAgaWYgKCFjdXJyZW50
VkFPKSB7CiAgICAgICAgICAgICBtX3ZhbyA9IGNyZWF0ZVZlcnRleEFycmF5KCk7CiAgICAgICAg
ICAgICBiaW5kVmVydGV4QXJyYXkobV92YW8pOwpAQCAtMzExLDE4ICszMTAsMTkgQEAgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHQKICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXM7
CiAgICAgc2g6OkluaXRCdWlsdEluUmVzb3VyY2VzKCZBTkdMRVJlc291cmNlcyk7CiAKLSAgICBn
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAm
QU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNv
dXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4
VmFyeWluZ1ZlY3RvcnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0
ZXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMu
TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMu
TWF4VGV4dHVyZUltYWdlVW5pdHMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4
RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0
cmlicyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfQVRU
UklCUyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPSBnZXRJ
bnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9S
Uyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMgPSBnZXRJbnRlZ2VyKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTKTsKKyAgICBBTkdMRVJl
c291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA9IGdldEludGVnZXIoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyk7CisgICAgQU5H
TEVSZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9IGdldEludGVnZXIoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTKTsK
KyAgICBBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyA9IGdldEludGVnZXIoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKKyAgICBBTkdM
RVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0gZ2V0SW50ZWdlcihHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyk7CiAKICAgICAv
LyBBbHdheXMgc2V0IHRvIDEgZm9yIE9wZW5HTCBFUy4KICAgICBBTkdMRVJlc291cmNlcy5NYXhE
cmF3QnVmZmVycyA9IDE7CiAKLSAgICBHQ0dMaW50IHJhbmdlWzJdLCBwcmVjaXNpb247CisgICAg
R0NHTGludCByYW5nZVsyXSB7IH07CisgICAgR0NHTGludCBwcmVjaXNpb24gPSAwOwogICAgIGdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RlJBR01FTlRf
U0hBREVSLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6SElHSF9GTE9BVCwgcmFuZ2UsICZwcmVj
aXNpb24pOwogICAgIEFOR0xFUmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IChyYW5n
ZVswXSB8fCByYW5nZVsxXSB8fCBwcmVjaXNpb24pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414427</attachid>
            <date>2020-11-18 00:58:24 -0800</date>
            <delta_ts>2020-11-18 00:59:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201118105822.patch</filename>
            <type>text/plain</type>
            <size>121461</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQzNzUxZTFlMzA5YWQw
YzFlZGNjMDlmZTY0NDZhMzIwY2NmYTY2ZS4uOGI5N2I0ODk3MTI5MzBkMmQwMjhhZTFiZjcxZmNj
ZGRkYTc1MmViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyMSBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXR0ZXIgY2FsbHMg
dGhhdCBhcmUgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0IHRoZQorICAgICAg
ICB2YWx1ZSBpcyBhIG5vcm1hbCBmdW5jdGlvbiByZXR1cm4gdmFsdWUuIFRoaXMgcmVkdWNlcyB0
aGUgcmlzayBvZiBoYXZpbmcKKyAgICAgICAgdW5pbml0aWFsaXplZCBvdXQgcGFyYW1ldGVyIHJl
Y2VpdmUgbG9jYXRpb24uCisKKyAgICAgICAgQ2hhbmdlIHRoZSBnZXR0ZXJzIHRoYXQgYXJlIG9u
bHkgdXNlZCB0byBvYnRhaW4gc2luZ2xlIHZhbHVlcyBzbyB0aGF0CisgICAgICAgIHRoZSBnZXR0
ZXIgaXRzZWxmIGhhcyB0aGUgcmV0dXJuIHZhbHVlLiBBZGQgYSBzaW5nbGUtdmFsdWUgZ2V0dGVy
IGZvcgorICAgICAgICBnZXR0ZXJzIHRoYXQgYXJlIHVzZWQgdG8gb2J0YWluIGFsc28gbXVsdGlw
bGUgdmFsdWVzLgorCisgICAgICAgIEFkZCBHQ0dMU3BhbiB0eXBlIHRoYXQgaXMgdXNlZCB0byBj
b21tdW5pY2F0ZSBwYWlyOiBwdHIsIG51bWJlciBvZgorICAgICAgICBlbGVtZW50cy4gVGhpcyBp
cyBzaW1pbGFyIHR5cGUgdG8gc3RkOjpzcGFuIGluIEMrKzIwLiBUaGUgdHlwZSB3aWxsIGJlCisg
ICAgICAgIHVzZWQgdG8gcmVjZWl2ZSB0aGUgbXVsdGktdmFsdWUgZ2V0dGVyIHJlc3VsdHMuIFVz
ZSBvZiBXVEY6OlZlY3RvciBhcworICAgICAgICB0aGUgcmV0dXJuIHZhbHVlIHdvdWxkIGJlIHBy
b2JsZW1hdGljIGJlY2F1c2UgdGhlIGNhbGwgc2VtYW50aWNzIG5lZWQKKyAgICAgICAgdGhlIGxl
bmd0aC4gVGh1cyB0aGUgbGVuZ3RoIHdvdWxkIGJlIG5lZWRlZCB0byBiZSBzcGVjaWZpZWQgYnkg
ZWl0aGVyCisgICAgICAgIHBhc3NpbmcgaW4gdGhlIHJlc2l6ZWQgdmVjdG9yIG9yIHBhc3Npbmcg
aW4gdGhlIGxlbmd0aC4gQm90aCBvZiB0aGUKKyAgICAgICAgb3B0aW9ucyBjb250YWluIHJlZHVu
YW5jeSBhbmQgcmVzaXphYmxlIHZlY3RvciB0eXBlIHdvdWxkIHN0aWxsIG9wZW4KKyAgICAgICAg
aW50ZXJwcmV0YXRpb24gdG8gaG93IHRoZSByZXN1bHQgdmFsdWUgd291bGQgYmVoYXZlLiBVc2lu
ZyBzdGQ6OmFycmF5CisgICAgICAgIHdvdWxkIGJlIHByb2JsZW1hdGljIGJlY2F1c2UgaXQgY2Fu
bm90IGhhdmUgZHluYW1pYyBsZW5ndGguIEdDR0xTcGFuIGlzCisgICAgICAgIG5vdCBhIHJldHVy
biB2YWx1ZSBzaW5jZSBpdCBkb2VzIG5vdCBjYXJyeSBpdHMgZGF0YS4gQSBzcGFuIGlzIG9ubHkg
YQorICAgICAgICB2aWV3IHRvIGV4aXN0aW5nIGRhdGEgc3RvcmUuCisKKyAgICAgICAgVGhlIHR5
cGUgR0NHTFNwYW4gd2lsbCBiZSB1c2VkIHRvIHNpbXBsaWZ5IHRoZSBHUFUgcHJvY2VzcworICAg
ICAgICBpbXBsZW1lbnRhdGlvbiwgc2luY2UgdGhlIGJ1ZlNpemUgd2lsbCBiZSBleHBsaWNpdGx5
IGFzc29jaWF0ZWQgaW4gdGhlCisgICAgICAgIHBhc3NlZCBkYXRhIHZhbHVlIHR5cGUsIGluc2lk
ZSB0aGUgR0NHTFNwYW4gdHlwZS4KKworICAgICAgICBJbiBzdWJzZXF1ZW50IHBhdGNoZXMgR0NH
TFNwYW4gd2lsbCBiZSB1c2VkIGFsc28gZm9yIG11bHRpdmFsdWUgc2V0dGVycywKKyAgICAgICAg
aS5lLiBhcmJpdHJhcnkgYnVmZmVyIHN0b3JlcywgaS5lLiBjb25zdCBHTHR5cGUgcHRycy4KKwor
ICAgICAgICBVc2UgdGhlIFJvYnVzdEFOR0xFIHZhcmlhbnRzIG9mIHRoZSBHTCBBUEkgaW1wbGVt
ZW50YXRpb24gdG8gb2J0YWluIHRoZQorICAgICAgICB2YWx1ZXMuCisKKyAgICAgICAgUmVtb3Zl
IHRoZSBjb3JyZXNwb25kaW5nIFJvYnVzdEFOR0xFIHZhcmlhbnRzIGZyb20gRXh0ZW5zaW9uc0dM
LCB0aGV5CisgICAgICAgIGFyZSBkZWFkIGNvZGUgYW5kIHVudXNlZC4KKworICAgICAgICBSZW1v
dmVzIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSB3b3JrYXJvdW5kIGZyb20g
QU5HTEUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY29kZSwgaXQgd2FzIGRlYWQg
Y29kZSAoaS5lIGZsYWcgYWx3YXlzIGZhbHNlKS4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9u
ZSBpbiBBTkdMRSBsZXZlbC4KKworICAgICAgICBGaXhlcyBjb3NtZXRpYyBidWdzIHdoZXJlIHVu
aW5pdGlhbGl6ZWQgdmFsdWUgd2FzIHVzZWQgdG8gc3RvcmUgdGhlCisgICAgICAgIGxvY2F0aW9u
IG9mIHRoZSBnb3R0ZW4gcHJvcGVydHkuIFRoaXMgdmFsdWUgd291bGQgYmUgdW53cml0dGVuIGlu
CisgICAgICAgIGVkZ2UtY2FzZXMgbGlrZSBHTCBlcnJvcnMsIGFuZCB0aHVzIHRoZSByZWFkIHdv
dWxkIHRvdWNoIHVudWluaXRpYWxpemVkCisgICAgICAgIHZhbHVlLgorCisgICAgICAgIEZpeGVz
IGEgY29zbWV0aWMgYnVnIHdoZXJlIHVuaWZvcm0gYmxvY2sgdmFyaWFibGVzIGNvZGUgd291bGQg
cGFzcyBpbgorICAgICAgICB0b28gbGFyZ2UgYnVmZmVyIHNpemUgdG8gdGhlIFJvYnVzdEFOR0xF
IGNhbGwuIFRoZSBidWZTaXplIHJlZmVycyB0byB0aGUKKyAgICAgICAgbnVtYmVyIG9mIGVsZW1l
bnRzLCBidXQgdGhlIGNvZGUgcGFzc2VkIGluIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGkuZS4K
KyAgICAgICAgbnVtYmVyIG9mIGVsZW1lbnRzICogc2l6ZSBvZiBlbGVtZW50KS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNh
bnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9J
bWFnZUJpdG1hcCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFs
aXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRJbnQ2NFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6
aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJp
YkxvY2F0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlSW5mb0lm
TmVlZGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCdWZmZXJQYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJv
Z3JhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Qm9vbGVh
blBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRGbG9hdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRJbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5zaWduZWRJbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRh
Y2htZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTDo6Z2V0SW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNwYW4pOgor
ICAgICAgICAoR0NHTFNwYW46Om9wZXJhdG9yW10pOgorICAgICAgICAoR0NHTFNwYW46Om9wZXJh
dG9yKik6CisgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCk6CisgICAg
ICAgIChtYWtlR0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW52Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dEZsb2F0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRl
Z2VydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
U2hhZGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0
ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyaV92Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcjY0
aV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyaV92KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJp
dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0SW50ZWdlcjY0dik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aV92KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UHJvZ3JhbWl2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBh
cmFtZXRlcmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpdik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpl
bnN1cmVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGbG9hdHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJv
Z3JhbWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
U2hhZGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXJpX3ZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjppc0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0UHJvZ3JhbWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcmkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhB
dHRyaWJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRW
ZXJ0ZXhBdHRyaWJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJpX3YpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pdik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFNoYWRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmdik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYmZ2KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKwogMjAyMC0x
MS0xNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OKHIyNjk2MTQpOiBbaU9TXSBXZWJDb250ZW50IGNyYXNoZXMgd2hlbiBlbnRlcmluZyBG
dWxsIFNjcmVlbiB2aWRlbyB3aXRoIHRleHQgY2FwdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zm
c2NyZWVuQ2FudmFzLmNwcAppbmRleCAyZWYxMGIwYTRmMzQ2ZWZlMWI5MzhlNDZlMDA1M2E4YTMz
OTQ1MzQ0Li4wNGIzMGY4ZjY0NjQxNDY4MDY3ZTMwOTI2ZTc0ZTRmMmQ5YzE4YjlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgRXhj
ZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRv
SW1hZ2VCaXRtYXAoKQogICAgICAgICAvLyBjcmVhdGVzIGEgbmV3IGJhY2tpbmcgc3RvcmUuIFNp
bmNlIHdlJ3JlIG5vdCBkb2luZyB0aGF0IHlldCwgd2UKICAgICAgICAgLy8gbmVlZCB0byBlcmFz
ZSB3aGF0J3MgdGhlcmUuCiAKLSAgICAgICAgR0NHTGZsb2F0IGNsZWFyQ29sb3JbNF07CisgICAg
ICAgIEdDR0xmbG9hdCBjbGVhckNvbG9yWzRdIHsgfTsKICAgICAgICAgZ2MzZC0+Z2V0RmxvYXR2
KEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9DTEVBUl9WQUxVRSwgY2xlYXJDb2xvcik7CiAgICAg
ICAgIGdjM2QtPmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAgICAgICAgIGdjM2QtPmNsZWFyKEdy
YXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0R0w6OkRF
UFRIX0JVRkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9CVUZGRVJfQklUKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggODA3M2FkYzExMTQ5MjE1ZjU2ZDFlNDVkYTY4NGRlODI4NTgxN2U5Mi4u
NTViYzFmOGRiMjQ5ZDMzODIyZTc4ODljYTc4M2Y1YmVjMDI1YTI5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAg
LTE1OSw5ICsxNTksOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVO
ZXdDb250ZXh0KCkKICAgICBtX3VucGFja1NraXBSb3dzID0gMDsKICAgICBtX3VucGFja1NraXBJ
bWFnZXMgPSAwOwogCi0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRH
TDo6TUFYXzNEX1RFWFRVUkVfU0laRSwgJm1fbWF4M0RUZXh0dXJlU2l6ZSk7CisgICAgbV9tYXgz
RFRleHR1cmVTaXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpN
QVhfM0RfVEVYVFVSRV9TSVpFKTsKICAgICBtX21heDNEVGV4dHVyZUxldmVsID0gV2ViR0xUZXh0
dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heDNEVGV4dHVyZVNpemUsIG1fbWF4M0RUZXh0dXJl
U2l6ZSk7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFY
X0FSUkFZX1RFWFRVUkVfTEFZRVJTLCAmbV9tYXhBcnJheVRleHR1cmVMYXllcnMpOworICAgIG1f
bWF4QXJyYXlUZXh0dXJlTGF5ZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29u
dGV4dEdMOjpNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMpOwogCiAgICAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKIApAQCAtMjA4LDkgKzIwOCw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVzdG9yZVVucGFja1BhcmFtZXRlcnMoKQog
CiBsb25nIGxvbmcgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50NjRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludDY0IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQt
PmdldEludGVnZXI2NHYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldEludGVnZXI2NChwbmFtZSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCkBAIC0xMDU1LDIz
ICsxMDUzLDE0IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lCiAgICAgICAgIEZBTExUSFJPVUdI
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUzoK
ICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV9XUkFQX1I6IHsKLSAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4
dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0
dXJuIHZhbHVlOwotICAgIH0KLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX0lN
TVVUQUJMRV9GT1JNQVQ6IHsKLSAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlKTsKLSAgICB9CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1I6CisgICAgICAgIHJldHVybiBtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6CiAgICAgICAgIEZBTExU
SFJPVUdIOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDogewot
ICAgICAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldFRleFBh
cmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsK
LSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQVhfTE9EOgorICAg
ICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRUZXhQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSk7CiAgICAgfQpAQCAtMjQ0NSwxMSArMjQzNCw4
IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQ6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VU5JRk9STV9CVUZGRVJfU0laRToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpVTklGT1JNX0JVRkZFUl9TVEFSVDogewotICAgICAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwot
ICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXI2NGlfdih0YXJnZXQsIGluZGV4LCAmdmFsdWUp
OwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fQlVGRkVSX1NUQVJUOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJ
bnRlZ2VyNjRpKHRhcmdldCwgaW5kZXgpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVO
SUZPUk1fQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgIGlmIChpbmRleCA+PSBtX2JvdW5kSW5kZXhl
ZFVuaWZvcm1CdWZmZXJzLnNpemUoKSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJnZXRJbmRleGVkUGFyYW1ldGVyIiwg
ImluZGV4IG91dCBvZiByYW5nZSIpOwpAQCAtMjUyNCwyNCArMjUxMCwyMCBAQCBXZWJHTEFueSBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoV2Vi
R0xQcm9ncmFtJiBwcgogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tQYXJhbWV0ZXIiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IEdDR0xpbnQgcmVzdWx0ID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19CSU5ESU5HOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TOgotICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dy
YW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgc2l6ZW9mKHJlc3VsdCksIG51
bGxwdHIsICZyZXN1bHQpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4obV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4
LCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQUNU
SVZFX1VOSUZPUk1fSU5ESUNFUzogewotICAgICAgICBHQ0dMaW50IHNpemUgPSAwOwotICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVz
dEFOR0xFKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBHcmFwaGljc0NvbnRl
eHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVMsIHNpemVvZihzaXplKSwgbnVsbHB0
ciwgJnNpemUpOworICAgICAgICBHQ0dMaW50IHNpemUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVu
aWZvcm1CbG9ja2kocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIEdyYXBoaWNz
Q29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUyk7CiAgICAgICAgIFZlY3Rv
cjxHQ0dMaW50PiBwYXJhbXMoc2l6ZSwgMCk7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbS5vYmplY3Qo
KSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBzaXplb2YocGFyYW1zWzBdKSAqIHBhcmFtcy5z
aXplKCksIG51bGxwdHIsIHBhcmFtcy5kYXRhKCkpOworICAgICAgICBtX2NvbnRleHQtPmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBw
bmFtZSwgcGFyYW1zKTsKICAgICAgICAgcmV0dXJuIHBhcmFtcy5tYXAoW10oYXV0byB4KSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4oeCk7IH0pOwogICAgIH0KICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUjoK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllf
RlJBR01FTlRfU0hBREVSOgotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1C
bG9ja0luZGV4LCBwbmFtZSwgc2l6ZW9mKHJlc3VsdCksIG51bGxwdHIsICZyZXN1bHQpOwotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGJvb2w+KG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUpKTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAi
Z2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUi
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzcyLDkgKzI3NTQsNyBAQCBXZWJHTEFu
eSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIoR0NHTGVudW0gdGFyZwogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBhdHRhY2htZW50
Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBHQ0dM
aW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgfQog
ICAgIGlmICghdmFsaWRhdGVOb25EZWZhdWx0RnJhbWVidWZmZXJBdHRhY2htZW50KGZ1bmN0aW9u
TmFtZSwgYXR0YWNobWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjc5NiwxMSAr
Mjc3Niw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnCiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFOgogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhfU0laRToKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRToK
LSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBP
TkVOVF9UWVBFOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRl
eHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVu
dCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQ
RToKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICB9CiAKICAgICBpZiAob2Jq
ZWN0LT5pc1RleHR1cmUoKSkgewpAQCAtMjgxMSwxMSArMjc4OCw4IEBAIFdlYkdMQW55IFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dM
ZW51bSB0YXJnCiAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0
PFdlYkdMVGV4dHVyZSY+KCpvYmplY3QpKTsKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMOgogICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBf
RkFDRToKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9DT0xPUl9FTkNPRElORzogewotICAgICAgICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0g
ICAgICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4g
dmFsdWU7Ci0gICAgICAgIH0KKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORzoKKyAgICAgICAgICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2ht
ZW50LCBwbmFtZSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZh
bGlkIHBhcmFtZXRlciBuYW1lIGZvciB0ZXh0dXJlIGF0dGFjaG1lbnQiKTsKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjg5Nyw3ICsyODcxLDcgQEAgYm9vbCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZU5vbkRlZmF1bHRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoY29uc3Qg
Y2hhcioKIEdDR0xpbnQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMo
KQogewogICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUywgJm1fbWF4RHJhd0J1
ZmZlcnMpOworICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTKTsKICAgICByZXR1cm4gbV9tYXhE
cmF3QnVmZmVyczsKIH0KIApAQCAtMjkwNSw3ICsyODc5LDcgQEAgR0NHTGludCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKIHsKICAgICAvLyBEcmF3QnVm
ZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVOVFMgPT0gTUFYX0RSQVdfQlVGRkVSUwog
ICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldElu
dGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTLCAmbV9tYXhDb2xvckF0
dGFjaG1lbnRzKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTKTsKICAgICByZXR1
cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IDljYjBmODU2YjU4ZTEwZTZmNDczMDll
NmZlM2MxMGUyNjcwOTcxNjYuLjQ5NDE1NmUxZTY1YjYwMjkxOTBkYjdjMWMwMjZhZGY4MDNkZGE4
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMu
Y3BwCkBAIC05OCwxMCArOTgsOCBAQCBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dl
YkdMUmVxdWlyZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIHdlYgogICAgIEdyYXBo
aWNzQ29udGV4dEdMKiBjb250ZXh0ID0gd2ViZ2xDb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7
CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhZnRlciB3ZSBtYWtlIHN1cmUgR0xfRVhUX2RyYXdf
YnVmZmVycyBpcyBzdXBwb3J0ZWQuCi0gICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IDA7Ci0g
ICAgR0NHTGludCBtYXhDb2xvckF0dGFjaG1lbnRzID0gMDsKLSAgICBjb250ZXh0LT5nZXRJbnRl
Z2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAmbWF4RHJhd0J1ZmZlcnMp
OwotICAgIGNvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFD
SE1FTlRTX0VYVCwgJm1heENvbG9yQXR0YWNobWVudHMpOworICAgIEdDR0xpbnQgbWF4RHJhd0J1
ZmZlcnMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVS
U19FWFQpOworICAgIEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50cyA9IGNvbnRleHQtPmdldElu
dGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICBpZiAo
bWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0YWNobWVudHMgPCA0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAKaW5kZXggMDFhMDJmNTFkNzJkODkyZWFiOGU4YzI3MDUwNmNiZmM0ZTczNjU0
YS4uMzY1OGVlOGVhYWY3ZjBkYmI4ODYzY2VkNTAyNDI1ZjRmYjRlMjNhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTYxOSwxNCAr
NjE5LDE0IEBAIGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdy
YXBoaWNzQ29udGV4dEdMKiBnM2QsIGNvbnN0IGNoYXIqCiAgICAgICAgIGczZC0+Y29sb3JNYXNr
KHRydWUsIHRydWUsIHRydWUsIHRydWUpOwogICAgIH0KICAgICBpZiAoaW5pdERlcHRoKSB7Ci0g
ICAgICAgIGczZC0+Z2V0RmxvYXR2KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9DTEVBUl9WQUxV
RSwgJmRlcHRoQ2xlYXJWYWx1ZSk7Ci0gICAgICAgIGczZC0+Z2V0Qm9vbGVhbnYoR3JhcGhpY3ND
b250ZXh0R0w6OkRFUFRIX1dSSVRFTUFTSywgJmRlcHRoTWFzayk7CisgICAgICAgIGRlcHRoQ2xl
YXJWYWx1ZSA9IGczZC0+Z2V0RmxvYXQoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NMRUFSX1ZB
TFVFKTsKKyAgICAgICAgZGVwdGhNYXNrID0gZzNkLT5nZXRCb29sZWFuKEdyYXBoaWNzQ29udGV4
dEdMOjpERVBUSF9XUklURU1BU0spOwogICAgICAgICBnM2QtPmNsZWFyRGVwdGgoMS4wZik7CiAg
ICAgICAgIGczZC0+ZGVwdGhNYXNrKHRydWUpOwogICAgIH0KICAgICBpZiAoaW5pdFN0ZW5jaWwp
IHsKLSAgICAgICAgZzNkLT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9D
TEVBUl9WQUxVRSwgJnN0ZW5jaWxDbGVhclZhbHVlKTsKLSAgICAgICAgZzNkLT5nZXRJbnRlZ2Vy
dihHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9XUklURU1BU0ssIHJlaW50ZXJwcmV0X2Nhc3Q8
R0NHTGludCo+KCZzdGVuY2lsTWFzaykpOworICAgICAgICBzdGVuY2lsQ2xlYXJWYWx1ZSA9IGcz
ZC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9DTEVBUl9WQUxVRSk7Cisg
ICAgICAgIHN0ZW5jaWxNYXNrID0gZzNkLT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpT
VEVOQ0lMX1dSSVRFTUFTSyk7CiAgICAgICAgIGczZC0+Y2xlYXJTdGVuY2lsKDApOwogICAgICAg
ICBnM2QtPnN0ZW5jaWxNYXNrKDB4ZmZmZmZmZmYpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCmluZGV4IGM4YzNiODIyNjUyNTNjMGUwNGVlMDFh
NmI0MTI5YzljNWYxODA1MjkuLjNlNDZjNWU1NmQxM2RjZmNmMmVjYzJkYWQyYWMxOTZhNWY3Y2Vh
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcApAQCAt
MjE2LDggKzIxNiw3IEBAIHZvaWQgV2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0
aW9ucyhHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkKQogewogICAgIG1fYWN0aXZlQXR0cmli
TG9jYXRpb25zLmNsZWFyKCk7CiAKLSAgICBHQ0dMaW50IG51bUF0dHJpYnMgPSAwOwotICAgIGNv
bnRleHQzZC0+Z2V0UHJvZ3JhbWl2KG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZF
X0FUVFJJQlVURVMsICZudW1BdHRyaWJzKTsKKyAgICBHQ0dMaW50IG51bUF0dHJpYnMgPSBjb250
ZXh0M2QtPmdldFByb2dyYW1pKG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX0FU
VFJJQlVURVMpOwogICAgIG1fYWN0aXZlQXR0cmliTG9jYXRpb25zLnJlc2l6ZShzdGF0aWNfY2Fz
dDxzaXplX3Q+KG51bUF0dHJpYnMpKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUF0dHJp
YnM7ICsraSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBpbmZvOwpA
QCAtMjQxLDggKzI0MCw3IEBAIHZvaWQgV2ViR0xQcm9ncmFtOjpjYWNoZUluZm9JZk5lZWRlZCgp
CiAgICAgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQgPSBnZXRBR3JhcGhpY3NDb250ZXh0R0wo
KTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKLSAgICBHQ0dMaW50IGxpbmtT
dGF0dXMgPSAwOwotICAgIGNvbnRleHQtPmdldFByb2dyYW1pdihvYmplY3QoKSwgR3JhcGhpY3ND
b250ZXh0R0w6OkxJTktfU1RBVFVTLCAmbGlua1N0YXR1cyk7CisgICAgR0NHTGludCBsaW5rU3Rh
dHVzID0gY29udGV4dC0+Z2V0UHJvZ3JhbWkob2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpM
SU5LX1NUQVRVUyk7CiAgICAgbV9saW5rU3RhdHVzID0gbGlua1N0YXR1czsKICAgICBpZiAobV9s
aW5rU3RhdHVzKSB7CiAgICAgICAgIGNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKGNvbnRleHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggZDJmYWMyMDM2MjQ5OTU4NWUwZDUxNTU2Y2M1Y2E0ZTNhYWMzM2RhZi4u
NjkzZDYyMDZmMmM5MGY5NWZkYTk3M2I5OThlYjk2NDY3ZGNmZWE5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0z
MDcsMTEgKzMwNyw4IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdlCiAgICAgICAgICAgICByZXR1
cm4gbWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMVGV4dHVyZSY+KCpvYmplY3QpKTsK
ICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9U
RVhUVVJFX0xFVkVMOgogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRToKLSAgICAgICAgY2FzZSBFeHRlbnNp
b25zR0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOiB7Ci0gICAg
ICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwg
JnZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgfQorICAgICAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19F
WFQ6CisgICAgICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfRU5VTSwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciIsICJpbnZhbGlkIHBh
cmFtZXRlciBuYW1lIGZvciB0ZXh0dXJlIGF0dGFjaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMzQ3LDkgKzM0NCw5IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRNYXhEcmF3QnVmZmVycygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhU
LCAmbV9tYXhEcmF3QnVmZmVycyk7CisgICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRl
eHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAg
aWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhDb2xvckF0
dGFjaG1lbnRzKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAg
Ly8gV0VCR0xfZHJhd19idWZmZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBN
QVhfRFJBV19CVUZGRVJTLgogICAgIHJldHVybiBzdGQ6Om1pbihtX21heERyYXdCdWZmZXJzLCBt
X21heENvbG9yQXR0YWNobWVudHMpOwogfQpAQCAtMzU5LDcgKzM1Niw3IEBAIEdDR0xpbnQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1
cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heENv
bG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9u
c0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsK
KyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4
dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4
Q29sb3JBdHRhY2htZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA2YzM3Mjk5ZDQzNzdh
YTAzYzI5NTFjMjQwNTA1ODllOGIzYzMwZmE3Li4xODVlOGM2MmU2ZmJlMzFmMzEzODhjMGM5Zjgw
ZDgxY2VlMjRhM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtODcyLDggKzg3Miw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQogICAgIG1f
Y2xlYXJTdGVuY2lsID0gMDsKICAgICBtX2NvbG9yTWFza1swXSA9IG1fY29sb3JNYXNrWzFdID0g
bV9jb2xvck1hc2tbMl0gPSBtX2NvbG9yTWFza1szXSA9IHRydWU7CiAKLSAgICBHQ0dMaW50IG51
bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdl
cnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAm
bnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgR0NHTGludCBudW1Db21iaW5lZFRl
eHR1cmVJbWFnZVVuaXRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyk7CiAgICAgbV90ZXh0dXJlVW5pdHMu
Y2xlYXIoKTsKICAgICBtX3RleHR1cmVVbml0cy5yZXNpemUobnVtQ29tYmluZWRUZXh0dXJlSW1h
Z2VVbml0cyk7CiAjaWYgIVVTRShBTkdMRSkKQEAgLTg4MSwxOCArODgwLDE0IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQogICAgICAgICBt
X3VucmVuZGVyYWJsZVRleHR1cmVVbml0cy5hZGQoaSk7CiAjZW5kaWYKICAgICAKLSAgICBHQ0dM
aW50IG51bVZlcnRleEF0dHJpYnMgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3Jh
cGhpY3NDb250ZXh0R0w6Ok1BWF9WRVJURVhfQVRUUklCUywgJm51bVZlcnRleEF0dHJpYnMpOwor
ICAgIEdDR0xpbnQgbnVtVmVydGV4QXR0cmlicyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFw
aGljc0NvbnRleHRHTDo6TUFYX1ZFUlRFWF9BVFRSSUJTKTsKICAgICBtX21heFZlcnRleEF0dHJp
YnMgPSBudW1WZXJ0ZXhBdHRyaWJzOwogICAgIAotICAgIG1fbWF4VGV4dHVyZVNpemUgPSAwOwot
ICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9URVhUVVJF
X1NJWkUsICZtX21heFRleHR1cmVTaXplKTsKKyAgICBtX21heFRleHR1cmVTaXplID0gbV9jb250
ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9TSVpFKTsKICAg
ICBtX21heFRleHR1cmVMZXZlbCA9IFdlYkdMVGV4dHVyZTo6Y29tcHV0ZUxldmVsQ291bnQobV9t
YXhUZXh0dXJlU2l6ZSwgbV9tYXhUZXh0dXJlU2l6ZSk7Ci0gICAgbV9tYXhDdWJlTWFwVGV4dHVy
ZVNpemUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
Ok1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsICZtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSk7Cisg
ICAgbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUpOwogICAgIG1fbWF4Q3ViZU1h
cFRleHR1cmVMZXZlbCA9IFdlYkdMVGV4dHVyZTo6Y29tcHV0ZUxldmVsQ291bnQobV9tYXhDdWJl
TWFwVGV4dHVyZVNpemUsIG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplKTsKLSAgICBtX21heFJlbmRl
cmJ1ZmZlclNpemUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250
ZXh0R0w6Ok1BWF9SRU5ERVJCVUZGRVJfU0laRSwgJm1fbWF4UmVuZGVyYnVmZmVyU2l6ZSk7Cisg
ICAgbV9tYXhSZW5kZXJidWZmZXJTaXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNz
Q29udGV4dEdMOjpNQVhfUkVOREVSQlVGRkVSX1NJWkUpOwogCiAgICAgLy8gVGhlc2UgdHdvIHZh
bHVlcyBmcm9tIEVYVF9kcmF3X2J1ZmZlcnMgYXJlIGxhemlseSBxdWVyaWVkLgogICAgIG1fbWF4
RHJhd0J1ZmZlcnMgPSAwOwpAQCAtMTc0MSw4ICsxNzM2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIpCiAgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRl
cigiY29tcGlsZVNoYWRlciIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250
ZXh0LT5jb21waWxlU2hhZGVyKHNoYWRlci5vYmplY3QoKSk7Ci0gICAgR0NHTGludCB2YWx1ZTsK
LSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlci5vYmplY3QoKSwgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBJTEVfU1RBVFVTLCAmdmFsdWUpOworICAgIEdDR0xpbnQgdmFsdWUgPSBtX2Nv
bnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UElMRV9TVEFUVVMpOwogICAgIHNoYWRlci5zZXRWYWxpZCh2YWx1ZSk7CiAKICAgICBhdXRvKiBj
YW52YXMgPSBodG1sQ2FudmFzKCk7CkBAIC0yODg4LDggKzI4ODIsNyBAQCBXZWJHTEFueSBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCdWZmZXJQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBHQ0dMaW50
IHZhbHVlID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwg
cG5hbWUsICZ2YWx1ZSk7CisgICAgR0NHTGludCB2YWx1ZSA9IG1fY29udGV4dC0+Z2V0QnVmZmVy
UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250
ZXh0R0w6OkJVRkZFUl9TSVpFKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSk7CkBAIC0zMTg5LDI2ICszMTgyLDI2IEBAIFdlYkdM
QW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQ
cm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0UHJvZ3JhbVBhcmFtZXRlciIsICZwcm9n
cmFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsK
ICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVMRVRF
X1NUQVRVUzoKICAgICAgICAgcmV0dXJuIHByb2dyYW0uaXNEZWxldGVkKCk7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VkFMSURBVEVfU1RBVFVTOgotICAgICAgICBtX2NvbnRleHQtPmdl
dFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpKTsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5LX1NUQVRVUzoKICAgICAgICAgcmV0dXJu
IHByb2dyYW0uZ2V0TGlua1N0YXR1cygpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkFU
VEFDSEVEX1NIQURFUlM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0u
b2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAg
IHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKTsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUzoKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVM6CiAjaWYgVVNFKEFOR0xFKQotICAg
ICAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmpl
Y3QoKSwgcG5hbWUpOwogI2Vsc2UKLSAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5nZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291
bnQocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIEdDR0xpbnQgdmFsdWUgPSAwOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5nZXROb25CdWlsdEluQWN0aXZlU3lt
Ym9sQ291bnQocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCi0gICAgICAgIHJl
dHVybiB2YWx1ZTsKICAgICBkZWZhdWx0OgogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgICAgIGlm
IChpc1dlYkdMMigpKSB7CkBAIC0zMjE2LDggKzMyMDksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSYgcHJvZ3Jh
bSwgRwogICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUl9NT0RFOgogICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJB
TlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdTOgogICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6QUNUSVZFX1VOSUZPUk1fQkxPQ0tTOgotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+
Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSk7CiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzI4MCw3ICszMjcy
LDYgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0MKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAg
IH0KIAotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJfU0FNUExFUzoKICAgICAgICAgaWYg
KCFpc1dlYkdMMigpKSB7CkBAIC0zMjk2LDggKzMyODcsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkU6Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFt
ZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICByZXR1cm4gbV9jb250
ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOwogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQ6CiAgICAgICAg
IHJldHVybiBtX3JlbmRlcmJ1ZmZlckJpbmRpbmctPmdldEludGVybmFsRm9ybWF0KCk7CiAgICAg
ZGVmYXVsdDoKQEAgLTMzMTAsMTYgKzMzMDAsMTMgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIsIEdDR0wK
IHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJv
Z3JhbU9yU2hhZGVyKCJnZXRTaGFkZXJQYXJhbWV0ZXIiLCAmc2hhZGVyKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkg
ewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFTEVURV9TVEFUVVM6CiAgICAgICAgIHJl
dHVybiBzaGFkZXIuaXNEZWxldGVkKCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UElMRV9TVEFUVVM6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLm9iamVj
dCgpLCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fY29udGV4dC0+Z2V0U2hh
ZGVyaShzaGFkZXIub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6U0hBREVSX1RZUEU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLm9i
amVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPih2YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250
ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVN
LCAiZ2V0U2hhZGVyUGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMzU4LDcgKzMzNDUsNyBAQCBSZWZQdHI8V2ViR0xTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclBy
ZWNpc2lvbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBHQ0dMaW50IHJh
bmdlWzJdID0gezAsIDB9OworICAgIEdDR0xpbnQgcmFuZ2VbMl0geyB9OwogICAgIEdDR0xpbnQg
cHJlY2lzaW9uID0gMDsKICAgICBtX2NvbnRleHQtPmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChz
aGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZSwgJnByZWNpc2lvbik7CiAgICAgcmV0dXJu
IFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpjcmVhdGUocmFuZ2VbMF0sIHJhbmdlWzFdLCBw
cmVjaXNpb24pOwpAQCAtMzM3OCwyMCArMzM2NSwxNSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRUZXhQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bgogICAgIGF1dG8gdGV4ID0gdmFsaWRhdGVUZXh0dXJlQmluZGluZygiZ2V0VGV4UGFyYW1ldGVy
IiwgdGFyZ2V0KTsKICAgICBpZiAoIXRleCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
R0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgR0NHTGZsb2F0IGZWYWx1ZSA9IDA7CiAgICAgc3dpdGNo
IChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFHX0ZJTFRF
UjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVI6CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFy
YW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkPih2YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKICAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYwotICAgICAgICBpZiAobV9leHRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0
LCBwbmFtZSwgJmZWYWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGZWYWx1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljKQorICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0
YXJnZXQsIHBuYW1lKTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImdldFRleFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBu
YW1lLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMgbm90IGVuYWJsZWQiKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgZGVmYXVsdDoKQEAgLTM1NTUsNyArMzUzNyw3IEBAIFdl
YkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFt
JiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nZXRuVW5pZm9ybWZ2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCAxNiAqIHNp
emVvZihHQ0dMZmxvYXQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAg
ICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIHZh
bHVlKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0ub2JqZWN0
KCksIGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUsIGxlbmd0aCkpOwogICAgICAgICBpZiAo
bGVuZ3RoID09IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07CiAgICAgICAgIHJldHVy
biBGbG9hdDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKQEAgLTM1NjcsMTQgKzM1
NDksMTQgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShX
ZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICAgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRp
b24sIDQgKiBzaXplb2YoR0NHTGludCksIHZhbHVlKTsKICAgICAgICAgZWxzZQogI2VuZGlmCi0g
ICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLm9iamVjdCgpLCBsb2Nh
dGlvbiwgdmFsdWUpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3Jh
bS5vYmplY3QoKSwgbG9jYXRpb24sIG1ha2VHQ0dMU3Bhbih2YWx1ZSwgbGVuZ3RoKSk7CiAgICAg
ICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsKICAgICAg
ICAgcmV0dXJuIEludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKICAgICB9CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UOiB7CiAgICAgICAgIEdDR0x1
aW50IHZhbHVlWzRdID0gezB9OwotICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm11aXYocHJv
Z3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRV
bmlmb3JtdWl2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUs
IGxlbmd0aCkpOwogICAgICAgICBpZiAobGVuZ3RoID09IDEpCiAgICAgICAgICAgICByZXR1cm4g
dmFsdWVbMF07CiAgICAgICAgIHJldHVybiBVaW50MzJBcnJheTo6dHJ5Q3JlYXRlKHZhbHVlLCBs
ZW5ndGgpOwpAQCAtMzU4Niw3ICszNTY4LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtaXZFWFQocHJv
Z3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0NHTGludCksIHZhbHVlKTsKICAg
ICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihw
cm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICAgICAgbV9jb250ZXh0
LT5nZXRVbmlmb3JtaXYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIG1ha2VHQ0dMU3Bhbih2
YWx1ZSwgbGVuZ3RoKSk7CiAgICAgICAgIGlmIChsZW5ndGggPiAxKSB7CiAgICAgICAgICAgICBW
ZWN0b3I8Ym9vbD4gdmVjdG9yKGxlbmd0aCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSAwOyBqIDwgbGVuZ3RoOyBqKyspCkBAIC0zNjI0LDcgKzM2MDYsNyBAQCBSZWZQdHI8V2ViR0xV
bmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2Nh
dGlvbihXZWJHTAogCiAgICAgR0NHTGludCBhY3RpdmVVbmlmb3JtcyA9IDA7CiAjaWYgVVNFKEFO
R0xFKQotICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIEdyYXBo
aWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7CisgICAgYWN0
aXZlVW5pZm9ybXMgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIEdy
YXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMpOwogI2Vsc2UKICAgICBzdGF0aWNfY2Fz
dDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0
SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6
QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOwogI2VuZGlmCkBAIC02MjM3LDkgKzYy
MTksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlc3VtZSgpCiAKIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Qm9vbGVhblBhcmFtZXRlcihHQ0dMZW51bSBw
bmFtZSkKIHsKLSAgICBHQ0dMYm9vbGVhbiB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRC
b29sZWFudihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+Z2V0Qm9vbGVhbihwbmFtZSk7CiB9CiAKIFZlY3Rvcjxib29sPiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRCb29sZWFuQXJyYXlQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUp
CkBAIC02MjU4LDIzICs2MjM4LDE3IEBAIFZlY3Rvcjxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRCb29sZWFuQXJyYXlQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAKIGZsb2F0
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZsb2F0UGFyYW1ldGVyKEdDR0xlbnVtIHBu
YW1lKQogewotICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRGbG9h
dHYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2NvbnRl
eHQtPmdldEZsb2F0KHBuYW1lKTsKIH0KIAogaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldEludFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKIHsKLSAgICBHQ0dMaW50IHZhbHVlID0g
MDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAmdmFsdWUpOwotICAgIHJldHVy
biB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKHBuYW1lKTsKIH0KIAog
dW5zaWduZWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5zaWduZWRJbnRQYXJhbWV0
ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250
ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAg
cmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihwbmFtZSk7CiB9CiAKIFJlZlB0cjxGbG9hdDMy
QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdMRmxvYXRBcnJheVBhcmFt
ZXRlcihHQ0dMZW51bSBwbmFtZSkKQEAgLTc2MjYsOSArNzYwMCw5IEBAIEdDR0xpbnQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9y
dHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1
ZmZlcnMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhf
RFJBV19CVUZGRVJTX0VYVCwgJm1fbWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBtX21heERyYXdC
dWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVG
RkVSU19FWFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2Nv
bnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VY
VCwgJm1fbWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50
cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQpOwogICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1Jf
QVRUQUNITUVOVFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KICAgICByZXR1cm4gc3RkOjptaW4obV9t
YXhEcmF3QnVmZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKIH0KQEAgLTc2MzgsNyArNzYx
Miw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRh
Y2htZW50cygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQt
PmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1f
bWF4Q29sb3JBdHRhY2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1f
Y29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19F
WFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMzRmMTdlYzYx
YjMzMTAzNzFjMmRkYmQwYTAxNzVjNjBiOTNkMTZmNS4uYmE4NjViMzMwOGU2Yzk0NTgyMjEyMjM3
Nzk2ZDZmZDU3NzQ4NDdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTMwNiwyMSArMzA2LDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZp
c29yKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZp
cnR1YWwgdm9pZCBnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGZsb2F0KiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxv
YXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZv
aWQqKiBwb2ludGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdM
RShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZv
aWQqIHBpeGVscykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwpAQCAtMzM2LDE0ICszMjEsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQq
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogZGF0YSkgPSAwOyAvLyBOT0xJTlQKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dDY0KiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBkYXRhKSA9IDA7IC8vIE5PTElOVAogICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmgKaW5kZXggZDllNTg4YWZhMzBkYmE3MzA5MzBmOTZjOTg3MjkxMzQwMTI5OGMxZS4uMGE3
MTU0MGNlODAyMGZkOWY1ODE2ODYwM2Y2NzY5Yjk0NDUyMjQxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC05ODYs
NTEgKzk4Niw1MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0QXR0cmliTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0QnVm
ZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAg
ICAvLyBnZXRQYXJhbWV0ZXIKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0g
bmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdD
R0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVn
ZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
NjQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NGlfdihHQ0dMZW51
bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2NCogdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludDY0IGdldEludGVnZXI2
NChHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludDY0IGdldEludGVnZXI2
NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KSA9IDA7CisgICAgdmlydHVhbCBHQ0dM
aW50IGdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xT
cGFuPEdDR0xib29sZWFuPiB2YWx1ZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMZW51bSBnZXRF
cnJvcigpID0gMDsKIAogICAgIC8vIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcgot
ICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVu
dW0gcG5hbWUpID0gMDsKIAogICAgIC8vIGdldFByb2dyYW1QYXJhbWV0ZXIKICAgICB2aXJ0dWFs
IFN0cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAgICAv
LyBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCog
dmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRTaGFk
ZXJQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyaXYoUGxhdGZvcm1HTE9iamVj
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dM
aW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAog
ICAgIHZpcnR1YWwgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hh
ZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQq
IHByZWNpc2lvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48
R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgPSAwOwogCiAgICAgdmlydHVh
bCBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAogICAgIC8v
IGdldFRleFBhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMZmxvYXQgZ2V0VGV4
UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CisgICAgdmly
dHVhbCBHQ0dMaW50IGdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkgPSAwOwogCiAgICAgLy8gZ2V0VW5pZm9ybQotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlm
b3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxv
YXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZhbHVlKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlm
b3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxHQ0dMaW50PiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVp
bnQ+IHZhbHVlKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9u
KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCiAgICAgLy8gZ2V0
VmVydGV4QXR0cmliCi0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSA9IDA7CiAKICAgICB2
aXJ0dWFsIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKQEAgLTEyMzYsNyArMTIzNSwxMyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRy
aXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiBwYXJhbXMpID0gMDsKKwogICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KKyAgICBH
Q0dMZmxvYXQgZ2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpOworICAgIEdDR0xib29sZWFuIGdldEJv
b2xlYW4oR0NHTGVudW0gcG5hbWUpOworICAgIEdDR0xpbnQgZ2V0SW50ZWdlcihHQ0dMZW51bSBw
bmFtZSk7CisgICAgR0NHTGludCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpKEdDR0x1aW50IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSk7CiAKICAgICBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJl
dHVybiBtX2F0dHJzOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQpAQCAt
MTM2Nyw2ICsxMzcyLDM1IEBAIHByaXZhdGU6CiAgICAgRGVzdGluYXRpb24gbV9kZXN0aW5hdGlv
bjsKIH07CiAKK2lubGluZSBHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0w6OmdldEZsb2F0KEdD
R0xlbnVtIHBuYW1lKQoreworICAgIEdDR0xmbG9hdCB2YWx1ZVsxXSB7IH07CisgICAgZ2V0Rmxv
YXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlWzBdOworfQorCitpbmxpbmUgR0NH
TGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0w6OmdldEJvb2xlYW4oR0NHTGVudW0gcG5hbWUpCit7
CisgICAgR0NHTGJvb2xlYW4gdmFsdWVbMV0geyB9OworICAgIGdldEJvb2xlYW52KHBuYW1lLCB2
YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlWzBdOworfQorCitpbmxpbmUgR0NHTGludCBHcmFwaGlj
c0NvbnRleHRHTDo6Z2V0SW50ZWdlcihHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMaW50IHZh
bHVlWzFdIHsgfTsKKyAgICBnZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2
YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6OmdldEFjdGl2
ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIEdDR0xpbnQgdmFsdWVbMV0geyB9OworICAgIGdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwg
dmFsdWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzR0wuaAppbmRleCA2OTlkZTI4YmFlYjkyY2MyNTMzOTRkYmE4MGI3ZTdhNzhl
MTNmNDQ1Li5lN2M2OWIyOGRjZTQ2NTgyNTc1NzczMzMyNWI4ZjQ0ZGYyNzIwN2I5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApA
QCAtMjAsMTIgKzIwLDE0IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiAvLyBHQ0dMIHR5cGVzIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIEdM
IHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAogLy8gaGVhZGVyIGZpbGUgZ2wyLmgg
ZnJvbSBraHJvbm9zLm9yZy4KQEAgLTU1LDMgKzU3LDUxIEBAIHR5cGVkZWYgR0NHTHVpbnQgUGxh
dGZvcm1HTE9iamVjdDsKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIHVuc2lnbmVkIEdM
dWludDsKICNlbmRpZgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4KK3N0cnVjdCBHQ0dMU3BhbjsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+CitzdHJ1Y3QgR0NHTFNwYW4geworICAgIGV4
cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgeyB9
CisgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQorICAgICAgICA6IGRhdGEoYXJyYXkp
CisgICAgeyB9CisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBSRUxFQVNFX0FTU0VSVChk
YXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KKyAgICBUJiBvcGVyYXRvcioo
KSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJldHVybiAqZGF0YTsgfQorICAg
IFQqIGRhdGE7CisgICAgY29uc3RleHByIHN0YXRpYyBzaXplX3QgYnVmU2l6ZSA9IEV4dGVudDsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4geworICAgIEdDR0xTcGFuKFQqIGFycmF5LCBzaXpl
X3QgYnVmU2l6ZV8pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKGJ1
ZlNpemVfKQorICAgIHsgfQorICAgIHRlbXBsYXRlPHNpemVfdCBTej4gR0NHTFNwYW4oVCAoJmFy
cmF5KVtTel0pCisgICAgICAgIDogZGF0YShhcnJheSkKKyAgICAgICAgLCBidWZTaXplKFN6KQor
ICAgIHsgfQorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JiBhcnJheSkKKyAgICAgICAgOiBk
YXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXplKGFycmF5LnNpemUoKSkKKyAgICB7
IH0KKyAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYg
aSA8IGJ1ZlNpemUpOyByZXR1cm4gZGF0YVtpXTsgfQorICAgIFQmIG9wZXJhdG9yKigpIHsgUkVM
RUFTRV9BU1NFUlQoZGF0YSAmJiBidWZTaXplKTsgcmV0dXJuICpkYXRhOyB9CisgICAgVCogZGF0
YTsKKyAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBOPgorR0NHTFNwYW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQsIE4+OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxU
PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK0dDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBk
YXRhLCBzaXplX3QgY291bnQpCit7CisgICAgcmV0dXJuIEdDR0xTcGFuPFQ+IHsgZGF0YSwgY291
bnQgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAxYzhiYzQyNTUwZjFjMWQ5NWMz
MDgyZjY3Mzc2YTU2OTUwNmJmYWIzLi40ZDAyNWI5OTM0MjI3NzZiOWI1ZjRhYWJjMzlhMGM3ODkx
OTQwYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC0xMTMsOCArMTEzLDcgQEAgU3Ry
aW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxh
dGZvcm1HTE9iamVjdCBzaGFkZXIKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGludCBzb3VyY2VMZW5ndGgg
PSAwOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFLCAmc291cmNlTGVuZ3RoKTsKKyAgICBpbnQgc291cmNl
TGVuZ3RoID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFE
RVJfU09VUkNFX0xFTkdUSF9BTkdMRSk7CiAgICAgaWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVu
Z3RoKTsgLy8gR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRl
cyBudWxsIHRlcm1pbmF0aW9uLgpAQCAtMjc5LDEyNiArMjc4LDYgQEAgR0NHTGVudW0gRXh0ZW5z
aW9uc0dMQU5HTEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBp
bnRlcm5hbGYKIH0KIAogLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEZsb2F0
dlJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShwbmFt
ZSwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hh
ZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2hhZGVyaXZSb2J1c3RBTkdM
RShzaGFkZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFVuaWZvcm1m
dlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybWl2
Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVy
dGV4QXR0cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBvaW50ZXIpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpy
ZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAq
cm93cywgdm9pZCAqcGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKQEAgLTUxNywxNCArMzk2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHAKICAg
ICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVn
ZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxl
bmd0aCwgZGF0YSk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVybmFsZm9y
bWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQpAQCAtNTU3LDMwICs0MjgsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlm
b3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGds
OjpHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QWN0aXZlVW5p
Zm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3Jt
QmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
SW50ZWdlcjY0dlJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0
X2Nhc3Q8R0xpbnQ2NCo+KGRhdGEpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUodGFyZ2V0LCBpbmRleCwg
YnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihkYXRhKSk7Ci19Ci0K
IHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IDEyNTY5NTY3
YzE3YzkyNmI3MWE5MWJiNGJiMTE5NTU2YmEwNmYxNzAuLjU3YmI5M2JjODRjMzM1OTBmYmNmNGIz
ZjdhMWViNWE1NWM1OTI1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNzMsMjEgKzczLDYg
QEAgcHVibGljOgogICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXpl
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNp
emU7IH0KIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCBn
ZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpk
YXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hh
ZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRV
bmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBvaW50ZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4
ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3Zl
cnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7CkBAIC0xMDMsMTQgKzg4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdl
dFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpIG92ZXJy
aWRlOyAvLyBOT0xJTlQKICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJ
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAog
ICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVy
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBkZjZmMzRjOWQ2MThkMDdhZGYyMTk4
NWEzMDFjYmU0MTQyOTM5MDhhLi5mZWIwYmViZWYzMTVmMGUxMzhiYTk5ZDYyZWI2Y2ZjZWQ1MTkz
NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzMwLDU1ICszMzAs
MzYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGUKICAgICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFn
ZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKKyAgICBnbDo6R2V0SW50ZWdlcnZSb2J1c3RB
TkdMRShwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiAKICAgICBz
d2l0Y2ggKHBuYW1lKSB7Ci0gICAgY2FzZSBNQVhfVEVYVFVSRV9TSVpFOgotICAgICAgICBnbDo6
R2V0SW50ZWdlcnYoTUFYX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0RXh0
ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQotICAgICAg
ICAgICAgKnZhbHVlID0gc3RkOjptaW4oNDA5NiwgKnZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgotICAgICAgICBnbDo6R2V0SW50ZWdl
cnYoTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0RXh0
ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQotICAgICAg
ICAgICAgKnZhbHVlID0gc3RkOjptaW4oMTAyNCwgKnZhbHVlKTsKLSAgICAgICAgYnJlYWs7CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIC8vIFNvbWUgb2xkZXIgaGFyZHdhcmUgYWR2ZXJ0aXNlcyBh
IGxhcmdlciBtYXhpbXVtIHRoYW4gdGhleQogICAgIC8vIGNhbiBhY3R1YWxseSBoYW5kbGUuIFJh
dGhlciB0aGFuIGRldGVjdGluZyBzdWNoIGRldmljZXMsIHNpbXBseQogICAgIC8vIGNsYW1wIHRo
ZSBtYXhpbXVtIHRvIDgxOTIsIHdoaWNoIGlzIGJpZyBlbm91Z2ggZm9yIGEgNUsgZGlzcGxheS4K
ICAgICBjYXNlIE1BWF9SRU5ERVJCVUZGRVJfU0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2
KE1BWF9SRU5ERVJCVUZGRVJfU0laRSwgdmFsdWUpOwogICAgICAgICAqdmFsdWUgPSBzdGQ6Om1p
big4MTkyLCAqdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1BWF9WSUVXUE9SVF9E
SU1TOgotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoTUFYX1ZJRVdQT1JUX0RJTVMsIHZhbHVlKTsK
ICAgICAgICAgdmFsdWVbMF0gPSBzdGQ6Om1pbig4MTkyLCB2YWx1ZVswXSk7CiAgICAgICAgIHZh
bHVlWzFdID0gc3RkOjptaW4oODE5MiwgdmFsdWVbMV0pOwogICAgICAgICBicmVhazsKICNlbmRp
ZgogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOwor
ICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEludGVnZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2
YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xl
bnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBH
Q0dMaW50KiBwcmVjaXNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9u
VHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBn
bDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJh
bmdlLCBwcmVjaXNpb24pOworICAgIGdsOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVy
VHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UuZGF0YSwgcHJlY2lzaW9uKTsKIH0KIAogYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKQEAgLTEyMTEsNyArMTE5Miw2IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHCiAKICAgICBHTGludCBtYXhVbmlmb3JtU2l6ZSA9IDA7CiAgICAgZ2w6Okdl
dFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4VW5p
Zm9ybVNpemUpOwotCiAgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShtYXhVbmlmb3JtU2l6ZSk7IC8v
IEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4K
ICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwpAQCAtMTgx
OCw2NCArMTc5OCw2NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kVmVydGV4
QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICBnbDo6QmluZFZlcnRleEFycmF5KGFy
cmF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NH
TGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4g
dmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZ2w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEJvb2xl
YW52Um9idXN0QU5HTEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJp
dihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xp
bnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBw
bmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0RmxvYXR2KHBu
YW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEZsb2F0dlJvYnVzdEFOR0xFKHBuYW1lLCB2YWx1ZS5i
dWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKIH0KICAgICAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFs
dWUpCitHQ0dMaW50NjQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NChHQ0dM
ZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50NjQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICp2YWx1ZSA9IDA7Ci0gICAg
Z2w6OkdldEludGVnZXI2NHYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgIGdsOjpHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUocG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
NjQqIHZhbHVlKQorR0NHTGludDY0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vy
NjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKIHsKKyAgICBHQ0dMaW50NjQgdmFs
dWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgICp2YWx1ZSA9IDA7Ci0gICAgZ2w6OkdldEludGVnZXI2NGlfdihwbmFtZSwgaW5kZXgs
IHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRJbnRlZ2VyNjRpX3ZS
b2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dM
aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KKyAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIGlmIChhdHRhY2htZW50ID09IERF
UFRIX1NURU5DSUxfQVRUQUNITUVOVCkKICAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFD
SE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgotICAgIGdsOjpH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBu
YW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
Um9idXN0QU5HTEUodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVl
KTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dy
YW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NH
TGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgdmFsdWUpOwor
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFByb2dyYW1pdlJvYnVzdEFOR0xFKHBy
b2dyYW0sIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0K
IAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbm1hbmdsZWRJbmZvTG9nKFBs
YXRmb3JtR0xPYmplY3Qgc2hhZGVyc1syXSwgR0NHTHNpemVpIGNvdW50LCBjb25zdCBTdHJpbmcm
IGxvZykKQEAgLTE5MjEsMjIgKzE5MDQsMjMgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0pCiAgICAgcmV0
dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhpbmZvLmRhdGEo
KSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dM
aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFt
ZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVl
KTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJp
KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBBU1NFUlQo
c2hhZGVyKTsKLQorICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTaGFkZXJpdihzaGFkZXIs
IHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0U2hhZGVy
aXZSb2J1c3RBTkdMRShzaGFkZXIsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFk
ZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpAQCAtMTk2NCw0NCArMTk0OCw0OSBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9y
bUdMT2JqZWN0KQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUp
CiB7CisgICAgR0NHTGZsb2F0IHZhbHVlID0gMC5mOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJmdih0YXJn
ZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0VGV4
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0
ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1
ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRh
cmdldCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgLy8gRklYTUU6IEJ1
ZyBpbiBBTkdMRSBidWZTaXplIHZhbGlkYXRpb24gZm9yIHVuaWZvcm1zLiBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTA2OS4KKyAgICBhdXRvIGJ1ZlNpemUg
PSB2YWx1ZS5idWZTaXplICogc2l6ZW9mKCp2YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm1mdlJv
YnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgLy8gRklYTUU6
IEJ1ZyBpbiBBTkdMRSBidWZTaXplIHZhbGlkYXRpb24gZm9yIHVuaWZvcm1zLiBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTA2OS4KKyAgICBhdXRvIGJ1ZlNp
emUgPSB2YWx1ZS5idWZTaXplICogc2l6ZW9mKCp2YWx1ZSk7CisgICAgZ2w6OkdldFVuaWZvcm1p
dlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBudWxscHRyLCB2YWx1ZS5k
YXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFs
dWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAv
LyBGSVhNRTogQnVnIGluIEFOR0xFIGJ1ZlNpemUgdmFsaWRhdGlvbiBmb3IgdW5pZm9ybXMuIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDY5LgorICAgIGF1
dG8gYnVmU2l6ZSA9IHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoKnZhbHVlKTsKKyAgICBnbDo6R2V0
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBudWxscHRy
LCB2YWx1ZS5kYXRhKTsKIH0KIAogR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBu
YW1lKQpAQCAtMjAxNCwyMCArMjAwMywyMCBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAg
IHJldHVybiBnbDo6R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEo
KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6R2V0VmVy
dGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFZlcnRleEF0dHJp
YmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1
ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFZl
cnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRy
aWJpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFs
dWUuZGF0YSk7CiB9CiAKIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKQEAgLTIw
MzYsNyArMjAyNSw3IEBAIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgR0x2b2lkKiBwb2ludGVyID0gMDsKLSAgICBnbDo6R2V0VmVydGV4QXR0cmliUG9p
bnRlcnYoaW5kZXgsIHBuYW1lLCAmcG9pbnRlcik7CisgICAgZ2w6OkdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCAxLCBudWxscHRyLCAmcG9pbnRlcik7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4ocG9pbnRlcikpOwogfQogCkBAIC0yOTUzLDYgKzI5NDIsMTQgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmEKICAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3Ro
LCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+
IHBhcmFtcykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1
cm47CisgICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbSwg
dW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSwgbnVsbHB0ciwgcGFyYW1z
LmRhdGEpOworfQorCisKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiBH
cmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0Nv
bnRleHRHTENWQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAppbmRleCAwYzU2MWY1OGEwNWIwMDNlMmE5OWY4
NzUyMzNiMDAyMDdjNDE5MjViLi5mOWJmY2EzYzQ4Y2UyOGVhYjE5NDRhNGY1ZTg1MzBhNDI1Zjg2
MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFw
aGljc0NvbnRleHRHTENWQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKQEAgLTQ3MSw4ICs0NzEsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVj
dHMoKQogCiAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyRGlyZWN0KHZlcnRleFNoYWRlcik7
CiAKLSAgICBHQ0dMaW50IHN0YXR1cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdih2
ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7
CisgICAgR0NHTGludCBzdGF0dXMgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkodmVydGV4U2hhZGVy
LCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMpOwogICAgIGlmICghc3RhdHVzKSB7
CiAgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6
ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gVmVydGV4IHNoYWRlciBmYWlsZWQgdG8gY29tcGlsZS4i
LCB0aGlzKTsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsK
QEAgLTQ4Nyw3ICs0ODYsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlh
bGl6ZVVWQ29udGV4dE9iamVjdHMoKQogCiAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyRGly
ZWN0KGZyYWdtZW50U2hhZGVyKTsKIAotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoZnJhZ21l
bnRTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7Cisg
ICAgc3RhdHVzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGZyYWdtZW50U2hhZGVyLCBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMpOwogICAgIGlmICghc3RhdHVzKSB7CiAgICAgICAg
IExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4
dE9iamVjdHMoJXApIC0gRnJhZ21lbnQgc2hhZGVyIGZhaWxlZCB0byBjb21waWxlLiIsIHRoaXMp
OwogICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwpAQCAtNTAw
LDcgKzQ5OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZD
b250ZXh0T2JqZWN0cygpCiAgICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIobV95dXZQcm9ncmFt
LCBmcmFnbWVudFNoYWRlcik7CiAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShtX3l1dlByb2dy
YW0pOwogCi0gICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYobV95dXZQcm9ncmFtLCBHcmFwaGlj
c0NvbnRleHRHTDo6TElOS19TVEFUVVMsICZzdGF0dXMpOworICAgIHN0YXR1cyA9IG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWkobV95dXZQcm9ncmFtLCBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFU
VVMpOwogICAgIGlmICghc3RhdHVzKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gUHJvZ3JhbSBm
YWlsZWQgdG8gbGluay4iLCB0aGlzKTsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIo
dmVydGV4U2hhZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5k
ZXggODA2MTBkZTdkNDMxY2Y0MjYyOTk3ZjRmZmNlMzdiNmJlMWVlNzQwNC4uNjg2ZjJkNTExNDhl
ZjliMTJmZWYxMGIzYzJhYzcwYjJhMzVkMjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIFNoQnVp
bHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlcyA9IGNvbXBpbGVyLmdldFJlc291cmNlcygpOwog
ICAgICAgICBpZiAoIUFOR0xFUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMpIHsKICAgICAgICAg
ICAgIEFOR0xFUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMgPSAxOwotICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAm
QU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMpOworICAgICAgICAgICAgQU5HTEVSZXNvdXJj
ZXMuTWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpN
QVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJjZXMo
QU5HTEVSZXNvdXJjZXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09ICJHTF9F
WFRfc2hhZGVyX3RleHR1cmVfbG9kIikgewpAQCAtMTcyLDcgKzE3Miw3IEBAIFN0cmluZyBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0CiAKICAgICBBTkdMRVdlYktpdEJyaWRnZSYgY29tcGlsZXIgPSBtX2NvbnRl
eHQtPm1fY29tcGlsZXI7CiAKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgR3Jh
cGhpY3NDb250ZXh0R0w6OlNIQURFUl9UWVBFLCAmR0xzaGFkZXJUeXBlKTsKKyAgICBHTHNoYWRl
clR5cGUgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6
U0hBREVSX1RZUEUpOwogCiAgICAgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHRH
TDo6VkVSVEVYX1NIQURFUikKICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX1ZFUlRF
WDsKQEAgLTI1NCw4MSArMjU0LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMaW4KICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xib29sZWFuICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RmxvYXR2Um9idXN0QU5H
TEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xm
bG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5H
TEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCB2b2lkICoqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFO
R0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKikK
IHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKQEAgLTQwMCwxMSArMzI1LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLAogICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
CiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0xpbnQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKQEAgLTQyNSwyMSArMzQ1LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dM
c2l6ZWkKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikKIHsK
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRleCAwNDg5NGI5MWM4MmNjNGIx
YjIwOWE3YWZkMjI5Y2JkY2E5YTAxYTQzLi45N2VlZGZiNzQ4NWM4MzJmNzkzYzhjZmYwZmExN2Zi
ZmZiZTY1ODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC02OSwy
MSArNjksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4
dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZTsgfQogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAg
ICB2b2lkIGdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGbG9hdHZSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3JhbWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBvaW50ZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKGlu
dCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3Zl
cnJpZGU7CiAgICAgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAt
OTksMTQgKzg0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2
b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIGludCAqZGF0YSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRJbnRlcm5h
bGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYklp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVu
aWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50
ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJ
bnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKICAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCBhYjhjYjU0ZjVlODc5ZWY0
YjhhOTBkMTlhN2VjOTJjODljZTIwNTdiLi5kMjhmNGEwMzFlYmRjNDgzODc1ZDM5ODQ4N2Q1Nzg3
NDhmZGU0N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTc0LDExICs3
NCw4IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZvciBHTF9FWFRfcm9idXN0
bmVzcywgY2hlY2sgdGhhdCB0aGUgY29udGV4dCBzdXBwb3J0cyByb2J1c3QgYWNjZXNzLgotICAg
IGlmIChuYW1lID09ICJHTF9FWFRfcm9idXN0bmVzcyIpIHsKLSAgICAgICAgR0xpbnQgcm9idXN0
QWNjZXNzID0gR0xfRkFMU0U7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5z
aW9uc0dMOjpDT05URVhUX1JPQlVTVF9BQ0NFU1MsICZyb2J1c3RBY2Nlc3MpOwotICAgICAgICBy
ZXR1cm4gcm9idXN0QWNjZXNzID09IEdMX1RSVUU7Ci0gICAgfQorICAgIGlmIChuYW1lID09ICJH
TF9FWFRfcm9idXN0bmVzcyIpCisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXIo
RXh0ZW5zaW9uc0dMOjpDT05URVhUX1JPQlVTVF9BQ0NFU1MpID09IEdMX1RSVUU7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggNzc1
ZjkwNDA2ZjQyYTYwOTFkZGMzZmVhMWU1MGI3YzJiMGFlNGRhMS4uMDk5MjY3OGI4ZGMxZTE4M2Q5
ODI1OWI3NzMxNWMzNjEyMTcwMTMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKQEAgLTE5NywzNSArMTk3LDM0IEBAIHB1YmxpYzoKICAgICBib29sIGdldEFjdGl2ZVVuaWZv
cm1JbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUlu
Zm8mKTsKICAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xzaXplaSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVj
dCogc2hhZGVycykgZmluYWw7CiAgICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0Qm9vbGVh
bnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50KiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZl
clBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAg
R0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKLSAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBw
bmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRJbnRl
Z2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0
SW50ZWdlcmlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVl
KSBmaW5hbDsKLSAgICB2b2lkIGdldEludGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2
NCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCwgR0NHTGludDY0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRQ
cm9ncmFtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBw
bmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJ
bnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2Vy
NjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NHTGludCBn
ZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSBmaW5h
bDsKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgZ2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENv
dW50KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZh
bHVlKTsKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQogICAgIFN0cmluZyBnZXRQcm9ncmFtSW5mb0xv
ZyhQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0VW5tYW5nbGVkSW5mb0xv
ZyhQbGF0Zm9ybUdMT2JqZWN0WzJdLCBHQ0dMc2l6ZWksIGNvbnN0IFN0cmluZyYpOwotICAgIHZv
aWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2hhZGVyaXYoUGxhdGZv
cm1HTE9iamVjdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBH
Q0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3Qs
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhQbGF0
Zm9ybUdMT2JqZWN0KSBmaW5hbDsKLSAgICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChH
Q0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMaW50KiByYW5n
ZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclByZWNpc2lv
bkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dM
U3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsKICAgICBT
dHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogICAgIFN0cmlu
ZyBnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJmdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBm
aW5hbDsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm1mdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCogdmFs
dWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0
VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0x1aW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGZsb2F0IGdldFRleFBhcmFtZXRlcmYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRUZXhQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZv
aWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3Jt
aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxH
Q0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVl
KSBmaW5hbDsKICAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0
LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsK
LSAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBm
aW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwogICAgIEdDR0xzaXplaXB0
ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKIAogICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZp
bmFsOwpAQCAtNDM4LDYgKzQzNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaWZvcm1NYXRyaXgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsK
ICAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBm
aW5hbDsKIAogI2lmICFVU0UoQU5HTEUpCiAgICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCA3NTBlZDMyNmVjZTY1ZTg4ZjZiNDEz
NjAxNWM0ZjkzMzc0NDg5Y2E1Li45ZDdjYzkyMTZlN2E0MmNmMGQ5NzE2NDU3MjA4NTFmMTQ1NTE3
MGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAt
MjYwLDcgKzI2MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlCiAgICAgOjpnbFJlbmRlcmJ1
ZmZlclN0b3JhZ2VFWFQodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldElu
dGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICAv
LyBOZWVkIHRvIGVtdWxhdGUgTUFYX0ZSQUdNRU5UL1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgYW5k
IE1BWF9WQVJZSU5HX1ZFQ1RPUlMKICAgICAvLyBiZWNhdXNlIGRlc2t0b3AgR0wncyBjb3JyZXNw
b25kaW5nIHF1ZXJpZXMgcmV0dXJuIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cwpAQCAtMjcyLDQ2
ICsyNzIsNDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcnYoR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQogICAgIHN3aXRjaCAocG5hbWUpIHsKICNpZiBV
U0UoT1BFTkdMKQogICAgIGNhc2UgTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzoKLSAgICAg
ICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMsIHZh
bHVlKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NP
TVBPTkVOVFMsIHZhbHVlLmRhdGEpOwogICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzoKLSAgICAgICAgOjpnbEdl
dEludGVnZXJ2KEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZSk7CisgICAg
ICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFs
dWUuZGF0YSk7CiAgICAgICAgICp2YWx1ZSAvPSA0OwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1BWF9WQVJZSU5HX1ZFQ1RPUlM6CiAgICAgICAgIGlmIChpc0dMRVMyQ29tcGxpYW50KCkpIHsK
ICAgICAgICAgICAgIEFTU0VSVCg6OmdsR2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci0gICAg
ICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgdmFsdWUpOwor
ICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsIHZhbHVl
LmRhdGEpOwogICAgICAgICAgICAgaWYgKDo6Z2xHZXRFcnJvcigpID09IEdMX0lOVkFMSURfRU5V
TSkgewotICAgICAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19DT01Q
T05FTlRTLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9W
QVJZSU5HX0NPTVBPTkVOVFMsIHZhbHVlLmRhdGEpOwogICAgICAgICAgICAgICAgICp2YWx1ZSAv
PSA0OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgOjpnbEdl
dEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX0ZMT0FUUywgdmFsdWUpOworICAgICAgICAgICAgOjpn
bEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX0ZMT0FUUywgdmFsdWUuZGF0YSk7CiAgICAgICAg
ICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICNlbmRpZgogICAg
IGNhc2UgTUFYX1RFWFRVUkVfU0laRToKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9URVhU
VVJFX1NJWkUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9URVhUVVJFX1NJ
WkUsIHZhbHVlLmRhdGEpOwogICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAgICAgICAgICAgKnZhbHVlID0gc3RkOjpt
aW4oNDA5NiwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNQVhfQ1VCRV9NQVBf
VEVYVFVSRV9TSVpFOgotICAgICAgICA6OmdsR2V0SW50ZWdlcnYoTUFYX0NVQkVfTUFQX1RFWFRV
UkVfU0laRSwgdmFsdWUpOworICAgICAgICA6OmdsR2V0SW50ZWdlcnYoTUFYX0NVQkVfTUFQX1RF
WFRVUkVfU0laRSwgdmFsdWUuZGF0YSk7CiAgICAgICAgIGlmIChnZXRFeHRlbnNpb25zKCkucmVx
dWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkpCiAgICAgICAgICAgICAqdmFsdWUg
PSBzdGQ6Om1pbigxMDI0LCAqdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogot
ICAgICAgICA6OmdsR2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldElu
dGVnZXJ2KHBuYW1lLCB2YWx1ZS5kYXRhKTsKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBl
LCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NHTGludCogcHJlY2lz
aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9y
bWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFu
PEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHNoYWRlclR5cGUpOwotICAgIEFTU0VSVChyYW5nZSk7CisgICAgQVNTRVJUKHJhbmdlLmRh
dGEpOwogICAgIEFTU0VSVChwcmVjaXNpb24pOwogCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmlu
ZGV4IGIwYzFmMWRmZDQzZDQxNTA0MjdmZjUyMWFjZjY4NDM2MjcyNDAwNWEuLmFiYjdlMjVhMDZm
MDg1Y2NlYWNmZjVhYjZlODIwNDU3Y2U5YTJkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTcxNyw4MSArMTcxNyw3NSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBh
cnJheSkKICNlbmRpZgogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29s
ZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xi
b29sZWFuPiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICA6OmdsR2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICA6Omds
R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsK
KyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIDo6Z2xHZXRCdWZm
ZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEJ1ZmZlclBh
cmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUs
IEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9h
dHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldEZs
b2F0dihwbmFtZSwgdmFsdWUpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRJbnRlZ2VyaV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFs
dWUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgp
OwotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
ICp2YWx1ZSA9IDA7Ci0gICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxpbmcgdGhpcyB3
ZSBtdXN0IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVhdGluZyBhbmQg
aW5pdGlhbGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMuMC4KLSAgICAv
LyA6OmdsR2V0SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgsIHZhbHVlKTsKKyAgICA6OmdsR2V0Rmxv
YXR2KHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0KiB2YWx1ZSkKK0dDR0xp
bnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1l
KQogewogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAotICAgICp2YWx1ZSA9
IDA7CisgICAgR0NHTGludDY0IHZhbHVlID0gMDsKICAgICAvLyBGSVhNRSAxNDExNzg6IEJlZm9y
ZSBlbmFibGluZyB0aGlzIHdlIG11c3QgZmlyc3Qgc3dpdGNoIG92ZXIgdG8gdXNpbmcgZ2wzLmgg
YW5kIGNyZWF0aW5nIGFuZCBpbml0aWFsaW5nIHRoZSBXZWJHTDIgY29udGV4dCB1c2luZyBPcGVu
R0wgRVMgMy4wLgogICAgIC8vIDo6Z2xHZXRJbnRlZ2VyNjR2KHBuYW1lLCB2YWx1ZSk7CisgICAg
cmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRl
Z2VyNjRpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVl
KQorR0NHTGludDY0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwog
ICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAotICAgICp2YWx1ZSA9IDA7Cisg
ICAgR0NHTGludDY0IHZhbHVlID0gMDsKICAgICAvLyBGSVhNRSAxNDExNzg6IEJlZm9yZSBlbmFi
bGluZyB0aGlzIHdlIG11c3QgZmlyc3Qgc3dpdGNoIG92ZXIgdG8gdXNpbmcgZ2wzLmggYW5kIGNy
ZWF0aW5nIGFuZCBpbml0aWFsaW5nIHRoZSBXZWJHTDIgY29udGV4dCB1c2luZyBPcGVuR0wgRVMg
My4wLgogICAgIC8vIDo6Z2xHZXRJbnRlZ2VyNjRpX3YocG5hbWUsIGluZGV4LCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKIHsK
KyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKGF0dGFjaG1lbnQg
PT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQogICAgICAgICBhdHRhY2htZW50ID0gREVQVEhf
QVRUQUNITUVOVDsgLy8gT3IgU1RFTkNJTF9BVFRBQ0hNRU5ULCBlaXRoZXIgd29ya3MuCi0gICAg
OjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNo
bWVudCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1
cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1p
dihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1pKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFByb2dyYW1pdihwcm9n
cmFtLCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICBHQ0dMaW50IHZhbHVl
ID0gMDsKKyAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCAmdmFsdWUpOworICAg
IHJldHVybiB2YWx1ZTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9u
QnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQpAQCAtMTg5OSwyMCArMTg5MywyMSBAQCBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSkKICAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3Vu
dCwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICA6OmdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgJnZh
bHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFk
ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBBU1NF
UlQoc2hhZGVyKTsKLQorICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAK
ICAgICBjb25zdCBhdXRvJiByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7
CkBAIC0xOTIwLDI4ICsxOTE1LDIzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtCiAgICAgc3dp
dGNoIChwbmFtZSkgewogICAgIGNhc2UgREVMRVRFX1NUQVRVUzoKICAgICBjYXNlIFNIQURFUl9U
WVBFOgotICAgICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgdmFsdWUpOworICAg
ICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgJnZhbHVlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDT01QSUxFX1NUQVRVUzoKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBtX3No
YWRlclNvdXJjZU1hcC5lbmQoKSkgewotICAgICAgICAgICAgKnZhbHVlID0gc3RhdGljX2Nhc3Q8
aW50PihmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgKnZh
bHVlID0gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQtPnZhbHVlLmlzVmFsaWQpOworICAgICAgICBp
ZiAocmVzdWx0ICE9IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQorICAgICAgICAgICAgdmFsdWUg
PSBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC0+dmFsdWUuaXNWYWxpZCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSU5GT19MT0dfTEVOR1RIOgotICAgICAgICBpZiAocmVzdWx0ID09IG1fc2hh
ZGVyU291cmNlTWFwLmVuZCgpKSB7Ci0gICAgICAgICAgICAqdmFsdWUgPSAwOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgICp2YWx1ZSA9IGdldFNoYWRlckluZm9Mb2co
c2hhZGVyKS5sZW5ndGgoKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBtX3NoYWRlclNvdXJjZU1h
cC5lbmQoKSkKKyAgICAgICAgICAgIHZhbHVlID0gZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpLmxl
bmd0aCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNIQURFUl9TT1VSQ0VfTEVOR1RIOgot
ICAgICAgICAqdmFsdWUgPSBnZXRTaGFkZXJTb3VyY2Uoc2hhZGVyKS5sZW5ndGgoKTsKKyAgICAg
ICAgdmFsdWUgPSBnZXRTaGFkZXJTb3VyY2Uoc2hhZGVyKS5sZW5ndGgoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9FTlVN
KTsKICAgICB9CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCkBAIC0x
OTg2LDM5ICsxOTc2LDQxIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogICAgIHJldHVybiByZXN1bHQtPnZh
bHVlLnNvdXJjZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFy
YW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1
ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9
IDAuZjsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUs
ICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRl
eFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dM
aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUp
OworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdl
dCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OmdsR2V0VW5pZm9ybWZ2KHBy
b2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgOjpnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBs
b2NhdGlvbiwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9y
bWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFs
dWUpOworICAgIDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmRhdGEp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkK
IHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKQEAgLTIwMzcsMjAgKzIwMjksMjAgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICBy
ZXR1cm4gOjpnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBtYXBwZWROYW1lLnV0ZjgoKS5k
YXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRy
aWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdl
dFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRWZXJ0ZXhB
dHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1
ZSk7CisgICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUuZGF0YSk7
CiB9CiAKIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKQEAgLTMxNDMsNiArMzEz
NSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNl
dCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQoreworICAgIFVOVVNFRF9QQVJB
TShwcm9ncmFtKTsKKyAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOworICAgIFVO
VVNFRF9QQVJBTShwbmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhcmFtcyk7Cit9CiAKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IDYwZmRmYzY1Zjg3
Mzk1ODk1Nzk1YTg0ZWYxZTA5YWJmNmQ3YWE4NDMuLmExZDgwOTJiY2NhZTAwOGQ2ZTY5ZThjZDhm
NmRkZmIxN2FjYWYwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAKQEAgLTE5NiwyMyArMTk2LDIzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlCiAgICAgOjpn
bFJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6
OmdsR2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0SW50ZWdlcnYocG5hbWUs
IHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9u
VHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJU
eXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwg
R0NHTGludCogcHJlY2lzaW9uKQogewotICAgIEFTU0VSVChyYW5nZSk7CisgICAgQVNTRVJUKHJh
bmdlLmRhdGEpOwogICAgIEFTU0VSVChwcmVjaXNpb24pOwogCiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFNoYWRlclByZWNpc2lv
bkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZSwgcHJlY2lzaW9uKTsKKyAg
ICA6OmdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUs
IHJhbmdlLmRhdGEsIHByZWNpc2lvbik7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhl
bHMpCkBAIC0zMzAsMTggKzMzMCwxOSBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIFNo
QnVpbHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlczsKICAgICBTaEluaXRCdWlsdEluUmVzb3Vy
Y2VzKCZBTkdMRVJlc291cmNlcyk7CiAgICAgCi0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfQVRUUklCUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRl
eEF0dHJpYnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhf
VkVSVEVYX1VOSUZPUk1fVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1W
ZWN0b3JzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZB
UllJTkdfVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzKTsKLSAgICBn
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9URVhUVVJFX0lN
QUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOwot
ICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfQ09NQklORURfVEVY
VFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdl
VW5pdHMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVEVY
VFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzKTsK
LSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0ZSQUdNRU5UX1VO
SUZPUk1fVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMp
OworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRF
WF9BVFRSSUJTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyk7CisgICAgOjpnbEdl
dEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVD
VE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzKTsKKyAgICA6Omds
R2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WQVJZSU5HX1ZFQ1RPUlMs
ICZBTkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7CisgICAgOjpnbEdldEludGVnZXJ2
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMs
ICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgOjpnbEdl
dEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfQ09NQklORURfVEVYVFVSRV9J
TUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMp
OworICAgIDo6Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1RFWFRV
UkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7Cisg
ICAgOjpnbEdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfRlJBR01FTlRf
VU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9y
cyk7CiAgICAgCiAgICAgLy8gQWx3YXlzIHNldCB0byAxIGZvciBPcGVuR0wgRVMuCiAgICAgQU5H
TEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSAxOwogICAgIAotICAgIEdDR0xpbnQgcmFuZ2Vb
Ml0sIHByZWNpc2lvbjsKKyAgICBHQ0dMaW50IHJhbmdlWzJdIHsgfTsKKyAgICBHQ0dMaW50IHBy
ZWNpc2lvbiA9IDA7CiAgICAgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpGUkFHTUVOVF9TSEFERVIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpISUdI
X0ZMT0FULCByYW5nZSwgJnByZWNpc2lvbik7CiAgICAgQU5HTEVSZXNvdXJjZXMuRnJhZ21lbnRQ
cmVjaXNpb25IaWdoID0gKHJhbmdlWzBdIHx8IHJhbmdlWzFdIHx8IHByZWNpc2lvbik7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4
IDg5ZDE0ZDI5NTZiNzJmYTQyZWU5ODM2MmFiODBkMmJiMzBhYjNlZDIuLjY4MGE1MjlkNjc1ZGQ2
MWI5OGNlZThhMzlmMTQxNWY3OTMwYjhmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCkBAIC0yODksOCArMjg5LDcgQEAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHQKICAgICAgICAgLy8gRnJvbSB2ZXJzaW9uIDMuMiBvbiB3ZSB1c2UgdGhlIE9w
ZW5HTCBDb3JlIHByb2ZpbGUsIGFuZCB3ZSBuZWVkIGEgVkFPIGZvciByZW5kZXJpbmcuCiAgICAg
ICAgIC8vIEEgVkFPIGNvdWxkIGJlIGNyZWF0ZWQgYW5kIGJvdW5kIGJ5IGVhY2ggY29tcG9uZW50
IHVzaW5nIEdMIHJlbmRlcmluZyAoVGV4dHVyZU1hcHBlciwgV2ViR0wsIGV0YykuIFRoaXMgaXMK
ICAgICAgICAgLy8gYSBzaW1wbGVyIHNvbHV0aW9uOiB0aGUgZmlyc3QgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wgY3JlYXRlZCBvbiBhIEdMQ29udGV4dCB3aWxsIGNyZWF0ZSBhbmQgYmluZCBhIFZB
TyBmb3IgdGhhdCBjb250ZXh0LgotICAgICAgICBHQ0dMaW50IGN1cnJlbnRWQU8gPSAwOwotICAg
ICAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6VkVSVEVYX0FSUkFZX0JJ
TkRJTkcsICZjdXJyZW50VkFPKTsKKyAgICAgICAgR0NHTGludCBjdXJyZW50VkFPID0gZ2V0SW50
ZWdlcihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6VkVSVEVYX0FSUkFZX0JJTkRJTkcpOwogICAg
ICAgICBpZiAoIWN1cnJlbnRWQU8pIHsKICAgICAgICAgICAgIG1fdmFvID0gY3JlYXRlVmVydGV4
QXJyYXkoKTsKICAgICAgICAgICAgIGJpbmRWZXJ0ZXhBcnJheShtX3Zhbyk7CkBAIC0zMTEsMTgg
KzMxMCwxOSBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIFNoQnVpbHRJblJlc291cmNl
cyBBTkdMRVJlc291cmNlczsKICAgICBzaDo6SW5pdEJ1aWx0SW5SZXNvdXJjZXMoJkFOR0xFUmVz
b3VyY2VzKTsKIAotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhf
VkVSVEVYX0FUVFJJQlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRyaWJzKTsKLSAgICBn
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9VTklGT1JNX1ZF
Q1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7Ci0gICAgZ2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WQVJZSU5HX1ZFQ1RPUlMsICZB
TkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xF
UmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJbnRlZ2VydihH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMs
ICZBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMs
ICZBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMsICZB
TkdMRVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKTsKKyAgICBBTkdMRVJlc291
cmNlcy5NYXhWZXJ0ZXhBdHRyaWJzID0gZ2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6TUFYX1ZFUlRFWF9BVFRSSUJTKTsKKyAgICBBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlm
b3JtVmVjdG9ycyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJU
RVhfVU5JRk9STV9WRUNUT1JTKTsKKyAgICBBTkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9y
cyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WQVJZSU5HX1ZFQ1RP
UlMpOworICAgIEFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0gZ2V0
SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdF
X1VOSVRTKTsKKyAgICBBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
ID0gZ2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRV
UkVfSU1BR0VfVU5JVFMpOworICAgIEFOR0xFUmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRz
ID0gZ2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1RFWFRVUkVfSU1BR0Vf
VU5JVFMpOworICAgIEFOR0xFUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPSBn
ZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfRlJBR01FTlRfVU5JRk9STV9W
RUNUT1JTKTsKIAogICAgIC8vIEFsd2F5cyBzZXQgdG8gMSBmb3IgT3BlbkdMIEVTLgogICAgIEFO
R0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gMTsKIAotICAgIEdDR0xpbnQgcmFuZ2VbMl0s
IHByZWNpc2lvbjsKKyAgICBHQ0dMaW50IHJhbmdlWzJdIHsgfTsKKyAgICBHQ0dMaW50IHByZWNp
c2lvbiA9IDA7CiAgICAgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpGUkFHTUVOVF9TSEFERVIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpISUdIX0ZM
T0FULCByYW5nZSwgJnByZWNpc2lvbik7CiAgICAgQU5HTEVSZXNvdXJjZXMuRnJhZ21lbnRQcmVj
aXNpb25IaWdoID0gKHJhbmdlWzBdIHx8IHJhbmdlWzFdIHx8IHByZWNpc2lvbik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414428</attachid>
            <date>2020-11-18 00:59:54 -0800</date>
            <delta_ts>2020-11-18 04:26:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218976-20201118105952.patch</filename>
            <type>text/plain</type>
            <size>121459</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQzNzUxZTFlMzA5YWQw
YzFlZGNjMDlmZTY0NDZhMzIwY2NmYTY2ZS4uY2YyZWEyZTdlOTI4ZjNlODM3NGRmYmUxYjlmN2Ez
ZmQ0ODQyZDcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyMSBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIHNob3VsZCBoYXZlIHJvYnVzdCBtdWx0aXZhbHVlIGdldHRlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBDaGFuZ2UgZ2V0dGVyIGNhbGxzIHRo
YXQgYXJlIHVzZWQgdG8gb2J0YWluIHNpbmdsZSB2YWx1ZXMgc28gdGhhdCB0aGUKKyAgICAgICAg
dmFsdWUgaXMgYSBub3JtYWwgZnVuY3Rpb24gcmV0dXJuIHZhbHVlLiBUaGlzIHJlZHVjZXMgdGhl
IHJpc2sgb2YgaGF2aW5nCisgICAgICAgIHVuaW5pdGlhbGl6ZWQgb3V0IHBhcmFtZXRlciByZWNl
aXZlIGxvY2F0aW9uLgorCisgICAgICAgIENoYW5nZSB0aGUgZ2V0dGVycyB0aGF0IGFyZSBvbmx5
IHVzZWQgdG8gb2J0YWluIHNpbmdsZSB2YWx1ZXMgc28gdGhhdAorICAgICAgICB0aGUgZ2V0dGVy
IGl0c2VsZiBoYXMgdGhlIHJldHVybiB2YWx1ZS4gQWRkIGEgc2luZ2xlLXZhbHVlIGdldHRlciBm
b3IKKyAgICAgICAgZ2V0dGVycyB0aGF0IGFyZSB1c2VkIHRvIG9idGFpbiBhbHNvIG11bHRpcGxl
IHZhbHVlcy4KKworICAgICAgICBBZGQgR0NHTFNwYW4gdHlwZSB0aGF0IGlzIHVzZWQgdG8gY29t
bXVuaWNhdGUgcGFpcjogcHRyLCBudW1iZXIgb2YKKyAgICAgICAgZWxlbWVudHMuIFRoaXMgaXMg
c2ltaWxhciB0eXBlIHRvIHN0ZDo6c3BhbiBpbiBDKysyMC4gVGhlIHR5cGUgd2lsbCBiZQorICAg
ICAgICB1c2VkIHRvIHJlY2VpdmUgdGhlIG11bHRpLXZhbHVlIGdldHRlciByZXN1bHRzLiBVc2Ug
b2YgV1RGOjpWZWN0b3IgYXMKKyAgICAgICAgdGhlIHJldHVybiB2YWx1ZSB3b3VsZCBiZSBwcm9i
bGVtYXRpYyBiZWNhdXNlIHRoZSBjYWxsIHNlbWFudGljcyBuZWVkCisgICAgICAgIHRoZSBsZW5n
dGguIFRodXMgdGhlIGxlbmd0aCB3b3VsZCBiZSBuZWVkZWQgdG8gYmUgc3BlY2lmaWVkIGJ5IGVp
dGhlcgorICAgICAgICBwYXNzaW5nIGluIHRoZSByZXNpemVkIHZlY3RvciBvciBwYXNzaW5nIGlu
IHRoZSBsZW5ndGguIEJvdGggb2YgdGhlCisgICAgICAgIG9wdGlvbnMgY29udGFpbiByZWR1bmFu
Y3kgYW5kIHJlc2l6YWJsZSB2ZWN0b3IgdHlwZSB3b3VsZCBzdGlsbCBvcGVuCisgICAgICAgIGlu
dGVycHJldGF0aW9uIHRvIGhvdyB0aGUgcmVzdWx0IHZhbHVlIHdvdWxkIGJlaGF2ZS4gVXNpbmcg
c3RkOjphcnJheQorICAgICAgICB3b3VsZCBiZSBwcm9ibGVtYXRpYyBiZWNhdXNlIGl0IGNhbm5v
dCBoYXZlIGR5bmFtaWMgbGVuZ3RoLiBHQ0dMU3BhbiBpcworICAgICAgICBub3QgYSByZXR1cm4g
dmFsdWUgc2luY2UgaXQgZG9lcyBub3QgY2FycnkgaXRzIGRhdGEuIEEgc3BhbiBpcyBvbmx5IGEK
KyAgICAgICAgdmlldyB0byBleGlzdGluZyBkYXRhIHN0b3JlLgorCisgICAgICAgIFRoZSB0eXBl
IEdDR0xTcGFuIHdpbGwgYmUgdXNlZCB0byBzaW1wbGlmeSB0aGUgR1BVIHByb2Nlc3MKKyAgICAg
ICAgaW1wbGVtZW50YXRpb24sIHNpbmNlIHRoZSBidWZTaXplIHdpbGwgYmUgZXhwbGljaXRseSBh
c3NvY2lhdGVkIGluIHRoZQorICAgICAgICBwYXNzZWQgZGF0YSB2YWx1ZSB0eXBlLCBpbnNpZGUg
dGhlIEdDR0xTcGFuIHR5cGUuCisKKyAgICAgICAgSW4gc3Vic2VxdWVudCBwYXRjaGVzIEdDR0xT
cGFuIHdpbGwgYmUgdXNlZCBhbHNvIGZvciBtdWx0aXZhbHVlIHNldHRlcnMsCisgICAgICAgIGku
ZS4gYXJiaXRyYXJ5IGJ1ZmZlciBzdG9yZXMsIGkuZS4gY29uc3QgR0x0eXBlIHB0cnMuCisKKyAg
ICAgICAgVXNlIHRoZSBSb2J1c3RBTkdMRSB2YXJpYW50cyBvZiB0aGUgR0wgQVBJIGltcGxlbWVu
dGF0aW9uIHRvIG9idGFpbiB0aGUKKyAgICAgICAgdmFsdWVzLgorCisgICAgICAgIFJlbW92ZSB0
aGUgY29ycmVzcG9uZGluZyBSb2J1c3RBTkdMRSB2YXJpYW50cyBmcm9tIEV4dGVuc2lvbnNHTCwg
dGhleQorICAgICAgICBhcmUgZGVhZCBjb2RlIGFuZCB1bnVzZWQuCisKKyAgICAgICAgUmVtb3Zl
cyByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUgd29ya2Fyb3VuZCBmcm9tIEFO
R0xFCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNvZGUsIGl0IHdhcyBkZWFkIGNv
ZGUgKGkuZSBmbGFnIGFsd2F5cyBmYWxzZSkuCisgICAgICAgIFRoaXMgc2hvdWxkIGJlIGRvbmUg
aW4gQU5HTEUgbGV2ZWwuCisKKyAgICAgICAgRml4ZXMgY29zbWV0aWMgYnVncyB3aGVyZSB1bmlu
aXRpYWxpemVkIHZhbHVlIHdhcyB1c2VkIHRvIHN0b3JlIHRoZQorICAgICAgICBsb2NhdGlvbiBv
ZiB0aGUgZ290dGVuIHByb3BlcnR5LiBUaGlzIHZhbHVlIHdvdWxkIGJlIHVud3JpdHRlbiBpbgor
ICAgICAgICBlZGdlLWNhc2VzIGxpa2UgR0wgZXJyb3JzLCBhbmQgdGh1cyB0aGUgcmVhZCB3b3Vs
ZCB0b3VjaCB1bnVpbml0aWFsaXplZAorICAgICAgICB2YWx1ZS4KKworICAgICAgICBGaXhlcyBh
IGNvc21ldGljIGJ1ZyB3aGVyZSB1bmlmb3JtIGJsb2NrIHZhcmlhYmxlcyBjb2RlIHdvdWxkIHBh
c3MgaW4KKyAgICAgICAgdG9vIGxhcmdlIGJ1ZmZlciBzaXplIHRvIHRoZSBSb2J1c3RBTkdMRSBj
YWxsLiBUaGUgYnVmU2l6ZSByZWZlcnMgdG8gdGhlCisgICAgICAgIG51bWJlciBvZiBlbGVtZW50
cywgYnV0IHRoZSBjb2RlIHBhc3NlZCBpbiB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChpLmUuCisg
ICAgICAgIG51bWJlciBvZiBlbGVtZW50cyAqIHNpemUgb2YgZWxlbWVudCkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAgICogaHRtbC9PZmZzY3JlZW5DYW52
YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1h
Z2VCaXRtYXApOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6
ZU5ld0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0SW50NjRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6
OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6Omlu
aXRpYWxpemVBdHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJM
b2NhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xQcm9ncmFtOjpjYWNoZUluZm9JZk5l
ZWRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QnVmZmVyUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xlYW5Q
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0RmxvYXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0SW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFVuc2lnbmVkSW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldE1heENvbG9yQXR0YWNo
bWVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OmdldEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OmdldEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAg
ICAgICAgKEdDR0xTcGFuOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEdDR0xTcGFuOjpvcGVyYXRv
ciopOgorICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgpOgorICAgICAg
ICAobWFrZUdDR0xTcGFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCb29sZWFudlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRG
bG9hdHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdl
cnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNo
YWRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVu
aWZvcm1mdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4
QXR0cmliaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcmlfdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVnZXI2NGlf
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZsb2F0dik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtaXYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJp
YmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0
ZXhBdHRyaWJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcmlfdik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEludGVnZXI2NHYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEludGVnZXI2NGlfdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1pdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJh
bWV0ZXJmdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6ZW5z
dXJlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW52Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0RmxvYXR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZWdlcnZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFByb2dy
YW1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNo
YWRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1l
dGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybWl2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VyaV92Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xFUzo6aXNFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2Vydik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCb29sZWFudik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NGkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVy
dGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyaV92KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjRpX3YpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJpdik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcml2KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0
ZXhBdHRyaWJmdik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCk6CisKIDIwMjAtMTEt
MTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjY5NjE0KTogW2lPU10gV2ViQ29udGVudCBjcmFzaGVzIHdoZW4gZW50ZXJpbmcgRnVs
bCBTY3JlZW4gdmlkZW8gd2l0aCB0ZXh0IGNhcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNj
cmVlbkNhbnZhcy5jcHAKaW5kZXggMmVmMTBiMGE0ZjM0NmVmZTFiOTM4ZTQ2ZTAwNTNhOGEzMzk0
NTM0NC4uMDRiMzBmOGY2NDY0MTQ2ODA2N2UzMDkyNmU3NGU0ZjJkOWMxOGI5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0lt
YWdlQml0bWFwKCkKICAgICAgICAgLy8gY3JlYXRlcyBhIG5ldyBiYWNraW5nIHN0b3JlLiBTaW5j
ZSB3ZSdyZSBub3QgZG9pbmcgdGhhdCB5ZXQsIHdlCiAgICAgICAgIC8vIG5lZWQgdG8gZXJhc2Ug
d2hhdCdzIHRoZXJlLgogCi0gICAgICAgIEdDR0xmbG9hdCBjbGVhckNvbG9yWzRdOworICAgICAg
ICBHQ0dMZmxvYXQgY2xlYXJDb2xvcls0XSB7IH07CiAgICAgICAgIGdjM2QtPmdldEZsb2F0dihH
cmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQ0xFQVJfVkFMVUUsIGNsZWFyQ29sb3IpOwogICAgICAg
ICBnYzNkLT5jbGVhckNvbG9yKDAsIDAsIDAsIDApOwogICAgICAgICBnYzNkLT5jbGVhcihHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJVCB8IEdyYXBoaWNzQ29udGV4dEdMOjpERVBU
SF9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IDgwNzNhZGMxMTE0OTIxNWY1NmQxZTQ1ZGE2ODRkZTgyODU4MTdlOTIuLjU1
YmMxZjhkYjI0OWQzMzgyMmU3ODg5Y2E3ODNmNWJlYzAyNWEyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0x
NTksOSArMTU5LDkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3
Q29udGV4dCgpCiAgICAgbV91bnBhY2tTa2lwUm93cyA9IDA7CiAgICAgbV91bnBhY2tTa2lwSW1h
Z2VzID0gMDsKIAotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
Ok1BWF8zRF9URVhUVVJFX1NJWkUsICZtX21heDNEVGV4dHVyZVNpemUpOworICAgIG1fbWF4M0RU
ZXh0dXJlU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFY
XzNEX1RFWFRVUkVfU0laRSk7CiAgICAgbV9tYXgzRFRleHR1cmVMZXZlbCA9IFdlYkdMVGV4dHVy
ZTo6Y29tcHV0ZUxldmVsQ291bnQobV9tYXgzRFRleHR1cmVTaXplLCBtX21heDNEVGV4dHVyZVNp
emUpOwotICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9B
UlJBWV9URVhUVVJFX0xBWUVSUywgJm1fbWF4QXJyYXlUZXh0dXJlTGF5ZXJzKTsKKyAgICBtX21h
eEFycmF5VGV4dHVyZUxheWVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRl
eHRHTDo6TUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTKTsKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCk7CiAKQEAgLTIwOCw5ICsyMDgsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVVbnBhY2tQYXJhbWV0ZXJzKCkKIAog
bG9uZyBsb25nIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludDY0UGFyYW1ldGVyKEdDR0xl
bnVtIHBuYW1lKQogewotICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyNjR2KHBuYW1lLCAmdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjQocG5hbWUpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKQpAQCAtMTA1NSwyMyAr
MTA1MywxNCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZQogICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX0lNTVVUQUJMRV9MRVZFTFM6CiAg
ICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVf
V1JBUF9SOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9JTU1V
VEFCTEVfRk9STUFUOiB7Ci0gICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2Nv
bnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih2YWx1ZSk7Ci0gICAgfQorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9SOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVDoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSk7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgogICAgICAgICBGQUxMVEhS
T1VHSDsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6IHsKLSAg
ICAgICAgR0NHTGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRUZXhQYXJh
bWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0g
ICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDoKKyAgICAg
ICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VGV4UGFyYW1ldGVyKHRhcmdldCwgcG5hbWUpOwogICAgIH0KQEAgLTI0NDUsMTEgKzI0MzQsOCBA
QCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlVOSUZPUk1fQlVGRkVSX1NJWkU6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VU5JRk9STV9CVUZGRVJfU1RBUlQ6IHsKLSAgICAgICAgR0NHTGludDY0IHZhbHVlID0gMDsKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpX3YodGFyZ2V0LCBpbmRleCwgJnZhbHVlKTsK
LSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpVTklGT1JNX0JVRkZFUl9TVEFSVDoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50
ZWdlcjY0aSh0YXJnZXQsIGluZGV4KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0JVRkZFUl9CSU5ESU5HOgogICAgICAgICBpZiAoaW5kZXggPj0gbV9ib3VuZEluZGV4ZWRV
bmlmb3JtQnVmZmVycy5zaXplKCkpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZ2V0SW5kZXhlZFBhcmFtZXRlciIsICJp
bmRleCBvdXQgb2YgcmFuZ2UiKTsKQEAgLTI1MjQsMjQgKzI1MTAsMjAgQEAgV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKFdlYkdM
UHJvZ3JhbSYgcHIKICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybUJs
b2NrUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBH
Q0dMaW50IHJlc3VsdCA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX0JMT0NLX0RBVEFfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUzoKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHNpemVvZihyZXN1bHQpLCBudWxs
cHRyLCAmcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50PihyZXN1
bHQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybUJsb2NraShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwg
cG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0FDVElW
RV9VTklGT1JNX0lORElDRVM6IHsKLSAgICAgICAgR0NHTGludCBzaXplID0gMDsKLSAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RB
TkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TLCBzaXplb2Yoc2l6ZSksIG51bGxwdHIs
ICZzaXplKTsKKyAgICAgICAgR0NHTGludCBzaXplID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBHcmFwaGljc0Nv
bnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVMpOwogICAgICAgICBWZWN0b3I8
R0NHTGludD4gcGFyYW1zKHNpemUsIDApOwotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0ub2JqZWN0KCks
IHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgc2l6ZW9mKHBhcmFtc1swXSkgKiBwYXJhbXMuc2l6
ZSgpLCBudWxscHRyLCBwYXJhbXMuZGF0YSgpKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgICAgIHJldHVybiBwYXJhbXMubWFwKFtdKGF1dG8geCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKICAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVI6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX0ZS
QUdNRU5UX1NIQURFUjoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0QWN0
aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxv
Y2tJbmRleCwgcG5hbWUsIHNpemVvZihyZXN1bHQpLCBudWxscHRyLCAmcmVzdWx0KTsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHJlc3VsdCk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2kocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lKSk7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdl
dEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjc3Miw5ICsyNzU0LDcgQEAgV2ViR0xBbnkg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KEdDR0xlbnVtIHRhcmcKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXR0YWNobWVudCIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwogICAgIH0KICAg
ICBpZiAoIXZhbGlkYXRlTm9uRGVmYXVsdEZyYW1lYnVmZmVyQXR0YWNobWVudChmdW5jdGlvbk5h
bWUsIGF0dGFjaG1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3OTYsMTEgKzI3
NzYsOCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0RFUFRIX1NJWkU6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9TVEVOQ0lMX1NJWkU6Ci0g
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05F
TlRfVFlQRTogewotICAgICAgICBHQ0dMaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQs
IHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgfQogCiAgICAgaWYgKG9iamVj
dC0+aXNUZXh0dXJlKCkpIHsKQEAgLTI4MTEsMTEgKzI3ODgsOCBAQCBXZWJHTEFueSBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVu
dW0gdGFyZwogICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIocmVpbnRlcnByZXRfY2FzdDxX
ZWJHTFRleHR1cmUmPigqb2JqZWN0KSk7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZB
Q0U6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfQ09MT1JfRU5DT0RJTkc6IHsKLSAgICAgICAgICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOwotICAgICAgICB9CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc6CisgICAgICAgICAgICByZXR1cm4gbV9jb250
ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVu
dCwgcG5hbWUpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxp
ZCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI4OTcsNyArMjg3MSw3IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dmFsaWRhdGVOb25EZWZhdWx0RnJhbWVidWZmZXJBdHRhY2htZW50KGNvbnN0IGNo
YXIqCiBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKCkK
IHsKICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlMsICZtX21heERyYXdCdWZm
ZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihH
cmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUyk7CiAgICAgcmV0dXJuIG1fbWF4RHJh
d0J1ZmZlcnM7CiB9CiAKQEAgLTI5MDUsNyArMjg3OSw3IEBAIEdDR0xpbnQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygpCiB7CiAgICAgLy8gRHJhd0J1ZmZl
cnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID09IE1BWF9EUkFXX0JVRkZFUlMKICAg
ICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRl
Z2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUywgJm1fbWF4Q29sb3JBdHRh
Y2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0
SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSUyk7CiAgICAgcmV0dXJu
IG1fbWF4Q29sb3JBdHRhY2htZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRleCA5Y2IwZjg1NmI1OGUxMGU2ZjQ3MzA5ZTZm
ZTNjMTBlMjY3MDk3MTY2Li40OTQxNTZlMWU2NWI2MDI5MTkwZGI3YzFjMDI2YWRmODAzZGRhOGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cApAQCAtOTgsMTAgKzk4LDggQEAgYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJH
TFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiB3ZWIKICAgICBHcmFwaGlj
c0NvbnRleHRHTCogY29udGV4dCA9IHdlYmdsQ29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpOwog
CiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgd2UgbWFrZSBzdXJlIEdMX0VYVF9kcmF3X2J1
ZmZlcnMgaXMgc3VwcG9ydGVkLgotICAgIEdDR0xpbnQgbWF4RHJhd0J1ZmZlcnMgPSAwOwotICAg
IEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50cyA9IDA7Ci0gICAgY29udGV4dC0+Z2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJm1heERyYXdCdWZmZXJzKTsK
LSAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQsICZtYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICBHQ0dMaW50IG1heERyYXdCdWZm
ZXJzID0gY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNf
RVhUKTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRl
Z2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgaWYgKG1h
eERyYXdCdWZmZXJzIDwgNCB8fCBtYXhDb2xvckF0dGFjaG1lbnRzIDwgNCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuY3BwCmluZGV4IDAxYTAyZjUxZDcyZDg5MmVhYjhlOGMyNzA1MDZjYmZjNGU3MzY1NGEu
LjM2NThlZThlYWFmN2YwZGJiODg2M2NlZDUwMjQyNWY0ZmI0ZTIzYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC02MTksMTQgKzYx
OSwxNCBAQCBib29sIFdlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2htZW50cyhHcmFw
aGljc0NvbnRleHRHTCogZzNkLCBjb25zdCBjaGFyKgogICAgICAgICBnM2QtPmNvbG9yTWFzayh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICB9CiAgICAgaWYgKGluaXREZXB0aCkgewotICAg
ICAgICBnM2QtPmdldEZsb2F0dihHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ0xFQVJfVkFMVUUs
ICZkZXB0aENsZWFyVmFsdWUpOwotICAgICAgICBnM2QtPmdldEJvb2xlYW52KEdyYXBoaWNzQ29u
dGV4dEdMOjpERVBUSF9XUklURU1BU0ssICZkZXB0aE1hc2spOworICAgICAgICBkZXB0aENsZWFy
VmFsdWUgPSBnM2QtPmdldEZsb2F0KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9DTEVBUl9WQUxV
RSk7CisgICAgICAgIGRlcHRoTWFzayA9IGczZC0+Z2V0Qm9vbGVhbihHcmFwaGljc0NvbnRleHRH
TDo6REVQVEhfV1JJVEVNQVNLKTsKICAgICAgICAgZzNkLT5jbGVhckRlcHRoKDEuMGYpOwogICAg
ICAgICBnM2QtPmRlcHRoTWFzayh0cnVlKTsKICAgICB9CiAgICAgaWYgKGluaXRTdGVuY2lsKSB7
Ci0gICAgICAgIGczZC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQ0xF
QVJfVkFMVUUsICZzdGVuY2lsQ2xlYXJWYWx1ZSk7Ci0gICAgICAgIGczZC0+Z2V0SW50ZWdlcnYo
R3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfV1JJVEVNQVNLLCByZWludGVycHJldF9jYXN0PEdD
R0xpbnQqPigmc3RlbmNpbE1hc2spKTsKKyAgICAgICAgc3RlbmNpbENsZWFyVmFsdWUgPSBnM2Qt
PmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQ0xFQVJfVkFMVUUpOworICAg
ICAgICBzdGVuY2lsTWFzayA9IGczZC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6U1RF
TkNJTF9XUklURU1BU0spOwogICAgICAgICBnM2QtPmNsZWFyU3RlbmNpbCgwKTsKICAgICAgICAg
ZzNkLT5zdGVuY2lsTWFzaygweGZmZmZmZmZmKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAppbmRleCBjOGMzYjgyMjY1MjUzYzBlMDRlZTAxYTZi
NDEyOWM5YzVmMTgwNTI5Li4zZTQ2YzVlNTZkMTNkY2ZjZjJlY2MyZGFkMmFjMTk2YTVmN2NlYTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKQEAgLTIx
Niw4ICsyMTYsNyBAQCB2b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlv
bnMoR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCkKIHsKICAgICBtX2FjdGl2ZUF0dHJpYkxv
Y2F0aW9ucy5jbGVhcigpOwogCi0gICAgR0NHTGludCBudW1BdHRyaWJzID0gMDsKLSAgICBjb250
ZXh0M2QtPmdldFByb2dyYW1pdihvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9B
VFRSSUJVVEVTLCAmbnVtQXR0cmlicyk7CisgICAgR0NHTGludCBudW1BdHRyaWJzID0gY29udGV4
dDNkLT5nZXRQcm9ncmFtaShvYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9BVFRS
SUJVVEVTKTsKICAgICBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9ucy5yZXNpemUoc3RhdGljX2Nhc3Q8
c2l6ZV90PihudW1BdHRyaWJzKSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdHRyaWJz
OyArK2kpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gaW5mbzsKQEAg
LTI0MSw4ICsyNDAsNyBAQCB2b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQoKQog
ICAgIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0ID0gZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCk7
CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47Ci0gICAgR0NHTGludCBsaW5rU3Rh
dHVzID0gMDsKLSAgICBjb250ZXh0LT5nZXRQcm9ncmFtaXYob2JqZWN0KCksIEdyYXBoaWNzQ29u
dGV4dEdMOjpMSU5LX1NUQVRVUywgJmxpbmtTdGF0dXMpOworICAgIEdDR0xpbnQgbGlua1N0YXR1
cyA9IGNvbnRleHQtPmdldFByb2dyYW1pKG9iamVjdCgpLCBHcmFwaGljc0NvbnRleHRHTDo6TElO
S19TVEFUVVMpOwogICAgIG1fbGlua1N0YXR1cyA9IGxpbmtTdGF0dXM7CiAgICAgaWYgKG1fbGlu
a1N0YXR1cykgewogICAgICAgICBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhjb250ZXh0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IGQyZmFjMjAzNjI0OTk1ODVlMGQ1MTU1NmNjNWNhNGUzYWFjMzNkYWYuLjY5
M2Q2MjA2ZjJjOTBmOTVmZGE5NzNiOTk4ZWI5NjQ2N2RjZmVhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzA3
LDExICszMDcsOCBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJu
IG1ha2VSZWZQdHIocmVpbnRlcnByZXRfY2FzdDxXZWJHTFRleHR1cmUmPigqb2JqZWN0KSk7CiAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVY
VFVSRV9MRVZFTDoKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6Ci0gICAgICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDogewotICAgICAg
ICAgICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2
YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhU
OgorICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X0VOVU0sICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJh
bWV0ZXIgbmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTM0Nyw5ICszNDQsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQog
ICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMpCi0gICAgICAgIG1f
Y29udGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwg
Jm1fbWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0
LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwogICAgIGlm
ICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2
KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JBdHRh
Y2htZW50cyk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0
SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIC8v
IFdFQkdMX2RyYXdfYnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVOVFMgPj0gTUFY
X0RSQVdfQlVGRkVSUy4KICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhEcmF3QnVmZmVycywgbV9t
YXhDb2xvckF0dGFjaG1lbnRzKTsKIH0KQEAgLTM1OSw3ICszNTYsNyBAQCBHQ0dMaW50IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygpCiAgICAgaWYgKCFzdXBw
b3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9tYXhDb2xv
ckF0dGFjaG1lbnRzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JBdHRhY2htZW50cyk7Cisg
ICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRl
bnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENv
bG9yQXR0YWNobWVudHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggNmMzNzI5OWQ0Mzc3YWEw
M2MyOTUxYzI0MDUwNTg5ZThiM2MzMGZhNy4uMTg1ZThjNjJlNmZiZTMxZjMxMzg4YzBjOWY4MGQ4
MWNlZTI0YTNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTg3Miw4ICs4NzIsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX2Ns
ZWFyU3RlbmNpbCA9IDA7CiAgICAgbV9jb2xvck1hc2tbMF0gPSBtX2NvbG9yTWFza1sxXSA9IG1f
Y29sb3JNYXNrWzJdID0gbV9jb2xvck1hc2tbM10gPSB0cnVlOwogCi0gICAgR0NHTGludCBudW1D
b21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUywgJm51
bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOworICAgIEdDR0xpbnQgbnVtQ29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6
TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMpOwogICAgIG1fdGV4dHVyZVVuaXRzLmNs
ZWFyKCk7CiAgICAgbV90ZXh0dXJlVW5pdHMucmVzaXplKG51bUNvbWJpbmVkVGV4dHVyZUltYWdl
VW5pdHMpOwogI2lmICFVU0UoQU5HTEUpCkBAIC04ODEsMTggKzg4MCwxNCBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICAgICAgbV91
bnJlbmRlcmFibGVUZXh0dXJlVW5pdHMuYWRkKGkpOwogI2VuZGlmCiAgICAgCi0gICAgR0NHTGlu
dCBudW1WZXJ0ZXhBdHRyaWJzID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBo
aWNzQ29udGV4dEdMOjpNQVhfVkVSVEVYX0FUVFJJQlMsICZudW1WZXJ0ZXhBdHRyaWJzKTsKKyAg
ICBHQ0dMaW50IG51bVZlcnRleEF0dHJpYnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BWF9WRVJURVhfQVRUUklCUyk7CiAgICAgbV9tYXhWZXJ0ZXhBdHRyaWJz
ID0gbnVtVmVydGV4QXR0cmliczsKICAgICAKLSAgICBtX21heFRleHR1cmVTaXplID0gMDsKLSAg
ICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9T
SVpFLCAmbV9tYXhUZXh0dXJlU2l6ZSk7CisgICAgbV9tYXhUZXh0dXJlU2l6ZSA9IG1fY29udGV4
dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfU0laRSk7CiAgICAg
bV9tYXhUZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6OmNvbXB1dGVMZXZlbENvdW50KG1fbWF4
VGV4dHVyZVNpemUsIG1fbWF4VGV4dHVyZVNpemUpOwotICAgIG1fbWF4Q3ViZU1hcFRleHR1cmVT
aXplID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpN
QVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFLCAmbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUpOworICAg
IG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNz
Q29udGV4dEdMOjpNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFKTsKICAgICBtX21heEN1YmVNYXBU
ZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6OmNvbXB1dGVMZXZlbENvdW50KG1fbWF4Q3ViZU1h
cFRleHR1cmVTaXplLCBtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSk7Ci0gICAgbV9tYXhSZW5kZXJi
dWZmZXJTaXplID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4
dEdMOjpNQVhfUkVOREVSQlVGRkVSX1NJWkUsICZtX21heFJlbmRlcmJ1ZmZlclNpemUpOworICAg
IG1fbWF4UmVuZGVyYnVmZmVyU2l6ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX1JFTkRFUkJVRkZFUl9TSVpFKTsKIAogICAgIC8vIFRoZXNlIHR3byB2YWx1
ZXMgZnJvbSBFWFRfZHJhd19idWZmZXJzIGFyZSBsYXppbHkgcXVlcmllZC4KICAgICBtX21heERy
YXdCdWZmZXJzID0gMDsKQEAgLTE3NDEsOCArMTczNiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciYgc2hhZGVyKQogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIo
ImNvbXBpbGVTaGFkZXIiLCAmc2hhZGVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4
dC0+Y29tcGlsZVNoYWRlcihzaGFkZXIub2JqZWN0KCkpOwotICAgIEdDR0xpbnQgdmFsdWU7Ci0g
ICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QSUxFX1NUQVRVUywgJnZhbHVlKTsKKyAgICBHQ0dMaW50IHZhbHVlID0gbV9jb250
ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJ
TEVfU1RBVFVTKTsKICAgICBzaGFkZXIuc2V0VmFsaWQodmFsdWUpOwogCiAgICAgYXV0byogY2Fu
dmFzID0gaHRtbENhbnZhcygpOwpAQCAtMjg4OCw4ICsyODgyLDcgQEAgV2ViR0xBbnkgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QnVmZmVyUGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgR0NHTGludCB2
YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBu
YW1lLCAmdmFsdWUpOworICAgIEdDR0xpbnQgdmFsdWUgPSBtX2NvbnRleHQtPmdldEJ1ZmZlclBh
cmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CiAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4
dEdMOjpCVUZGRVJfU0laRSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUpOwpAQCAtMzE4OSwyNiArMzE4MiwyNiBAQCBXZWJHTEFu
eSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJv
Z3JhbSYgcHJvZ3JhbSwgRwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFByb2dyYW1QYXJhbWV0ZXIiLCAmcHJvZ3Jh
bSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgR0NHTGludCB2YWx1ZSA9IDA7CiAg
ICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFTEVURV9T
VEFUVVM6CiAgICAgICAgIHJldHVybiBwcm9ncmFtLmlzRGVsZXRlZCgpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlZBTElEQVRFX1NUQVRVUzoKLSAgICAgICAgbV9jb250ZXh0LT5nZXRQ
cm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxib29sPih2YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxi
b29sPihtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKSk7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TElOS19TVEFUVVM6CiAgICAgICAgIHJldHVybiBw
cm9ncmFtLmdldExpbmtTdGF0dXMoKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpBVFRB
Q0hFRF9TSEFERVJTOgotICAgICAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9i
amVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICBy
ZXR1cm4gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSk7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX0FUVFJJQlVURVM6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TOgogI2lmIFVTRShBTkdMRSkKLSAgICAg
ICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1
ZSk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0
KCksIHBuYW1lKTsKICNlbHNlCi0gICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50
KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAgICB7CisgICAgICAgICAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJv
bENvdW50KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgICAgICB9CiAjZW5kaWYgLy8gVVNFKEFOR0xFKQotICAgICAgICByZXR1
cm4gdmFsdWU7CiAgICAgZGVmYXVsdDoKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgICAgICBpZiAo
aXNXZWJHTDIoKSkgewpAQCAtMzIxNiw4ICszMjA5LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0s
IEcKICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVJfTU9ERToKICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5T
Rk9STV9GRUVEQkFDS19WQVJZSU5HUzoKICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkFDVElWRV9VTklGT1JNX0JMT0NLUzoKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0
UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpOwogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTMyODAsNyArMzI3Miw2
IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9
CiAKLSAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSX1NBTVBMRVM6CiAgICAgICAgIGlmICgh
aXNXZWJHTDIoKSkgewpAQCAtMzI5Niw4ICszMjg3LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwg
R0MKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJfQUxQSEFfU0laRToK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJfREVQVEhfU0laRToKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFOgotICAg
ICAgICBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUs
ICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUOgogICAgICAgICBy
ZXR1cm4gbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5nZXRJbnRlcm5hbEZvcm1hdCgpOwogICAgIGRl
ZmF1bHQ6CkBAIC0zMzEwLDE2ICszMzAwLDEzIEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlciYgc2hhZGVyLCBHQ0dMCiB7
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dy
YW1PclNoYWRlcigiZ2V0U2hhZGVyUGFyYW1ldGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERUxFVEVfU1RBVFVTOgogICAgICAgICByZXR1
cm4gc2hhZGVyLmlzRGVsZXRlZCgpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJ
TEVfU1RBVFVTOgotICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlci5vYmplY3Qo
KSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPih2YWx1
ZSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQtPmdldFNoYWRl
cmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OlNIQURFUl9UWVBFOgotICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlci5vYmpl
Y3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29udGV4
dC0+Z2V0U2hhZGVyaShzaGFkZXIub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwg
ImdldFNoYWRlclBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMzM1OCw3ICszMzQ1LDcgQEAgUmVmUHRyPFdlYkdMU2hhZGVy
UHJlY2lzaW9uRm9ybWF0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQcmVj
aXNpb24KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgR0NHTGludCByYW5n
ZVsyXSA9IHswLCAwfTsKKyAgICBHQ0dMaW50IHJhbmdlWzJdIHsgfTsKICAgICBHQ0dMaW50IHBy
ZWNpc2lvbiA9IDA7CiAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hh
ZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVjaXNpb24pOwogICAgIHJldHVybiBX
ZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdDo6Y3JlYXRlKHJhbmdlWzBdLCByYW5nZVsxXSwgcHJl
Y2lzaW9uKTsKQEAgLTMzNzgsMjAgKzMzNjUsMTUgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG4K
ICAgICBhdXRvIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImdldFRleFBhcmFtZXRlciIs
IHRhcmdldCk7CiAgICAgaWYgKCF0ZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEdD
R0xpbnQgdmFsdWUgPSAwOwotICAgIEdDR0xmbG9hdCBmVmFsdWUgPSAwOwogICAgIHN3aXRjaCAo
cG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BR19GSUxURVI6
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fRklMVEVSOgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9TOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOgotICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFt
ZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSk7CiAgICAgY2FzZSBF
eHRlbnNpb25zR0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMKLSAgICAgICAgaWYgKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwg
cG5hbWUsICZmVmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihm
VmFsdWUpOwotICAgICAgICB9CisgICAgICAgIGlmIChtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYykKKyAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFy
Z2V0LCBwbmFtZSk7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX0VOVU0sICJnZXRUZXhQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFt
ZSwgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBlbmFibGVkIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIGRlZmF1bHQ6CkBAIC0zNTU1LDcgKzM1MzcsNyBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYg
cHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZ2V0blVuaWZvcm1mdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgMTYgKiBzaXpl
b2YoR0NHTGZsb2F0KSwgdmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1
ZSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLm9iamVjdCgp
LCBsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVlLCBsZW5ndGgpKTsKICAgICAgICAgaWYgKGxl
bmd0aCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwogICAgICAgICByZXR1cm4g
RmxvYXQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7CkBAIC0zNTY3LDE0ICszNTQ5
LDE0IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2Vi
R0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9u
LCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKICNlbmRpZgotICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRp
b24sIHZhbHVlKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0u
b2JqZWN0KCksIGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUsIGxlbmd0aCkpOwogICAgICAg
ICBpZiAobGVuZ3RoID09IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07CiAgICAgICAg
IHJldHVybiBJbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7CiAgICAgfQogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVDogewogICAgICAgICBHQ0dMdWlu
dCB2YWx1ZVs0XSA9IHswfTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dy
YW0ub2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5p
Zm9ybXVpdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVlLCBs
ZW5ndGgpKTsKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZh
bHVlWzBdOwogICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVu
Z3RoKTsKQEAgLTM1ODYsNyArMzU2OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAg
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dy
YW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAg
ICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJv
Z3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+
Z2V0VW5pZm9ybWl2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFs
dWUsIGxlbmd0aCkpOwogICAgICAgICBpZiAobGVuZ3RoID4gMSkgewogICAgICAgICAgICAgVmVj
dG9yPGJvb2w+IHZlY3RvcihsZW5ndGgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0g
MDsgaiA8IGxlbmd0aDsgaisrKQpAQCAtMzYyNCw3ICszNjA2LDcgQEAgUmVmUHRyPFdlYkdMVW5p
Zm9ybUxvY2F0aW9uPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRp
b24oV2ViR0wKIAogICAgIEdDR0xpbnQgYWN0aXZlVW5pZm9ybXMgPSAwOwogI2lmIFVTRShBTkdM
RSkKLSAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGlj
c0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOworICAgIGFjdGl2
ZVVuaWZvcm1zID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBHcmFw
aGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TKTsKICNlbHNlCiAgICAgc3RhdGljX2Nhc3Q8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5nZXROb25CdWlsdElu
QWN0aXZlU3ltYm9sQ291bnQocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFD
VElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKICNlbmRpZgpAQCAtNjIzNyw5ICs2MjE5
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN1bWUoKQogCiBib29sIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvb2xlYW5QYXJhbWV0ZXIoR0NHTGVudW0gcG5h
bWUpCiB7Ci0gICAgR0NHTGJvb2xlYW4gdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0Qm9v
bGVhbnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldEJvb2xlYW4ocG5hbWUpOwogfQogCiBWZWN0b3I8Ym9vbD4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQpA
QCAtNjI1OCwyMyArNjIzOCwxNyBAQCBWZWN0b3I8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogCiBmbG9hdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRGbG9hdFBhcmFtZXRlcihHQ0dMZW51bSBwbmFt
ZSkKIHsKLSAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2
KHBuYW1lLCAmdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9jb250ZXh0
LT5nZXRGbG9hdChwbmFtZSk7CiB9CiAKIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRJbnRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiB7Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7
Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgJnZhbHVlKTsKLSAgICByZXR1cm4g
dmFsdWU7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihwbmFtZSk7CiB9CiAKIHVu
c2lnbmVkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuc2lnbmVkSW50UGFyYW1ldGVy
KEdDR0xlbnVtIHBuYW1lKQogewotICAgIEdDR0xpbnQgdmFsdWUgPSAwOwotICAgIG1fY29udGV4
dC0+Z2V0SW50ZWdlcnYocG5hbWUsICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldEludGVnZXIocG5hbWUpOwogfQogCiBSZWZQdHI8RmxvYXQzMkFy
cmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0
ZXIoR0NHTGVudW0gcG5hbWUpCkBAIC03NjI2LDkgKzc2MDAsOSBAQCBHQ0dMaW50IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldE1heERyYXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRz
RHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZm
ZXJzKQotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX0RS
QVdfQlVGRkVSU19FWFQsICZtX21heERyYXdCdWZmZXJzKTsKKyAgICAgICAgbV9tYXhEcmF3QnVm
ZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZF
UlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250
ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQs
ICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMg
PSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVO
VFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FU
VEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCiAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4
RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50cyk7CiB9CkBAIC03NjM4LDcgKzc2MTIs
NyBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldE1heENvbG9yQXR0YWNo
bWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4g
MDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21h
eENvbG9yQXR0YWNobWVudHMpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2Nv
bnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhU
KTsKICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IDM0ZjE3ZWM2MWIz
MzEwMzcxYzJkZGJkMGEwMTc1YzYwYjkzZDE2ZjUuLmJhODY1YjMzMDhlNmM5NDU4MjIxMjIzNzc5
NmQ2ZmQ1Nzc0ODQ3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnNHTC5oCkBAIC0zMDYsMjEgKzMwNiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNv
cikgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZsb2F0dlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xmbG9hdCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldElu
dGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQ
cm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRT
aGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lk
KiogcG9pbnRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9p
ZCogcGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lk
KiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKQEAgLTMzNiwxNCArMzIxLDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIGRhdGEpID0gMDsgLy8gTk9MSU5UCiAgICAgdmlydHVhbCB2
b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2
NCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogZGF0YSkgPSAwOyAvLyBOT0xJTlQKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludDY0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IGQ5ZTU4OGFmYTMwZGJhNzMwOTMwZjk2Yzk4NzI5MTM0MDEyOThjMWUuLjBhNzE1
NDBjZTgwMjBmZDlmNTgxNjg2MDNmNjc2OWI5NDQ1MjI0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtOTg2LDUx
ICs5ODYsNTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCi0gICAgdmly
dHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldEJ1ZmZl
clBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAg
Ly8gZ2V0UGFyYW1ldGVyCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5h
bWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2Vy
aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFsdWUpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGludDY0
KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3YoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50NjQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudihH
Q0dMZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQo
R0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRp
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgR0NHTGlu
dCBnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMYm9vbGVhbj4gdmFsdWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTGVudW0gZ2V0RXJy
b3IoKSA9IDA7CiAKICAgICAvLyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCog
dmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVt
IHBuYW1lKSA9IDA7CiAKICAgICAvLyBnZXRQcm9ncmFtUGFyYW1ldGVyCiAgICAgdmlydHVhbCBT
dHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCiAgICAgLy8g
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZh
bHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgLy8gZ2V0U2hhZGVy
UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtR0xPYmplY3Qs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGlu
dCBnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBw
cmVjaXNpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0
KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdD
R0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pID0gMDsKIAogICAgIHZpcnR1YWwg
U3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAgICAvLyBn
ZXRUZXhQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFRleFBh
cmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1
YWwgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUpID0gMDsKIAogICAgIC8vIGdldFVuaWZvcm0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9y
bWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9y
bWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50
PiB2YWx1ZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAogICAgIC8vIGdldFZl
cnRleEF0dHJpYgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwogCiAgICAgdmly
dHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSkgPSAwOwogCkBAIC0xMjM2LDcgKzEyMzUsMTMgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwog
CisgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gcGFyYW1zKSA9IDA7CisKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCisgICAgR0NH
TGZsb2F0IGdldEZsb2F0KEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMYm9vbGVhbiBnZXRCb29s
ZWFuKEdDR0xlbnVtIHBuYW1lKTsKKyAgICBHQ0dMaW50IGdldEludGVnZXIoR0NHTGVudW0gcG5h
bWUpOworICAgIEdDR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1
cm4gbV9hdHRyczsgfQogICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7IH0KQEAgLTEz
NjcsNiArMTM3MiwzNSBAQCBwcml2YXRlOgogICAgIERlc3RpbmF0aW9uIG1fZGVzdGluYXRpb247
CiB9OwogCitpbmxpbmUgR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRGbG9hdChHQ0dM
ZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMZmxvYXQgdmFsdWVbMV0geyB9OworICAgIGdldEZsb2F0
dihwbmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xi
b29sZWFuIEdyYXBoaWNzQ29udGV4dEdMOjpnZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKQorewor
ICAgIEdDR0xib29sZWFuIHZhbHVlWzFdIHsgfTsKKyAgICBnZXRCb29sZWFudihwbmFtZSwgdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKworaW5saW5lIEdDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0w6OmdldEludGVnZXIoR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NHTGludCB2YWx1
ZVsxXSB7IH07CisgICAgZ2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFs
dWVbMF07Cit9CisKK2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tpKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBHQ0dMaW50IHZhbHVlWzFdIHsgfTsKKyAgICBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHZh
bHVlKTsKKyAgICByZXR1cm4gdmFsdWVbMF07Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUeXBlc0dMLmgKaW5kZXggNjk5ZGUyOGJhZWI5MmNjMjUzMzk0ZGJhODBiN2U3YTc4ZTEz
ZjQ0NS4uZTdjNjliMjhkY2U0NjU4MjU3NTc3MzMzMjViOGY0NGRmMjcyMDdiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAg
LTIwLDEyICsyMCwxNCBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogLy8gR0NHTCB0eXBlcyBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyBHTCB0
eXBlcyBhcyBkZWZpbmVkIGluIE9wZW5HTCBFUyAyLjAKIC8vIGhlYWRlciBmaWxlIGdsMi5oIGZy
b20ga2hyb25vcy5vcmcuCkBAIC01NSwzICs1Nyw1MSBAQCB0eXBlZGVmIEdDR0x1aW50IFBsYXRm
b3JtR0xPYmplY3Q7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdHlwZWRlZiB1bnNpZ25lZCBHTHVp
bnQ7CiAjZW5kaWYKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+CitzdHJ1Y3QgR0NHTFNwYW47Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50Pgorc3RydWN0IEdDR0xTcGFuIHsKKyAgICBleHBs
aWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5KQorICAgIHsgfQor
ICAgIEdDR0xTcGFuKFQgKCZhcnJheSlbRXh0ZW50XSkKKyAgICAgICAgOiBkYXRhKGFycmF5KQor
ICAgIHsgfQorICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0
YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CisgICAgVCYgb3BlcmF0b3IqKCkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KKyAgICBU
KiBkYXRhOworICAgIGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90IGJ1ZlNpemUgPSBFeHRlbnQ7Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKKyAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90
IGJ1ZlNpemVfKQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShidWZT
aXplXykKKyAgICB7IH0KKyAgICB0ZW1wbGF0ZTxzaXplX3QgU3o+IEdDR0xTcGFuKFQgKCZhcnJh
eSlbU3pdKQorICAgICAgICA6IGRhdGEoYXJyYXkpCisgICAgICAgICwgYnVmU2l6ZShTeikKKyAg
ICB7IH0KKyAgICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYgYXJyYXkpCisgICAgICAgIDogZGF0
YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkpCisgICAgeyB9
CisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGkg
PCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KKyAgICBUJiBvcGVyYXRvciooKSB7IFJFTEVB
U0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJldHVybiAqZGF0YTsgfQorICAgIFQqIGRhdGE7
CisgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgTj4KK0dDR0xTcGFuKFQgKCYpW05dKSAtPiBHQ0dMU3BhbjxULCBOPjsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK0dDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JikgLT4gR0NHTFNwYW48VD47
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitHQ0dMU3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0
YSwgc2l6ZV90IGNvdW50KQoreworICAgIHJldHVybiBHQ0dMU3BhbjxUPiB7IGRhdGEsIGNvdW50
IH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggMWM4YmM0MjU1MGYxYzFkOTVjMzA4
MmY2NzM3NmE1Njk1MDZiZmFiMy4uNGQwMjViOTkzNDIyNzc2YjliNWY0YWFiYzM5YTBjNzg5MTk0
MGE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtMTEzLDggKzExMyw3IEBAIFN0cmlu
ZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyCiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBpbnQgc291cmNlTGVuZ3RoID0g
MDsKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFE
RVJfU09VUkNFX0xFTkdUSF9BTkdMRSwgJnNvdXJjZUxlbmd0aCk7CisgICAgaW50IHNvdXJjZUxl
bmd0aCA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVS
X1NPVVJDRV9MRU5HVEhfQU5HTEUpOwogICAgIGlmICghc291cmNlTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0
aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMg
bnVsbCB0ZXJtaW5hdGlvbi4KQEAgLTI3OSwxMjYgKzI3OCw2IEBAIEdDR0xlbnVtIEV4dGVuc2lv
bnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50
ZXJuYWxmCiB9CiAKIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldEJvb2xlYW52Um9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgZGF0YSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZs
b2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRGbG9hdHZS
b2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0SW50ZWdlcnZSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVnZXJ2Um9idXN0QU5HTEUocG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNoYWRlcml2Um9idXN0QU5HTEUo
c2hhZGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtZnZS
b2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFVuaWZvcm1pdlJv
YnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRl
eEF0dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRW
ZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJQb2lu
dGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcG9pbnRlcikKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwb2ludGVyKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVh
ZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJv
d3MsIHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCkBAIC01MTcsMTQgKzM5Niw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1
ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwCiAgICAg
Z2w6OkdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlZ2Vy
aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5n
dGgsIGRhdGEpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlcm5hbGZvcm1h
dGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKQEAgLTU1NywzMCArNDI4LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6
R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJ
bnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldElu
dGVnZXI2NHZSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9j
YXN0PEdMaW50NjQqPihkYXRhKSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldElu
dGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1
ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0Kj4oZGF0YSkpOwotfQotCiB2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCAxMjU2OTU2N2Mx
N2M5MjZiNzFhOTFiYjRiYjExOTU1NmJhMDZmMTcwLi41N2JiOTNiYzg0YzMzNTkwZmJjZjRiM2Y3
YTFlYjVhNTVjNTkyNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTczLDIxICs3Myw2IEBA
IHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgp
IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXpl
OyB9CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZvaWQgZ2V0
Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0
YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
ZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5p
Zm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
Kipwb2ludGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVs
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJy
aWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJh
bXMpIG92ZXJyaWRlOwpAQCAtMTAzLDE0ICs4OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRR
dWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJ
bnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBvdmVycmlk
ZTsgLy8gTk9MSU5UCiAgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKICAg
ICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggZGY2ZjM0YzlkNjE4ZDA3YWRmMjE5ODVh
MzAxY2JlNDE0MjkzOTA4YS4uZmViMGJlYmVmMzE1ZjBlMTM4YmE5OWQ2MmViNmNmY2VkNTE5MzY3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTMzMCw1NSArMzMwLDM2
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlCiAgICAgZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
dGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2
YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CisgICAgZ2w6OkdldEludGVnZXJ2Um9idXN0QU5H
TEUocG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwogCiAgICAgc3dp
dGNoIChwbmFtZSkgewotICAgIGNhc2UgTUFYX1RFWFRVUkVfU0laRToKLSAgICAgICAgZ2w6Okdl
dEludGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUsIHZhbHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVu
c2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkKLSAgICAgICAg
ICAgICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYsICp2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRToKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2
KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVu
c2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkKLSAgICAgICAg
ICAgICp2YWx1ZSA9IHN0ZDo6bWluKDEwMjQsICp2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICAvLyBTb21lIG9sZGVyIGhhcmR3YXJlIGFkdmVydGlzZXMgYSBs
YXJnZXIgbWF4aW11bSB0aGFuIHRoZXkKICAgICAvLyBjYW4gYWN0dWFsbHkgaGFuZGxlLiBSYXRo
ZXIgdGhhbiBkZXRlY3Rpbmcgc3VjaCBkZXZpY2VzLCBzaW1wbHkKICAgICAvLyBjbGFtcCB0aGUg
bWF4aW11bSB0byA4MTkyLCB3aGljaCBpcyBiaWcgZW5vdWdoIGZvciBhIDVLIGRpc3BsYXkuCiAg
ICAgY2FzZSBNQVhfUkVOREVSQlVGRkVSX1NJWkU6Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihN
QVhfUkVOREVSQlVGRkVSX1NJWkUsIHZhbHVlKTsKICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4o
ODE5MiwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNQVhfVklFV1BPUlRfRElN
UzoKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KE1BWF9WSUVXUE9SVF9ESU1TLCB2YWx1ZSk7CiAg
ICAgICAgIHZhbHVlWzBdID0gc3RkOjptaW4oODE5MiwgdmFsdWVbMF0pOwogICAgICAgICB2YWx1
ZVsxXSA9IHN0ZDo6bWluKDgxOTIsIHZhbHVlWzFdKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYK
ICAgICBkZWZhdWx0OgotICAgICAgICBnbDo6R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRJbnRlZ2VyaV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludCogdmFs
dWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldEludGVnZXJpX3YocG5hbWUsIGluZGV4LCB2YWx1ZSk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51
bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMaW50KiByYW5nZSwgR0NH
TGludCogcHJlY2lzaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5
cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6
OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5n
ZSwgcHJlY2lzaW9uKTsKKyAgICBnbDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5
cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLmRhdGEsIHByZWNpc2lvbik7CiB9CiAKIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBjb25zdCB2b2lkKiBwaXhlbHMpCkBAIC0xMjExLDcgKzExOTIsNiBAQCBib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDRwogCiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwogICAgIGdsOjpHZXRQ
cm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZv
cm1TaXplKTsKLQogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUobWF4VW5pZm9ybVNpemUpOyAvLyBH
TF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCiAg
ICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKQEAgLTE4MTgs
NjQgKzE3OTgsNjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFZlcnRleEFy
cmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheShhcnJh
eSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZh
bHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdsOjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRCb29sZWFu
dlJvYnVzdEFOR0xFKHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1
ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5h
bWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9h
dCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGbG9hdHYoR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldEZsb2F0dihwbmFt
ZSwgdmFsdWUpOworICAgIGdsOjpHZXRGbG9hdHZSb2J1c3RBTkdMRShwbmFtZSwgdmFsdWUuYnVm
U2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7CiB9CiAgICAgCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50NjQqIHZhbHVl
KQorR0NHTGludDY0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VyNjQoR0NHTGVu
dW0gcG5hbWUpCiB7CisgICAgR0NHTGludDY0IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAqdmFsdWUgPSAwOwotICAgIGds
OjpHZXRJbnRlZ2VyNjR2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICBnbDo6R2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0SW50ZWdlcjY0aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludDY0
KiB2YWx1ZSkKK0dDR0xpbnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0
aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCiB7CisgICAgR0NHTGludDY0IHZhbHVl
ID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAqdmFsdWUgPSAwOwotICAgIGdsOjpHZXRJbnRlZ2VyNjRpX3YocG5hbWUsIGluZGV4LCB2
YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0SW50ZWdlcjY0aV92Um9i
dXN0QU5HTEUocG5hbWUsIGluZGV4LCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2
YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBpZiAoYXR0YWNobWVudCA9PSBERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQpCiAgICAgICAgIGF0dGFjaG1lbnQgPSBERVBUSF9BVFRBQ0hN
RU5UOyAvLyBPciBTVEVOQ0lMX0FUVEFDSE1FTlQsIGVpdGhlciB3b3Jrcy4KLSAgICBnbDo6R2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSwgdmFsdWUpOworICAgIGdsOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRQcm9ncmFtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFt
aShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xp
bnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShwcm9n
cmFtLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAK
IFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyhQbGF0
Zm9ybUdMT2JqZWN0IHNoYWRlcnNbMl0sIEdDR0xzaXplaSBjb3VudCwgY29uc3QgU3RyaW5nJiBs
b2cpCkBAIC0xOTIxLDIyICsxOTA0LDIzIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtKQogICAgIHJldHVy
biBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIGNvdW50LCBTdHJpbmcoaW5mby5kYXRhKCks
IHNpemUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCog
dmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUs
IHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgQVNTRVJUKHNo
YWRlcik7Ci0KKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2hhZGVyaXYoc2hhZGVyLCBw
bmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFNoYWRlcml2
Um9idXN0QU5HTEUoc2hhZGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1
cm4gdmFsdWU7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVy
SW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKQEAgLTE5NjQsNDQgKzE5NDgsNDkgQEAg
U3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1H
TE9iamVjdCkKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQog
eworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0
LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFRleFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsK
KyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFRleFBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VGV4UGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUg
PSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAg
IHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJn
ZXQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIC8vIEZJWE1FOiBCdWcg
aW4gQU5HTEUgYnVmU2l6ZSB2YWxpZGF0aW9uIGZvciB1bmlmb3Jtcy4gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwNjkuCisgICAgYXV0byBidWZTaXplID0g
dmFsdWUuYnVmU2l6ZSAqIHNpemVvZigqdmFsdWUpOworICAgIGdsOjpHZXRVbmlmb3JtZnZSb2J1
c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1pdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZhbHVlKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIC8vIEZJWE1FOiBC
dWcgaW4gQU5HTEUgYnVmU2l6ZSB2YWxpZGF0aW9uIGZvciB1bmlmb3Jtcy4gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwNjkuCisgICAgYXV0byBidWZTaXpl
ID0gdmFsdWUuYnVmU2l6ZSAqIHNpemVvZigqdmFsdWUpOworICAgIGdsOjpHZXRVbmlmb3JtaXZS
b2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0
YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVl
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgLy8g
RklYTUU6IEJ1ZyBpbiBBTkdMRSBidWZTaXplIHZhbGlkYXRpb24gZm9yIHVuaWZvcm1zLiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTA2OS4KKyAgICBhdXRv
IGJ1ZlNpemUgPSB2YWx1ZS5idWZTaXplICogc2l6ZW9mKCp2YWx1ZSk7CisgICAgZ2w6OkdldFVu
aWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbnVsbHB0ciwg
dmFsdWUuZGF0YSk7CiB9CiAKIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFt
ZSkKQEAgLTIwMTQsMjAgKzIwMDMsMjAgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICBy
ZXR1cm4gZ2w6OkdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkdldFZlcnRl
eEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJm
dlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUu
ZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJp
Yml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpHZXRWZXJ0
ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0VmVydGV4QXR0cmli
aXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVl
LmRhdGEpOwogfQogCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0yMDM2
LDcgKzIwMjUsNyBAQCBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTAogICAgICAgICByZXR1cm4gMDsK
IAogICAgIEdMdm9pZCogcG9pbnRlciA9IDA7Ci0gICAgZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2KGluZGV4LCBwbmFtZSwgJnBvaW50ZXIpOworICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJQb2lu
dGVydlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgMSwgbnVsbHB0ciwgJnBvaW50ZXIpOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KHBvaW50ZXIpKTsKIH0KIApAQCAtMjk1Myw2ICsyOTQyLDE0IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhCiAgICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwg
dHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBw
YXJhbXMpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGdsOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUsIG51bGxwdHIsIHBhcmFtcy5k
YXRhKTsKK30KKworCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3Jh
cGhpY3NDb250ZXh0R0xDViogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250
ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dy
YXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXggMGM1NjFmNThhMDViMDAzZTJhOTlmODc1
MjMzYjAwMjA3YzQxOTI1Yi4uZjliZmNhM2M0OGNlMjhlYWIxOTQ0YTRmNWU4NTMwYTQyNWY4NjJm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhp
Y3NDb250ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCkBAIC00NzEsOCArNDcxLDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3Rz
KCkKIAogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2ZXJ0ZXhTaGFkZXIpOwog
Ci0gICAgR0NHTGludCBzdGF0dXMgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYodmVy
dGV4U2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOwor
ICAgIEdDR0xpbnQgc3RhdHVzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHZlcnRleFNoYWRlciwg
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewog
ICAgICAgICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVV
VkNvbnRleHRPYmplY3RzKCVwKSAtIFZlcnRleCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwg
dGhpcyk7CiAgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CkBA
IC00ODcsNyArNDg2LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxp
emVVVkNvbnRleHRPYmplY3RzKCkKIAogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVj
dChmcmFnbWVudFNoYWRlcik7CiAKLSAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KGZyYWdtZW50
U2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAg
IHN0YXR1cyA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShmcmFnbWVudFNoYWRlciwgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBM
T0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRP
YmplY3RzKCVwKSAtIEZyYWdtZW50IHNoYWRlciBmYWlsZWQgdG8gY29tcGlsZS4iLCB0aGlzKTsK
ICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKQEAgLTUwMCw3
ICs0OTksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5pdGlhbGl6ZVVWQ29u
dGV4dE9iamVjdHMoKQogICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwg
ZnJhZ21lbnRTaGFkZXIpOwogICAgIG1fY29udGV4dC0+bGlua1Byb2dyYW0obV95dXZQcm9ncmFt
KTsKIAotICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KG1feXV2UHJvZ3JhbSwgR3JhcGhpY3ND
b250ZXh0R0w6OkxJTktfU1RBVFVTLCAmc3RhdHVzKTsKKyAgICBzdGF0dXMgPSBtX2NvbnRleHQt
PmdldFByb2dyYW1pKG1feXV2UHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTktfU1RBVFVT
KTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIFByb2dyYW0gZmFp
bGVkIHRvIGxpbmsuIiwgdGhpcyk7CiAgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZl
cnRleFNoYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4
IDgwNjEwZGU3ZDQzMWNmNDI2Mjk5N2Y0ZmZjZTM3YjZiZTFlZTc0MDQuLjY4NmYyZDUxMTQ4ZWY5
YjEyZmVmMTBiM2MyYWM3MGIyYTM1ZDIxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICBTaEJ1aWx0
SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXMgPSBjb21waWxlci5nZXRSZXNvdXJjZXMoKTsKICAg
ICAgICAgaWYgKCFBTkdMRVJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzKSB7CiAgICAgICAgICAg
ICBBTkdMRVJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzID0gMTsKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCwgJkFO
R0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2Vz
Lk1heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0RSQVdfQlVGRkVSU19FWFQpOwogICAgICAgICAgICAgY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFO
R0xFUmVzb3VyY2VzKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSAiR0xfRVhU
X3NoYWRlcl90ZXh0dXJlX2xvZCIpIHsKQEAgLTE3Miw3ICsxNzIsNyBAQCBTdHJpbmcgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdAogCiAgICAgQU5HTEVXZWJLaXRCcmlkZ2UmIGNvbXBpbGVyID0gbV9jb250ZXh0
LT5tX2NvbXBpbGVyOwogCi0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBo
aWNzQ29udGV4dEdMOjpTSEFERVJfVFlQRSwgJkdMc2hhZGVyVHlwZSk7CisgICAgR0xzaGFkZXJU
eXBlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OlNI
QURFUl9UWVBFKTsKIAogICAgIGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6
OlZFUlRFWF9TSEFERVIpCiAgICAgICAgIHNoYWRlclR5cGUgPSBTSEFERVJfVFlQRV9WRVJURVg7
CkBAIC0yNTQsODEgKzI1NCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRu
VW5pZm9ybWl2RVhUKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTGluCiAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZsb2F0dlJvYnVzdEFOR0xF
KEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dM
dWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxv
YXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xF
KEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdM
RShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICopCiB7
CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CkBAIC00MDAsMTEgKzMyNSw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRC
dWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwKICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51
bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQog
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMaW50ICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CkBAIC00MjUsMjEgKzM0NSw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNp
emVpCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCiB7CiAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggMDQ4OTRiOTFjODJjYzRiMWIy
MDlhN2FmZDIyOWNiZGNhOWEwMWE0My4uOTdlZWRmYjc0ODVjODMyZjc5M2M4Y2ZmMGZhMTdmYmZm
YmU2NTg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNjksMjEg
KzY5LDYgQEAgcHVibGljOgogICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4
dHVyZVNpemU7IH0KIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAg
dm9pZCBnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
Kipwb2ludGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQg
eCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJy
aWRlOwogICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTk5
LDE0ICs4NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlP
YmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBpbnQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW50ZXJuYWxm
b3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVn
ZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50
ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggYWI4Y2I1NGY1ZTg3OWVmNGI4
YTkwZDE5YTdlYzkyYzg5Y2UyMDU3Yi4uZDI4ZjRhMDMxZWJkYzQ4Mzg3NWQzOTg0ODdkNTc4NzQ4
ZmRlNDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC03NCwxMSArNzQs
OCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGb3IgR0xfRVhUX3JvYnVzdG5l
c3MsIGNoZWNrIHRoYXQgdGhlIGNvbnRleHQgc3VwcG9ydHMgcm9idXN0IGFjY2Vzcy4KLSAgICBp
ZiAobmFtZSA9PSAiR0xfRVhUX3JvYnVzdG5lc3MiKSB7Ci0gICAgICAgIEdMaW50IHJvYnVzdEFj
Y2VzcyA9IEdMX0ZBTFNFOwotICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4dGVuc2lv
bnNHTDo6Q09OVEVYVF9ST0JVU1RfQUNDRVNTLCAmcm9idXN0QWNjZXNzKTsKLSAgICAgICAgcmV0
dXJuIHJvYnVzdEFjY2VzcyA9PSBHTF9UUlVFOwotICAgIH0KKyAgICBpZiAobmFtZSA9PSAiR0xf
RVhUX3JvYnVzdG5lc3MiKQorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4
dGVuc2lvbnNHTDo6Q09OVEVYVF9ST0JVU1RfQUNDRVNTKSA9PSBHTF9UUlVFOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDc3NWY5
MDQwNmY0MmE2MDkxZGRjM2ZlYTFlNTBiN2MyYjBhZTRkYTEuLjA5OTI2NzhiOGRjMWUxODNkOTgy
NTliNzczMTVjMzYxMjE3MDEzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CkBAIC0xOTcsMzUgKzE5NywzNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3Jt
SW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZv
Jik7CiAgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3Qq
IHNoYWRlcnMpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldEJvb2xlYW52
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMYm9vbGVhbiogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0
QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIEdD
R0xlbnVtIGdldEVycm9yKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0SW50ZWdl
cnYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldElu
dGVnZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50NjQq
IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldEludGVnZXI2NGlfdihHQ0dMZW51bSBwbmFtZSwg
R0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQ2NCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJv
Z3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50
ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0
aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0
UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CiAjaWYgIVVTRShBTkdMRSkKICAgICB2b2lkIGdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3Vu
dChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSk7CiAjZW5kaWYgLy8gIVVTRShBTkdMRSkKICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2co
UGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFVubWFuZ2xlZEluZm9Mb2co
UGxhdGZvcm1HTE9iamVjdFsyXSwgR0NHTHNpemVpLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lk
IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3Jt
R0xPYmplY3QsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NH
TGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0LCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZv
cm1HTE9iamVjdCkgZmluYWw7Ci0gICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NH
TGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2Us
IEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25G
b3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNw
YW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CiAgICAgU3Ry
aW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICBTdHJpbmcg
Z2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
ZnYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQqIHZhbHVl
KSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFVu
aWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
dWludCogdmFsdWUpIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lk
IGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkg
ZmluYWw7CiAgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmlu
YWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIg
Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmlu
YWw7CiAKICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5h
bDsKQEAgLTQzOCw2ICs0MzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAg
ICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CisgICAgdm9pZCBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3Jt
QmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmlu
YWw7CiAKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNzUwZWQzMjZlY2U2NWU4OGY2YjQxMzYw
MTVjNGY5MzM3NDQ4OWNhNS4uOWQ3Y2M5MjE2ZTdhNDJjZjBkOTcxNjQ1NzIwODUxZjE0NTUxNzBk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTI2
MCw3ICsyNjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5kZXJidWZmZXJT
dG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIDo6Z2xSZW5kZXJidWZm
ZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRl
Z2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgLy8g
TmVlZCB0byBlbXVsYXRlIE1BWF9GUkFHTUVOVC9WRVJURVhfVU5JRk9STV9WRUNUT1JTIGFuZCBN
QVhfVkFSWUlOR19WRUNUT1JTCiAgICAgLy8gYmVjYXVzZSBkZXNrdG9wIEdMJ3MgY29ycmVzcG9u
ZGluZyBxdWVyaWVzIHJldHVybiB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMKQEAgLTI3Miw0NiAr
MjcyLDQ2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAjaWYgVVNF
KE9QRU5HTCkKICAgICBjYXNlIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAg
IDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1
ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01Q
T05FTlRTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJ
bnRlZ2VydihHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOworICAgICAg
ICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMsIHZhbHVl
LmRhdGEpOwogICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
QVhfVkFSWUlOR19WRUNUT1JTOgogICAgICAgICBpZiAoaXNHTEVTMkNvbXBsaWFudCgpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoOjpnbEdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOwotICAgICAg
ICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsIHZhbHVlKTsKKyAg
ICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCB2YWx1ZS5k
YXRhKTsKICAgICAgICAgICAgIGlmICg6OmdsR2V0RXJyb3IoKSA9PSBHTF9JTlZBTElEX0VOVU0p
IHsKLSAgICAgICAgICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfQ09NUE9O
RU5UUywgdmFsdWUpOworICAgICAgICAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFS
WUlOR19DT01QT05FTlRTLCB2YWx1ZS5kYXRhKTsKICAgICAgICAgICAgICAgICAqdmFsdWUgLz0g
NDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIDo6Z2xHZXRJ
bnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlKTsKKyAgICAgICAgICAgIDo6Z2xH
ZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19GTE9BVFMsIHZhbHVlLmRhdGEpOwogICAgICAgICAg
ICAgKnZhbHVlIC89IDQ7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBj
YXNlIE1BWF9URVhUVVJFX1NJWkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVS
RV9TSVpFLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpF
LCB2YWx1ZS5kYXRhKTsKICAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3Ry
aWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkKICAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWlu
KDQwOTYsICp2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX0NVQkVfTUFQX1RF
WFRVUkVfU0laRToKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJF
X1NJWkUsIHZhbHVlKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhU
VVJFX1NJWkUsIHZhbHVlLmRhdGEpOwogICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVp
cmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAgICAgICAgICAgKnZhbHVlID0g
c3RkOjptaW4oMTAyNCwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAg
ICAgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIDo6Z2xHZXRJbnRl
Z2VydihwbmFtZSwgdmFsdWUuZGF0YSk7CiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwg
R0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lv
bikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclByZWNpc2lvbkZvcm1h
dChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxH
Q0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQogewogICAgIFVOVVNFRF9QQVJB
TShzaGFkZXJUeXBlKTsKLSAgICBBU1NFUlQocmFuZ2UpOworICAgIEFTU0VSVChyYW5nZS5kYXRh
KTsKICAgICBBU1NFUlQocHJlY2lzaW9uKTsKIAogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRl
eCBiMGMxZjFkZmQ0M2Q0MTUwNDI3ZmY1MjFhY2Y2ODQzNjI3MjQwMDVhLi5hYmI3ZTI1YTA2ZjA4
NWNjZWFjZmY1YWI2ZTgyMDQ1N2NlOWEyZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTE3MTcsODEgKzE3MTcsNzUgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJy
YXkpCiAjZW5kaWYKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Qm9vbGVh
bnYoR0NHTGVudW0gcG5hbWUsIEdDR0xib29sZWFuKiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9v
bGVhbj4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdl
dEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7Cisg
ICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICA6OmdsR2V0QnVmZmVy
UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgIDo6Z2xHZXRCdWZmZXJQYXJh
bWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMZmxvYXQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RmxvYXR2
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRGbG9h
dHYocG5hbWUsIHZhbHVlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
SW50ZWdlcmlfdihHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQqIHZhbHVl
KQotewotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsK
LSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAq
dmFsdWUgPSAwOwotICAgIC8vIEZJWE1FIDE0MTE3ODogQmVmb3JlIGVuYWJsaW5nIHRoaXMgd2Ug
bXVzdCBmaXJzdCBzd2l0Y2ggb3ZlciB0byB1c2luZyBnbDMuaCBhbmQgY3JlYXRpbmcgYW5kIGlu
aXRpYWxpbmcgdGhlIFdlYkdMMiBjb250ZXh0IHVzaW5nIE9wZW5HTCBFUyAzLjAuCi0gICAgLy8g
OjpnbEdldEludGVnZXJpX3YocG5hbWUsIGluZGV4LCB2YWx1ZSk7CisgICAgOjpnbEdldEZsb2F0
dihwbmFtZSwgdmFsdWUuZGF0YSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEludGVnZXI2NHYoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQ2NCogdmFsdWUpCitHQ0dMaW50
NjQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkK
IHsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAqdmFsdWUgPSAw
OworICAgIEdDR0xpbnQ2NCB2YWx1ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUg
ZW5hYmxpbmcgdGhpcyB3ZSBtdXN0IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFu
ZCBjcmVhdGluZyBhbmQgaW5pdGlhbGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdM
IEVTIDMuMC4KICAgICAvLyA6OmdsR2V0SW50ZWdlcjY0dihwbmFtZSwgdmFsdWUpOworICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdl
cjY0aV92KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludDY0KiB2YWx1ZSkK
K0dDR0xpbnQ2NCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51
bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKICAg
ICBVTlVTRURfUEFSQU0oaW5kZXgpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAqdmFsdWUgPSAwOworICAg
IEdDR0xpbnQ2NCB2YWx1ZSA9IDA7CiAgICAgLy8gRklYTUUgMTQxMTc4OiBCZWZvcmUgZW5hYmxp
bmcgdGhpcyB3ZSBtdXN0IGZpcnN0IHN3aXRjaCBvdmVyIHRvIHVzaW5nIGdsMy5oIGFuZCBjcmVh
dGluZyBhbmQgaW5pdGlhbGluZyB0aGUgV2ViR0wyIGNvbnRleHQgdXNpbmcgT3BlbkdMIEVTIDMu
MC4KICAgICAvLyA6OmdsR2V0SW50ZWdlcjY0aV92KHBuYW1lLCBpbmRleCwgdmFsdWUpOworICAg
IHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCiB7Cisg
ICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChhdHRhY2htZW50ID09
IERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkKICAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FU
VEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgotICAgIDo6
Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1l
bnQsIHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaXYo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
CitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3Jh
bSwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgR0NHTGludCB2YWx1ZSA9
IDA7CisgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgJnZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1
aWx0SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKQEAgLTE4OTksMjAgKzE4OTMsMjEgQEAgU3RyaW5nIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0pCiAgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQs
IFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgOjpnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsICZ2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTaGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVy
aShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgQVNTRVJU
KHNoYWRlcik7Ci0KKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogCiAg
ICAgY29uc3QgYXV0byYgcmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwpA
QCAtMTkyMCwyOCArMTkxNSwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
aGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbQogICAgIHN3aXRj
aCAocG5hbWUpIHsKICAgICBjYXNlIERFTEVURV9TVEFUVVM6CiAgICAgY2FzZSBTSEFERVJfVFlQ
RToKLSAgICAgICAgOjpnbEdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAg
ICAgOjpnbEdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ09NUElMRV9TVEFUVVM6Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbV9zaGFk
ZXJTb3VyY2VNYXAuZW5kKCkpIHsKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PGlu
dD4oZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgICp2YWx1
ZSA9IHN0YXRpY19jYXN0PGludD4ocmVzdWx0LT52YWx1ZS5pc1ZhbGlkKTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKKyAgICAgICAgICAgIHZhbHVlID0g
c3RhdGljX2Nhc3Q8aW50PihyZXN1bHQtPnZhbHVlLmlzVmFsaWQpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIElORk9fTE9HX0xFTkdUSDoKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBtX3NoYWRl
clNvdXJjZU1hcC5lbmQoKSkgewotICAgICAgICAgICAgKnZhbHVlID0gMDsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAqdmFsdWUgPSBnZXRTaGFkZXJJbmZvTG9nKHNo
YWRlcikubGVuZ3RoKCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gbV9zaGFkZXJTb3VyY2VNYXAu
ZW5kKCkpCisgICAgICAgICAgICB2YWx1ZSA9IGdldFNoYWRlckluZm9Mb2coc2hhZGVyKS5sZW5n
dGgoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTSEFERVJfU09VUkNFX0xFTkdUSDoKLSAg
ICAgICAgKnZhbHVlID0gZ2V0U2hhZGVyU291cmNlKHNoYWRlcikubGVuZ3RoKCk7CisgICAgICAg
IHZhbHVlID0gZ2V0U2hhZGVyU291cmNlKHNoYWRlcikubGVuZ3RoKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElOVkFMSURfRU5VTSk7
CiAgICAgfQorICAgIHJldHVybiB2YWx1ZTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpAQCAtMTk4
NiwzOSArMTk3Niw0MSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRl
clNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKICAgICByZXR1cm4gcmVzdWx0LT52YWx1
ZS5zb3VyY2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFt
ZXRlcmZ2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUp
CitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRleFBhcmFtZXRlcmYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUgPSAw
LmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAm
dmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUZXhQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQs
IHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpnbEdldFVuaWZvcm1mdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIDo6Z2xHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlLmRhdGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1p
dihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdD
R0xpbnQ+IHZhbHVlKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVl
KTsKKyAgICA6OmdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5kYXRhKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
CkBAIC0yMDM3LDIwICsyMDI5LDIwIEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0
dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVkTmFtZS51dGY4KCkuZGF0
YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmli
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRW
ZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICA6OmdsR2V0VmVydGV4QXR0
cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUp
OworICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlLmRhdGEpOwog
fQogCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJp
Yk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCkBAIC0zMTQzLDYgKzMxMzUs
MTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQp
OwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxv
Y2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBVTlVTRURfUEFSQU0o
cHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICBVTlVT
RURfUEFSQU0ocG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOworfQogCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA2MGZkZmM2NWY4NzM5
NTg5NTc5NWE4NGVmMWUwOWFiZjZkN2FhODQzLi5hMWQ4MDkyYmNjYWUwMDhkNmU2OWU4Y2Q4ZjZk
ZGZiMTdhY2FmMDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3Bw
CkBAIC0xOTYsMjMgKzE5NiwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZW5k
ZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZQogICAgIDo6Z2xS
ZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51
bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgOjpn
bEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2
YWx1ZS5kYXRhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5
cGUsIEdDR0xpbnQqIHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlw
ZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdD
R0xpbnQqIHByZWNpc2lvbikKIHsKLSAgICBBU1NFUlQocmFuZ2UpOworICAgIEFTU0VSVChyYW5n
ZS5kYXRhKTsKICAgICBBU1NFUlQocHJlY2lzaW9uKTsKIAogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Z2xHZXRTaGFkZXJQcmVjaXNpb25G
b3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsIHByZWNpc2lvbik7CisgICAg
OjpnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCBy
YW5nZS5kYXRhLCBwcmVjaXNpb24pOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxz
KQpAQCAtMzMwLDE4ICszMzAsMTkgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBTaEJ1
aWx0SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXM7CiAgICAgU2hJbml0QnVpbHRJblJlc291cmNl
cygmQU5HTEVSZXNvdXJjZXMpOwogICAgIAotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpNQVhfVkVSVEVYX0FUVFJJQlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhB
dHRyaWJzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZF
UlRFWF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVj
dG9ycyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WQVJZ
SU5HX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7Ci0gICAgZ2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFH
RV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAg
ICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRV
UkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVu
aXRzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1RFWFRV
UkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0g
ICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9GUkFHTUVOVF9VTklG
T1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKTsK
KyAgICA6OmdsR2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhf
QVRUUklCUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMpOworICAgIDo6Z2xHZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RP
UlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7CisgICAgOjpnbEdl
dEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTLCAm
QU5HTEVSZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMpOworICAgIDo6Z2xHZXRJbnRlZ2VydihH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAm
QU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIDo6Z2xHZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1B
R0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsK
KyAgICA6OmdsR2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJF
X0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMpOworICAg
IDo6Z2xHZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0ZSQUdNRU5UX1VO
SUZPUk1fVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMp
OwogICAgIAogICAgIC8vIEFsd2F5cyBzZXQgdG8gMSBmb3IgT3BlbkdMIEVTLgogICAgIEFOR0xF
UmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gMTsKICAgICAKLSAgICBHQ0dMaW50IHJhbmdlWzJd
LCBwcmVjaXNpb247CisgICAgR0NHTGludCByYW5nZVsyXSB7IH07CisgICAgR0NHTGludCBwcmVj
aXNpb24gPSAwOwogICAgIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6RlJBR01FTlRfU0hBREVSLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6SElHSF9G
TE9BVCwgcmFuZ2UsICZwcmVjaXNpb24pOwogICAgIEFOR0xFUmVzb3VyY2VzLkZyYWdtZW50UHJl
Y2lzaW9uSGlnaCA9IChyYW5nZVswXSB8fCByYW5nZVsxXSB8fCBwcmVjaXNpb24pOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA4
OWQxNGQyOTU2YjcyZmE0MmVlOTgzNjJhYjgwZDJiYjMwYWIzZWQyLi42ODBhNTI5ZDY3NWRkNjFi
OThjZWU4YTM5ZjE0MTVmNzkzMGI4ZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMjg5LDggKzI4OSw3IEBAIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0CiAgICAgICAgIC8vIEZyb20gdmVyc2lvbiAzLjIgb24gd2UgdXNlIHRoZSBPcGVu
R0wgQ29yZSBwcm9maWxlLCBhbmQgd2UgbmVlZCBhIFZBTyBmb3IgcmVuZGVyaW5nLgogICAgICAg
ICAvLyBBIFZBTyBjb3VsZCBiZSBjcmVhdGVkIGFuZCBib3VuZCBieSBlYWNoIGNvbXBvbmVudCB1
c2luZyBHTCByZW5kZXJpbmcgKFRleHR1cmVNYXBwZXIsIFdlYkdMLCBldGMpLiBUaGlzIGlzCiAg
ICAgICAgIC8vIGEgc2ltcGxlciBzb2x1dGlvbjogdGhlIGZpcnN0IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMIGNyZWF0ZWQgb24gYSBHTENvbnRleHQgd2lsbCBjcmVhdGUgYW5kIGJpbmQgYSBWQU8g
Zm9yIHRoYXQgY29udGV4dC4KLSAgICAgICAgR0NHTGludCBjdXJyZW50VkFPID0gMDsKLSAgICAg
ICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlZFUlRFWF9BUlJBWV9CSU5E
SU5HLCAmY3VycmVudFZBTyk7CisgICAgICAgIEdDR0xpbnQgY3VycmVudFZBTyA9IGdldEludGVn
ZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlZFUlRFWF9BUlJBWV9CSU5ESU5HKTsKICAgICAg
ICAgaWYgKCFjdXJyZW50VkFPKSB7CiAgICAgICAgICAgICBtX3ZhbyA9IGNyZWF0ZVZlcnRleEFy
cmF5KCk7CiAgICAgICAgICAgICBiaW5kVmVydGV4QXJyYXkobV92YW8pOwpAQCAtMzExLDE4ICsz
MTAsMTkgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMg
QU5HTEVSZXNvdXJjZXM7CiAgICAgc2g6OkluaXRCdWlsdEluUmVzb3VyY2VzKCZBTkdMRVJlc291
cmNlcyk7CiAKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX1ZF
UlRFWF9BVFRSSUJTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyk7Ci0gICAgZ2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNU
T1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOwotICAgIGdldElu
dGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JTLCAmQU5H
TEVSZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJl
c291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAm
QU5HTEVSZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAm
QU5HTEVSZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMpOwotICAgIGdldEludGVnZXJ2KEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmQU5H
TEVSZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk7CisgICAgQU5HTEVSZXNvdXJj
ZXMuTWF4VmVydGV4QXR0cmlicyA9IGdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
Ok1BWF9WRVJURVhfQVRUUklCUyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9y
bVZlY3RvcnMgPSBnZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkVSVEVY
X1VOSUZPUk1fVkVDVE9SUyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMg
PSBnZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpNQVhfVkFSWUlOR19WRUNUT1JT
KTsKKyAgICBBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA9IGdldElu
dGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9V
TklUUyk7CisgICAgQU5HTEVSZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9
IGdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9DT01CSU5FRF9URVhUVVJF
X0lNQUdFX1VOSVRTKTsKKyAgICBBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyA9
IGdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Ok1BWF9URVhUVVJFX0lNQUdFX1VO
SVRTKTsKKyAgICBBTkdMRVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0gZ2V0
SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVD
VE9SUyk7CiAKICAgICAvLyBBbHdheXMgc2V0IHRvIDEgZm9yIE9wZW5HTCBFUy4KICAgICBBTkdM
RVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IDE7CiAKLSAgICBHQ0dMaW50IHJhbmdlWzJdLCBw
cmVjaXNpb247CisgICAgR0NHTGludCByYW5nZVsyXSB7IH07CisgICAgR0NHTGludCBwcmVjaXNp
b24gPSAwOwogICAgIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6RlJBR01FTlRfU0hBREVSLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6SElHSF9GTE9B
VCwgcmFuZ2UsICZwcmVjaXNpb24pOwogICAgIEFOR0xFUmVzb3VyY2VzLkZyYWdtZW50UHJlY2lz
aW9uSGlnaCA9IChyYW5nZVswXSB8fCByYW5nZVsxXSB8fCBwcmVjaXNpb24pOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>