<?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>103705</bug_id>
          
          <creation_ts>2012-11-29 18:39:11 -0800</creation_ts>
          <short_desc>Add infrastructure for :before and :after in DOM</short_desc>
          <delta_ts>2012-12-05 13:01:57 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>95117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Elliott Sprehn">esprehn</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>779733</commentid>
    <comment_count>0</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-29 18:39:11 -0800</bug_when>
    <thetext>Add all supporting infrastructure for generated content in the DOM without actually removing the old generated content support so we can land a tiny patch later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779737</commentid>
    <comment_count>1</comment_count>
      <attachid>176883</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-29 18:48:53 -0800</bug_when>
    <thetext>Created attachment 176883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780571</commentid>
    <comment_count>2</comment_count>
      <attachid>176883</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-30 17:22:54 -0800</bug_when>
    <thetext>Comment on attachment 176883
Patch

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

The direction is good, some comments.

&gt; Source/WebCore/dom/Element.cpp:195
&gt; +    }

I would have thought detach would have been called before or at least during (see Node::~Node) destruction. Is this really needed or am I missing something?

&gt; Source/WebCore/dom/Element.cpp:2098
&gt; +        if (element-&gt;renderer())
&gt; +            ensureElementRareData()-&gt;setPseudoElement(pseudoId, element.release());
&gt; +        else {
&gt; +            // If attach did not create a renderer then clear the parent so the element
&gt; +            // will be freed when this method returns.
&gt; +            element-&gt;setParentOrHostNode(0);
&gt; +        }

createPseudoElementIfNeeded calls pseudoElementRendererIsNeeded which is common with PseudoElement::rendererIsNeeded so aren&apos;t we guaranteed to have a renderer in this case?

&gt; Source/WebCore/dom/Element.cpp:2111
&gt; +    // FIXME: Disallow generated content on things with a shadow until the spec says what to do.
&gt; +    // http://webkit.org/b/98836

Mhh, are we sure this won&apos;t break everything? Couldn&apos;t we postpone this change to after the migration as this could be - and has been - disrupting?

&gt; Source/WebCore/dom/Element.h:500
&gt; +    void updatePseudoElement(PseudoId, StyleChange = NoChange);

Do we really need a default parameter for the second argument?

&gt; Source/WebCore/dom/ElementRareData.h:155
&gt; +    element-&gt;setParentOrHostNode(0);

We should probably ASSERT that element has no siblings or all bets are off.

&gt; Source/WebCore/dom/ElementRareData.h:161
&gt; +    }

As discussed it would be nicer if we stored a strong reference on the pointer, just sever the parent link, detachIfNeeded and deref here.

&gt; Source/WebCore/dom/Node.h:758
&gt; +    virtual PseudoId customPseudoId() const { return NOPSEUDO; }

You should probably add ASSERT(hasCustomCallback()) as we don&apos;t want to start calling this function for no good reason.

&gt; Source/WebCore/dom/PseudoElement.cpp:80
&gt; +    return pseudoElementRendererIsNeeded(context.style());

Ideally this should always return true (and ASSERT) as we would rather avoid keeping PseudoElements around when they are not needed.

&gt; Source/WebCore/rendering/RenderGrid.cpp:234
&gt; +    // FIXME: Temporary hack while the new generated content system is being implemented.
&gt; +    if (isPseudoElement())
&gt; +        return &quot;RenderGrid (generated)&quot;;

This is unneeded as we don&apos;t have test covering grid + generated content. I hope you finished this code before we actually do though :)

&gt; Source/WebCore/rendering/RenderObject.cpp:1759
&gt; +void RenderObject::setPseudoStyle(PassRefPtr&lt;RenderStyle&gt; pseudoStyle)

What&apos;s the long term plan about this function? As-is this function doesn&apos;t add much and it obfuscates the call sites as all but one will just do a straight setStyle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780584</commentid>
    <comment_count>3</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-30 17:41:29 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 176883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176883&amp;action=review
&gt; 
&gt; The direction is good, some comments.
&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:195
&gt; &gt; +    }
&gt; 
&gt; I would have thought detach would have been called before or at least during (see Node::~Node) destruction. Is this really needed or am I missing something?

The order is wrong, we blow away the RareData first, and then call detach() in ~Node. That&apos;s the same reason we have manual clean up logic for ElementShadow below.

&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:2098
&gt; &gt; +        if (element-&gt;renderer())
&gt; &gt; +            ensureElementRareData()-&gt;setPseudoElement(pseudoId, element.release());
&gt; &gt; +        else {
&gt; &gt; +            // If attach did not create a renderer then clear the parent so the element
&gt; &gt; +            // will be freed when this method returns.
&gt; &gt; +            element-&gt;setParentOrHostNode(0);
&gt; &gt; +        }
&gt; 
&gt; createPseudoElementIfNeeded calls pseudoElementRendererIsNeeded which is common with PseudoElement::rendererIsNeeded so aren&apos;t we guaranteed to have a renderer in this case?

No, because isChildAllowed can return false and even though rendererIsNeeded returns true we&apos;ll end up without a renderer, see NodeRenderingContext::createRendererForElementIfNeeded. This is super rare so we could just let the PseudoElement exist in those cases to make this code shorter (my original patch was like this).

&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:2111
&gt; &gt; +    // FIXME: Disallow generated content on things with a shadow until the spec says what to do.
&gt; &gt; +    // http://webkit.org/b/98836
&gt; 
&gt; Mhh, are we sure this won&apos;t break everything? Couldn&apos;t we postpone this change to after the migration as this could be - and has been - disrupting?

It would break everything, but this patch doesn&apos;t enable any of the new stuff so it doesn&apos;t matter. I can leave this out I guess.

&gt; 
&gt; &gt; Source/WebCore/dom/Element.h:500
&gt; &gt; +    void updatePseudoElement(PseudoId, StyleChange = NoChange);
&gt; 
&gt; Do we really need a default parameter for the second argument?

Yes, see the original patch this was lifted out of. We need to call updatePseudoElement(BEFORE) and updatePseudoElement(AFTER) inside of ::attach(). It seemed really weird to require passing NoChange there.

&gt; 
&gt; &gt; Source/WebCore/dom/PseudoElement.cpp:80
&gt; &gt; +    return pseudoElementRendererIsNeeded(context.style());
&gt; 
&gt; Ideally this should always return true (and ASSERT) as we would rather avoid keeping PseudoElements around when they are not needed.

You can&apos;t just return true because during a style recalc we&apos;re going to call this method in recalcStyle() when it goes through ::reattach() and we need the same logic so when you go from content: &quot;foo&quot; to content: none we get no renderer.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderObject.cpp:1759
&gt; &gt; +void RenderObject::setPseudoStyle(PassRefPtr&lt;RenderStyle&gt; pseudoStyle)
&gt; 
&gt; What&apos;s the long term plan about this function? As-is this function doesn&apos;t add much and it obfuscates the call sites as all but one will just do a straight setStyle.

We would need to duplicate the setPseudoStyle logic in ImageContentData::createRenderer and also in PseudoElement::didRecalcStyle. This method abstracts the special handling for pseudo styles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782219</commentid>
    <comment_count>4</comment_count>
      <attachid>176883</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-03 22:08:19 -0800</bug_when>
    <thetext>Comment on attachment 176883
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/Element.cpp:2098
&gt;&gt;&gt; +        }
&gt;&gt; 
&gt;&gt; createPseudoElementIfNeeded calls pseudoElementRendererIsNeeded which is common with PseudoElement::rendererIsNeeded so aren&apos;t we guaranteed to have a renderer in this case?
&gt; 
&gt; No, because isChildAllowed can return false and even though rendererIsNeeded returns true we&apos;ll end up without a renderer, see NodeRenderingContext::createRendererForElementIfNeeded. This is super rare so we could just let the PseudoElement exist in those cases to make this code shorter (my original patch was like this).

After thinking about this it&apos;s actually better to leave those really rare render-less PseudoElement&apos;s that occur after attach() in the tree and change the above check from if (!existing-&gt;renderer()) to if (!pseudoElementRendererIsNeeded(existing-&gt;renderStyle())) so we don&apos;t have pseudo element churn. Without that doing something like frameset:before { content: &quot;x&quot;; } could cause us to create and destroy the PseudoElement repeatedly on style changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782225</commentid>
    <comment_count>5</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-03 22:13:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 176883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176883&amp;action=review
&gt; 
&gt; ... if (!existing-&gt;renderer()) to if (!pseudoElementRendererIsNeeded(existing-&gt;renderStyle())) ..

Err that&apos;s actually pseudoElementRendererIsNeeded(renderer()-&gt;getCachedPseudoStyle(pseudoId))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782230</commentid>
    <comment_count>6</comment_count>
      <attachid>177418</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-03 22:37:19 -0800</bug_when>
    <thetext>Created attachment 177418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782232</commentid>
    <comment_count>7</comment_count>
      <attachid>177418</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-03 22:46:23 -0800</bug_when>
    <thetext>Comment on attachment 177418
Patch

Attachment 177418 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15098900</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782233</commentid>
    <comment_count>8</comment_count>
      <attachid>177418</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-03 22:46:26 -0800</bug_when>
    <thetext>Comment on attachment 177418
Patch

Attachment 177418 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15119657</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782234</commentid>
    <comment_count>9</comment_count>
      <attachid>177418</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-03 22:46:34 -0800</bug_when>
    <thetext>Comment on attachment 177418
Patch

Attachment 177418 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15121608</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782235</commentid>
    <comment_count>10</comment_count>
      <attachid>177419</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-03 22:54:35 -0800</bug_when>
    <thetext>Created attachment 177419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784002</commentid>
    <comment_count>11</comment_count>
      <attachid>177419</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-05 12:41:00 -0800</bug_when>
    <thetext>Comment on attachment 177419
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784031</commentid>
    <comment_count>12</comment_count>
      <attachid>177419</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 13:01:50 -0800</bug_when>
    <thetext>Comment on attachment 177419
Patch

Clearing flags on attachment: 177419

Committed r136744: &lt;http://trac.webkit.org/changeset/136744&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784032</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 13:01:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176883</attachid>
            <date>2012-11-29 18:48:53 -0800</date>
            <delta_ts>2012-12-03 22:37:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103705-20121129184626.patch</filename>
            <type>text/plain</type>
            <size>57038</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4ZTU0ZTk5ZDRjYzI3
NDU4ZjBmNjgzZDI5NzMxNTFjY2IxZWVjYS4uZGJlNDAwMjVmZDM4NDI2N2EzN2VmM2UzYjE3Nzdl
OTQ1MjMwOTVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAxMi0xMS0yOSAgRWxs
aW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgZm9yIDpiZWZvcmUgYW5kIDphZnRlciBpbiBET00KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzcwNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbGwgaW5mcmFzdHJ1Y3R1cmUgZm9y
IHJlaW1wbGVtZW50aW5nIGdlbmVyYXRlZCBjb250ZW50IDpiZWZvcmUgYW5kCisgICAgICAgIDph
ZnRlciBhcyBET00gRWxlbWVudHMuIE5vdyBFbGVtZW50UmFyZURhdGEgaGFzIHR3byBwb2ludGVy
cyB0byBQc2V1ZG9FbGVtZW50cworICAgICAgICBmb3IgdGhlIGdlbmVyYXRlZCBjb250ZW50IGFu
ZCBOb2RlIGhhcyBtZXRob2RzIGZvciB0cmF2ZXJzaW5nIHRoZSB0cmVlCisgICAgICAgIGluY2x1
ZGluZyBnZW5lcmF0ZWQgY29udGVudC4KKworICAgICAgICBUaGlzIHdpbGwgYWxsb3cgdGhlIGdl
bmVyYXRlZCBjb250ZW50IHRvIGJlIHRyZWF0ZWQgYXMgcmVhbCBub2RlcyBpbnN0ZWFkCisgICAg
ICAgIG9mIGFub255bW91cyBhbmQgdGFrZSBwYXJ0IGluIHRoZSB1c3VhbCByZWNhbGNTdHlsZSBh
bmQgYXR0YWNoIGZsb3cgd2hpY2gKKyAgICAgICAgZml4ZXMgbWFueSBidWdzIGFuZCB2YXN0bHkg
c2ltcGxpZmllcyB0aGUgaWZlY3ljbGUgb2YgZ2VuZXJhdGVkIGNvbnRlbnQuCisKKyAgICAgICAg
SW5zdGVhZCBvZiBhdHRlbXB0aW5nIHRvIGxhbmQgYm90aCB0aGUgaW5mcmFzdHJ1Y3R1cmUgYW5k
IGVuYWJsZSBpdCBhdAorICAgICAgICB0aGUgc2FtZSB0aW1lIHdoaWNoIGhhcyBwcm92ZW4gcHJv
YmxlbWF0aWMgZHVlIHRvIGhvdyBkcmFzdGljIHRoaXMgY2hhbmdlCisgICAgICAgIGlzLCB0aGlz
IHBhdGNoIGNvbnRhaW5zIG9ubHkgdGhlIHN1cHBvcnQgY29kZSBzbyBhIG11Y2ggc21hbGxlciBm
dXR1cmUKKyAgICAgICAgcGF0Y2ggY2FuIGJlIHVzZWQgdG8gc3dpdGNoIGl0IG9uLgorCisgICAg
ICAgIE5vIG5ldyBiZWhhdmlvciwgdGhpcyBpcyBqdXN0IHRoZSBpbmZyYXN0cnVjdHVyZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6fkVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Y3JlYXRlUHNldWRvRWxlbWVudElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmJlZm9yZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6YWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAo
RWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6RWxl
bWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6fkVsZW1l
bnRSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldFBzZXVk
b0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpwc2V1ZG9FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6cmVsZWFzZVBzZXVkb0Vs
ZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBz
ZXVkb0F3YXJlTmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyZXJJ
c0VkaXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQWNjZXB0Q2hpbGQpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmlzUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0JlZm9yZVBzZXVk
b0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNBZnRlclBzZXVkb0VsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6Y3VzdG9tUHNldWRvSWQpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRl
cmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1Jl
bmRlcmVyKToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2VuZGFudHNXaXRoSGVpZ2h0KToK
KyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVu
dDo6UHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpjdXN0
b21TdHlsZUZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OmF0
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OnVwZGF0ZUNoaWxkU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUpOgorICAgICAg
ICAqIGRvbS9Qc2V1ZG9FbGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoUHNldWRvRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6cHNldWRvRWxlbWVudElzTmVlZGVkKToKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVf
dW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5UHJldmlvdXNCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6bG9naWNhbGx5TmV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpzdGFy
dFBvc2l0aW9uRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjplbmRQb3NpdGlvbkZvckxpbmUp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6OnNldElubmVyTm9uU2hhcmVkTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppc1NlbGVjdGlvblJv
b3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlbmRlck5hbWUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckNvdW50ZXI6Om9yaWdpbmFsVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3g6OnJlbmRlck5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlbmRlck5hbWUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW5saW5lOjpyZW5kZXJOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5CbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkJsb2NrOjpy
ZW5kZXJOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6c2V0UHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNQc2V1ZG9F
bGVtZW50KToKKyAgICAgICAgKFJlbmRlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmdlbmVyYXRpbmdOb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnJlbmRlck5hbWUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGVSb3c6OnJlbmRlck5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6
cmVuZGVyTmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUNvbnRlbnREYXRhOjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Q29udGVudERhdGE6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
dW50ZXJDb250ZW50RGF0YTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVv
dGVDb250ZW50RGF0YTo6Y3JlYXRlUmVuZGVyZXIpOgorCiAyMDEyLTExLTI5ICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG9w
dGltaXplIHJlcGFpbnQgcmVnaW9ucyB1cG9uIHRleHQgZWRpdGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBiNDBiNGFkNWZkMzA3ZGQ3NTM3MjE5MDc0MDNkNGFmNzNiNmM1NjMxLi45YWQ4NmYx
MTI2MGUzZTQwNGUxNzk4M2I0N2ZhYjVjNjZmZjZhYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTIwMSw2ICsxMjAxLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwCiAgICAgZG9tL1Byb2dyZXNzRXZlbnQuY3BwCiAgICAgZG9tL1By
b3BlcnR5Tm9kZUxpc3QuY3BwCisgICAgZG9tL1BzZXVkb0VsZW1lbnQuY3BwCiAgICAgZG9tL1F1
YWxpZmllZE5hbWUuY3BwCiAgICAgZG9tL1JhbmdlLmNwcAogICAgIGRvbS9SYW5nZUV4Y2VwdGlv
bi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDA2N2M3MWM1ZDA4MzQxYmZm
ZDE1OTg3YjAyNmMwODI0ZWVhMjI0YjQuLjUzZDc0YzllMGM5ZTQyMTEzMWZlMTFmOGU5OTk0Nzk4
NWI4YmU2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjg5Nyw2ICsyODk3
LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NF
dmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUHJvcGVydHlOb2RlTGlzdC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9wZXJ0eU5vZGVMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2Rv
bS9Qc2V1ZG9FbGVtZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3Vu
ZGFyeVBvaW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMmQ0MGFkMGJkMjY1ZDg3NzVjYWY2ZmM4OGQ1
NTMzZDQxNmUzMTc5Mi4uZjgyMDM4OTYxYTAzOWU1OTQxYTQ1ZThkMDFlM2YyNTExNDY0MjAwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCkBAIC00NDAsNiArNDQwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgXAogICAgIGRvbS9Qcm9ncmVzc0V2ZW50LmNwcCBcCiAg
ICAgZG9tL1Byb3BlcnR5Tm9kZUxpc3QuY3BwIFwKKyAgICBkb20vUHNldWRvRWxlbWVudC5jcHAg
XAogICAgIGRvbS9RdWFsaWZpZWROYW1lLmNwcCBcCiAgICAgZG9tL1JhbmdlLmNwcCBcCiAgICAg
ZG9tL1JhbmdlRXhjZXB0aW9uLmNwcCBcCkBAIC0xNjEzLDYgKzE2MTQsNyBAQCBIRUFERVJTICs9
IFwKICAgICBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggXAogICAgIGRvbS9Qcm9ncmVzc0V2
ZW50LmggXAogICAgIGRvbS9Qcm9wZXJ0eU5vZGVMaXN0LmggXAorICAgIGRvbS9Qc2V1ZG9FbGVt
ZW50LmggXAogICAgIGRvbS9RdWFsaWZpZWROYW1lLmggXAogICAgIGRvbS9SYW5nZS5oIFwKICAg
ICBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDYy
NWMxZWZhMWY5YmE1OTEyZmY5NzE4NDM3M2IwYWEyMDI2YjhjMy4uNTE4NTQ5Y2IxNjc1ODliMWVk
ODk5NGU4ZmVkMmEzMjVlZTNjMjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjgzLDYgKzY4Myw3
IEBACiAgICAgICAgICAgICAnZG9tL05vZGVMaXN0LmgnLAogICAgICAgICAgICAgJ2RvbS9QZW5k
aW5nU2NyaXB0LmgnLAogICAgICAgICAgICAgJ2RvbS9Qb3NpdGlvbi5oJywKKyAgICAgICAgICAg
ICdkb20vUHNldWRvRWxlbWVudC5oJywKICAgICAgICAgICAgICdkb20vUXVhbGlmaWVkTmFtZS5o
JywKICAgICAgICAgICAgICdkb20vUmFuZ2UuaCcsCiAgICAgICAgICAgICAnZG9tL1JhbmdlQm91
bmRhcnlQb2ludC5oJywKQEAgLTM5MDcsNiArMzkwOCw3IEBACiAgICAgICAgICAgICAnZG9tL1By
b2dyZXNzRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL1Byb3BlcnR5Tm9kZUxpc3QuY3BwJywK
ICAgICAgICAgICAgICdkb20vUHJvcGVydHlOb2RlTGlzdC5oJywKKyAgICAgICAgICAgICdkb20v
UHNldWRvRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9RdWFsaWZpZWROYW1lLmNwcCcs
CiAgICAgICAgICAgICAnZG9tL1JhbmdlLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1JhbmdlRXhj
ZXB0aW9uLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDkwNmJhMTYxMTYyYTBjOGZjZGM3N2I1YTZkOGMzYjhkNWVjMjhjZWEuLjc2NGFj
MTFiMjdjOTljNzdhOTQwOThiMDk1MDBmMWQ5NzRiN2RjMTcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01MzgyNiw2ICs1MzgyNiw2MiBAQAog
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXFBzZXVkb0VsZW1lbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFBzZXVkb0VsZW1lbnQuY3BwIgorCQkJCT4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21c
UHJvcGVydHlOb2RlTGlzdC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NDI3ODhhOGUyYmYx
MmFlNmE0NWRmNjgyODA2MWEwMmZiYTI5OWQyLi5lODkwMzc2NTM5NGJhNDhhMzBmODczNTI1YmFk
ZDE4YjE3ZGI3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC02NjM1LDYgKzY2MzUsOCBAQAogCQlGRTgwREE2NjBFOUM0NzAz
MDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRp
b24uaCAqLzsgfTsKIAkJRkU4MERBNzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgw
REE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLzsgfTsKIAkJRkU4
MERBNzIwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1
IC8qIEpTUG9zaXRpb25FcnJvci5oICovOyB9OworCQlGRjk0NUVDQjE2MUY3RjM2MDA5NzFCQzgg
LyogUHNldWRvRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAg
Ki87IH07CisJCUZGOTQ1RUNDMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjk0NUVDQTE2MUY3
RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oICovOyB9OwogCQlGRkQ1Qjk3QTEzNUNDOTc4
MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFn
ZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi87IH07CiAJCUZGRDVCOTdCMTM1Q0M5NzgwMEQ1RTkyQSAv
KiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRkQ1Qjk3ODEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlT
dGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUZGRDg2RTc4MTVGOTU4MzYwMDA0NzIzMyAvKiBKU0RlcGVuZGVudFJldGFpbmVkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ4NkU3NzE1Rjk1ODM2
MDAwNDcyMzMgLyogSlNEZXBlbmRlbnRSZXRhaW5lZC5oICovOyB9OwpAQCAtMTQxNzAsNiArMTQx
NzIsOCBAQAogCQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlb3Bvc2l0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQb3Np
dGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERBNkUwRTlD
NDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZGOTQ1RUNBMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9F
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBzZXVkb0VsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkZENUI5NzcxMzVDQzk3ODAwRDVFOTJB
IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZGRDVCOTc4MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkZEODZFNzcxNUY5NTgzNjAwMDQ3MjMzIC8q
IEpTRGVwZW5kZW50UmV0YWluZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNEZXBlbmRlbnRSZXRhaW5lZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIw
OTIsNiArMjIwOTYsOCBAQAogCQkJCTEwNTk0NTk2MTVCNDJBOEUwMDREMzdGRCAvKiBQcm9wZXJ0
eU5vZGVMaXN0LmNwcCAqLywKIAkJCQkxMDU5NDU5ODE1QjQyQUEwMDA0RDM3RkQgLyogUHJvcGVy
dHlOb2RlTGlzdC5oICovLAogCQkJCTEwNTk0NTlBMTVCNDJBQzAwMDREMzdGRCAvKiBQcm9wZXJ0
eU5vZGVMaXN0LmlkbCAqLywKKwkJCQlGRjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRv
RWxlbWVudC5jcHAgKi8sCisJCQkJRkY5NDVFQ0ExNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0Vs
ZW1lbnQuaCAqLywKIAkJCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5jcHAgKi8sCiAJCQkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
aCAqLywKIAkJCQlGNTIzRDMwMzAyREU0NDc2MDE4NjM1Q0EgLyogUmFuZ2UuY3BwICovLApAQCAt
MjQ4OTYsNiArMjQ5MDIsNyBAQAogCQkJCTUxNEM3Njc1MENFOTIzQTEwMDdFRjNDRCAvKiBQcm90
ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTA1MjU2MTA1ODg3NDAwMENDOUU5
NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUY4RTExQTEy
NTY1OTI2MDAyMzBGRjcgLyogUHJveHlTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZGOTQ1
RUNDMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxMEZCMDg0QjE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTRENjg3NzkwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0UzM0NEMDExMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJp
b3JpdHkuaCBpbiBIZWFkZXJzICovLApAQCAtMjgxNjcsNiArMjgxNzQsNyBAQAogCQkJCTUxNEM3
Njc0MENFOTIzQTEwMDdFRjNDRCAvKiBQcm90ZWN0aW9uU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFGOEUxMzMxMjU2NUE0NDAwMjMwRkY3IC8qIFByb3h5U2VydmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRjhFMUMzMTI1NjczRTAwMDIzMEZGNyAvKiBQcm94eVNlcnZlckNGTmV0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZGOTQ1RUNCMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1
ZG9FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0RDY4Nzc3MEVEN0FFM0QwMDZFQTk3
OCAvKiBQdXJnZWFibGVCdWZmZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTUwQTBCQzkw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Mzc5RTM3MTYxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBmM2M2YWJkMzhhNzc1
ODY4OTJhMmYxNWQ5ZDNjZjZkMWYwYjQxMWNhLi41M2ExYWMzMmEyODQwOWFiOTgwMGQ4M2YzMjkw
MjlkYzI2MWNlNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xNTEs
NyArMTUxLDcgQEAgc3RhdGljIGlubGluZSBFeGNlcHRpb25Db2RlIGNoZWNrQWNjZXB0Q2hpbGQo
Q29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXcKICAgICBpZiAoIW5ld0NoaWxkKQog
ICAgICAgICByZXR1cm4gTk9UX0ZPVU5EX0VSUjsKIAotICAgIC8vIEdvZXMgY29tbW9uIGNhc2Fl
IGZhc3QgcGF0aCBpZiBwb3NzaWJsZS4KKyAgICAvLyBVc2UgY29tbW9uIGNhc2UgZmFzdCBwYXRo
IGlmIHBvc3NpYmxlLgogICAgIGlmICgobmV3Q2hpbGQtPmlzRWxlbWVudE5vZGUoKSB8fCBuZXdD
aGlsZC0+aXNUZXh0Tm9kZSgpKSAmJiBuZXdQYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkgewogICAg
ICAgICBBU1NFUlQoIW5ld1BhcmVudC0+aXNSZWFkT25seU5vZGUoKSk7CiAgICAgICAgIEFTU0VS
VCghbmV3UGFyZW50LT5pc0RvY3VtZW50VHlwZU5vZGUoKSk7CkBAIC0xNjEsNiArMTYxLDExIEBA
IHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uQ29kZSBjaGVja0FjY2VwdENoaWxkKENvbnRhaW5lck5v
ZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAg
IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgYnV0IGFsc28gcHJvdGVjdCByZWxlYXNlIGJ1
aWxkcyBmcm9tIHRyZWUgY29ycnVwdGlvbi4KKyAgICBBU1NFUlQoIW5ld0NoaWxkLT5pc1BzZXVk
b0VsZW1lbnQoKSk7CisgICAgaWYgKG5ld0NoaWxkLT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKKwogICAgIGlmIChuZXdQYXJlbnQtPmlz
UmVhZE9ubHlOb2RlKCkpCiAgICAgICAgIHJldHVybiBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9F
UlI7CiAgICAgaWYgKG5ld0NoaWxkLT5pbkRvY3VtZW50KCkgJiYgbmV3Q2hpbGQtPmlzRG9jdW1l
bnRUeXBlTm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggNTA2ZTI2N2Vh
YTI0NWQ5YzE0NzAwYzJkM2NkYTQxYzg2NzliMjI2YS4uYjYwYjBhZTQzNGVhM2ZmMzQ5Nzk3ZTkx
NTUyZWVkODEyNjdjN2RmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbElu
T25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC0xMTMs
NiArMTEzLDcgQEAKICNpbmNsdWRlICJQb3NpdGlvbkl0ZXJhdG9yLmNwcCIKICNpbmNsdWRlICJQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIgogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuY3BwIgor
I2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlJhbmdlLmNwcCIKICNpbmNs
dWRlICJSYW5nZUV4Y2VwdGlvbi5jcHAiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGI3ZDBlNTk5MzJkYTRjYjUwYThlM2Vk
YmRhMmUwNWExNzllNDFiN2UuLmNhNjZlOGVjMzAxMzFmMzNhMTVmNjE5ZTZlNmQ4ZmEwOThiMWI0
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJO
b2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQb2lu
dGVyTG9ja0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJl
bmRlcldpZGdldC5oIgpAQCAtMTg3LDYgKzE4OCwxMiBAQCBFbGVtZW50Ojp+RWxlbWVudCgpCiAg
ICAgfQogI2VuZGlmCiAKKyAgICBpZiAoaGFzUmFyZURhdGEoKSkgeworICAgICAgICBFbGVtZW50
UmFyZURhdGEqIGRhdGEgPSBlbGVtZW50UmFyZURhdGEoKTsKKyAgICAgICAgZGF0YS0+c2V0UHNl
dWRvRWxlbWVudChCRUZPUkUsIDApOworICAgICAgICBkYXRhLT5zZXRQc2V1ZG9FbGVtZW50KEFG
VEVSLCAwKTsKKyAgICB9CisKICAgICBpZiAoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdyA9
IHNoYWRvdygpKSB7CiAgICAgICAgIGVsZW1lbnRTaGFkb3ctPnJlbW92ZUFsbFNoYWRvd1Jvb3Rz
KCk7CiAgICAgICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5tX3NoYWRvdy5jbGVhcigpOwpAQCAtMTE5
Niw2ICsxMjAzLDggQEAgdm9pZCBFbGVtZW50OjpkZXRhY2goKQogICAgIGNhbmNlbEZvY3VzQXBw
ZWFyYW5jZVVwZGF0ZSgpOwogICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7CiAgICAgICAgIEVsZW1l
bnRSYXJlRGF0YSogZGF0YSA9IGVsZW1lbnRSYXJlRGF0YSgpOworICAgICAgICBkYXRhLT5zZXRQ
c2V1ZG9FbGVtZW50KEJFRk9SRSwgMCk7CisgICAgICAgIGRhdGEtPnNldFBzZXVkb0VsZW1lbnQo
QUZURVIsIDApOwogICAgICAgICBkYXRhLT5zZXRJc0luQ2FudmFzU3VidHJlZShmYWxzZSk7CiAg
ICAgICAgIGRhdGEtPnJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogICAgICAgICBkYXRhLT5yZXNldER5
bmFtaWNSZXN0eWxlT2JzZXJ2YXRpb25zKCk7CkBAIC0yMDY5LDYgKzIwNzgsNTYgQEAgdm9pZCBF
bGVtZW50Ojpub3JtYWxpemVBdHRyaWJ1dGVzKCkKICAgICB9CiB9CiAKK3ZvaWQgRWxlbWVudDo6
dXBkYXRlUHNldWRvRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG9JZCwgU3R5bGVDaGFuZ2UgY2hhbmdl
KQoreworICAgIFBzZXVkb0VsZW1lbnQqIGV4aXN0aW5nID0gaGFzUmFyZURhdGEoKSA/IGVsZW1l
bnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KHBzZXVkb0lkKSA6IDA7CisgICAgaWYgKGV4aXN0
aW5nKSB7CisgICAgICAgIC8vIFBzZXVkb0VsZW1lbnQgc3R5bGVzIGhhbmcgb2ZmIHRoZWlyIHBh
cmVudCBlbGVtZW50J3Mgc3R5bGUgc28gaWYgd2UgbmVlZGVkCisgICAgICAgIC8vIGEgc3R5bGUg
cmVjYWxjIHdlIHNob3VsZCBGb3JjZSBvbmUgb24gdGhlIHBzZXVkby4KKyAgICAgICAgZXhpc3Rp
bmctPnJlY2FsY1N0eWxlKG5lZWRzU3R5bGVSZWNhbGMoKSA/IEZvcmNlIDogY2hhbmdlKTsKKyAg
ICAgICAgaWYgKCFleGlzdGluZy0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGVsZW1lbnRSYXJl
RGF0YSgpLT5zZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCAwKTsKKyAgICB9IGVsc2UgaWYgKFJl
ZlB0cjxQc2V1ZG9FbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlUHNldWRvRWxlbWVudElmTmVlZGVk
KHBzZXVkb0lkKSkgeworICAgICAgICBlbGVtZW50LT5hdHRhY2goKTsKKyAgICAgICAgaWYgKGVs
ZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+
c2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgZWxlbWVudC5yZWxlYXNlKCkpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIC8vIElmIGF0dGFjaCBkaWQgbm90IGNyZWF0ZSBhIHJlbmRlcmVy
IHRoZW4gY2xlYXIgdGhlIHBhcmVudCBzbyB0aGUgZWxlbWVudAorICAgICAgICAgICAgLy8gd2ls
bCBiZSBmcmVlZCB3aGVuIHRoaXMgbWV0aG9kIHJldHVybnMuCisgICAgICAgICAgICBlbGVtZW50
LT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAgICAgICB9CisgICAgfQorfQorCitQYXNzUmVm
UHRyPFBzZXVkb0VsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZVBzZXVkb0VsZW1lbnRJZk5lZWRlZChQ
c2V1ZG9JZCBwc2V1ZG9JZCkKK3sKKyAgICBpZiAoIWRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xs
ZWN0aW9uKCktPnVzZXNCZWZvcmVBZnRlclJ1bGVzKCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgaWYgKCFyZW5kZXJlcigpIHx8ICFyZW5kZXJlcigpLT5jYW5IYXZlR2VuZXJhdGVkQ2hpbGRy
ZW4oKSB8fCBpc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBG
SVhNRTogRGlzYWxsb3cgZ2VuZXJhdGVkIGNvbnRlbnQgb24gdGhpbmdzIHdpdGggYSBzaGFkb3cg
dW50aWwgdGhlIHNwZWMgc2F5cyB3aGF0IHRvIGRvLgorICAgIC8vIGh0dHA6Ly93ZWJraXQub3Jn
L2IvOTg4MzYKKyAgICBpZiAoc2hhZG93KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYg
KCFwc2V1ZG9FbGVtZW50UmVuZGVyZXJJc05lZWRlZChyZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1
ZG9TdHlsZShwc2V1ZG9JZCkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBQc2V1
ZG9FbGVtZW50OjpjcmVhdGUodGhpcywgcHNldWRvSWQpOworfQorCitQc2V1ZG9FbGVtZW50KiBF
bGVtZW50OjpiZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFy
ZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KEJFRk9SRSkgOiAwOwor
fQorCitQc2V1ZG9FbGVtZW50KiBFbGVtZW50OjphZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdAor
eworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnBzZXVkb0Vs
ZW1lbnQoQUZURVIpIDogMDsKK30KKwogLy8gRWxlbWVudFRyYXZlcnNhbCBBUEkKIEVsZW1lbnQq
IEVsZW1lbnQ6OmZpcnN0RWxlbWVudENoaWxkKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmlu
ZGV4IGEyNDU5NGY1ZTZiZDgxNzM2NDM3YWNmNWVlNWVjMzc5YzFmODg2ZWQuLmE1MmIxYmY0OTNh
NWNhMWJmNjNmZGFjNGYxYzkyODdiODBjNDUwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDMs
NiArNDMsNyBAQCBjbGFzcyBFbGVtZW50UmFyZURhdGE7CiBjbGFzcyBFbGVtZW50U2hhZG93Owog
Y2xhc3MgSW50U2l6ZTsKIGNsYXNzIExvY2FsZTsKK2NsYXNzIFBzZXVkb0VsZW1lbnQ7CiBjbGFz
cyBSZW5kZXJSZWdpb247CiBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgV2ViS2l0QW5pbWF0aW9u
TGlzdDsKQEAgLTM2NSw2ICszNjYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aFBhcnNpbmdDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblBhcnNpbmdDaGlsZHJl
bigpOwogCisgICAgUHNldWRvRWxlbWVudCogYmVmb3JlUHNldWRvRWxlbWVudCgpIGNvbnN0Owor
ICAgIFBzZXVkb0VsZW1lbnQqIGFmdGVyUHNldWRvRWxlbWVudCgpIGNvbnN0OworCiAgICAgLy8g
RWxlbWVudFRyYXZlcnNhbCBBUEkKICAgICBFbGVtZW50KiBmaXJzdEVsZW1lbnRDaGlsZCgpIGNv
bnN0OwogICAgIEVsZW1lbnQqIGxhc3RFbGVtZW50Q2hpbGQoKSBjb25zdDsKQEAgLTQ5Myw2ICs0
OTcsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZyk7CiAKIHByaXZhdGU6CisgICAgdm9pZCB1cGRh
dGVQc2V1ZG9FbGVtZW50KFBzZXVkb0lkLCBTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKKyAgICBQ
YXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IGNyZWF0ZVBzZXVkb0VsZW1lbnRJZk5lZWRlZChQc2V1
ZG9JZCk7CisKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZvciBBdHRyIHRvIGNhbGwg
d2lsbE1vZGlmeUF0dHJpYnV0ZS9kaWRNb2RpZnlBdHRyaWJ1dGUuCiAgICAgZnJpZW5kIGNsYXNz
IEF0dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCA5ZTRlZjFiZGIz
NWYyZjcxMGZmZmRmNTg0NWI4YTg3YjE4YWUyODhmLi42NmZhMGFlNzM2NDM2OTZhMWQ2ODA1OGJh
ZWNiOWYxY2M0ZjkyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIk5hbWVk
Tm9kZU1hcC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgorI2luY2x1ZGUgIlBzZXVkb0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAKQEAgLTM3LDYgKzM4LDkgQEAgcHVibGljOgogICAgIEVsZW1lbnRSYXJlRGF0
YSgpOwogICAgIHZpcnR1YWwgfkVsZW1lbnRSYXJlRGF0YSgpOwogCisgICAgdm9pZCBzZXRQc2V1
ZG9FbGVtZW50KFBzZXVkb0lkLCBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+KTsKKyAgICBQc2V1
ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50KFBzZXVkb0lkKSBjb25zdDsKKwogICAgIHZvaWQgcmVz
ZXRDb21wdXRlZFN0eWxlKCk7CiAgICAgdm9pZCByZXNldER5bmFtaWNSZXN0eWxlT2JzZXJ2YXRp
b25zKCk7CiAKQEAgLTgzLDcgKzg3LDEzIEBAIHB1YmxpYzoKICAgICBPd25QdHI8RWxlbWVudFNo
YWRvdz4gbV9zaGFkb3c7CiAgICAgT3duUHRyPE5hbWVkTm9kZU1hcD4gbV9hdHRyaWJ1dGVNYXA7
CiAKKyAgICBQc2V1ZG9FbGVtZW50KiBtX2dlbmVyYXRlZEJlZm9yZTsKKyAgICBQc2V1ZG9FbGVt
ZW50KiBtX2dlbmVyYXRlZEFmdGVyOworCiAgICAgSW50U2l6ZSBtX3NhdmVkTGF5ZXJTY3JvbGxP
ZmZzZXQ7CisKK3ByaXZhdGU6CisgICAgdm9pZCByZWxlYXNlUHNldWRvRWxlbWVudChQc2V1ZG9F
bGVtZW50Kik7CiB9OwogCiBpbmxpbmUgSW50U2l6ZSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNp
emluZygpCkBAIC05MywxMiArMTAzLDYyIEBAIGlubGluZSBJbnRTaXplIGRlZmF1bHRNaW5pbXVt
U2l6ZUZvclJlc2l6aW5nKCkKIAogaW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVE
YXRhKCkKICAgICA6IG1fbWluaW11bVNpemVGb3JSZXNpemluZyhkZWZhdWx0TWluaW11bVNpemVG
b3JSZXNpemluZygpKQorICAgICwgbV9nZW5lcmF0ZWRCZWZvcmUoMCkKKyAgICAsIG1fZ2VuZXJh
dGVkQWZ0ZXIoMCkKIHsKIH0KIAogaW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6fkVsZW1lbnRSYXJl
RGF0YSgpCiB7CiAgICAgQVNTRVJUKCFtX3NoYWRvdyk7CisgICAgQVNTRVJUKCFtX2dlbmVyYXRl
ZEJlZm9yZSk7CisgICAgQVNTRVJUKCFtX2dlbmVyYXRlZEFmdGVyKTsKK30KKworaW5saW5lIHZv
aWQgRWxlbWVudFJhcmVEYXRhOjpzZXRQc2V1ZG9FbGVtZW50KFBzZXVkb0lkIHBzZXVkb0lkLCBQ
YXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgc3dpdGNoIChwc2V1ZG9J
ZCkgeworICAgIGNhc2UgQkVGT1JFOgorICAgICAgICByZWxlYXNlUHNldWRvRWxlbWVudChtX2dl
bmVyYXRlZEJlZm9yZSk7CisgICAgICAgIG1fZ2VuZXJhdGVkQmVmb3JlID0gZWxlbWVudC5nZXQo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBRlRFUjoKKyAgICAgICAgcmVsZWFzZVBzZXVk
b0VsZW1lbnQobV9nZW5lcmF0ZWRBZnRlcik7CisgICAgICAgIG1fZ2VuZXJhdGVkQWZ0ZXIgPSBl
bGVtZW50LmdldCgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK2lubGluZSBQc2V1ZG9FbGVtZW50KiBFbGVt
ZW50UmFyZURhdGE6OnBzZXVkb0VsZW1lbnQoUHNldWRvSWQgcHNldWRvSWQpIGNvbnN0Cit7Cisg
ICAgc3dpdGNoIChwc2V1ZG9JZCkgeworICAgIGNhc2UgQkVGT1JFOgorICAgICAgICByZXR1cm4g
bV9nZW5lcmF0ZWRCZWZvcmU7CisgICAgY2FzZSBBRlRFUjoKKyAgICAgICAgcmV0dXJuIG1fZ2Vu
ZXJhdGVkQWZ0ZXI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworaW5saW5lIHZvaWQgRWxlbWVudFJhcmVE
YXRhOjpyZWxlYXNlUHNldWRvRWxlbWVudChQc2V1ZG9FbGVtZW50KiBlbGVtZW50KQoreworICAg
IGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBpcyB0aGUgc2Ft
ZSBUcmVlU2hhcmVkIGNsZWFuIHVwIGxvZ2ljIGFzIGFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVl
dWUsCisgICAgLy8gd2hpY2ggaXMgbmVlZGVkIGJlY2F1c2UgUHNldWRvRWxlbWVudHMgYXJlIG5v
dCByZWFsbHkgY2hpbGRyZW4gb2YgdGhlaXIgcGFyZW50CisgICAgLy8gc28gd2UgbXVzdCBjbGVh
biB1cCBtYW51YWxseS4KKyAgICBlbGVtZW50LT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAg
IGlmICghZWxlbWVudC0+cmVmQ291bnQoKSkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgZWxl
bWVudC0+bV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICBkZWxldGUg
ZWxlbWVudDsKKyAgICB9CiB9CiAKIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRD
b21wdXRlZFN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA5ZjA4OTAzYzFmMzlkYzdhNmVmNDRm
NzY5M2FhMjdkOGEzNTdjYTUxLi5lYmUzMDg3YTMyZjg3MTJiYjNhMjU4YmJjNDY3OGY3MGRiZWNm
OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00NjUsNiArNDY1LDM0IEBAIFRyZWVTY29wZSogTm9k
ZTo6dHJlZVNjb3BlKCkgY29uc3QKICAgICByZXR1cm4gc2NvcGUgPyBzY29wZSA6IG1fZG9jdW1l
bnQ7CiB9CiAKK05vZGUqIE5vZGU6OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCkgY29uc3QK
K3sKKyAgICBpZiAoaXNFbGVtZW50Tm9kZSgpICYmICFwcmV2aW91c1NpYmxpbmcoKSkgeworICAg
ICAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRPckhvc3RFbGVtZW50KCk7CisgICAgICAgIGlm
ICghcGFyZW50KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChpc0FmdGVyUHNl
dWRvRWxlbWVudCgpICYmIHBhcmVudC0+bGFzdENoaWxkKCkpCisgICAgICAgICAgICByZXR1cm4g
cGFyZW50LT5sYXN0Q2hpbGQoKTsKKyAgICAgICAgaWYgKCFpc0JlZm9yZVBzZXVkb0VsZW1lbnQo
KSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKKyAg
ICB9CisgICAgcmV0dXJuIHByZXZpb3VzU2libGluZygpOworfQorCitOb2RlKiBOb2RlOjpwc2V1
ZG9Bd2FyZU5leHRTaWJsaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoaXNFbGVtZW50Tm9kZSgpICYm
ICFuZXh0U2libGluZygpKSB7CisgICAgICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudE9ySG9z
dEVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgaWYgKGlzQmVmb3JlUHNldWRvRWxlbWVudCgpICYmIHBhcmVudC0+Zmlyc3RDaGls
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+Zmlyc3RDaGlsZCgpOworICAgICAgICBp
ZiAoIWlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50LT5h
ZnRlclBzZXVkb0VsZW1lbnQoKTsKKyAgICB9CisgICAgcmV0dXJuIG5leHRTaWJsaW5nKCk7Cit9
CisKIE5vZGVSYXJlRGF0YSogTm9kZTo6cmFyZURhdGEoKSBjb25zdAogewogICAgIEFTU0VSVCho
YXNSYXJlRGF0YSgpKTsKQEAgLTcyMyw2ICs3NTEsOSBAQCBib29sIE5vZGU6OnJlbmRlcmVySXNF
ZGl0YWJsZShFZGl0YWJsZUxldmVsIGVkaXRhYmxlTGV2ZWwsIFVzZXJTZWxlY3RBbGxUcmVhdG1l
bgogICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPnBh
Z2UoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCktPmlzRWRpdGFibGUoKSAmJiAhc2hh
ZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIGlmIChpc1BzZXVkb0VsZW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgLy8gSWRlYWxseSB3ZSdkIGNhbGwg
QVNTRVJUKCFuZWVkc1N0eWxlUmVjYWxjKCkpIGhlcmUsIGJ1dAogICAgIC8vIENvbnRhaW5lck5v
ZGU6OnNldEZvY3VzKCkgY2FsbHMgc2V0TmVlZHNTdHlsZVJlY2FsYygpLCBzbyB0aGUgYXNzZXJ0
aW9uCiAgICAgLy8gd291bGQgZmlyZSBpbiB0aGUgbWlkZGxlIG9mIERvY3VtZW50OjpzZXRGb2N1
c2VkTm9kZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNjU5M2Y3OGUyMmE1YWQyMTNhYjEyODI2ZDk5NzVk
ZjIyNTg4YjFiNC4uNjlmNDJiYzk5NzZkMGI4MjFiOWMyMTkxOGI0M2YyODQ1YjBkYWIyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCkBAIC0xODIsNiArMTgyLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQXR0cmli
dXRlcygpIGNvbnN0OwogICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcygpIGNvbnN0OwogCisg
ICAgTm9kZSogcHNldWRvQXdhcmVQcmV2aW91c1NpYmxpbmcoKSBjb25zdDsKKyAgICBOb2RlKiBw
c2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIEtVUkwgYmFzZVVS
SSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZ2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JikgY29uc3Q7CkBAIC0yMjYsNiArMjI5LDExIEBAIHB1YmxpYzoKICAgICBib29sIGlz
SFRNTEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzSFRNTEZsYWcpOyB9CiAgICAg
Ym9vbCBpc1NWR0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzU1ZHRmxhZyk7IH0K
IAorICAgIGJvb2wgaXNQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRvSWQoKSAh
PSBOT1BTRVVETzsgfQorICAgIGJvb2wgaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gcHNldWRvSWQoKSA9PSBCRUZPUkU7IH0KKyAgICBib29sIGlzQWZ0ZXJQc2V1ZG9FbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRvSWQoKSA9PSBBRlRFUjsgfQorICAgIFBzZXVkb0lk
IHBzZXVkb0lkKCkgY29uc3QgeyByZXR1cm4gKGlzRWxlbWVudE5vZGUoKSAmJiBoYXNDdXN0b21D
YWxsYmFja3MoKSkgPyBjdXN0b21Qc2V1ZG9JZCgpIDogTk9QU0VVRE87IH0KKwogICAgIHZpcnR1
YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIGJvb2wgaXNTdHlsZWRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1N0
eWxlZEVsZW1lbnRGbGFnKTsgfQpAQCAtNzM0LDYgKzc0Miw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgQ3JlYXRlVGV4dCA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc1RleHRGbGFnLAogICAgICAgICBD
cmVhdGVDb250YWluZXIgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNDb250YWluZXJGbGFnLCAKICAg
ICAgICAgQ3JlYXRlRWxlbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRWxlbWVudEZsYWcsIAor
ICAgICAgICBDcmVhdGVQc2V1ZG9FbGVtZW50ID0gIENyZWF0ZUVsZW1lbnQgfCBJbkRvY3VtZW50
RmxhZywKICAgICAgICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9j
dW1lbnRGcmFnbWVudEZsYWcsCiAgICAgICAgIENyZWF0ZURvY3VtZW50RnJhZ21lbnQgPSBDcmVh
dGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJhZ21lbnRGbGFnLAogICAgICAgICBDcmVhdGVTdHls
ZWRFbGVtZW50ID0gQ3JlYXRlRWxlbWVudCB8IElzU3R5bGVkRWxlbWVudEZsYWcsIApAQCAtNzQ2
LDYgKzc1NSw4IEBAIHByb3RlY3RlZDoKICAgICB9OwogICAgIE5vZGUoRG9jdW1lbnQqLCBDb25z
dHJ1Y3Rpb25UeXBlKTsKIAorICAgIHZpcnR1YWwgUHNldWRvSWQgY3VzdG9tUHNldWRvSWQoKSBj
b25zdCB7IHJldHVybiBOT1BTRVVETzsgfQorCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05l
d0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lk
IGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0IHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMTQ4
MmZjNDRhYmIwOTI0MjIzMjA0NDAwMDM1NmNiMTZlYzAzMjljNS4uNDY0NmNkODRhM2Q5YzBiNjZi
ZjMyMDMzNmJkNTEzOTk1OWM0YTRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuY3BwCkBAIC04Myw2ICs4MywxNSBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5k
ZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChtX3BhcmVudERldGFp
bHMubm9kZSgpICYmICFtX3BhcmVudERldGFpbHMubm9kZSgpLT5hdHRhY2hlZCgpKQogICAgICAg
ICByZXR1cm4gMDsKIAorICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIHdoZW4gdGhlIG5leHQg
c2libGluZyB3YXMgYWN0dWFsbHkgbW92ZWQgYXJvdW5kIGJ5IHNoYWRvdyBpbnNlcnRpb24gcG9p
bnRzLgorICAgIGlmIChtX25vZGUtPmlzUHNldWRvRWxlbWVudCgpKSB7CisgICAgICAgIGZvciAo
Tm9kZSogc2libGluZyA9IG1fbm9kZS0+cHNldWRvQXdhcmVOZXh0U2libGluZygpOyBzaWJsaW5n
OyBzaWJsaW5nID0gc2libGluZy0+cHNldWRvQXdhcmVOZXh0U2libGluZygpKSB7CisgICAgICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNpYmxpbmctPnJlbmRlcmVyKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgICAgICB9CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKwogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobV9ub2Rl
KTsKICAgICBmb3IgKHdhbGtlci5uZXh0U2libGluZygpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5u
ZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gd2Fs
a2VyLmdldCgpLT5yZW5kZXJlcigpKSB7CkBAIC0xMDEsNiArMTEwLDEwIEBAIFJlbmRlck9iamVj
dCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIoKSBjb25zdAogICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQogICAgICAgICBy
ZXR1cm4gcmVuZGVyZXItPnByZXZpb3VzU2libGluZygpOwogCisgICAgLy8gRklYTUU6IFRoaXMg
bWV0aG9kIGRvZXNuJ3Qgc3VwcG9ydCBwc2V1ZG8gZWxlbWVudHMgc2luY2Ugbm90aGluZyBuZWVk
cworICAgIC8vIHByZXZpb3VzUmVuZGVyZXIoKSBzdXBwb3J0IGZvciB0aGVtIHlldC4KKyAgICBB
U1NFUlQoIW1fbm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpOworCiAgICAgaWYgKG1fcGFyZW50Rmxv
d1JlbmRlcmVyKQogICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXItPnByZXZpb3Vz
UmVuZGVyZXJGb3JOb2RlKG1fbm9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGNi
NjA3MDA3MDcxYzJjNzIxZTcwM2U0MmE0MTM4NTRhNjM3ZGEwNDMuLmExYzBiMDFlMTAyNDI1MzE2
YTY2OTMzNGUzMmRlNDM0MjgxNGIyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtODQw
LDcgKzg0MCw3IEBAIGJvb2wgUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2Vu
ZGFudHNXaXRoSGVpZ2h0KFJlbmRlck9iamVjdCogcmVuZGVyCiB7CiAgICAgUmVuZGVyT2JqZWN0
KiBzdG9wID0gcmVuZGVyZXItPm5leHRJblByZU9yZGVyQWZ0ZXJDaGlsZHJlbigpOwogICAgIGZv
ciAoUmVuZGVyT2JqZWN0ICpvID0gcmVuZGVyZXItPmZpcnN0Q2hpbGQoKTsgbyAmJiBvICE9IHN0
b3A7IG8gPSBvLT5uZXh0SW5QcmVPcmRlcigpKQotICAgICAgICBpZiAoby0+bm9kZSgpKSB7Cisg
ICAgICAgIGlmIChvLT5ub2RlKCkgJiYgIW8tPm5vZGUoKS0+aXNQc2V1ZG9FbGVtZW50KCkpIHsK
ICAgICAgICAgICAgIGlmICgoby0+aXNUZXh0KCkgJiYgdG9SZW5kZXJUZXh0KG8pLT5saW5lc0Jv
dW5kaW5nQm94KCkuaGVpZ2h0KCkpIHx8CiAgICAgICAgICAgICAgICAgKG8tPmlzQm94KCkgJiYg
dG9SZW5kZXJCb3gobyktPmJvcmRlckJvdW5kaW5nQm94KCkuaGVpZ2h0KCkpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVk
b0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM3N2EyOTU0NDA1MDljNDQ5Njc3ZTQwNjAzMjA4ZDNmZGEwYWJmZDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKQEAgLTAsMCAr
MSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5o
IgorCisjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29u
dGV4dC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IFF1YWxpZmllZE5hbWUmIHBzZXVkb0VsZW1lbnRUYWdOYW1lKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIG5hbWUsIChudWxsQXRvbSwgIjxwc2V1
ZG8+IiwgbnVsbEF0b20pKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworUHNldWRvRWxlbWVudDo6
UHNldWRvRWxlbWVudChFbGVtZW50KiBwYXJlbnQsIFBzZXVkb0lkIHBzZXVkb0lkKQorICAgIDog
RWxlbWVudChwc2V1ZG9FbGVtZW50VGFnTmFtZSgpLCBwYXJlbnQtPmRvY3VtZW50KCksIENyZWF0
ZVBzZXVkb0VsZW1lbnQpCisgICAgLCBtX3BzZXVkb0lkKHBzZXVkb0lkKQoreworICAgIEFTU0VS
VChwYXJlbnQtPmluRG9jdW1lbnQoKSk7CisgICAgc2V0UGFyZW50T3JIb3N0Tm9kZShwYXJlbnQp
OworICAgIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpOworfQorCitQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBQc2V1ZG9FbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkKK3sKKyAgICByZXR1
cm4gcGFyZW50T3JIb3N0RWxlbWVudCgpLT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHls
ZShtX3BzZXVkb0lkKTsKK30KKwordm9pZCBQc2V1ZG9FbGVtZW50OjphdHRhY2goKQoreworICAg
IEFTU0VSVCghcmVuZGVyZXIoKSk7CisKKyAgICBFbGVtZW50OjphdHRhY2goKTsKKworICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVy
ZXIgfHwgIXJlbmRlcmVyLT5zdHlsZSgpLT5yZWdpb25UaHJlYWQoKS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgp
OworICAgIEFTU0VSVChzdHlsZS0+Y29udGVudERhdGEoKSk7CisKKyAgICBmb3IgKGNvbnN0IENv
bnRlbnREYXRhKiBjb250ZW50ID0gc3R5bGUtPmNvbnRlbnREYXRhKCk7IGNvbnRlbnQ7IGNvbnRl
bnQgPSBjb250ZW50LT5uZXh0KCkpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGNv
bnRlbnQtPmNyZWF0ZVJlbmRlcmVyKGRvY3VtZW50KCksIHN0eWxlKTsKKyAgICAgICAgaWYgKHJl
bmRlcmVyLT5pc0NoaWxkQWxsb3dlZChjaGlsZCwgc3R5bGUpKQorICAgICAgICAgICAgcmVuZGVy
ZXItPmFkZENoaWxkKGNoaWxkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2hpbGQtPmRl
c3Ryb3koKTsKKyAgICB9Cit9CisKK2Jvb2wgUHNldWRvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gcHNl
dWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQoY29udGV4dC5zdHlsZSgpKTsKK30KKwordm9pZCBQ
c2V1ZG9FbGVtZW50OjpkaWRSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSkKK3sKKyAgICBpZiAoIXJl
bmRlcmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSByZW5kZXJlcnMgaW5zaWRl
IHBzZXVkbyBlbGVtZW50cyBhcmUgYW5vbnltb3VzIHNvIHRoZXkgZG9uJ3QgZ2V0IG5vdGlmaWVk
IG9mIHJlY2FsY1N0eWxlIGFuZCBtdXN0IGhhdmUKKyAgICAvLyB0aGUgc3R5bGUgcHJvcGFnYXRl
ZCBkb3dud2FyZCBtYW51YWxseSBzaW1pbGFyIHRvIFJlbmRlck9iamVjdDo6cHJvcGFnYXRlU3R5
bGVUb0Fub255bW91c0NoaWxkcmVuLgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHJlbmRlcmVyLT5u
ZXh0SW5QcmVPcmRlcihyZW5kZXJlcik7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0SW5QcmVP
cmRlcihyZW5kZXJlcikpIHsKKyAgICAgICAgLy8gV2Ugb25seSBtYW5hZ2UgdGhlIHN0eWxlIGZv
ciB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQgd2hpY2ggbXVzdCBiZSBpbWFnZXMgb3IgdGV4dC4KKyAg
ICAgICAgaWYgKCFjaGlsZC0+aXNUZXh0KCkgJiYgIWNoaWxkLT5pc0ltYWdlKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBUaGUgc3R5bGUgZm9yIHRoZSBSZW5kZXJUZXh0
RnJhZ21lbnQgZm9yIGZpcnN0IGxldHRlciBpcyBtYW5hZ2VkIGJ5IGFuIGVuY2xvc2luZyBibG9j
aywgbm90IGJ5IHVzLgorICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09
IEZJUlNUX0xFVFRFUikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNoaWxkLT5z
ZXRQc2V1ZG9TdHlsZShyZW5kZXJlci0+c3R5bGUoKSk7CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFjNTc0OWQ5NTQ5
NjVlNTU0YjE4NjEzODgwYzE3ODljOWY4OTM4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUHNl
dWRvRWxlbWVudF9oCisjZGVmaW5lIFBzZXVkb0VsZW1lbnRfaAorCisjaW5jbHVkZSAiRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQc2V1ZG9FbGVtZW50IDogcHVibGljIEVs
ZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IGNy
ZWF0ZShFbGVtZW50KiBwYXJlbnQsIFBzZXVkb0lkIHBzZXVkb0lkKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQc2V1ZG9FbGVtZW50KHBhcmVudCwgcHNldWRvSWQpKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9y
UmVuZGVyZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkNv
bnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKwor
cHJpdmF0ZToKKyAgICBQc2V1ZG9FbGVtZW50KEVsZW1lbnQqLCBQc2V1ZG9JZCk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgUHNldWRvSWQgY3VzdG9tUHNldWRvSWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBt
X3BzZXVkb0lkOyB9CisKKyAgICBQc2V1ZG9JZCBtX3BzZXVkb0lkOworfTsKKworY29uc3QgUXVh
bGlmaWVkTmFtZSYgcHNldWRvRWxlbWVudFRhZ05hbWUoKTsKKworaW5saW5lIGJvb2wgcHNldWRv
RWxlbWVudFJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQoreworICAg
IHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkUgJiYgKHN0eWxlLT5jb250
ZW50RGF0YSgpIHx8ICFzdHlsZS0+cmVnaW9uVGhyZWFkKCkuaXNFbXB0eSgpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L3Zpc2libGVfdW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRz
LmNwcAppbmRleCA2ZWNiNzdjNjQ3NDgyYWNmMjJlMTdkYzM5M2MyNDFhNDdmMmQ1NTljLi4yYjZl
OTQ4MDNhYzc5ZTYxOGQ0MzM5NWJjODUyNjk4NGJjNTdlOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvdmlzaWJsZV91bml0cy5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgY29uc3Qg
SW5saW5lVGV4dEJveCogbG9naWNhbGx5UHJldmlvdXNCb3goY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlUAogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgTm9kZSogc3RhcnROb2RlID0g
c3RhcnRCb3gtPnJlbmRlcmVyKCkgPyBzdGFydEJveC0+cmVuZGVyZXIoKS0+bm9kZSgpIDogMDsK
LSAgICAgICAgaWYgKCFzdGFydE5vZGUpCisgICAgICAgIGlmICghc3RhcnROb2RlIHx8IHN0YXJ0
Tm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBQ
b3NpdGlvbiBwb3NpdGlvbiA9IHByZXZpb3VzUm9vdElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9u
KHN0YXJ0Tm9kZSwgdmlzaWJsZVBvc2l0aW9uLCBDb250ZW50SXNFZGl0YWJsZSk7CkBAIC0yNTYs
NyArMjU2LDcgQEAgc3RhdGljIGNvbnN0IElubGluZVRleHRCb3gqIGxvZ2ljYWxseU5leHRCb3go
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXQKIAogICAgIHdoaWxlICgxKSB7CiAg
ICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJlcigpID8gc3RhcnRCb3gt
PnJlbmRlcmVyKCktPm5vZGUoKSA6IDA7Ci0gICAgICAgIGlmICghc3RhcnROb2RlKQorICAgICAg
ICBpZiAoIXN0YXJ0Tm9kZSB8fCBzdGFydE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBuZXh0Um9vdElubGlu
ZUJveENhbmRpZGF0ZVBvc2l0aW9uKHN0YXJ0Tm9kZSwgdmlzaWJsZVBvc2l0aW9uLCBDb250ZW50
SXNFZGl0YWJsZSk7CkBAIC03NDQsNyArNzQ0LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBz
dGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2kK
ICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKICAgICAgICAgICAg
IHN0YXJ0Tm9kZSA9IHN0YXJ0UmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgICAgIGlmIChzdGFy
dE5vZGUpCisgICAgICAgICAgICBpZiAoc3RhcnROb2RlICYmICFzdGFydE5vZGUtPmlzUHNldWRv
RWxlbWVudCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBzdGFydEJv
eCA9IHN0YXJ0Qm94LT5uZXh0TGVhZkNoaWxkKCk7CkBAIC04MTYsNyArODE2LDcgQEAgc3RhdGlj
IFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBjLCBMaW5lRW5kcG9pbnQKICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7CiAKICAgICAgICAgICAgIGVuZE5vZGUgPSBlbmRSZW5kZXJlci0+bm9kZSgpOwotICAgICAg
ICAgICAgaWYgKGVuZE5vZGUpCisgICAgICAgICAgICBpZiAoZW5kTm9kZSAmJiAhZW5kTm9kZS0+
aXNQc2V1ZG9FbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGVuZEJveCA9IGVuZEJveC0+cHJldkxlYWZDaGlsZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApp
bmRleCA1ZTA3MTdlMGE5Y2ZiYTMyODk4Mjk1NjIxNzc5MTJjMDZmNzhjOGJlLi45MjkzNTc2NGJi
ZmU1YTViYTQ1ZWUzOGZkZTYwYTYwZTk5NTczNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTIwLDYgKzUy
MCwxMCBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9sbGVyOjp1cGRh
dGVBbmltYXRpb25zKFJlbmRlck9iamVjdCogcmVuZAogICAgIGlmICghcmVuZGVyZXItPmRvY3Vt
ZW50KCkgfHwgcmVuZGVyZXItPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpCiAgICAgICAgIHJl
dHVybiBuZXdTdHlsZTsKIAorICAgIC8vIEZJWE1FOiBXZSBkbyBub3QgYW5pbWF0ZSBnZW5lcmF0
ZWQgY29udGVudCB5ZXQuCisgICAgaWYgKHJlbmRlcmVyLT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuIG5ld1N0eWxlOworCiAgICAgUmVuZGVyU3R5bGUqIG9sZFN0eWxlID0gcmVu
ZGVyZXItPnN0eWxlKCk7CiAKICAgICBpZiAoKCFvbGRTdHlsZSB8fCAoIW9sZFN0eWxlLT5hbmlt
YXRpb25zKCkgJiYgIW9sZFN0eWxlLT50cmFuc2l0aW9ucygpKSkgJiYgKCFuZXdTdHlsZS0+YW5p
bWF0aW9ucygpICYmICFuZXdTdHlsZS0+dHJhbnNpdGlvbnMoKSkpCkBAIC01MzMsNyArNTM3LDcg
QEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5p
bWF0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmQKICAgICAvLyBhZ2FpbnN0IHRoZSBhbmltYXRpb25z
IGluIHRoZSBzdHlsZSBhbmQgbWFrZSBzdXJlIHdlJ3JlIGluIHN5bmMuICBJZiBkZXN0aW5hdGlv
biB2YWx1ZXMKICAgICAvLyBoYXZlIGNoYW5nZWQsIHdlIHJlc2V0IHRoZSBhbmltYXRpb24uICBX
ZSB0aGVuIGRvIGEgYmxlbmQgdG8gZ2V0IG5ldyB2YWx1ZXMgYW5kIHdlIHJldHVybgogICAgIC8v
IGEgbmV3IHN0eWxlLgotICAgIEFTU0VSVChyZW5kZXJlci0+bm9kZSgpKTsgLy8gRklYTUU6IFdl
IGRvIG5vdCBhbmltYXRlIGdlbmVyYXRlZCBjb250ZW50IHlldC4KKyAgICBBU1NFUlQocmVuZGVy
ZXItPm5vZGUoKSAmJiAhcmVuZGVyZXItPmlzUHNldWRvRWxlbWVudCgpKTsgLy8gRklYTUU6IFdl
IGRvIG5vdCBhbmltYXRlIGdlbmVyYXRlZCBjb250ZW50IHlldC4KIAogICAgIFJlZlB0cjxDb21w
b3NpdGVBbmltYXRpb24+IHJlbmRlcmVyQW5pbWF0aW9ucyA9IG1fZGF0YS0+YWNjZXNzQ29tcG9z
aXRlQW5pbWF0aW9uKHJlbmRlcmVyKTsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGJsZW5kZWRT
dHlsZSA9IHJlbmRlcmVyQW5pbWF0aW9ucy0+YW5pbWF0ZShyZW5kZXJlciwgb2xkU3R5bGUsIG5l
d1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRl
eCAzOGYxZjY3OWY5MzY1YmIxYTk5YjQwNzk5NzU1NTE1NDJmY2JlOTc3Li5jZmZkZjc4MDY4Y2I3
N2Q3NmNjMjMxZTU1ZmM3OGYxOWRkNThlN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0yNjcsMTEgKzI2NywxNSBAQCB2b2lkIEhpdFRlc3RSZXN1
bHQ6OnNldFRvTm9uU2hhZG93QW5jZXN0b3IoKQogCiB2b2lkIEhpdFRlc3RSZXN1bHQ6OnNldElu
bmVyTm9kZShOb2RlKiBuKQogeworICAgIGlmIChuICYmIG4tPmlzUHNldWRvRWxlbWVudCgpKQor
ICAgICAgICBuID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIG1faW5uZXJOb2RlID0gbjsK
IH0KICAgICAKIHZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb25TaGFyZWROb2RlKE5vZGUq
IG4pCiB7CisgICAgaWYgKG4gJiYgbi0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIG4gPSBu
LT5wYXJlbnRPckhvc3ROb2RlKCk7CiAgICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBuOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA4YzYyNDk3NjU5
ZWRmOTVjYmNiMzExOWE1YzlmY2U3MWIwZDMwNTNhLi5lNGJlMWI4NTYwMzYxM2UzN2JkNGQ1NWZm
MDcwNDUzOTcxZTRmM2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKQEAgLTMyMzcsNyArMzIzNyw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnNob3VsZFBhaW50U2Vs
ZWN0aW9uR2FwcygpIGNvbnN0CiAKIGJvb2wgUmVuZGVyQmxvY2s6OmlzU2VsZWN0aW9uUm9vdCgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFub2RlKCkpCisgICAgaWYgKCFub2RlKCkgfHwgaXNQc2V1ZG9F
bGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgLy8gRklYTUU6
IEV2ZW50dWFsbHkgdGFibGVzIHNob3VsZCBoYXZlIHRvIGxlYXJuIGhvdyB0byBmaWxsIGdhcHMg
YmV0d2VlbiBjZWxscywgYXQgbGVhc3QgaW4gc2ltcGxlIG5vbi1zcGFubmluZyBjYXNlcy4KQEAg
LTc0NzYsNyArNzQ3NiwxMCBAQCBjb25zdCBjaGFyKiBSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSgp
IGNvbnN0CiAgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGFub255bW91cyBtdWx0aS1jb2x1
bW4gc3BhbikiOwogICAgIGlmIChpc0Fub255bW91c0Jsb2NrKCkpCiAgICAgICAgIHJldHVybiAi
UmVuZGVyQmxvY2sgKGFub255bW91cykiOwotICAgIGVsc2UgaWYgKGlzQW5vbnltb3VzKCkpCisg
ICAgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHdoaWxlIHRoZSBuZXcgZ2VuZXJhdGVkIGNvbnRl
bnQgc3lzdGVtIGlzIGJlaW5nIGltcGxlbWVudGVkLgorICAgIGlmIChpc1BzZXVkb0VsZW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAoZ2VuZXJhdGVkKSI7CisgICAgaWYgKGlz
QW5vbnltb3VzKCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGdlbmVyYXRlZCkiOwog
ICAgIGlmIChpc1JlbFBvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAo
cmVsYXRpdmUgcG9zaXRpb25lZCkiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuY3BwCmluZGV4IDI0Yzg2MzMwNDIxMjJhOGM1MGYzYmFkNzA3MTJjNTQ5OTMyOWU3OWMu
LmIyMzNjNDk2NDcyYjVmZWZjNWJiM2ExMTcxNDM0N2RiYzhhZGU2MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTUwMSw3ICs1MDEsNyBAQCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IFJlbmRlckNvdW50ZXI6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiAg
ICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBpZiAoIWJlZm9yZUFmdGVyQ29udGFp
bmVyKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgaWYgKCFiZWZvcmVB
ZnRlckNvbnRhaW5lci0+aXNBbm9ueW1vdXMoKSkKKyAgICAgICAgICAgIGlmICghYmVmb3JlQWZ0
ZXJDb250YWluZXItPmlzQW5vbnltb3VzKCkgJiYgIWJlZm9yZUFmdGVyQ29udGFpbmVyLT5pc1Bz
ZXVkb0VsZW1lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsgLy8gUmVuZGVyQ291bnRl
cnMgYXJlIHJlc3RyaWN0ZWQgdG8gYmVmb3JlIGFuZCBhZnRlciBwc2V1ZG8gZWxlbWVudHMKICAg
ICAgICAgICAgIFBzZXVkb0lkIGNvbnRhaW5lclN0eWxlID0gYmVmb3JlQWZ0ZXJDb250YWluZXIt
PnN0eWxlKCktPnN0eWxlVHlwZSgpOwogICAgICAgICAgICAgaWYgKChjb250YWluZXJTdHlsZSA9
PSBCRUZPUkUpIHx8IChjb250YWluZXJTdHlsZSA9PSBBRlRFUikpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmlu
ZGV4IDMzMjM5ODZjOTkwYzY0OWIyNDRjZWM0NDNlYjI2MTJjMzRkNzI2MzIuLjY5NTBhMTQ3MjE4
ZGRkYjYyNzhmYWJhNDJkNTNmYjViMTY0OTE5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC0xMDgz
LDEyICsxMDgzLDE1IEBAIExheW91dFVuaXQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Ojph
bGxvd2VkQ2hpbGRGbGV4KFJlbmRlckJveCogY2hpbGQsIGJvb2wKICAgICByZXR1cm4gMDsKIH0K
IAotY29uc3QgY2hhciAqUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpyZW5kZXJOYW1lKCkg
Y29uc3QKK2NvbnN0IGNoYXIqIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6cmVuZGVyTmFt
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRmxvYXRpbmcoKSkKICAgICAgICAgcmV0dXJuICJSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKGZsb2F0aW5nKSI7CiAgICAgaWYgKGlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpKQogICAgICAgICByZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eCAocG9zaXRpb25lZCkiOworICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFjayB3aGlsZSB0aGUg
bmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWluZyBpbXBsZW1lbnRlZC4KKyAgICBp
ZiAoaXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94IChnZW5lcmF0ZWQpIjsKICAgICBpZiAoaXNBbm9ueW1vdXMoKSkKICAgICAgICAg
cmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKGdlbmVyYXRlZCkiOwogICAgIGlm
IChpc1JlbFBvc2l0aW9uZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cAppbmRleCBlN2EzNTFjODY1ZmY3OGUzNTE5YTJlNDRhYzZlODliZTkwMzZhOTFiLi5lN2RkYTg0
N2VlOTM3ZTk2YjdlNDYzZDhmMzhmOGM0NDRmM2U0NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwCkBAIC0yMjksNiArMjI5LDkgQEAgY29uc3QgY2hhciogUmVuZGVy
R3JpZDo6cmVuZGVyTmFtZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAoZmxv
YXRpbmcpIjsKICAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgIHJldHVy
biAiUmVuZGVyR3JpZCAocG9zaXRpb25lZCkiOworICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFj
ayB3aGlsZSB0aGUgbmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWluZyBpbXBsZW1l
bnRlZC4KKyAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiAiUmVuZGVy
R3JpZCAoZ2VuZXJhdGVkKSI7CiAgICAgaWYgKGlzQW5vbnltb3VzKCkpCiAgICAgICAgIHJldHVy
biAiUmVuZGVyR3JpZCAoZ2VuZXJhdGVkKSI7CiAgICAgaWYgKGlzUmVsUG9zaXRpb25lZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCBkYjFiMTg1ZjY1
ZDQ2OWQzMzNiNmM2MWQwYTJlNDkyNzljN2U3MTU2Li4wZTFjZGEzMTZhZjk0YWQ0YjY2ZWZlYzlm
NzdmZWVlYTE5MWEyMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcApAQCAtNzYyLDYgKzc2Miw5IEBAIGNvbnN0IGNoYXIqIFJlbmRlcklubGluZTo6cmVuZGVy
TmFtZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiAiUmVuZGVySW5saW5lIChyZWxhdGl2ZSBwb3Np
dGlvbmVkKSI7CiAgICAgaWYgKGlzU3RpY2t5UG9zaXRpb25lZCgpKQogICAgICAgICByZXR1cm4g
IlJlbmRlcklubGluZSAoc3RpY2t5IHBvc2l0aW9uZWQpIjsKKyAgICAvLyBGSVhNRTogVGVtcG9y
YXJ5IGhhY2sgd2hpbGUgdGhlIG5ldyBnZW5lcmF0ZWQgY29udGVudCBzeXN0ZW0gaXMgYmVpbmcg
aW1wbGVtZW50ZWQuCisgICAgaWYgKGlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICByZXR1cm4g
IlJlbmRlcklubGluZSAoZ2VuZXJhdGVkKSI7CiAgICAgaWYgKGlzQW5vbnltb3VzKCkpCiAgICAg
ICAgIHJldHVybiAiUmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIjsKICAgICBpZiAoaXNSdW5Jbigp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
QmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uQmxv
Y2suY3BwCmluZGV4IGJhM2NjZDliMjk4MjFjYjE0MGJkNmZiMmNiMjhiNzI5ZDZhZjA0ZWIuLjIz
MTFkYTE4OGU3YWM5ZTI3NTRjNGY5NjRiNTMwZGUzNjY1ZTA0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5jcHAKQEAgLTE0NSwx
MyArMTQ1LDE2IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5CbG9jazo6ZW5zdXJlQ29sdW1uU2V0
cygpCiB9CiAKIGNvbnN0IGNoYXIqIFJlbmRlck11bHRpQ29sdW1uQmxvY2s6OnJlbmRlck5hbWUo
KSBjb25zdAoteyAgICAKK3sKICAgICBpZiAoaXNGbG9hdGluZygpKQogICAgICAgICByZXR1cm4g
IlJlbmRlck11bHRpQ29sdW1uQmxvY2sgKGZsb2F0aW5nKSI7CiAgICAgaWYgKGlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpKQogICAgICAgICByZXR1cm4gIlJlbmRlck11bHRpQ29sdW1uQmxvY2sgKHBv
c2l0aW9uZWQpIjsKICAgICBpZiAoaXNBbm9ueW1vdXNCbG9jaygpKQogICAgICAgICByZXR1cm4g
IlJlbmRlck11bHRpQ29sdW1uQmxvY2sgKGFub255bW91cykiOworICAgIC8vIEZJWE1FOiBUZW1w
b3JhcnkgaGFjayB3aGlsZSB0aGUgbmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWlu
ZyBpbXBsZW1lbnRlZC4KKyAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVy
biAiUmVuZGVyTXVsdGlDb2x1bW5CbG9jayAoZ2VuZXJhdGVkKSI7CiAgICAgaWYgKGlzQW5vbnlt
b3VzKCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1bW5CbG9jayAoZ2VuZXJhdGVk
KSI7CiAgICAgaWYgKGlzUmVsUG9zaXRpb25lZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAppbmRleCAxMTA0NjdhZDU0OGZjYmNiMDQxNGVhYWFjNjIzYTA0M2Nj
Y2IxYTQ4Li5mY2NlZWQ2OWU0ODMyYjUwODRlYzU1MzI4OWY5ZjY2YzYzYzg4OTNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBA
IFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QoTm9kZSogbm9kZSwgUmVu
ZGVyU3R5bGUqIHN0eWxlKQogICAgIC8vIFdvcmtzIG9ubHkgaWYgd2UgaGF2ZSBleGFjdGx5IG9u
ZSBwaWVjZSBvZiBjb250ZW50IGFuZCBpdCdzIGEgVVJMLgogICAgIC8vIE90aGVyd2lzZSBhY3Rz
IGFzIGlmIHdlIGRpZG4ndCBzdXBwb3J0IHRoaXMgZmVhdHVyZS4KICAgICBjb25zdCBDb250ZW50
RGF0YSogY29udGVudERhdGEgPSBzdHlsZS0+Y29udGVudERhdGEoKTsKLSAgICBpZiAoY29udGVu
dERhdGEgJiYgIWNvbnRlbnREYXRhLT5uZXh0KCkgJiYgY29udGVudERhdGEtPmlzSW1hZ2UoKSAm
JiBkb2MgIT0gbm9kZSkgeworICAgIGlmIChjb250ZW50RGF0YSAmJiAhY29udGVudERhdGEtPm5l
eHQoKSAmJiBjb250ZW50RGF0YS0+aXNJbWFnZSgpICYmIGRvYyAhPSBub2RlICYmICFub2RlLT5p
c1BzZXVkb0VsZW1lbnQoKSkgewogICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFy
ZW5hKSBSZW5kZXJJbWFnZShub2RlKTsKICAgICAgICAgLy8gUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UgcmVxdWlyZXMgYSBzdHlsZSBiZWluZyBwcmVzZW50IG9uIHRoZSBpbWFnZSBidXQg
d2UgZG9uJ3Qgd2FudCB0bwogICAgICAgICAvLyB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIG5vdyBh
cyB0aGUgbm9kZSBpcyBub3QgZnVsbHkgYXR0YWNoZWQuIE1vdmluZyB0aGlzIGNvZGUgdG8gc3R5
bGUgY2hhbmdlCkBAIC0xNzU2LDYgKzE3NTYsMjMgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlck9i
amVjdDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCB1bnNpZ24K
ICAgICByZXR1cm4gZGlmZjsKIH0KIAordm9pZCBSZW5kZXJPYmplY3Q6OnNldFBzZXVkb1N0eWxl
KFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlKQoreworICAgIEFTU0VSVChwc2V1
ZG9TdHlsZS0+c3R5bGVUeXBlKCkgPT0gQkVGT1JFIHx8IHBzZXVkb1N0eWxlLT5zdHlsZVR5cGUo
KSA9PSBBRlRFUik7CisKKyAgICAvLyBJbWFnZXMgYXJlIHNwZWNpYWwgYW5kIG11c3QgaW5oZXJp
dCB0aGUgcHNldWRvU3R5bGUgc28gdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YKKyAgICAvLyB0aGUg
cHNldWRvIGVsZW1lbnQgZG9lc24ndCBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGltYWdlLiBJbiBh
bGwgb3RoZXIgY2FzZXMgd2UKKyAgICAvLyBjYW4ganVzdCBzaGFyZSB0aGUgc3R5bGUuCisgICAg
aWYgKGlzSW1hZ2UoKSkgeworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICBzdHlsZS0+aW5oZXJpdEZyb20ocHNldWRvU3R5
bGUuZ2V0KCkpOworICAgICAgICBzZXRTdHlsZShzdHlsZS5yZWxlYXNlKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc2V0U3R5bGUocHNldWRvU3R5bGUpOworfQorCiB2b2lkIFJl
bmRlck9iamVjdDo6c2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAg
ICAgaWYgKG1fc3R5bGUgPT0gc3R5bGUpIHsKQEAgLTI5NjcsNyArMjk4NCw4IEBAIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6Om9mZnNldFBhcmVudCgpIGNvbnN0CiBWaXNpYmxl
UG9zaXRpb24gUmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50IG9mZnNldCwg
RUFmZmluaXR5IGFmZmluaXR5KQogewogICAgIC8vIElmIHRoaXMgaXMgYSBub24tYW5vbnltb3Vz
IHJlbmRlcmVyIGluIGFuIGVkaXRhYmxlIGFyZWEsIHRoZW4gaXQncyBzaW1wbGUuCi0gICAgaWYg
KE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCkpIHsKKyAgICBpZiAobm9kZSgpICYmICFpc1BzZXVk
b0VsZW1lbnQoKSkgeworICAgICAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwogICAgICAg
ICBpZiAoIW5vZGUtPnJlbmRlcmVySXNFZGl0YWJsZSgpKSB7CiAgICAgICAgICAgICAvLyBJZiBp
dCBjYW4gYmUgZm91bmQsIHdlIHByZWZlciBhIHZpc3VhbGx5IGVxdWl2YWxlbnQgcG9zaXRpb24g
dGhhdCBpcyBlZGl0YWJsZS4gCiAgICAgICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBvZmZzZXQpOwpAQCAtMjk5Myw4ICszMDExLDgg
QEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGlu
dCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbmkKICAgICAgICAgLy8gRmluZCBub24tYW5vbnltb3Vz
IGNvbnRlbnQgYWZ0ZXIuCiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjaGlsZDsK
ICAgICAgICAgd2hpbGUgKChyZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0SW5QcmVPcmRlcihwYXJl
bnQpKSkgewotICAgICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJlci0+
bm9kZSgpICYmICFyZW5kZXJlci0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocmVuZGVy
ZXItPm5vZGUoKSksIERPV05TVFJFQU0pOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRmluZCBu
b24tYW5vbnltb3VzIGNvbnRlbnQgYmVmb3JlLgpAQCAtMzAwMiwxMyArMzAyMCwxMyBAQCBWaXNp
YmxlUG9zaXRpb24gUmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50IG9mZnNl
dCwgRUFmZmluaXR5IGFmZmluaQogICAgICAgICB3aGlsZSAoKHJlbmRlcmVyID0gcmVuZGVyZXIt
PnByZXZpb3VzSW5QcmVPcmRlcigpKSkgewogICAgICAgICAgICAgaWYgKHJlbmRlcmVyID09IHBh
cmVudCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChOb2RlKiBub2Rl
ID0gcmVuZGVyZXItPm5vZGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUobm9kZSksIERPV05TVFJFQU0pOworICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyLT5ub2RlKCkgJiYgIXJlbmRlcmVyLT5pc1BzZXVkb0VsZW1lbnQo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGxhc3RQb3NpdGlvbklu
T3JBZnRlck5vZGUocmVuZGVyZXItPm5vZGUoKSksIERPV05TVFJFQU0pOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gVXNlIHRoZSBwYXJlbnQgaXRzZWxmIHVubGVzcyBpdCB0b28gaXMgYW5vbnlt
b3VzLgotICAgICAgICBpZiAoTm9kZSogbm9kZSA9IHBhcmVudC0+bm9kZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9k
ZSksIERPV05TVFJFQU0pOworICAgICAgICBpZiAocGFyZW50LT5ub2RlKCkgJiYgIWlzUHNldWRv
RWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0
aW9uSW5PckJlZm9yZU5vZGUocGFyZW50LT5ub2RlKCkpLCBET1dOU1RSRUFNKTsKIAogICAgICAg
ICAvLyBSZXBlYXQgYXQgdGhlIG5leHQgbGV2ZWwgdXAuCiAgICAgICAgIGNoaWxkID0gcGFyZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDI1ODI3NmIzNjky
YWMzMzkxNDk0NDAxMmViNGI4MGY4OWE2M2M3NjYuLjk0Y2IxODgzOTkyMjUzZDlkNTdiODVlMDBi
ZGQwZTQ1NjRmMzUyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
QEAgLTMzMCw2ICszMzAsOCBAQCBwcml2YXRlOgogcHVibGljOgogICAgIFJlbmRlckFyZW5hKiBy
ZW5kZXJBcmVuYSgpIGNvbnN0IHsgcmV0dXJuIGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCk7IH0K
IAorICAgIGJvb2wgaXNQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbm9kZSgpICYmIG5v
ZGUoKS0+aXNQc2V1ZG9FbGVtZW50KCk7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBpc0JSKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCbG9ja0Zsb3coKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0JveE1vZGVsT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTYyMSw3ICs2MjMsMTIgQEAgcHVibGljOgogICAg
IC8vIFJldHVybnMgdGhlIHN0eWxlZCBub2RlIHRoYXQgY2F1c2VkIHRoZSBnZW5lcmF0aW9uIG9m
IHRoaXMgcmVuZGVyZXIuCiAgICAgLy8gVGhpcyBpcyB0aGUgc2FtZSBhcyBub2RlKCkgZXhjZXB0
IGZvciByZW5kZXJlcnMgb2YgOmJlZm9yZSBhbmQgOmFmdGVyCiAgICAgLy8gcHNldWRvIGVsZW1l
bnRzIGZvciB3aGljaCB0aGVpciBwYXJlbnQgbm9kZSBpcyByZXR1cm5lZC4KLSAgICBOb2RlKiBn
ZW5lcmF0aW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZSA9PSBkb2N1bWVudCgpID8gMCA6
IG1fbm9kZTsgfQorICAgIE5vZGUqIGdlbmVyYXRpbmdOb2RlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIChpc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBub2RlKCktPnBh
cmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgcmV0dXJuIG1fbm9kZSA9PSBkb2N1bWVudCgpID8g
MCA6IG1fbm9kZTsKKyAgICB9CiAgICAgdm9pZCBzZXROb2RlKE5vZGUqIG5vZGUpIHsgbV9ub2Rl
ID0gbm9kZTsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9u
b2RlLT5kb2N1bWVudCgpOyB9CkBAIC03MTEsNiArNzE4LDkgQEAgcHVibGljOgogICAgIC8vIFNl
dCB0aGUgc3R5bGUgb2YgdGhlIG9iamVjdCBhbmQgdXBkYXRlIHRoZSBzdGF0ZSBvZiB0aGUgb2Jq
ZWN0IGFjY29yZGluZ2x5LgogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPik7CiAKKyAgICAvLyBTZXQgdGhlIHN0eWxlIG9mIHRoZSBvYmplY3QgaWYgaXQn
cyBnZW5lcmF0ZWQgY29udGVudC4KKyAgICB2b2lkIHNldFBzZXVkb1N0eWxlKFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+KTsKKwogICAgIC8vIFVwZGF0ZXMgb25seSB0aGUgbG9jYWwgc3R5bGUgcHRy
IG9mIHRoZSBvYmplY3QuICBEb2VzIG5vdCB1cGRhdGUgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3Qs
CiAgICAgLy8gYW5kIHNvIG9ubHkgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBzdHlsZSBpcyBr
bm93biBub3QgdG8gaGF2ZSBjaGFuZ2VkIChvciBmcm9tIHNldFN0eWxlKS4KICAgICB2b2lkIHNl
dFN0eWxlSW50ZXJuYWwoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpIHsgbV9zdHlsZSA9
IHN0eWxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5k
ZXggMmRkMjZhMjRkNDI1MThjOTQyNTg4MzZmMTRkNDVhNzIwNWFhMWFlYS4uNjU3NzNjYTRmNDQw
NWJmMjViNjBmNWQ4M2E2OTQ4N2I2ODg5MzJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyVGFibGVDZWxs
IChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZUNlbGwiOyB9CisgICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1
ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlQ2VsbCAoYW5vbnltb3VzKSIgOiAiUmVuZGVyVGFi
bGVDZWxsIjsgfQogCiAgICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCmlu
ZGV4IDZmMTk1ZDMwNDgwZTU2MTdkYzU2NmQxNzUwYmMwMDI1NDgxMjAyNDQuLmMwNWY0NGI2ODU5
NWU4Mjk3ZDRlZGMyNmE4YzI1OGI1YzlhOWZhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5oCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxk
cmVuKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVh
bENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQogCi0gICAgdmlydHVhbCBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJS
ZW5kZXJUYWJsZVJvdyAoYW5vbnltb3VzKSIgOiAiUmVuZGVyVGFibGVSb3ciOyB9CisgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gKGlzQW5vbnltb3Vz
KCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlUm93IChhbm9ueW1vdXMpIiA6
ICJSZW5kZXJUYWJsZVJvdyI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmgKaW5kZXggNzljZGQ0YTFkYTUyZGU5ZGU5NWI3MDEyZjJiODBiYWQxNTE3
YmNiYy4uNjM5OWY3YzBlNTVmOTNiNDBiODg1YjU4NjgyNmY0ZDg3YjE2NjcyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaApAQCAtMjAyLDcgKzIw
Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1
YWxDaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFJl
bmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gY2hp
bGRyZW4oKTsgfQogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
eyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJUYWJsZVNlY3Rpb24gKGFub255bW91cyki
IDogIlJlbmRlclRhYmxlU2VjdGlvbiI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCB7IHJldHVybiAoaXNBbm9ueW1vdXMoKSB8fCBpc1BzZXVkb0VsZW1lbnQo
KSkgPyAiUmVuZGVyVGFibGVTZWN0aW9uIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZVNlY3Rp
b24iOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZVNlY3Rpb24oKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcAppbmRleCA1YjRlYjczNTgwMjc3YTk0YWVkZTFjZjNkNzQ1MjU5OTM2OTQ3ZjAxLi5lODM4
OThlZjg3N2FkNjE5YTAwNmMzZGY3ZmMzOTllYzkwNzNkY2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0yMjEsNiArMjIxLDkgQEAgdm9p
ZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29u
c3QgUmVuZGVyT2JqZWN0JiBvLAogCiAgICAgaWYgKG8ubm9kZSgpKSB7CiAgICAgICAgIFN0cmlu
ZyB0YWdOYW1lID0gZ2V0VGFnTmFtZShvLm5vZGUoKSk7CisgICAgICAgIC8vIEZJWE1FOiBUZW1w
b3JhcnkgaGFjayB0byBtYWtlIHRlc3RzIHBhc3MgYnkgc2ltdWxhdGluZyB0aGUgb2xkIGdlbmVy
YXRlZCBjb250ZW50IG91dHB1dC4KKyAgICAgICAgaWYgKG8uaXNQc2V1ZG9FbGVtZW50KCkgfHwg
KG8ucGFyZW50KCkgJiYgby5wYXJlbnQoKS0+aXNQc2V1ZG9FbGVtZW50KCkpKQorICAgICAgICAg
ICAgdGFnTmFtZSA9IGVtcHR5QXRvbTsKICAgICAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgdHMgPDwgIiB7IiA8PCB0YWdOYW1lIDw8ICJ9IjsKICAgICAgICAgICAg
IC8vIGZsYWcgZW1wdHkgb3IgdW5zdHlsZWQgQXBwbGVTdHlsZVNwYW4gYmVjYXVzZSB3ZSBuZXZl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAKaW5k
ZXggOWNhYzI1NGNlOTIzYjRiODJmYTBkMGJmZGJiOGVkZWI0NDliNmM3ZS4uZTE4NGI5YmY2NGU1
YTE0NzEzY2Q0MDY2NjEyNDQxNmRhODIyZTNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCkBAIC03MCwxMiArNzAsNyBAQCBQYXNzT3duUHRy
PENvbnRlbnREYXRhPiBDb250ZW50RGF0YTo6Y2xvbmUoKSBjb25zdAogUmVuZGVyT2JqZWN0KiBJ
bWFnZUNvbnRlbnREYXRhOjpjcmVhdGVSZW5kZXJlcihEb2N1bWVudCogZG9jLCBSZW5kZXJTdHls
ZSogcHNldWRvU3R5bGUpIGNvbnN0CiB7CiAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChk
b2MtPnJlbmRlckFyZW5hKCkpIFJlbmRlckltYWdlKGRvYyk7Ci0gICAgLy8gSW1hZ2VzIGFyZSBz
cGVjaWFsIGFuZCBtdXN0IGluaGVyaXQgdGhlIHBzZXVkb1N0eWxlIHNvIHRoZSB3aWR0aCBhbmQg
aGVpZ2h0IG9mCi0gICAgLy8gdGhlIHBzZXVkbyBlbGVtZW50IGRvbid0IGNoYW5nZSB0aGUgc2l6
ZSBvZiB0aGUgaW1hZ2UuIEluIGFsbCBvdGhlciBjYXNlcyB3ZQotICAgIC8vIGNhbiBqdXN0IHNo
YXJlIHRoZSBzdHlsZS4KLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZSgpOwotICAgIHN0eWxlLT5pbmhlcml0RnJvbShwc2V1ZG9TdHlsZSk7Ci0gICAg
aW1hZ2UtPnNldFN0eWxlKHN0eWxlLnJlbGVhc2UoKSk7CisgICAgaW1hZ2UtPnNldFBzZXVkb1N0
eWxlKHBzZXVkb1N0eWxlKTsKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgaW1hZ2UtPnNldElt
YWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmNyZWF0ZShtX2ltYWdl
LmdldCgpKSk7CiAgICAgZWxzZQpAQCAtODYsMjEgKzgxLDIxIEBAIFJlbmRlck9iamVjdCogSW1h
Z2VDb250ZW50RGF0YTo6Y3JlYXRlUmVuZGVyZXIoRG9jdW1lbnQqIGRvYywgUmVuZGVyU3R5bGUq
IHBzZXVkCiBSZW5kZXJPYmplY3QqIFRleHRDb250ZW50RGF0YTo6Y3JlYXRlUmVuZGVyZXIoRG9j
dW1lbnQqIGRvYywgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlKSBjb25zdAogewogICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBuZXcgKGRvYy0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4dEZy
YWdtZW50KGRvYywgbV90ZXh0LmltcGwoKSk7Ci0gICAgcmVuZGVyZXItPnNldFN0eWxlKHBzZXVk
b1N0eWxlKTsKKyAgICByZW5kZXJlci0+c2V0UHNldWRvU3R5bGUocHNldWRvU3R5bGUpOwogICAg
IHJldHVybiByZW5kZXJlcjsKIH0KIAogUmVuZGVyT2JqZWN0KiBDb3VudGVyQ29udGVudERhdGE6
OmNyZWF0ZVJlbmRlcmVyKERvY3VtZW50KiBkb2MsIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSkg
Y29uc3QKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbmV3IChkb2MtPnJlbmRlckFy
ZW5hKCkpIFJlbmRlckNvdW50ZXIoZG9jLCAqbV9jb3VudGVyKTsKLSAgICByZW5kZXJlci0+c2V0
U3R5bGUocHNldWRvU3R5bGUpOworICAgIHJlbmRlcmVyLT5zZXRQc2V1ZG9TdHlsZShwc2V1ZG9T
dHlsZSk7CiAgICAgcmV0dXJuIHJlbmRlcmVyOwogfQogCiBSZW5kZXJPYmplY3QqIFF1b3RlQ29u
dGVudERhdGE6OmNyZWF0ZVJlbmRlcmVyKERvY3VtZW50KiBkb2MsIFJlbmRlclN0eWxlKiBwc2V1
ZG9TdHlsZSkgY29uc3QKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbmV3IChkb2Mt
PnJlbmRlckFyZW5hKCkpIFJlbmRlclF1b3RlKGRvYywgbV9xdW90ZSk7Ci0gICAgcmVuZGVyZXIt
PnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKKyAgICByZW5kZXJlci0+c2V0UHNldWRvU3R5bGUocHNl
dWRvU3R5bGUpOwogICAgIHJldHVybiByZW5kZXJlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177418</attachid>
            <date>2012-12-03 22:37:19 -0800</date>
            <delta_ts>2012-12-03 22:54:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103705-20121203223445.patch</filename>
            <type>text/plain</type>
            <size>56122</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk2ZDc0M2UwMjYwODQ0
MWRmYzUwNWNjNWIzMDQyOTA0NTVkMWY0Ny4uYjVkM2Y4MjFiYTY3N2RlNDNiMjgwMGIxNmY0NGY3
Y2FlOTllMWI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMSBAQAorMjAxMi0xMi0wMyAgRWxs
aW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgZm9yIDpiZWZvcmUgYW5kIDphZnRlciBpbiBET00KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzcwNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbGwgaW5mcmFzdHJ1Y3R1cmUgZm9y
IHJlaW1wbGVtZW50aW5nIGdlbmVyYXRlZCBjb250ZW50IDpiZWZvcmUgYW5kCisgICAgICAgIDph
ZnRlciBhcyBET00gRWxlbWVudHMuIE5vdyBFbGVtZW50UmFyZURhdGEgaGFzIHR3byBwb2ludGVy
cyB0byBQc2V1ZG9FbGVtZW50cworICAgICAgICBmb3IgdGhlIGdlbmVyYXRlZCBjb250ZW50IGFu
ZCBOb2RlIGhhcyBtZXRob2RzIGZvciB0cmF2ZXJzaW5nIHRoZSB0cmVlCisgICAgICAgIGluY2x1
ZGluZyBnZW5lcmF0ZWQgY29udGVudC4KKworICAgICAgICBUaGlzIHdpbGwgYWxsb3cgdGhlIGdl
bmVyYXRlZCBjb250ZW50IHRvIGJlIHRyZWF0ZWQgYXMgcmVhbCBub2RlcyBpbnN0ZWFkCisgICAg
ICAgIG9mIGFub255bW91cyBhbmQgdGFrZSBwYXJ0IGluIHRoZSB1c3VhbCByZWNhbGNTdHlsZSBh
bmQgYXR0YWNoIGZsb3cgd2hpY2gKKyAgICAgICAgZml4ZXMgbWFueSBidWdzIGFuZCB2YXN0bHkg
c2ltcGxpZmllcyB0aGUgaWZlY3ljbGUgb2YgZ2VuZXJhdGVkIGNvbnRlbnQuCisKKyAgICAgICAg
SW5zdGVhZCBvZiBhdHRlbXB0aW5nIHRvIGxhbmQgYm90aCB0aGUgaW5mcmFzdHJ1Y3R1cmUgYW5k
IGVuYWJsZSBpdCBhdAorICAgICAgICB0aGUgc2FtZSB0aW1lIHdoaWNoIGhhcyBwcm92ZW4gcHJv
YmxlbWF0aWMgZHVlIHRvIGhvdyBkcmFzdGljIHRoaXMgY2hhbmdlCisgICAgICAgIGlzLCB0aGlz
IHBhdGNoIGNvbnRhaW5zIG9ubHkgdGhlIHN1cHBvcnQgY29kZSBzbyBhIG11Y2ggc21hbGxlciBm
dXR1cmUKKyAgICAgICAgcGF0Y2ggY2FuIGJlIHVzZWQgdG8gc3dpdGNoIGl0IG9uLgorCisgICAg
ICAgIE5vIG5ldyBiZWhhdmlvciwgdGhpcyBpcyBqdXN0IHRoZSBpbmZyYXN0cnVjdHVyZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6fkVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Y3JlYXRlUHNldWRvRWxlbWVudElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmJlZm9yZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6YWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAo
RWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6RWxl
bWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6fkVsZW1l
bnRSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldFBzZXVk
b0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpwc2V1ZG9FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6cmVsZWFzZVBzZXVkb0Vs
ZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBz
ZXVkb0F3YXJlTmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyZXJJ
c0VkaXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQWNjZXB0Q2hpbGQpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmlzUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0JlZm9yZVBzZXVk
b0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNBZnRlclBzZXVkb0VsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6Y3VzdG9tUHNldWRvSWQpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRl
cmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1Jl
bmRlcmVyKToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2VuZGFudHNXaXRoSGVpZ2h0KToK
KyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVu
dDo6UHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpjdXN0
b21TdHlsZUZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OmF0
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OnVwZGF0ZUNoaWxkU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUpOgorICAgICAg
ICAqIGRvbS9Qc2V1ZG9FbGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoUHNldWRvRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6cHNldWRvRWxlbWVudElzTmVlZGVkKToKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVf
dW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5UHJldmlvdXNCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6bG9naWNhbGx5TmV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpzdGFy
dFBvc2l0aW9uRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjplbmRQb3NpdGlvbkZvckxpbmUp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6OnNldElubmVyTm9uU2hhcmVkTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppc1NlbGVjdGlvblJv
b3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlbmRlck5hbWUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckNvdW50ZXI6Om9yaWdpbmFsVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3g6OnJlbmRlck5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxp
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpyZW5kZXJOYW1lKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkJsb2NrOjpyZW5kZXJOYW1lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6Y3JlYXRlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0UHNl
dWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxl
UG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFJlbmRl
ck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdlbmVyYXRpbmdOb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZUNlbGw6OnJlbmRlck5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZVJvdy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OnJlbmRl
ck5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6cmVuZGVyTmFtZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9Db250ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRlbnREYXRhOjpj
cmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udGVudERhdGE6OmNyZWF0
ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJDb250ZW50RGF0YTo6Y3JlYXRl
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVvdGVDb250ZW50RGF0YTo6Y3JlYXRlUmVu
ZGVyZXIpOgorCiAyMDEyLTEyLTAzICBSYWZhZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IEhUTUxUZW1wbGF0ZUVsZW1lbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggOTUwYTM2MDlhN2ZhMGE5MGM1NTM5NTRkMzM2Y2QyMjc4NzEwYzBlNS4u
YjAzYzQzMzQzOWY0OWE5OGNhOWUzMmYyNjc4MGMyZWUxYjY2ZWQyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEyMDMsNiArMTIwMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAogICAgIGRvbS9Qcm9ncmVzc0V2ZW50LmNwcAogICAg
IGRvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcAorICAgIGRvbS9Qc2V1ZG9FbGVtZW50LmNwcAogICAg
IGRvbS9RdWFsaWZpZWROYW1lLmNwcAogICAgIGRvbS9SYW5nZS5jcHAKICAgICBkb20vUmFuZ2VF
eGNlcHRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1YWY3ZWY1NjFj
MDdmZGI5MjhlODQ0NTNiMmJlOGZjN2U0N2M2MDYwLi40NGY1OGMwNGRiYmI2ZDkwY2UwYjdiZWE3
OTZhNDcxMWE5MDU0MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI5MDIs
NiArMjkwMiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1By
b2dyZXNzRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Byb3BlcnR5Tm9kZUxpc3QuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUHJvcGVydHlOb2RlTGlzdC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9F
bGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlQm91bmRhcnlQb2ludC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDI5OTAyMWM5ZTJmYzM2ZWMyYWJj
OGM2ZGU1ZDQ1YThkMjA4YTQ0ZGEuLjNmNzIyMzg4Yjc5ZDIxNzRjM2Y0ZGM1Yjg3YmM0OGZmZjI0
M2I1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNDQxLDYgKzQ0MSw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIFwKICAgICBkb20vUHJvZ3Jlc3NFdmVudC5j
cHAgXAogICAgIGRvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcCBcCisgICAgZG9tL1BzZXVkb0VsZW1l
bnQuY3BwIFwKICAgICBkb20vUXVhbGlmaWVkTmFtZS5jcHAgXAogICAgIGRvbS9SYW5nZS5jcHAg
XAogICAgIGRvbS9SYW5nZUV4Y2VwdGlvbi5jcHAgXApAQCAtMTYxNyw2ICsxNjE4LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIFwKICAgICBkb20vUHJv
Z3Jlc3NFdmVudC5oIFwKICAgICBkb20vUHJvcGVydHlOb2RlTGlzdC5oIFwKKyAgICBkb20vUHNl
dWRvRWxlbWVudC5oIFwKICAgICBkb20vUXVhbGlmaWVkTmFtZS5oIFwKICAgICBkb20vUmFuZ2Uu
aCBcCiAgICAgZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IGRiZmZhNTQ3ZTlkZjBjMzU1MjdkMWFkNjc5ZTg1NjQ3ZTcyNDM3MGYuLjViMGIzYzJiZWZj
MDI3NGYwNDFmNzNhMDJhODc2OWRkZWIwZTVhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTY4NCw2
ICs2ODQsNyBAQAogICAgICAgICAgICAgJ2RvbS9Ob2RlTGlzdC5oJywKICAgICAgICAgICAgICdk
b20vUGVuZGluZ1NjcmlwdC5oJywKICAgICAgICAgICAgICdkb20vUG9zaXRpb24uaCcsCisgICAg
ICAgICAgICAnZG9tL1BzZXVkb0VsZW1lbnQuaCcsCiAgICAgICAgICAgICAnZG9tL1F1YWxpZmll
ZE5hbWUuaCcsCiAgICAgICAgICAgICAnZG9tL1JhbmdlLmgnLAogICAgICAgICAgICAgJ2RvbS9S
YW5nZUJvdW5kYXJ5UG9pbnQuaCcsCkBAIC0zOTA5LDYgKzM5MTAsNyBAQAogICAgICAgICAgICAg
J2RvbS9Qcm9ncmVzc0V2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9Qcm9wZXJ0eU5vZGVMaXN0
LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1Byb3BlcnR5Tm9kZUxpc3QuaCcsCisgICAgICAgICAg
ICAnZG9tL1BzZXVkb0VsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vUXVhbGlmaWVkTmFt
ZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9SYW5nZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9S
YW5nZUV4Y2VwdGlvbi5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCBlOTk0ODBjOWQ0MDE4MjdjY2I0MmQ5YTI3YThkNmU3NGU4ZTQ3MTM4
Li5jYjQ2Yjk2NjZkMzMxODZhZDczZTU3ZjRlYTFiYjNlMDFmNDRlZTQ1IDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTM4OTAsNiArNTM4OTAs
NjIgQEAKIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQc2V1ZG9FbGVtZW50LmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQc2V1ZG9FbGVtZW50LmNwcCIK
KwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1
Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXFByb3BlcnR5Tm9kZUxpc3QuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzBmZTM3
ODM0Zjc5ZTZjZjFjY2QxYTU0YzVkZWRkMjRlOTQ5YThmYi4uZGVkOWMyNWIyOWM3MTJkNTUxOGI2
MDAyYjIyM2NhOGU2MzM1NzE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjYzOSw2ICs2NjM5LDggQEAKIAkJRkU4MERBNjYw
RTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b3Bvc2l0aW9uLmggKi87IH07CiAJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07
CiAJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkY5NDVFQ0IxNjFGN0YzNjAw
OTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1l
bnQuY3BwICovOyB9OworCQlGRjk0NUVDQzE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY5NDVF
Q0ExNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuaCAqLzsgfTsKIAkJRkZENUI5N0Ex
MzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkZENUI5NzcxMzVDQzk3ODAwRDVFOTJB
IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovOyB9OwogCQlGRkQ1Qjk3QjEzNUNDOTc4MDBE
NUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkZENUI5NzgxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNp
YmlsaXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRkQ4NkU3ODE1Rjk1ODM2MDAwNDcyMzMgLyogSlNEZXBlbmRlbnRSZXRhaW5lZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkZEODZFNzcx
NUY5NTgzNjAwMDQ3MjMzIC8qIEpTRGVwZW5kZW50UmV0YWluZWQuaCAqLzsgfTsKQEAgLTE0MTgx
LDYgKzE0MTgzLDggQEAKIAkJRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW9wb3NpdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyog
SlNQb3NpdGlvbkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTUG9zaXRpb25FcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBE
QTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZGOTQ1RUM5MTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBzZXVkb0VsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRjk0NUVDQTE2MUY3RjM2MDA5NzFCQzggLyog
UHNldWRvRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1ZG9F
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGRDVCOTc3MTM1Q0M5Nzgw
MEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRkQ1Qjk3ODEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGRDg2RTc3MTVGOTU4MzYwMDA0
NzIzMyAvKiBKU0RlcGVuZGVudFJldGFpbmVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRGVwZW5kZW50UmV0YWluZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIyMTA4LDYgKzIyMTEyLDggQEAKIAkJCQkxMDU5NDU5NjE1QjQyQThFMDA0RDM3RkQgLyog
UHJvcGVydHlOb2RlTGlzdC5jcHAgKi8sCiAJCQkJMTA1OTQ1OTgxNUI0MkFBMDAwNEQzN0ZEIC8q
IFByb3BlcnR5Tm9kZUxpc3QuaCAqLywKIAkJCQkxMDU5NDU5QTE1QjQyQUMwMDA0RDM3RkQgLyog
UHJvcGVydHlOb2RlTGlzdC5pZGwgKi8sCisJCQkJRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8q
IFBzZXVkb0VsZW1lbnQuY3BwICovLAorCQkJCUZGOTQ1RUNBMTYxRjdGMzYwMDk3MUJDOCAvKiBQ
c2V1ZG9FbGVtZW50LmggKi8sCiAJCQkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuY3BwICovLAogCQkJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmggKi8sCiAJCQkJRjUyM0QzMDMwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmNwcCAq
LywKQEAgLTI0OTE1LDYgKzI0OTIxLDcgQEAKIAkJCQk1MTRDNzY3NTBDRTkyM0ExMDA3RUYzQ0Qg
LyogUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUEwNTI1NjEwNTg4NzQw
MDBDQzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFG
OEUxMUExMjU2NTkyNjAwMjMwRkY3IC8qIFByb3h5U2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRjk0NUVDQzE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTBGQjA4NEIxNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0RDY4Nzc5MEVEN0FFNEYwMDZFQTk3OCAvKiBQdXJnZWFibGVC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQ
dXJnZVByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKQEAgLTI4MTg3LDYgKzI4MTk0LDcgQEAKIAkJ
CQk1MTRDNzY3NDBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRjhFMTMzMTI1NjVBNDQwMDIzMEZGNyAvKiBQcm94eVNlcnZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUY4RTFDMzEyNTY3M0UwMDAyMzBGRjcgLyogUHJveHlTZXJ2
ZXJDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRjk0NUVDQjE2MUY3RjM2MDA5NzFCQzgg
LyogUHNldWRvRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEQ2ODc3NzBFRDdBRTNE
MDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU1
MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTM3OUUzNzE2MTM3MzZBNjYwMEI5RTkxOSAvKiBRdW90ZWRQcmludGFibGUuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYjZiOTFi
YTkyNWQ1N2M1YjhmYmVhYmE4NWYzZDVkYzAxNTU5NGNjNC4uNWEyMGEzNjY1NTMxOTExODE3ZjRm
Nzg5MTFhZmI5ZGFlMmE2NTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApA
QCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uQ29kZSBjaGVja0FjY2Vw
dENoaWxkKENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3CiAgICAgaWYgKCFuZXdD
aGlsZCkKICAgICAgICAgcmV0dXJuIE5PVF9GT1VORF9FUlI7CiAKLSAgICAvLyBHb2VzIGNvbW1v
biBjYXNhZSBmYXN0IHBhdGggaWYgcG9zc2libGUuCisgICAgLy8gVXNlIGNvbW1vbiBjYXNlIGZh
c3QgcGF0aCBpZiBwb3NzaWJsZS4KICAgICBpZiAoKG5ld0NoaWxkLT5pc0VsZW1lbnROb2RlKCkg
fHwgbmV3Q2hpbGQtPmlzVGV4dE5vZGUoKSkgJiYgbmV3UGFyZW50LT5pc0VsZW1lbnROb2RlKCkp
IHsKICAgICAgICAgQVNTRVJUKCFuZXdQYXJlbnQtPmlzUmVhZE9ubHlOb2RlKCkpOwogICAgICAg
ICBBU1NFUlQoIW5ld1BhcmVudC0+aXNEb2N1bWVudFR5cGVOb2RlKCkpOwpAQCAtMTYxLDYgKzE2
MSwxMSBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbkNvZGUgY2hlY2tBY2NlcHRDaGlsZChDb250
YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIG5ldwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKKyAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBhbHNvIHByb3RlY3QgcmVs
ZWFzZSBidWlsZHMgZnJvbSB0cmVlIGNvcnJ1cHRpb24uCisgICAgQVNTRVJUKCFuZXdDaGlsZC0+
aXNQc2V1ZG9FbGVtZW50KCkpOworICAgIGlmIChuZXdDaGlsZC0+aXNQc2V1ZG9FbGVtZW50KCkp
CisgICAgICAgIHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisKICAgICBpZiAobmV3UGFy
ZW50LT5pc1JlYWRPbmx5Tm9kZSgpKQogICAgICAgICByZXR1cm4gTk9fTU9ESUZJQ0FUSU9OX0FM
TE9XRURfRVJSOwogICAgIGlmIChuZXdDaGlsZC0+aW5Eb2N1bWVudCgpICYmIG5ld0NoaWxkLT5p
c0RvY3VtZW50VHlwZU5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01B
bGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCmluZGV4IDI1
OTNlNTk1YWNmY2Q3ZmI4NTc5ODQxZjM2MWU5MjllN2U4ZWNiYWEuLjFkYjQyMmQ0MjE3OTA0ZDVl
ZTk0OTFiMTUzMGIxMTY1ZmI0ZjQ0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
T01BbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcApA
QCAtMTE0LDYgKzExNCw3IEBACiAjaW5jbHVkZSAiUG9zaXRpb25JdGVyYXRvci5jcHAiCiAjaW5j
bHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCIKICNpbmNsdWRlICJQcm9ncmVzc0V2ZW50
LmNwcCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmNwcCIKICNpbmNsdWRlICJSYW5nZS5jcHAi
CiAjaW5jbHVkZSAiUmFuZ2VFeGNlcHRpb24uY3BwIgogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0ZGMwYzVkZjUzYTkyM2Jm
OWJlOWNmMGFlZmU0MjczZWQ0MGQ3ZmU0Li45NDU2NWNhNmM5Yjk2MzEwZTg0NjQ3YmVkZTA4MjMy
MjZmMDE3MDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5j
bHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgog
I2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJSZW5kZXJXaWRnZXQuaCIKQEAgLTE4OCw2ICsxODksMTIgQEAgRWxlbWVudDo6fkVsZW1l
bnQoKQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKKyAgICAgICAg
RWxlbWVudFJhcmVEYXRhKiBkYXRhID0gZWxlbWVudFJhcmVEYXRhKCk7CisgICAgICAgIGRhdGEt
PnNldFBzZXVkb0VsZW1lbnQoQkVGT1JFLCAwKTsKKyAgICAgICAgZGF0YS0+c2V0UHNldWRvRWxl
bWVudChBRlRFUiwgMCk7CisgICAgfQorCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRT
aGFkb3cgPSBzaGFkb3coKSkgewogICAgICAgICBlbGVtZW50U2hhZG93LT5yZW1vdmVBbGxTaGFk
b3dSb290cygpOwogICAgICAgICBlbGVtZW50UmFyZURhdGEoKS0+bV9zaGFkb3cuY2xlYXIoKTsK
QEAgLTExODgsNiArMTE5NSw4IEBAIHZvaWQgRWxlbWVudDo6ZGV0YWNoKCkKICAgICBjYW5jZWxG
b2N1c0FwcGVhcmFuY2VVcGRhdGUoKTsKICAgICBpZiAoaGFzUmFyZURhdGEoKSkgewogICAgICAg
ICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbGVtZW50UmFyZURhdGEoKTsKKyAgICAgICAgZGF0
YS0+c2V0UHNldWRvRWxlbWVudChCRUZPUkUsIDApOworICAgICAgICBkYXRhLT5zZXRQc2V1ZG9F
bGVtZW50KEFGVEVSLCAwKTsKICAgICAgICAgZGF0YS0+c2V0SXNJbkNhbnZhc1N1YnRyZWUoZmFs
c2UpOwogICAgICAgICBkYXRhLT5yZXNldENvbXB1dGVkU3R5bGUoKTsKICAgICAgICAgZGF0YS0+
cmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucygpOwpAQCAtMjA2MSw2ICsyMDcwLDUzIEBA
IHZvaWQgRWxlbWVudDo6bm9ybWFsaXplQXR0cmlidXRlcygpCiAgICAgfQogfQogCit2b2lkIEVs
ZW1lbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoUHNldWRvSWQgcHNldWRvSWQsIFN0eWxlQ2hhbmdl
IGNoYW5nZSkKK3sKKyAgICBQc2V1ZG9FbGVtZW50KiBleGlzdGluZyA9IGhhc1JhcmVEYXRhKCkg
PyBlbGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVudChwc2V1ZG9JZCkgOiAwOworICAgIGlm
IChleGlzdGluZykgeworICAgICAgICAvLyBQc2V1ZG9FbGVtZW50IHN0eWxlcyBoYW5nIG9mZiB0
aGVpciBwYXJlbnQgZWxlbWVudCdzIHN0eWxlIHNvIGlmIHdlIG5lZWRlZAorICAgICAgICAvLyBh
IHN0eWxlIHJlY2FsYyB3ZSBzaG91bGQgRm9yY2Ugb25lIG9uIHRoZSBwc2V1ZG8uCisgICAgICAg
IGV4aXN0aW5nLT5yZWNhbGNTdHlsZShuZWVkc1N0eWxlUmVjYWxjKCkgPyBGb3JjZSA6IGNoYW5n
ZSk7CisKKyAgICAgICAgLy8gV2FpdCB1bnRpbCBvdXIgcGFyZW50IGlzIG5vdCBkaXNwbGF5ZWQg
b3IgcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQKKyAgICAgICAgLy8gaXMgZmFsc2UsIG90
aGVyd2lzZSB3ZSBjb3VsZCBjb250aW5vdXNseSBjcmVhdGUgYW5kIGRlc3Ryb3kgUHNldWRvRWxl
bWVudHMKKyAgICAgICAgLy8gd2hlbiBSZW5kZXJPYmplY3Q6OmlzQ2hpbGRBbGxvd2VkIG9uIG91
ciBwYXJlbnQgcmV0dXJucyBmYWxzZSBmb3IgdGhlCisgICAgICAgIC8vIFBzZXVkb0VsZW1lbnQn
cyByZW5kZXJlci4KKyAgICAgICAgaWYgKCFyZW5kZXJlcigpIHx8ICFwc2V1ZG9FbGVtZW50UmVu
ZGVyZXJJc05lZWRlZChyZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCkp
KQorICAgICAgICAgICAgZWxlbWVudFJhcmVEYXRhKCktPnNldFBzZXVkb0VsZW1lbnQocHNldWRv
SWQsIDApOworICAgIH0gZWxzZSBpZiAoUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IGVsZW1lbnQgPSBj
cmVhdGVQc2V1ZG9FbGVtZW50SWZOZWVkZWQocHNldWRvSWQpKSB7CisgICAgICAgIGVsZW1lbnQt
PmF0dGFjaCgpOworICAgICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0UHNldWRvRWxl
bWVudChwc2V1ZG9JZCwgZWxlbWVudC5yZWxlYXNlKCkpOworICAgIH0KK30KKworUGFzc1JlZlB0
cjxQc2V1ZG9FbGVtZW50PiBFbGVtZW50OjpjcmVhdGVQc2V1ZG9FbGVtZW50SWZOZWVkZWQoUHNl
dWRvSWQgcHNldWRvSWQpCit7CisgICAgaWYgKCFkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVj
dGlvbigpLT51c2VzQmVmb3JlQWZ0ZXJSdWxlcygpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyZXIoKS0+Y2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVu
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGlzUHNldWRvRWxlbWVudCgpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGlmICghcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQo
cmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQpKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gUHNldWRvRWxlbWVudDo6Y3JlYXRlKHRoaXMsIHBzZXVkb0lk
KTsKK30KKworUHNldWRvRWxlbWVudCogRWxlbWVudDo6YmVmb3JlUHNldWRvRWxlbWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cHNl
dWRvRWxlbWVudChCRUZPUkUpIDogMDsKK30KKworUHNldWRvRWxlbWVudCogRWxlbWVudDo6YWZ0
ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVs
ZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KEFGVEVSKSA6IDA7Cit9CisKIC8vIEVsZW1l
bnRUcmF2ZXJzYWwgQVBJCiBFbGVtZW50KiBFbGVtZW50OjpmaXJzdEVsZW1lbnRDaGlsZCgpIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBhMjQ1OTRmNWU2YmQ4MTczNjQzN2FjZjVlZTVl
YzM3OWMxZjg4NmVkLi5hNTJiMWJmNDkzYTVjYTFiZjYzZmRhYzRmMWM5Mjg3YjgwYzQ1MDYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgRWxlbWVudFJhcmVEYXRh
OwogY2xhc3MgRWxlbWVudFNoYWRvdzsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBMb2NhbGU7Citj
bGFzcyBQc2V1ZG9FbGVtZW50OwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgU2hhZG93Um9v
dDsKIGNsYXNzIFdlYktpdEFuaW1hdGlvbkxpc3Q7CkBAIC0zNjUsNiArMzY2LDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5QYXJzaW5nQ2hpbGRyZW4oKTsKIAorICAgIFBzZXVkb0VsZW1lbnQqIGJlZm9y
ZVBzZXVkb0VsZW1lbnQoKSBjb25zdDsKKyAgICBQc2V1ZG9FbGVtZW50KiBhZnRlclBzZXVkb0Vs
ZW1lbnQoKSBjb25zdDsKKwogICAgIC8vIEVsZW1lbnRUcmF2ZXJzYWwgQVBJCiAgICAgRWxlbWVu
dCogZmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdDsKICAgICBFbGVtZW50KiBsYXN0RWxlbWVudENo
aWxkKCkgY29uc3Q7CkBAIC00OTMsNiArNDk3LDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2xh
c3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpOwog
CiBwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlUHNldWRvRWxlbWVudChQc2V1ZG9JZCwgU3R5bGVD
aGFuZ2UgPSBOb0NoYW5nZSk7CisgICAgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50PiBjcmVhdGVQ
c2V1ZG9FbGVtZW50SWZOZWVkZWQoUHNldWRvSWQpOworCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGUgbmVlZCBmb3IgQXR0ciB0byBjYWxsIHdpbGxNb2RpZnlBdHRyaWJ1dGUvZGlkTW9kaWZ5QXR0
cmlidXRlLgogICAgIGZyaWVuZCBjbGFzcyBBdHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmgKaW5kZXggZGM2MmRmNjAxYjk4MGUzMGI4OTJhYjYzMmVmMmNkNTcxYzkzMjBhNy4u
NzMyOGUyODZjZTZkYjFiMzgzNWM1MDg1ZWI5YTgwMmMwMjgyNDAwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnRT
aGFkb3cuaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJOb2RlUmFyZURh
dGEuaCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0
ZWREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC0zNyw2ICszOCw5IEBAIHB1
YmxpYzoKICAgICBFbGVtZW50UmFyZURhdGEoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5FbGVt
ZW50UmFyZURhdGEoKTsKIAorICAgIHZvaWQgc2V0UHNldWRvRWxlbWVudChQc2V1ZG9JZCwgUGFz
c1JlZlB0cjxQc2V1ZG9FbGVtZW50Pik7CisgICAgUHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVu
dChQc2V1ZG9JZCkgY29uc3Q7CisKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogICAg
IHZvaWQgcmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucygpOwogCkBAIC04Myw3ICs4Nywx
MyBAQCBwdWJsaWM6CiAgICAgT3duUHRyPEVsZW1lbnRTaGFkb3c+IG1fc2hhZG93OwogICAgIE93
blB0cjxOYW1lZE5vZGVNYXA+IG1fYXR0cmlidXRlTWFwOwogCisgICAgUmVmUHRyPFBzZXVkb0Vs
ZW1lbnQ+IG1fZ2VuZXJhdGVkQmVmb3JlOworICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2dl
bmVyYXRlZEFmdGVyOworCiAgICAgSW50U2l6ZSBtX3NhdmVkTGF5ZXJTY3JvbGxPZmZzZXQ7CisK
K3ByaXZhdGU6CisgICAgdm9pZCByZWxlYXNlUHNldWRvRWxlbWVudChQc2V1ZG9FbGVtZW50Kik7
CiB9OwogCiBpbmxpbmUgSW50U2l6ZSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpCkBA
IC05NCwxMiArMTA0LDU5IEBAIGlubGluZSBJbnRTaXplIGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJl
c2l6aW5nKCkKIGlubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YShEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBOb2RlUmFyZURhdGEoZG9jdW1lbnQpCiAgICAgLCBtX21pbmlt
dW1TaXplRm9yUmVzaXppbmcoZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKSkKKyAgICAs
IG1fZ2VuZXJhdGVkQmVmb3JlKDApCisgICAgLCBtX2dlbmVyYXRlZEFmdGVyKDApCiB7CiB9CiAK
IGlubGluZSBFbGVtZW50UmFyZURhdGE6On5FbGVtZW50UmFyZURhdGEoKQogewogICAgIEFTU0VS
VCghbV9zaGFkb3cpOworICAgIEFTU0VSVCghbV9nZW5lcmF0ZWRCZWZvcmUpOworICAgIEFTU0VS
VCghbV9nZW5lcmF0ZWRBZnRlcik7Cit9CisKK2lubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6
c2V0UHNldWRvRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG9JZCwgUGFzc1JlZlB0cjxQc2V1ZG9FbGVt
ZW50PiBlbGVtZW50KQoreworICAgIHN3aXRjaCAocHNldWRvSWQpIHsKKyAgICBjYXNlIEJFRk9S
RToKKyAgICAgICAgcmVsZWFzZVBzZXVkb0VsZW1lbnQobV9nZW5lcmF0ZWRCZWZvcmUpOworICAg
ICAgICBtX2dlbmVyYXRlZEJlZm9yZSA9IGVsZW1lbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQUZURVI6CisgICAgICAgIHJlbGVhc2VQc2V1ZG9FbGVtZW50KG1fZ2VuZXJhdGVkQWZ0ZXIp
OworICAgICAgICBtX2dlbmVyYXRlZEFmdGVyID0gZWxlbWVudDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitp
bmxpbmUgUHNldWRvRWxlbWVudCogRWxlbWVudFJhcmVEYXRhOjpwc2V1ZG9FbGVtZW50KFBzZXVk
b0lkIHBzZXVkb0lkKSBjb25zdAoreworICAgIHN3aXRjaCAocHNldWRvSWQpIHsKKyAgICBjYXNl
IEJFRk9SRToKKyAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdGVkQmVmb3JlLmdldCgpOworICAgIGNh
c2UgQUZURVI6CisgICAgICAgIHJldHVybiBtX2dlbmVyYXRlZEFmdGVyLmdldCgpOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9Cit9CisKK2lubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVsZWFzZVBzZXVkb0Vs
ZW1lbnQoUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50PiBlbGVtZW50KQoreworICAgIGlmICghZWxl
bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGVsZW1lbnQtPmF0dGFjaGVkKCkpCisg
ICAgICAgIGVsZW1lbnQtPmRldGFjaCgpOworCisgICAgQVNTRVJUKCFlbGVtZW50LT5uZXh0U2li
bGluZygpKTsKKyAgICBBU1NFUlQoIWVsZW1lbnQtPnByZXZpb3VzU2libGluZygpKTsKKworICAg
IGVsZW1lbnQtPnNldFBhcmVudE9ySG9zdE5vZGUoMCk7CiB9CiAKIGlubGluZSB2b2lkIEVsZW1l
bnRSYXJlRGF0YTo6cmVzZXRDb21wdXRlZFN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBkMmZi
YjE2YzhmNDU4OWZmNDIwNGI5NGU3YTU5NmFkYzkwMDUxYmRkLi40NjExZmY1YzVkMmNhZGI2ZmE2
Yzg5OWM2OGU1Y2IzM2NmNDAzZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00NDcsNiArNDQ3LDM0
IEBAIHZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCiAgICAgZW5zdXJl
UmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHNjb3BlKTsKIH0KIAorTm9kZSogTm9kZTo6cHNldWRv
QXdhcmVQcmV2aW91c1NpYmxpbmcoKSBjb25zdAoreworICAgIGlmIChpc0VsZW1lbnROb2RlKCkg
JiYgIXByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVu
dE9ySG9zdEVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgaWYgKGlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkgJiYgcGFyZW50LT5sYXN0
Q2hpbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPmxhc3RDaGlsZCgpOworICAgICAg
ICBpZiAoIWlzQmVmb3JlUHNldWRvRWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dC0+YmVmb3JlUHNldWRvRWxlbWVudCgpOworICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXNTaWJs
aW5nKCk7Cit9CisKK05vZGUqIE5vZGU6OnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSBjb25zdAor
eworICAgIGlmIChpc0VsZW1lbnROb2RlKCkgJiYgIW5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
RWxlbWVudCogcGFyZW50ID0gcGFyZW50T3JIb3N0RWxlbWVudCgpOworICAgICAgICBpZiAoIXBh
cmVudCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoaXNCZWZvcmVQc2V1ZG9F
bGVtZW50KCkgJiYgcGFyZW50LT5maXJzdENoaWxkKCkpCisgICAgICAgICAgICByZXR1cm4gcGFy
ZW50LT5maXJzdENoaWxkKCk7CisgICAgICAgIGlmICghaXNBZnRlclBzZXVkb0VsZW1lbnQoKSkK
KyAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPmFmdGVyUHNldWRvRWxlbWVudCgpOworICAgIH0K
KyAgICByZXR1cm4gbmV4dFNpYmxpbmcoKTsKK30KKwogTm9kZVJhcmVEYXRhKiBOb2RlOjpyYXJl
RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwpAQCAtNzA1LDYgKzcz
Myw5IEBAIGJvb2wgTm9kZTo6cmVuZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlTGV2ZWwgZWRpdGFi
bGVMZXZlbCwgVXNlclNlbGVjdEFsbFRyZWF0bWVuCiAgICAgaWYgKGRvY3VtZW50KCktPmZyYW1l
KCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCkt
PnBhZ2UoKS0+aXNFZGl0YWJsZSgpICYmICFzaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCisgICAgaWYgKGlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICAvLyBJZGVhbGx5IHdlJ2QgY2FsbCBBU1NFUlQoIW5lZWRzU3R5bGVSZWNhbGMoKSkg
aGVyZSwgYnV0CiAgICAgLy8gQ29udGFpbmVyTm9kZTo6c2V0Rm9jdXMoKSBjYWxscyBzZXROZWVk
c1N0eWxlUmVjYWxjKCksIHNvIHRoZSBhc3NlcnRpb24KICAgICAvLyB3b3VsZCBmaXJlIGluIHRo
ZSBtaWRkbGUgb2YgRG9jdW1lbnQ6OnNldEZvY3VzZWROb2RlKCkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1
YmRmYmVhZTA2YmI4ZjQzNDUwNDE4NDIzYzRmYWQxOWQ1YWJhNmFkLi5lZjQwNWMwYTZiYTM0YjQ0
MmU3MmFkMjhlYjc5ZGJlOTk0ZmNkODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTE5MCw2ICsxOTAsOSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgTmFtZWROb2Rl
TWFwKiBhdHRyaWJ1dGVzKCkgY29uc3Q7CiAKKyAgICBOb2RlKiBwc2V1ZG9Bd2FyZVByZXZpb3Vz
U2libGluZygpIGNvbnN0OworICAgIE5vZGUqIHBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSBjb25z
dDsKKwogICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJJKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBn
ZXRTdWJyZXNvdXJjZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKQEAgLTIzNCw2ICsy
MzcsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNIVE1MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGdldEZsYWcoSXNIVE1MRmxhZyk7IH0KICAgICBib29sIGlzU1ZHRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGdldEZsYWcoSXNTVkdGbGFnKTsgfQogCisgICAgYm9vbCBpc1BzZXVkb0VsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBwc2V1ZG9JZCgpICE9IE5PUFNFVURPOyB9CisgICAgYm9vbCBpc0Jl
Zm9yZVBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9JZCgpID09IEJFRk9SRTsg
fQorICAgIGJvb2wgaXNBZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9J
ZCgpID09IEFGVEVSOyB9CisgICAgUHNldWRvSWQgcHNldWRvSWQoKSBjb25zdCB7IHJldHVybiAo
aXNFbGVtZW50Tm9kZSgpICYmIGhhc0N1c3RvbUNhbGxiYWNrcygpKSA/IGN1c3RvbVBzZXVkb0lk
KCkgOiBOT1BTRVVETzsgfQorCiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sRWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250
cm9scygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1N0eWxlZEVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzU3R5bGVkRWxlbWVudEZsYWcpOyB9CkBAIC03NDIs
NiArNzUwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBDcmVhdGVUZXh0ID0gRGVmYXVsdE5vZGVG
bGFncyB8IElzVGV4dEZsYWcsCiAgICAgICAgIENyZWF0ZUNvbnRhaW5lciA9IERlZmF1bHROb2Rl
RmxhZ3MgfCBJc0NvbnRhaW5lckZsYWcsIAogICAgICAgICBDcmVhdGVFbGVtZW50ID0gQ3JlYXRl
Q29udGFpbmVyIHwgSXNFbGVtZW50RmxhZywgCisgICAgICAgIENyZWF0ZVBzZXVkb0VsZW1lbnQg
PSAgQ3JlYXRlRWxlbWVudCB8IEluRG9jdW1lbnRGbGFnLAogICAgICAgICBDcmVhdGVTaGFkb3dS
b290ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50RmxhZywKICAgICAgICAg
Q3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnRGcmFn
bWVudEZsYWcsCiAgICAgICAgIENyZWF0ZVN0eWxlZEVsZW1lbnQgPSBDcmVhdGVFbGVtZW50IHwg
SXNTdHlsZWRFbGVtZW50RmxhZywgCkBAIC03NTQsNiArNzYzLDEyIEBAIHByb3RlY3RlZDoKICAg
ICB9OwogICAgIE5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlKTsKIAorICAgIHZpcnR1
YWwgUHNldWRvSWQgY3VzdG9tUHNldWRvSWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KGhhc0N1c3RvbUNhbGxiYWNrcygpKTsKKyAgICAgICAgcmV0dXJuIE5PUFNFVURPOworICAgIH0K
KwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9j
dW1lbnQpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDE0ODJmYzQ0YWJiMDkyNDIyMzIwNDQwMDAzNTZj
YjE2ZWMwMzI5YzUuLjQ2NDZjZDg0YTNkOWMwYjY2YmYzMjAzMzZiZDUxMzk5NTljNGE0YzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtODMsNiAr
ODMsMTUgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVy
KCkgY29uc3QKICAgICBpZiAobV9wYXJlbnREZXRhaWxzLm5vZGUoKSAmJiAhbV9wYXJlbnREZXRh
aWxzLm5vZGUoKS0+YXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAvLyBGSVhN
RTogVGhpcyBpcyB3cm9uZyB3aGVuIHRoZSBuZXh0IHNpYmxpbmcgd2FzIGFjdHVhbGx5IG1vdmVk
IGFyb3VuZCBieSBzaGFkb3cgaW5zZXJ0aW9uIHBvaW50cy4KKyAgICBpZiAobV9ub2RlLT5pc1Bz
ZXVkb0VsZW1lbnQoKSkgeworICAgICAgICBmb3IgKE5vZGUqIHNpYmxpbmcgPSBtX25vZGUtPnBz
ZXVkb0F3YXJlTmV4dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnBzZXVk
b0F3YXJlTmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBzaWJsaW5nLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiByZW5k
ZXJlcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG1fbm9kZSk7CiAgICAgZm9yICh3YWxrZXIubmV4dFNp
YmxpbmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIubmV4dFNpYmxpbmcoKSkgewogICAgICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHdhbGtlci5nZXQoKS0+cmVuZGVyZXIoKSkgewpA
QCAtMTAxLDYgKzExMCwxMCBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpw
cmV2aW91c1JlbmRlcmVyKCkgY29uc3QKICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG1fbm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5wcmV2aW91c1Np
YmxpbmcoKTsKIAorICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBkb2Vzbid0IHN1cHBvcnQgcHNl
dWRvIGVsZW1lbnRzIHNpbmNlIG5vdGhpbmcgbmVlZHMKKyAgICAvLyBwcmV2aW91c1JlbmRlcmVy
KCkgc3VwcG9ydCBmb3IgdGhlbSB5ZXQuCisgICAgQVNTRVJUKCFtX25vZGUtPmlzUHNldWRvRWxl
bWVudCgpKTsKKwogICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKICAgICAgICAgcmV0dXJu
IG1fcGFyZW50Rmxvd1JlbmRlcmVyLT5wcmV2aW91c1JlbmRlcmVyRm9yTm9kZShtX25vZGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCBjYjYwNzAwNzA3MWMyYzcyMWU3MDNlNDJhNDEz
ODU0YTYzN2RhMDQzLi5hMWMwYjAxZTEwMjQyNTMxNmE2NjkzMzRlMzJkZTQzNDI4MTRiMmUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTg0MCw3ICs4NDAsNyBAQCBib29sIFBvc2l0aW9u
OjpoYXNSZW5kZXJlZE5vbkFub255bW91c0Rlc2NlbmRhbnRzV2l0aEhlaWdodChSZW5kZXJPYmpl
Y3QqIHJlbmRlcgogewogICAgIFJlbmRlck9iamVjdCogc3RvcCA9IHJlbmRlcmVyLT5uZXh0SW5Q
cmVPcmRlckFmdGVyQ2hpbGRyZW4oKTsKICAgICBmb3IgKFJlbmRlck9iamVjdCAqbyA9IHJlbmRl
cmVyLT5maXJzdENoaWxkKCk7IG8gJiYgbyAhPSBzdG9wOyBvID0gby0+bmV4dEluUHJlT3JkZXIo
KSkKLSAgICAgICAgaWYgKG8tPm5vZGUoKSkgeworICAgICAgICBpZiAoby0+bm9kZSgpICYmICFv
LT5ub2RlKCktPmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoKG8tPmlzVGV4
dCgpICYmIHRvUmVuZGVyVGV4dChvKS0+bGluZXNCb3VuZGluZ0JveCgpLmhlaWdodCgpKSB8fAog
ICAgICAgICAgICAgICAgIChvLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KG8pLT5ib3JkZXJCb3Vu
ZGluZ0JveCgpLmhlaWdodCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzdhMjk1NDQwNTA5YzQ0OTY3
N2U0MDYwMzIwOGQzZmRhMGFiZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKKworI2luY2x1ZGUgIkNvbnRlbnREYXRh
LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBRdWFsaWZpZWROYW1lJiBw
c2V1ZG9FbGVtZW50VGFnTmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZp
ZWROYW1lLCBuYW1lLCAobnVsbEF0b20sICI8cHNldWRvPiIsIG51bGxBdG9tKSk7CisgICAgcmV0
dXJuIG5hbWU7Cit9CisKK1BzZXVkb0VsZW1lbnQ6OlBzZXVkb0VsZW1lbnQoRWxlbWVudCogcGFy
ZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKKyAgICA6IEVsZW1lbnQocHNldWRvRWxlbWVudFRhZ05h
bWUoKSwgcGFyZW50LT5kb2N1bWVudCgpLCBDcmVhdGVQc2V1ZG9FbGVtZW50KQorICAgICwgbV9w
c2V1ZG9JZChwc2V1ZG9JZCkKK3sKKyAgICBBU1NFUlQocGFyZW50LT5pbkRvY3VtZW50KCkpOwor
ICAgIHNldFBhcmVudE9ySG9zdE5vZGUocGFyZW50KTsKKyAgICBzZXRIYXNDdXN0b21DYWxsYmFj
a3MoKTsKK30KKworUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUHNldWRvRWxlbWVudDo6Y3VzdG9t
U3R5bGVGb3JSZW5kZXJlcigpCit7CisgICAgcmV0dXJuIHBhcmVudE9ySG9zdEVsZW1lbnQoKS0+
cmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUobV9wc2V1ZG9JZCk7Cit9CisKK3ZvaWQg
UHNldWRvRWxlbWVudDo6YXR0YWNoKCkKK3sKKyAgICBBU1NFUlQoIXJlbmRlcmVyKCkpOworCisg
ICAgRWxlbWVudDo6YXR0YWNoKCk7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+c3R5bGUoKS0+
cmVnaW9uVGhyZWFkKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZW5kZXJT
dHlsZSogc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKKyAgICBBU1NFUlQoc3R5bGUtPmNvbnRl
bnREYXRhKCkpOworCisgICAgZm9yIChjb25zdCBDb250ZW50RGF0YSogY29udGVudCA9IHN0eWxl
LT5jb250ZW50RGF0YSgpOyBjb250ZW50OyBjb250ZW50ID0gY29udGVudC0+bmV4dCgpKSB7Cisg
ICAgICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBjb250ZW50LT5jcmVhdGVSZW5kZXJlcihkb2N1
bWVudCgpLCBzdHlsZSk7CisgICAgICAgIGlmIChyZW5kZXJlci0+aXNDaGlsZEFsbG93ZWQoY2hp
bGQsIHN0eWxlKSkKKyAgICAgICAgICAgIHJlbmRlcmVyLT5hZGRDaGlsZChjaGlsZCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNoaWxkLT5kZXN0cm95KCk7CisgICAgfQorfQorCitib29s
IFBzZXVkb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVk
KGNvbnRleHQuc3R5bGUoKSk7Cit9CisKK3ZvaWQgUHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5
bGUoU3R5bGVDaGFuZ2UpCit7CisgICAgaWYgKCFyZW5kZXJlcigpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBUaGUgcmVuZGVyZXJzIGluc2lkZSBwc2V1ZG8gZWxlbWVudHMgYXJlIGFub255
bW91cyBzbyB0aGV5IGRvbid0IGdldCBub3RpZmllZCBvZiByZWNhbGNTdHlsZSBhbmQgbXVzdCBo
YXZlCisgICAgLy8gdGhlIHN0eWxlIHByb3BhZ2F0ZWQgZG93bndhcmQgbWFudWFsbHkgc2ltaWxh
ciB0byBSZW5kZXJPYmplY3Q6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbi4KKyAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBmb3IgKFJl
bmRlck9iamVjdCogY2hpbGQgPSByZW5kZXJlci0+bmV4dEluUHJlT3JkZXIocmVuZGVyZXIpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dEluUHJlT3JkZXIocmVuZGVyZXIpKSB7CisgICAgICAg
IC8vIFdlIG9ubHkgbWFuYWdlIHRoZSBzdHlsZSBmb3IgdGhlIGdlbmVyYXRlZCBjb250ZW50IHdo
aWNoIG11c3QgYmUgaW1hZ2VzIG9yIHRleHQuCisgICAgICAgIGlmICghY2hpbGQtPmlzVGV4dCgp
ICYmICFjaGlsZC0+aXNJbWFnZSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
Ly8gVGhlIHN0eWxlIGZvciB0aGUgUmVuZGVyVGV4dEZyYWdtZW50IGZvciBmaXJzdCBsZXR0ZXIg
aXMgbWFuYWdlZCBieSBhbiBlbmNsb3NpbmcgYmxvY2ssIG5vdCBieSB1cy4KKyAgICAgICAgaWYg
KGNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBjaGlsZC0+c2V0UHNldWRvU3R5bGUocmVuZGVyZXItPnN0
eWxlKCkpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxl
bWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFhYzU3NDlkOTU0OTY1ZTU1NGIxODYxMzg4MGMxNzg5YzlmODkz
ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5o
CkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBzZXVkb0VsZW1lbnRfaAorI2RlZmluZSBQc2V1
ZG9FbGVtZW50X2gKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUHNldWRvRWxlbWVudCA6IHB1YmxpYyBFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50PiBjcmVhdGUoRWxlbWVudCogcGFyZW50LCBQc2V1
ZG9JZCBwc2V1ZG9JZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHNldWRv
RWxlbWVudChwYXJlbnQsIHBzZXVkb0lkKSk7CisgICAgfQorCisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgT1ZFUlJJREU7CisKKyAgICB2
aXJ0dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKK3ByaXZhdGU6CisgICAgUHNldWRvRWxlbWVu
dChFbGVtZW50KiwgUHNldWRvSWQpOworCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2FsY1N0eWxl
KFN0eWxlQ2hhbmdlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBzZXVkb0lkIGN1c3RvbVBzZXVk
b0lkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9wc2V1ZG9JZDsgfQorCisgICAgUHNldWRv
SWQgbV9wc2V1ZG9JZDsKK307CisKK2NvbnN0IFF1YWxpZmllZE5hbWUmIHBzZXVkb0VsZW1lbnRU
YWdOYW1lKCk7CisKK2lubGluZSBib29sIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRp
c3BsYXkoKSAhPSBOT05FICYmIChzdHlsZS0+Y29udGVudERhdGEoKSB8fCAhc3R5bGUtPnJlZ2lv
blRocmVhZCgpLmlzRW1wdHkoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKaW5kZXggNmVjYjc3YzY0NzQ4MmFj
ZjIyZTE3ZGMzOTNjMjQxYTQ3ZjJkNTU5Yy4uMmI2ZTk0ODAzYWM3OWU2MThkNDMzOTViYzg1MjY5
ODRiYzU3ZThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3Vu
aXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCkBA
IC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIGNvbnN0IElubGluZVRleHRCb3gqIGxvZ2ljYWxseVBy
ZXZpb3VzQm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVAKIAogICAgIHdoaWxlICgx
KSB7CiAgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJlcigpID8gc3Rh
cnRCb3gtPnJlbmRlcmVyKCktPm5vZGUoKSA6IDA7Ci0gICAgICAgIGlmICghc3RhcnROb2RlKQor
ICAgICAgICBpZiAoIXN0YXJ0Tm9kZSB8fCBzdGFydE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBwcmV2aW91
c1Jvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbihzdGFydE5vZGUsIHZpc2libGVQb3NpdGlv
biwgQ29udGVudElzRWRpdGFibGUpOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHN0YXRpYyBjb25zdCBJ
bmxpbmVUZXh0Qm94KiBsb2dpY2FsbHlOZXh0Qm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlz
aWJsZVBvc2l0CiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBOb2RlKiBzdGFydE5vZGUgPSBz
dGFydEJveC0+cmVuZGVyZXIoKSA/IHN0YXJ0Qm94LT5yZW5kZXJlcigpLT5ub2RlKCkgOiAwOwot
ICAgICAgICBpZiAoIXN0YXJ0Tm9kZSkKKyAgICAgICAgaWYgKCFzdGFydE5vZGUgfHwgc3RhcnRO
b2RlLT5pc1BzZXVkb0VsZW1lbnQoKSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIFBv
c2l0aW9uIHBvc2l0aW9uID0gbmV4dFJvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbihzdGFy
dE5vZGUsIHZpc2libGVQb3NpdGlvbiwgQ29udGVudElzRWRpdGFibGUpOwpAQCAtNzQ0LDcgKzc0
NCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbkZvckxpbmUoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOwogCiAgICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydFJlbmRlcmVy
LT5ub2RlKCk7Ci0gICAgICAgICAgICBpZiAoc3RhcnROb2RlKQorICAgICAgICAgICAgaWYgKHN0
YXJ0Tm9kZSAmJiAhc3RhcnROb2RlLT5pc1BzZXVkb0VsZW1lbnQoKSkKICAgICAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICAgICAgc3RhcnRCb3ggPSBzdGFydEJveC0+bmV4dExlYWZDaGls
ZCgpOwpAQCAtODE2LDcgKzgxNiw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRp
b25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVuZHBvaW50CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCiAgICAgICAgICAgICBlbmROb2Rl
ID0gZW5kUmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgICAgIGlmIChlbmROb2RlKQorICAgICAg
ICAgICAgaWYgKGVuZE5vZGUgJiYgIWVuZE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBlbmRCb3ggPSBlbmRC
b3gtPnByZXZMZWFmQ2hpbGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMjIxZWQ3ZDliYjgwNzQyMWRjYzZj
YmY5ZGQwMDU5NzA3OTAwMDBkYS4uMTJiZmM0YTI3OTI2NTkxZmYyNGZhZjk0NGNmMWQyZGZmZGVk
NjBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAKQEAgLTUyMSw2ICs1MjEsMTAgQEAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJPYmplY3Qq
IHJlbmQKICAgICBpZiAoIXJlbmRlcmVyLT5kb2N1bWVudCgpIHx8IHJlbmRlcmVyLT5kb2N1bWVu
dCgpLT5pblBhZ2VDYWNoZSgpKQogICAgICAgICByZXR1cm4gbmV3U3R5bGU7CiAKKyAgICAvLyBG
SVhNRTogV2UgZG8gbm90IGFuaW1hdGUgZ2VuZXJhdGVkIGNvbnRlbnQgeWV0LgorICAgIGlmIChy
ZW5kZXJlci0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiBuZXdTdHlsZTsKKwog
ICAgIFJlbmRlclN0eWxlKiBvbGRTdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogCiAgICAgaWYg
KCghb2xkU3R5bGUgfHwgKCFvbGRTdHlsZS0+YW5pbWF0aW9ucygpICYmICFvbGRTdHlsZS0+dHJh
bnNpdGlvbnMoKSkpICYmICghbmV3U3R5bGUtPmFuaW1hdGlvbnMoKSAmJiAhbmV3U3R5bGUtPnRy
YW5zaXRpb25zKCkpKQpAQCAtNTM0LDcgKzUzOCw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IEFuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5k
CiAgICAgLy8gYWdhaW5zdCB0aGUgYW5pbWF0aW9ucyBpbiB0aGUgc3R5bGUgYW5kIG1ha2Ugc3Vy
ZSB3ZSdyZSBpbiBzeW5jLiAgSWYgZGVzdGluYXRpb24gdmFsdWVzCiAgICAgLy8gaGF2ZSBjaGFu
Z2VkLCB3ZSByZXNldCB0aGUgYW5pbWF0aW9uLiAgV2UgdGhlbiBkbyBhIGJsZW5kIHRvIGdldCBu
ZXcgdmFsdWVzIGFuZCB3ZSByZXR1cm4KICAgICAvLyBhIG5ldyBzdHlsZS4KLSAgICBBU1NFUlQo
cmVuZGVyZXItPm5vZGUoKSk7IC8vIEZJWE1FOiBXZSBkbyBub3QgYW5pbWF0ZSBnZW5lcmF0ZWQg
Y29udGVudCB5ZXQuCisgICAgQVNTRVJUKHJlbmRlcmVyLT5ub2RlKCkgJiYgIXJlbmRlcmVyLT5p
c1BzZXVkb0VsZW1lbnQoKSk7IC8vIEZJWE1FOiBXZSBkbyBub3QgYW5pbWF0ZSBnZW5lcmF0ZWQg
Y29udGVudCB5ZXQuCiAKICAgICBSZWZQdHI8Q29tcG9zaXRlQW5pbWF0aW9uPiByZW5kZXJlckFu
aW1hdGlvbnMgPSBtX2RhdGEtPmFjY2Vzc0NvbXBvc2l0ZUFuaW1hdGlvbihyZW5kZXJlcik7CiAg
ICAgUmVmUHRyPFJlbmRlclN0eWxlPiBibGVuZGVkU3R5bGUgPSByZW5kZXJlckFuaW1hdGlvbnMt
PmFuaW1hdGUocmVuZGVyZXIsIG9sZFN0eWxlLCBuZXdTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggMzhmMWY2NzlmOTM2NWJiMWE5OWI0MDc5
OTc1NTUxNTQyZmNiZTk3Ny4uY2ZmZGY3ODA2OGNiNzdkNzZjYzIzMWU1NWZjNzhmMTlkZDU4ZTdi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMjY3
LDExICsyNjcsMTUgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRUb05vblNoYWRvd0FuY2VzdG9y
KCkKIAogdm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRJbm5lck5vZGUoTm9kZSogbikKIHsKKyAgICBp
ZiAobiAmJiBuLT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgbiA9IG4tPnBhcmVudE9ySG9z
dE5vZGUoKTsKICAgICBtX2lubmVyTm9kZSA9IG47CiB9CiAgICAgCiB2b2lkIEhpdFRlc3RSZXN1
bHQ6OnNldElubmVyTm9uU2hhcmVkTm9kZShOb2RlKiBuKQogeworICAgIGlmIChuICYmIG4tPmlz
UHNldWRvRWxlbWVudCgpKQorICAgICAgICBuID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAg
IG1faW5uZXJOb25TaGFyZWROb2RlID0gbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKaW5kZXggYzFmNzZlMGIwNzdhNWUyN2ExNGZhMDU4MmI0MjBkYTU5YTU0
NDg0OS4uMjU4MTFkODRmNjYzYmEyOWZlZWNhMmE3NjNiYzVlZmNhZWU4Yjk1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zMjMwLDcgKzMyMzAsNyBAQCBi
b29sIFJlbmRlckJsb2NrOjpzaG91bGRQYWludFNlbGVjdGlvbkdhcHMoKSBjb25zdAogCiBib29s
IFJlbmRlckJsb2NrOjppc1NlbGVjdGlvblJvb3QoKSBjb25zdAogewotICAgIGlmICghbm9kZSgp
KQorICAgIGlmICghbm9kZSgpIHx8IGlzUHNldWRvRWxlbWVudCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRhYmxlcyBzaG91bGQg
aGF2ZSB0byBsZWFybiBob3cgdG8gZmlsbCBnYXBzIGJldHdlZW4gY2VsbHMsIGF0IGxlYXN0IGlu
IHNpbXBsZSBub24tc3Bhbm5pbmcgY2FzZXMuCkBAIC03NDY2LDcgKzc0NjYsMTAgQEAgY29uc3Qg
Y2hhciogUmVuZGVyQmxvY2s6OnJlbmRlck5hbWUoKSBjb25zdAogICAgICAgICByZXR1cm4gIlJl
bmRlckJsb2NrIChhbm9ueW1vdXMgbXVsdGktY29sdW1uIHNwYW4pIjsKICAgICBpZiAoaXNBbm9u
eW1vdXNCbG9jaygpKQogICAgICAgICByZXR1cm4gIlJlbmRlckJsb2NrIChhbm9ueW1vdXMpIjsK
LSAgICBlbHNlIGlmIChpc0Fub255bW91cygpKQorICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFj
ayB3aGlsZSB0aGUgbmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWluZyBpbXBsZW1l
bnRlZC4KKyAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiAiUmVuZGVy
QmxvY2sgKGdlbmVyYXRlZCkiOworICAgIGlmIChpc0Fub255bW91cygpKQogICAgICAgICByZXR1
cm4gIlJlbmRlckJsb2NrIChnZW5lcmF0ZWQpIjsKICAgICBpZiAoaXNSZWxQb3NpdGlvbmVkKCkp
CiAgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCAyNGM4NjMzMDQy
MTIyYThjNTBmM2JhZDcwNzEyYzU0OTkzMjllNzljLi5iMjMzYzQ5NjQ3MmI1ZmVmYzViYjNhMTE3
MTQzNDdkYmM4YWRlNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCkBAIC01MDEsNyArNTAxLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBSZW5kZXJD
b3VudGVyOjpvcmlnaW5hbFRleHQoKSBjb25zdAogICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAg
ICAgICAgICAgaWYgKCFiZWZvcmVBZnRlckNvbnRhaW5lcikKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgICAgIGlmICghYmVmb3JlQWZ0ZXJDb250YWluZXItPmlzQW5vbnltb3Vz
KCkpCisgICAgICAgICAgICBpZiAoIWJlZm9yZUFmdGVyQ29udGFpbmVyLT5pc0Fub255bW91cygp
ICYmICFiZWZvcmVBZnRlckNvbnRhaW5lci0+aXNQc2V1ZG9FbGVtZW50KCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7IC8vIFJlbmRlckNvdW50ZXJzIGFyZSByZXN0cmljdGVkIHRvIGJlZm9y
ZSBhbmQgYWZ0ZXIgcHNldWRvIGVsZW1lbnRzCiAgICAgICAgICAgICBQc2V1ZG9JZCBjb250YWlu
ZXJTdHlsZSA9IGJlZm9yZUFmdGVyQ29udGFpbmVyLT5zdHlsZSgpLT5zdHlsZVR5cGUoKTsKICAg
ICAgICAgICAgIGlmICgoY29udGFpbmVyU3R5bGUgPT0gQkVGT1JFKSB8fCAoY29udGFpbmVyU3R5
bGUgPT0gQUZURVIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCAzMzIzOTg2Yzk5MGM2NDliMjQ0Y2Vj
NDQzZWIyNjEyYzM0ZDcyNjMyLi42OTUwYTE0NzIxOGRkZGI2Mjc4ZmFiYTQyZDUzZmI1YjE2NDkx
OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtMTA4MywxMiArMTA4MywxNSBAQCBMYXlvdXRVbml0
IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YWxsb3dlZENoaWxkRmxleChSZW5kZXJCb3gq
IGNoaWxkLCBib29sCiAgICAgcmV0dXJuIDA7CiB9CiAKLWNvbnN0IGNoYXIgKlJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveDo6cmVuZGVyTmFtZSgpIGNvbnN0Citjb25zdCBjaGFyKiBSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3g6OnJlbmRlck5hbWUoKSBjb25zdAogewogICAgIGlmIChpc0Zs
b2F0aW5nKCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IChm
bG9hdGluZykiOwogICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0
dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIjsKKyAgICAvLyBG
SVhNRTogVGVtcG9yYXJ5IGhhY2sgd2hpbGUgdGhlIG5ldyBnZW5lcmF0ZWQgY29udGVudCBzeXN0
ZW0gaXMgYmVpbmcgaW1wbGVtZW50ZWQuCisgICAgaWYgKGlzUHNldWRvRWxlbWVudCgpKQorICAg
ICAgICByZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCAoZ2VuZXJhdGVkKSI7CiAg
ICAgaWYgKGlzQW5vbnltb3VzKCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94IChnZW5lcmF0ZWQpIjsKICAgICBpZiAoaXNSZWxQb3NpdGlvbmVkKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IGRiMWIxODVmNjVkNDY5
ZDMzM2I2YzYxZDBhMmU0OTI3OWM3ZTcxNTYuLjBlMWNkYTMxNmFmOTRhZDRiNjZlZmVjOWY3N2Zl
ZWVhMTkxYTIyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CkBAIC03NjIsNiArNzYyLDkgQEAgY29uc3QgY2hhciogUmVuZGVySW5saW5lOjpyZW5kZXJOYW1l
KCkgY29uc3QKICAgICAgICAgcmV0dXJuICJSZW5kZXJJbmxpbmUgKHJlbGF0aXZlIHBvc2l0aW9u
ZWQpIjsKICAgICBpZiAoaXNTdGlja3lQb3NpdGlvbmVkKCkpCiAgICAgICAgIHJldHVybiAiUmVu
ZGVySW5saW5lIChzdGlja3kgcG9zaXRpb25lZCkiOworICAgIC8vIEZJWE1FOiBUZW1wb3Jhcnkg
aGFjayB3aGlsZSB0aGUgbmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWluZyBpbXBs
ZW1lbnRlZC4KKyAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiAiUmVu
ZGVySW5saW5lIChnZW5lcmF0ZWQpIjsKICAgICBpZiAoaXNBbm9ueW1vdXMoKSkKICAgICAgICAg
cmV0dXJuICJSZW5kZXJJbmxpbmUgKGdlbmVyYXRlZCkiOwogICAgIGlmIChpc1J1bkluKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9j
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5j
cHAKaW5kZXggYmEzY2NkOWIyOTgyMWNiMTQwYmQ2ZmIyY2IyOGI3MjlkNmFmMDRlYi4uMjMxMWRh
MTg4ZTdhYzllMjc1NGM0Zjk2NGI1MzBkZTM2NjVlMDQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkJsb2NrLmNwcApAQCAtMTQ1LDEzICsx
NDUsMTYgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtbkJsb2NrOjplbnN1cmVDb2x1bW5TZXRzKCkK
IH0KIAogY29uc3QgY2hhciogUmVuZGVyTXVsdGlDb2x1bW5CbG9jazo6cmVuZGVyTmFtZSgpIGNv
bnN0Ci17ICAgIAorewogICAgIGlmIChpc0Zsb2F0aW5nKCkpCiAgICAgICAgIHJldHVybiAiUmVu
ZGVyTXVsdGlDb2x1bW5CbG9jayAoZmxvYXRpbmcpIjsKICAgICBpZiAoaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1bW5CbG9jayAocG9zaXRp
b25lZCkiOwogICAgIGlmIChpc0Fub255bW91c0Jsb2NrKCkpCiAgICAgICAgIHJldHVybiAiUmVu
ZGVyTXVsdGlDb2x1bW5CbG9jayAoYW5vbnltb3VzKSI7CisgICAgLy8gRklYTUU6IFRlbXBvcmFy
eSBoYWNrIHdoaWxlIHRoZSBuZXcgZ2VuZXJhdGVkIGNvbnRlbnQgc3lzdGVtIGlzIGJlaW5nIGlt
cGxlbWVudGVkLgorICAgIGlmIChpc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuICJS
ZW5kZXJNdWx0aUNvbHVtbkJsb2NrIChnZW5lcmF0ZWQpIjsKICAgICBpZiAoaXNBbm9ueW1vdXMo
KSkKICAgICAgICAgcmV0dXJuICJSZW5kZXJNdWx0aUNvbHVtbkJsb2NrIChnZW5lcmF0ZWQpIjsK
ICAgICBpZiAoaXNSZWxQb3NpdGlvbmVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCmluZGV4IDExMDQ2N2FkNTQ4ZmNiY2IwNDE0ZWFhYWM2MjNhMDQzY2NjYjFh
NDguLmZjY2VlZDY5ZTQ4MzJiNTA4NGVjNTUzMjg5ZjlmNjZjNjNjODg5M2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgUmVu
ZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdChOb2RlKiBub2RlLCBSZW5kZXJT
dHlsZSogc3R5bGUpCiAgICAgLy8gV29ya3Mgb25seSBpZiB3ZSBoYXZlIGV4YWN0bHkgb25lIHBp
ZWNlIG9mIGNvbnRlbnQgYW5kIGl0J3MgYSBVUkwuCiAgICAgLy8gT3RoZXJ3aXNlIGFjdHMgYXMg
aWYgd2UgZGlkbid0IHN1cHBvcnQgdGhpcyBmZWF0dXJlLgogICAgIGNvbnN0IENvbnRlbnREYXRh
KiBjb250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOwotICAgIGlmIChjb250ZW50RGF0
YSAmJiAhY29udGVudERhdGEtPm5leHQoKSAmJiBjb250ZW50RGF0YS0+aXNJbWFnZSgpICYmIGRv
YyAhPSBub2RlKSB7CisgICAgaWYgKGNvbnRlbnREYXRhICYmICFjb250ZW50RGF0YS0+bmV4dCgp
ICYmIGNvbnRlbnREYXRhLT5pc0ltYWdlKCkgJiYgZG9jICE9IG5vZGUgJiYgIW5vZGUtPmlzUHNl
dWRvRWxlbWVudCgpKSB7CiAgICAgICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IG5ldyAoYXJlbmEp
IFJlbmRlckltYWdlKG5vZGUpOwogICAgICAgICAvLyBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZSByZXF1aXJlcyBhIHN0eWxlIGJlaW5nIHByZXNlbnQgb24gdGhlIGltYWdlIGJ1dCB3ZSBk
b24ndCB3YW50IHRvCiAgICAgICAgIC8vIHRyaWdnZXIgYSBzdHlsZSBjaGFuZ2Ugbm93IGFzIHRo
ZSBub2RlIGlzIG5vdCBmdWxseSBhdHRhY2hlZC4gTW92aW5nIHRoaXMgY29kZSB0byBzdHlsZSBj
aGFuZ2UKQEAgLTE3NTYsNiArMTc1NiwyMyBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyT2JqZWN0
OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnbgogICAg
IHJldHVybiBkaWZmOwogfQogCit2b2lkIFJlbmRlck9iamVjdDo6c2V0UHNldWRvU3R5bGUoUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGUpCit7CisgICAgQVNTRVJUKHBzZXVkb1N0
eWxlLT5zdHlsZVR5cGUoKSA9PSBCRUZPUkUgfHwgcHNldWRvU3R5bGUtPnN0eWxlVHlwZSgpID09
IEFGVEVSKTsKKworICAgIC8vIEltYWdlcyBhcmUgc3BlY2lhbCBhbmQgbXVzdCBpbmhlcml0IHRo
ZSBwc2V1ZG9TdHlsZSBzbyB0aGUgd2lkdGggYW5kIGhlaWdodCBvZgorICAgIC8vIHRoZSBwc2V1
ZG8gZWxlbWVudCBkb2Vzbid0IGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UuIEluIGFsbCBv
dGhlciBjYXNlcyB3ZQorICAgIC8vIGNhbiBqdXN0IHNoYXJlIHRoZSBzdHlsZS4KKyAgICBpZiAo
aXNJbWFnZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIHN0eWxlLT5pbmhlcml0RnJvbShwc2V1ZG9TdHlsZS5n
ZXQoKSk7CisgICAgICAgIHNldFN0eWxlKHN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBzZXRTdHlsZShwc2V1ZG9TdHlsZSk7Cit9CisKIHZvaWQgUmVuZGVy
T2JqZWN0OjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBp
ZiAobV9zdHlsZSA9PSBzdHlsZSkgewpAQCAtMjk2Nyw3ICsyOTg0LDggQEAgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIFJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKIFZpc2libGVQb3Np
dGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihpbnQgb2Zmc2V0LCBFQWZm
aW5pdHkgYWZmaW5pdHkpCiB7CiAgICAgLy8gSWYgdGhpcyBpcyBhIG5vbi1hbm9ueW1vdXMgcmVu
ZGVyZXIgaW4gYW4gZWRpdGFibGUgYXJlYSwgdGhlbiBpdCdzIHNpbXBsZS4KLSAgICBpZiAoTm9k
ZSogbm9kZSA9IHRoaXMtPm5vZGUoKSkgeworICAgIGlmIChub2RlKCkgJiYgIWlzUHNldWRvRWxl
bWVudCgpKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CiAgICAgICAgIGlm
ICghbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpIHsKICAgICAgICAgICAgIC8vIElmIGl0IGNh
biBiZSBmb3VuZCwgd2UgcHJlZmVyIGEgdmlzdWFsbHkgZXF1aXZhbGVudCBwb3NpdGlvbiB0aGF0
IGlzIGVkaXRhYmxlLiAKICAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG9mZnNldCk7CkBAIC0yOTkzLDggKzMwMTEsOCBAQCBW
aXNpYmxlUG9zaXRpb24gUmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50IG9m
ZnNldCwgRUFmZmluaXR5IGFmZmluaQogICAgICAgICAvLyBGaW5kIG5vbi1hbm9ueW1vdXMgY29u
dGVudCBhZnRlci4KICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkOwogICAg
ICAgICB3aGlsZSAoKHJlbmRlcmVyID0gcmVuZGVyZXItPm5leHRJblByZU9yZGVyKHBhcmVudCkp
KSB7Ci0gICAgICAgICAgICBpZiAoTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9y
ZU5vZGUobm9kZSksIERPV05TVFJFQU0pOworICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5ub2Rl
KCkgJiYgIXJlbmRlcmVyLT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShyZW5kZXJlci0+
bm9kZSgpKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGaW5kIG5vbi1h
bm9ueW1vdXMgY29udGVudCBiZWZvcmUuCkBAIC0zMDAyLDEzICszMDIwLDEzIEBAIFZpc2libGVQ
b3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihpbnQgb2Zmc2V0LCBF
QWZmaW5pdHkgYWZmaW5pCiAgICAgICAgIHdoaWxlICgocmVuZGVyZXIgPSByZW5kZXJlci0+cHJl
dmlvdXNJblByZU9yZGVyKCkpKSB7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIgPT0gcGFyZW50
KQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSBy
ZW5kZXJlci0+bm9kZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
bGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShub2RlKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAg
ICBpZiAocmVuZGVyZXItPm5vZGUoKSAmJiAhcmVuZGVyZXItPmlzUHNldWRvRWxlbWVudCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5PckFm
dGVyTm9kZShyZW5kZXJlci0+bm9kZSgpKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBVc2UgdGhlIHBhcmVudCBpdHNlbGYgdW5sZXNzIGl0IHRvbyBpcyBhbm9ueW1vdXMu
Ci0gICAgICAgIGlmIChOb2RlKiBub2RlID0gcGFyZW50LT5ub2RlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKSwg
RE9XTlNUUkVBTSk7CisgICAgICAgIGlmIChwYXJlbnQtPm5vZGUoKSAmJiAhaXNQc2V1ZG9FbGVt
ZW50KCkpCisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25J
bk9yQmVmb3JlTm9kZShwYXJlbnQtPm5vZGUoKSksIERPV05TVFJFQU0pOwogCiAgICAgICAgIC8v
IFJlcGVhdCBhdCB0aGUgbmV4dCBsZXZlbCB1cC4KICAgICAgICAgY2hpbGQgPSBwYXJlbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggNDc5MmY3MzczODFhNTQ4
ODkxZDUwNmQ5NjRmMWI1NGE3OTUwZmE5Ni4uYjAxMDMzNzgwMTk2NjNjMzgzZTNjMDdlOTNmOTAy
MGI5M2MzMjVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAt
MzMwLDYgKzMzMCw4IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgUmVuZGVyQXJlbmEqIHJlbmRl
ckFyZW5hKCkgY29uc3QgeyByZXR1cm4gZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKTsgfQogCisg
ICAgYm9vbCBpc1BzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBub2RlKCkgJiYgbm9kZSgp
LT5pc1BzZXVkb0VsZW1lbnQoKTsgfQorCiAgICAgdmlydHVhbCBib29sIGlzQlIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Jsb2NrRmxvdygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQm94TW9kZWxPYmplY3QoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNjIzLDcgKzYyNSwxMiBAQCBwdWJsaWM6CiAgICAgLy8g
UmV0dXJucyB0aGUgc3R5bGVkIG5vZGUgdGhhdCBjYXVzZWQgdGhlIGdlbmVyYXRpb24gb2YgdGhp
cyByZW5kZXJlci4KICAgICAvLyBUaGlzIGlzIHRoZSBzYW1lIGFzIG5vZGUoKSBleGNlcHQgZm9y
IHJlbmRlcmVycyBvZiA6YmVmb3JlIGFuZCA6YWZ0ZXIKICAgICAvLyBwc2V1ZG8gZWxlbWVudHMg
Zm9yIHdoaWNoIHRoZWlyIHBhcmVudCBub2RlIGlzIHJldHVybmVkLgotICAgIE5vZGUqIGdlbmVy
YXRpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlID09IGRvY3VtZW50KCkgPyAwIDogbV9u
b2RlOyB9CisgICAgTm9kZSogZ2VuZXJhdGluZ05vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKGlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIG5vZGUoKS0+cGFyZW50
T3JIb3N0Tm9kZSgpOworICAgICAgICByZXR1cm4gbV9ub2RlID09IGRvY3VtZW50KCkgPyAwIDog
bV9ub2RlOworICAgIH0KICAgICB2b2lkIHNldE5vZGUoTm9kZSogbm9kZSkgeyBtX25vZGUgPSBu
b2RlOyB9CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX25vZGUt
PmRvY3VtZW50KCk7IH0KQEAgLTcxMyw2ICs3MjAsOSBAQCBwdWJsaWM6CiAgICAgLy8gU2V0IHRo
ZSBzdHlsZSBvZiB0aGUgb2JqZWN0IGFuZCB1cGRhdGUgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3Qg
YWNjb3JkaW5nbHkuCiAgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+KTsKIAorICAgIC8vIFNldCB0aGUgc3R5bGUgb2YgdGhlIG9iamVjdCBpZiBpdCdzIGdl
bmVyYXRlZCBjb250ZW50LgorICAgIHZvaWQgc2V0UHNldWRvU3R5bGUoUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4pOworCiAgICAgLy8gVXBkYXRlcyBvbmx5IHRoZSBsb2NhbCBzdHlsZSBwdHIgb2Yg
dGhlIG9iamVjdC4gIERvZXMgbm90IHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIG9iamVjdCwKICAg
ICAvLyBhbmQgc28gb25seSBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHN0eWxlIGlzIGtub3du
IG5vdCB0byBoYXZlIGNoYW5nZWQgKG9yIGZyb20gc2V0U3R5bGUpLgogICAgIHZvaWQgc2V0U3R5
bGVJbnRlcm5hbChQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkgeyBtX3N0eWxlID0gc3R5
bGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCAy
ZGQyNmEyNGQ0MjUxOGM5NDI1ODgzNmYxNGQ0NWE3MjA1YWExYWVhLi42NTc3M2NhNGY0NDA1YmYy
NWI2MGY1ZDgzYTY5NDg3YjY4ODkzMmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5oCkBAIC0yMDksNyArMjA5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJUYWJsZUNlbGwgKGFu
b255bW91cykiIDogIlJlbmRlclRhYmxlQ2VsbCI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAoaXNBbm9ueW1vdXMoKSB8fCBpc1BzZXVkb0Vs
ZW1lbnQoKSkgPyAiUmVuZGVyVGFibGVDZWxsIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZUNl
bGwiOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKaW5kZXgg
NmYxOTVkMzA0ODBlNTYxN2RjNTY2ZDE3NTBiYzAwMjU0ODEyMDI0NC4uYzA1ZjQ0YjY4NTk1ZTgy
OTdkNGVkYzI2YThjMjU4YjVjOWE5ZmE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlUm93LmgKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgeyByZXR1cm4gY2hpbGRyZW4o
KTsgfQogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hp
bGRyZW4oKSBjb25zdCB7IHJldHVybiBjaGlsZHJlbigpOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiBpc0Fub255bW91cygpID8gIlJlbmRl
clRhYmxlUm93IChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZVJvdyI7IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAoaXNBbm9ueW1vdXMoKSB8
fCBpc1BzZXVkb0VsZW1lbnQoKSkgPyAiUmVuZGVyVGFibGVSb3cgKGFub255bW91cykiIDogIlJl
bmRlclRhYmxlUm93IjsgfQogCiAgICAgdmlydHVhbCBib29sIGlzVGFibGVSb3coKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVNlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uaAppbmRleCA3OWNkZDRhMWRhNTJkZTlkZTk1YjcwMTJmMmI4MGJhZDE1MTdiY2Jj
Li42Mzk5ZjdjMGU1NWY5M2I0MGI4ODViNTg2ODI2ZjRkODdiMTY2NzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCkBAIC0yMDIsNyArMjAyLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENo
aWxkcmVuKCkgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVy
T2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBjaGlsZHJl
bigpOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiBpc0Fub255bW91cygpID8gIlJlbmRlclRhYmxlU2VjdGlvbiAoYW5vbnltb3VzKSIgOiAi
UmVuZGVyVGFibGVTZWN0aW9uIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/
ICJSZW5kZXJUYWJsZVNlY3Rpb24gKGFub255bW91cykiIDogIlJlbmRlclRhYmxlU2VjdGlvbiI7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlU2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3Bw
CmluZGV4IDViNGViNzM1ODAyNzdhOTRhZWRlMWNmM2Q3NDUyNTk5MzY5NDdmMDEuLmU4Mzg5OGVm
ODc3YWQ2MTlhMDA2YzNkZjdmYzM5OWVjOTA3M2RjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTIyMSw2ICsyMjEsOSBAQCB2b2lkIFJl
bmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBS
ZW5kZXJPYmplY3QmIG8sCiAKICAgICBpZiAoby5ub2RlKCkpIHsKICAgICAgICAgU3RyaW5nIHRh
Z05hbWUgPSBnZXRUYWdOYW1lKG8ubm9kZSgpKTsKKyAgICAgICAgLy8gRklYTUU6IFRlbXBvcmFy
eSBoYWNrIHRvIG1ha2UgdGVzdHMgcGFzcyBieSBzaW11bGF0aW5nIHRoZSBvbGQgZ2VuZXJhdGVk
IGNvbnRlbnQgb3V0cHV0LgorICAgICAgICBpZiAoby5pc1BzZXVkb0VsZW1lbnQoKSB8fCAoby5w
YXJlbnQoKSAmJiBvLnBhcmVudCgpLT5pc1BzZXVkb0VsZW1lbnQoKSkpCisgICAgICAgICAgICB0
YWdOYW1lID0gZW1wdHlBdG9tOwogICAgICAgICBpZiAoIXRhZ05hbWUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICB0cyA8PCAiIHsiIDw8IHRhZ05hbWUgPDwgIn0iOwogICAgICAgICAgICAgLy8g
ZmxhZyBlbXB0eSBvciB1bnN0eWxlZCBBcHBsZVN0eWxlU3BhbiBiZWNhdXNlIHdlIG5ldmVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcAppbmRleCA5
Y2FjMjU0Y2U5MjNiNGI4MmZhMGQwYmZkYmI4ZWRlYjQ0OWI2YzdlLi5lMTg0YjliZjY0ZTVhMTQ3
MTNjZDQwNjY2MTI0NDE2ZGE4MjJlM2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9Db250ZW50RGF0YS5jcHAKQEAgLTcwLDEyICs3MCw3IEBAIFBhc3NPd25QdHI8Q29u
dGVudERhdGE+IENvbnRlbnREYXRhOjpjbG9uZSgpIGNvbnN0CiBSZW5kZXJPYmplY3QqIEltYWdl
Q29udGVudERhdGE6OmNyZWF0ZVJlbmRlcmVyKERvY3VtZW50KiBkb2MsIFJlbmRlclN0eWxlKiBw
c2V1ZG9TdHlsZSkgY29uc3QKIHsKICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGRvYy0+
cmVuZGVyQXJlbmEoKSkgUmVuZGVySW1hZ2UoZG9jKTsKLSAgICAvLyBJbWFnZXMgYXJlIHNwZWNp
YWwgYW5kIG11c3QgaW5oZXJpdCB0aGUgcHNldWRvU3R5bGUgc28gdGhlIHdpZHRoIGFuZCBoZWln
aHQgb2YKLSAgICAvLyB0aGUgcHNldWRvIGVsZW1lbnQgZG9uJ3QgY2hhbmdlIHRoZSBzaXplIG9m
IHRoZSBpbWFnZS4gSW4gYWxsIG90aGVyIGNhc2VzIHdlCi0gICAgLy8gY2FuIGp1c3Qgc2hhcmUg
dGhlIHN0eWxlLgotICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlKCk7Ci0gICAgc3R5bGUtPmluaGVyaXRGcm9tKHBzZXVkb1N0eWxlKTsKLSAgICBpbWFn
ZS0+c2V0U3R5bGUoc3R5bGUucmVsZWFzZSgpKTsKKyAgICBpbWFnZS0+c2V0UHNldWRvU3R5bGUo
cHNldWRvU3R5bGUpOwogICAgIGlmIChtX2ltYWdlKQogICAgICAgICBpbWFnZS0+c2V0SW1hZ2VS
ZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKG1faW1hZ2UuZ2V0
KCkpKTsKICAgICBlbHNlCkBAIC04NiwyMSArODEsMjEgQEAgUmVuZGVyT2JqZWN0KiBJbWFnZUNv
bnRlbnREYXRhOjpjcmVhdGVSZW5kZXJlcihEb2N1bWVudCogZG9jLCBSZW5kZXJTdHlsZSogcHNl
dWQKIFJlbmRlck9iamVjdCogVGV4dENvbnRlbnREYXRhOjpjcmVhdGVSZW5kZXJlcihEb2N1bWVu
dCogZG9jLCBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IG5ldyAoZG9jLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0RnJhZ21l
bnQoZG9jLCBtX3RleHQuaW1wbCgpKTsKLSAgICByZW5kZXJlci0+c2V0U3R5bGUocHNldWRvU3R5
bGUpOworICAgIHJlbmRlcmVyLT5zZXRQc2V1ZG9TdHlsZShwc2V1ZG9TdHlsZSk7CiAgICAgcmV0
dXJuIHJlbmRlcmVyOwogfQogCiBSZW5kZXJPYmplY3QqIENvdW50ZXJDb250ZW50RGF0YTo6Y3Jl
YXRlUmVuZGVyZXIoRG9jdW1lbnQqIGRvYywgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlKSBjb25z
dAogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBuZXcgKGRvYy0+cmVuZGVyQXJlbmEo
KSkgUmVuZGVyQ291bnRlcihkb2MsICptX2NvdW50ZXIpOwotICAgIHJlbmRlcmVyLT5zZXRTdHls
ZShwc2V1ZG9TdHlsZSk7CisgICAgcmVuZGVyZXItPnNldFBzZXVkb1N0eWxlKHBzZXVkb1N0eWxl
KTsKICAgICByZXR1cm4gcmVuZGVyZXI7CiB9CiAKIFJlbmRlck9iamVjdCogUXVvdGVDb250ZW50
RGF0YTo6Y3JlYXRlUmVuZGVyZXIoRG9jdW1lbnQqIGRvYywgUmVuZGVyU3R5bGUqIHBzZXVkb1N0
eWxlKSBjb25zdAogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBuZXcgKGRvYy0+cmVu
ZGVyQXJlbmEoKSkgUmVuZGVyUXVvdGUoZG9jLCBtX3F1b3RlKTsKLSAgICByZW5kZXJlci0+c2V0
U3R5bGUocHNldWRvU3R5bGUpOworICAgIHJlbmRlcmVyLT5zZXRQc2V1ZG9TdHlsZShwc2V1ZG9T
dHlsZSk7CiAgICAgcmV0dXJuIHJlbmRlcmVyOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177419</attachid>
            <date>2012-12-03 22:54:35 -0800</date>
            <delta_ts>2012-12-05 13:01:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103705-20121203225201.patch</filename>
            <type>text/plain</type>
            <size>56145</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk2ZDc0M2UwMjYwODQ0
MWRmYzUwNWNjNWIzMDQyOTA0NTVkMWY0Ny4uYjVkM2Y4MjFiYTY3N2RlNDNiMjgwMGIxNmY0NGY3
Y2FlOTllMWI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMSBAQAorMjAxMi0xMi0wMyAgRWxs
aW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgZm9yIDpiZWZvcmUgYW5kIDphZnRlciBpbiBET00KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzcwNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbGwgaW5mcmFzdHJ1Y3R1cmUgZm9y
IHJlaW1wbGVtZW50aW5nIGdlbmVyYXRlZCBjb250ZW50IDpiZWZvcmUgYW5kCisgICAgICAgIDph
ZnRlciBhcyBET00gRWxlbWVudHMuIE5vdyBFbGVtZW50UmFyZURhdGEgaGFzIHR3byBwb2ludGVy
cyB0byBQc2V1ZG9FbGVtZW50cworICAgICAgICBmb3IgdGhlIGdlbmVyYXRlZCBjb250ZW50IGFu
ZCBOb2RlIGhhcyBtZXRob2RzIGZvciB0cmF2ZXJzaW5nIHRoZSB0cmVlCisgICAgICAgIGluY2x1
ZGluZyBnZW5lcmF0ZWQgY29udGVudC4KKworICAgICAgICBUaGlzIHdpbGwgYWxsb3cgdGhlIGdl
bmVyYXRlZCBjb250ZW50IHRvIGJlIHRyZWF0ZWQgYXMgcmVhbCBub2RlcyBpbnN0ZWFkCisgICAg
ICAgIG9mIGFub255bW91cyBhbmQgdGFrZSBwYXJ0IGluIHRoZSB1c3VhbCByZWNhbGNTdHlsZSBh
bmQgYXR0YWNoIGZsb3cgd2hpY2gKKyAgICAgICAgZml4ZXMgbWFueSBidWdzIGFuZCB2YXN0bHkg
c2ltcGxpZmllcyB0aGUgaWZlY3ljbGUgb2YgZ2VuZXJhdGVkIGNvbnRlbnQuCisKKyAgICAgICAg
SW5zdGVhZCBvZiBhdHRlbXB0aW5nIHRvIGxhbmQgYm90aCB0aGUgaW5mcmFzdHJ1Y3R1cmUgYW5k
IGVuYWJsZSBpdCBhdAorICAgICAgICB0aGUgc2FtZSB0aW1lIHdoaWNoIGhhcyBwcm92ZW4gcHJv
YmxlbWF0aWMgZHVlIHRvIGhvdyBkcmFzdGljIHRoaXMgY2hhbmdlCisgICAgICAgIGlzLCB0aGlz
IHBhdGNoIGNvbnRhaW5zIG9ubHkgdGhlIHN1cHBvcnQgY29kZSBzbyBhIG11Y2ggc21hbGxlciBm
dXR1cmUKKyAgICAgICAgcGF0Y2ggY2FuIGJlIHVzZWQgdG8gc3dpdGNoIGl0IG9uLgorCisgICAg
ICAgIE5vIG5ldyBiZWhhdmlvciwgdGhpcyBpcyBqdXN0IHRoZSBpbmZyYXN0cnVjdHVyZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6fkVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Y3JlYXRlUHNldWRvRWxlbWVudElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmJlZm9yZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6YWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAo
RWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6RWxl
bWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6fkVsZW1l
bnRSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldFBzZXVk
b0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpwc2V1ZG9FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6cmVsZWFzZVBzZXVkb0Vs
ZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBz
ZXVkb0F3YXJlTmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyZXJJ
c0VkaXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQWNjZXB0Q2hpbGQpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmlzUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0JlZm9yZVBzZXVk
b0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNBZnRlclBzZXVkb0VsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6Y3VzdG9tUHNldWRvSWQpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRl
cmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1Jl
bmRlcmVyKToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2VuZGFudHNXaXRoSGVpZ2h0KToK
KyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVu
dDo6UHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpjdXN0
b21TdHlsZUZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OmF0
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OnVwZGF0ZUNoaWxkU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUpOgorICAgICAg
ICAqIGRvbS9Qc2V1ZG9FbGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoUHNldWRvRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6cHNldWRvRWxlbWVudElzTmVlZGVkKToKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVf
dW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5UHJldmlvdXNCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6bG9naWNhbGx5TmV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpzdGFy
dFBvc2l0aW9uRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjplbmRQb3NpdGlvbkZvckxpbmUp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6OnNldElubmVyTm9uU2hhcmVkTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppc1NlbGVjdGlvblJv
b3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlbmRlck5hbWUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckNvdW50ZXI6Om9yaWdpbmFsVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3g6OnJlbmRlck5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxp
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpyZW5kZXJOYW1lKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkJsb2NrOjpyZW5kZXJOYW1lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6Y3JlYXRlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0UHNl
dWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxl
UG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFJlbmRl
ck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdlbmVyYXRpbmdOb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZUNlbGw6OnJlbmRlck5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZVJvdy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OnJlbmRl
ck5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6cmVuZGVyTmFtZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9Db250ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRlbnREYXRhOjpj
cmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udGVudERhdGE6OmNyZWF0
ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJDb250ZW50RGF0YTo6Y3JlYXRl
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVvdGVDb250ZW50RGF0YTo6Y3JlYXRlUmVu
ZGVyZXIpOgorCiAyMDEyLTEyLTAzICBSYWZhZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IEhUTUxUZW1wbGF0ZUVsZW1lbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggOTUwYTM2MDlhN2ZhMGE5MGM1NTM5NTRkMzM2Y2QyMjc4NzEwYzBlNS4u
YjAzYzQzMzQzOWY0OWE5OGNhOWUzMmYyNjc4MGMyZWUxYjY2ZWQyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEyMDMsNiArMTIwMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAogICAgIGRvbS9Qcm9ncmVzc0V2ZW50LmNwcAogICAg
IGRvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcAorICAgIGRvbS9Qc2V1ZG9FbGVtZW50LmNwcAogICAg
IGRvbS9RdWFsaWZpZWROYW1lLmNwcAogICAgIGRvbS9SYW5nZS5jcHAKICAgICBkb20vUmFuZ2VF
eGNlcHRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1YWY3ZWY1NjFj
MDdmZGI5MjhlODQ0NTNiMmJlOGZjN2U0N2M2MDYwLi40NGY1OGMwNGRiYmI2ZDkwY2UwYjdiZWE3
OTZhNDcxMWE5MDU0MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI5MDIs
NiArMjkwMiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1By
b2dyZXNzRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Byb3BlcnR5Tm9kZUxpc3QuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUHJvcGVydHlOb2RlTGlzdC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9F
bGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlQm91bmRhcnlQb2ludC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDI5OTAyMWM5ZTJmYzM2ZWMyYWJj
OGM2ZGU1ZDQ1YThkMjA4YTQ0ZGEuLjNmNzIyMzg4Yjc5ZDIxNzRjM2Y0ZGM1Yjg3YmM0OGZmZjI0
M2I1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNDQxLDYgKzQ0MSw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIFwKICAgICBkb20vUHJvZ3Jlc3NFdmVudC5j
cHAgXAogICAgIGRvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcCBcCisgICAgZG9tL1BzZXVkb0VsZW1l
bnQuY3BwIFwKICAgICBkb20vUXVhbGlmaWVkTmFtZS5jcHAgXAogICAgIGRvbS9SYW5nZS5jcHAg
XAogICAgIGRvbS9SYW5nZUV4Y2VwdGlvbi5jcHAgXApAQCAtMTYxNyw2ICsxNjE4LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIFwKICAgICBkb20vUHJv
Z3Jlc3NFdmVudC5oIFwKICAgICBkb20vUHJvcGVydHlOb2RlTGlzdC5oIFwKKyAgICBkb20vUHNl
dWRvRWxlbWVudC5oIFwKICAgICBkb20vUXVhbGlmaWVkTmFtZS5oIFwKICAgICBkb20vUmFuZ2Uu
aCBcCiAgICAgZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IGRiZmZhNTQ3ZTlkZjBjMzU1MjdkMWFkNjc5ZTg1NjQ3ZTcyNDM3MGYuLjViMGIzYzJiZWZj
MDI3NGYwNDFmNzNhMDJhODc2OWRkZWIwZTVhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTY4NCw2
ICs2ODQsNyBAQAogICAgICAgICAgICAgJ2RvbS9Ob2RlTGlzdC5oJywKICAgICAgICAgICAgICdk
b20vUGVuZGluZ1NjcmlwdC5oJywKICAgICAgICAgICAgICdkb20vUG9zaXRpb24uaCcsCisgICAg
ICAgICAgICAnZG9tL1BzZXVkb0VsZW1lbnQuaCcsCiAgICAgICAgICAgICAnZG9tL1F1YWxpZmll
ZE5hbWUuaCcsCiAgICAgICAgICAgICAnZG9tL1JhbmdlLmgnLAogICAgICAgICAgICAgJ2RvbS9S
YW5nZUJvdW5kYXJ5UG9pbnQuaCcsCkBAIC0zOTA5LDYgKzM5MTAsNyBAQAogICAgICAgICAgICAg
J2RvbS9Qcm9ncmVzc0V2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9Qcm9wZXJ0eU5vZGVMaXN0
LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1Byb3BlcnR5Tm9kZUxpc3QuaCcsCisgICAgICAgICAg
ICAnZG9tL1BzZXVkb0VsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vUXVhbGlmaWVkTmFt
ZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9SYW5nZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9S
YW5nZUV4Y2VwdGlvbi5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCBlOTk0ODBjOWQ0MDE4MjdjY2I0MmQ5YTI3YThkNmU3NGU4ZTQ3MTM4
Li5jYjQ2Yjk2NjZkMzMxODZhZDczZTU3ZjRlYTFiYjNlMDFmNDRlZTQ1IDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTM4OTAsNiArNTM4OTAs
NjIgQEAKIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQc2V1ZG9FbGVtZW50LmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQc2V1ZG9FbGVtZW50LmNwcCIK
KwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1
Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXFByb3BlcnR5Tm9kZUxpc3QuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzBmZTM3
ODM0Zjc5ZTZjZjFjY2QxYTU0YzVkZWRkMjRlOTQ5YThmYi4uZGVkOWMyNWIyOWM3MTJkNTUxOGI2
MDAyYjIyM2NhOGU2MzM1NzE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjYzOSw2ICs2NjM5LDggQEAKIAkJRkU4MERBNjYw
RTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b3Bvc2l0aW9uLmggKi87IH07CiAJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07
CiAJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkY5NDVFQ0IxNjFGN0YzNjAw
OTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1l
bnQuY3BwICovOyB9OworCQlGRjk0NUVDQzE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY5NDVF
Q0ExNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuaCAqLzsgfTsKIAkJRkZENUI5N0Ex
MzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkZENUI5NzcxMzVDQzk3ODAwRDVFOTJB
IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovOyB9OwogCQlGRkQ1Qjk3QjEzNUNDOTc4MDBE
NUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkZENUI5NzgxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNp
YmlsaXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRkQ4NkU3ODE1Rjk1ODM2MDAwNDcyMzMgLyogSlNEZXBlbmRlbnRSZXRhaW5lZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkZEODZFNzcx
NUY5NTgzNjAwMDQ3MjMzIC8qIEpTRGVwZW5kZW50UmV0YWluZWQuaCAqLzsgfTsKQEAgLTE0MTgx
LDYgKzE0MTgzLDggQEAKIAkJRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW9wb3NpdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyog
SlNQb3NpdGlvbkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTUG9zaXRpb25FcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBE
QTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZGOTQ1RUM5MTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBzZXVkb0VsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRjk0NUVDQTE2MUY3RjM2MDA5NzFCQzggLyog
UHNldWRvRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1ZG9F
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGRDVCOTc3MTM1Q0M5Nzgw
MEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRkQ1Qjk3ODEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGRDg2RTc3MTVGOTU4MzYwMDA0
NzIzMyAvKiBKU0RlcGVuZGVudFJldGFpbmVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRGVwZW5kZW50UmV0YWluZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIyMTA4LDYgKzIyMTEyLDggQEAKIAkJCQkxMDU5NDU5NjE1QjQyQThFMDA0RDM3RkQgLyog
UHJvcGVydHlOb2RlTGlzdC5jcHAgKi8sCiAJCQkJMTA1OTQ1OTgxNUI0MkFBMDAwNEQzN0ZEIC8q
IFByb3BlcnR5Tm9kZUxpc3QuaCAqLywKIAkJCQkxMDU5NDU5QTE1QjQyQUMwMDA0RDM3RkQgLyog
UHJvcGVydHlOb2RlTGlzdC5pZGwgKi8sCisJCQkJRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8q
IFBzZXVkb0VsZW1lbnQuY3BwICovLAorCQkJCUZGOTQ1RUNBMTYxRjdGMzYwMDk3MUJDOCAvKiBQ
c2V1ZG9FbGVtZW50LmggKi8sCiAJCQkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuY3BwICovLAogCQkJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmggKi8sCiAJCQkJRjUyM0QzMDMwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmNwcCAq
LywKQEAgLTI0OTE1LDYgKzI0OTIxLDcgQEAKIAkJCQk1MTRDNzY3NTBDRTkyM0ExMDA3RUYzQ0Qg
LyogUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUEwNTI1NjEwNTg4NzQw
MDBDQzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFG
OEUxMUExMjU2NTkyNjAwMjMwRkY3IC8qIFByb3h5U2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRjk0NUVDQzE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTBGQjA4NEIxNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0RDY4Nzc5MEVEN0FFNEYwMDZFQTk3OCAvKiBQdXJnZWFibGVC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQ
dXJnZVByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKQEAgLTI4MTg3LDYgKzI4MTk0LDcgQEAKIAkJ
CQk1MTRDNzY3NDBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRjhFMTMzMTI1NjVBNDQwMDIzMEZGNyAvKiBQcm94eVNlcnZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUY4RTFDMzEyNTY3M0UwMDAyMzBGRjcgLyogUHJveHlTZXJ2
ZXJDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRjk0NUVDQjE2MUY3RjM2MDA5NzFCQzgg
LyogUHNldWRvRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEQ2ODc3NzBFRDdBRTNE
MDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU1
MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTM3OUUzNzE2MTM3MzZBNjYwMEI5RTkxOSAvKiBRdW90ZWRQcmludGFibGUuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYjZiOTFi
YTkyNWQ1N2M1YjhmYmVhYmE4NWYzZDVkYzAxNTU5NGNjNC4uNWEyMGEzNjY1NTMxOTExODE3ZjRm
Nzg5MTFhZmI5ZGFlMmE2NTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApA
QCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uQ29kZSBjaGVja0FjY2Vw
dENoaWxkKENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3CiAgICAgaWYgKCFuZXdD
aGlsZCkKICAgICAgICAgcmV0dXJuIE5PVF9GT1VORF9FUlI7CiAKLSAgICAvLyBHb2VzIGNvbW1v
biBjYXNhZSBmYXN0IHBhdGggaWYgcG9zc2libGUuCisgICAgLy8gVXNlIGNvbW1vbiBjYXNlIGZh
c3QgcGF0aCBpZiBwb3NzaWJsZS4KICAgICBpZiAoKG5ld0NoaWxkLT5pc0VsZW1lbnROb2RlKCkg
fHwgbmV3Q2hpbGQtPmlzVGV4dE5vZGUoKSkgJiYgbmV3UGFyZW50LT5pc0VsZW1lbnROb2RlKCkp
IHsKICAgICAgICAgQVNTRVJUKCFuZXdQYXJlbnQtPmlzUmVhZE9ubHlOb2RlKCkpOwogICAgICAg
ICBBU1NFUlQoIW5ld1BhcmVudC0+aXNEb2N1bWVudFR5cGVOb2RlKCkpOwpAQCAtMTYxLDYgKzE2
MSwxMSBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbkNvZGUgY2hlY2tBY2NlcHRDaGlsZChDb250
YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIG5ldwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKKyAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBhbHNvIHByb3RlY3QgcmVs
ZWFzZSBidWlsZHMgZnJvbSB0cmVlIGNvcnJ1cHRpb24uCisgICAgQVNTRVJUKCFuZXdDaGlsZC0+
aXNQc2V1ZG9FbGVtZW50KCkpOworICAgIGlmIChuZXdDaGlsZC0+aXNQc2V1ZG9FbGVtZW50KCkp
CisgICAgICAgIHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisKICAgICBpZiAobmV3UGFy
ZW50LT5pc1JlYWRPbmx5Tm9kZSgpKQogICAgICAgICByZXR1cm4gTk9fTU9ESUZJQ0FUSU9OX0FM
TE9XRURfRVJSOwogICAgIGlmIChuZXdDaGlsZC0+aW5Eb2N1bWVudCgpICYmIG5ld0NoaWxkLT5p
c0RvY3VtZW50VHlwZU5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01B
bGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCmluZGV4IDI1
OTNlNTk1YWNmY2Q3ZmI4NTc5ODQxZjM2MWU5MjllN2U4ZWNiYWEuLjFkYjQyMmQ0MjE3OTA0ZDVl
ZTk0OTFiMTUzMGIxMTY1ZmI0ZjQ0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
T01BbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcApA
QCAtMTE0LDYgKzExNCw3IEBACiAjaW5jbHVkZSAiUG9zaXRpb25JdGVyYXRvci5jcHAiCiAjaW5j
bHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCIKICNpbmNsdWRlICJQcm9ncmVzc0V2ZW50
LmNwcCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmNwcCIKICNpbmNsdWRlICJSYW5nZS5jcHAi
CiAjaW5jbHVkZSAiUmFuZ2VFeGNlcHRpb24uY3BwIgogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0ZGMwYzVkZjUzYTkyM2Jm
OWJlOWNmMGFlZmU0MjczZWQ0MGQ3ZmU0Li4xNjg4OTMwMWU3ZDEzMGI1MGYzYWMwMTFiN2NlN2Qz
MzE5NjVjYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5j
bHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgog
I2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJSZW5kZXJXaWRnZXQuaCIKQEAgLTE4OCw2ICsxODksMTIgQEAgRWxlbWVudDo6fkVsZW1l
bnQoKQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKKyAgICAgICAg
RWxlbWVudFJhcmVEYXRhKiBkYXRhID0gZWxlbWVudFJhcmVEYXRhKCk7CisgICAgICAgIGRhdGEt
PnNldFBzZXVkb0VsZW1lbnQoQkVGT1JFLCAwKTsKKyAgICAgICAgZGF0YS0+c2V0UHNldWRvRWxl
bWVudChBRlRFUiwgMCk7CisgICAgfQorCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRT
aGFkb3cgPSBzaGFkb3coKSkgewogICAgICAgICBlbGVtZW50U2hhZG93LT5yZW1vdmVBbGxTaGFk
b3dSb290cygpOwogICAgICAgICBlbGVtZW50UmFyZURhdGEoKS0+bV9zaGFkb3cuY2xlYXIoKTsK
QEAgLTExODgsNiArMTE5NSw4IEBAIHZvaWQgRWxlbWVudDo6ZGV0YWNoKCkKICAgICBjYW5jZWxG
b2N1c0FwcGVhcmFuY2VVcGRhdGUoKTsKICAgICBpZiAoaGFzUmFyZURhdGEoKSkgewogICAgICAg
ICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbGVtZW50UmFyZURhdGEoKTsKKyAgICAgICAgZGF0
YS0+c2V0UHNldWRvRWxlbWVudChCRUZPUkUsIDApOworICAgICAgICBkYXRhLT5zZXRQc2V1ZG9F
bGVtZW50KEFGVEVSLCAwKTsKICAgICAgICAgZGF0YS0+c2V0SXNJbkNhbnZhc1N1YnRyZWUoZmFs
c2UpOwogICAgICAgICBkYXRhLT5yZXNldENvbXB1dGVkU3R5bGUoKTsKICAgICAgICAgZGF0YS0+
cmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucygpOwpAQCAtMjA2MSw2ICsyMDcwLDUzIEBA
IHZvaWQgRWxlbWVudDo6bm9ybWFsaXplQXR0cmlidXRlcygpCiAgICAgfQogfQogCit2b2lkIEVs
ZW1lbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoUHNldWRvSWQgcHNldWRvSWQsIFN0eWxlQ2hhbmdl
IGNoYW5nZSkKK3sKKyAgICBQc2V1ZG9FbGVtZW50KiBleGlzdGluZyA9IGhhc1JhcmVEYXRhKCkg
PyBlbGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVudChwc2V1ZG9JZCkgOiAwOworICAgIGlm
IChleGlzdGluZykgeworICAgICAgICAvLyBQc2V1ZG9FbGVtZW50IHN0eWxlcyBoYW5nIG9mZiB0
aGVpciBwYXJlbnQgZWxlbWVudCdzIHN0eWxlIHNvIGlmIHdlIG5lZWRlZAorICAgICAgICAvLyBh
IHN0eWxlIHJlY2FsYyB3ZSBzaG91bGQgRm9yY2Ugb25lIG9uIHRoZSBwc2V1ZG8uCisgICAgICAg
IGV4aXN0aW5nLT5yZWNhbGNTdHlsZShuZWVkc1N0eWxlUmVjYWxjKCkgPyBGb3JjZSA6IGNoYW5n
ZSk7CisKKyAgICAgICAgLy8gV2FpdCB1bnRpbCBvdXIgcGFyZW50IGlzIG5vdCBkaXNwbGF5ZWQg
b3IgcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQKKyAgICAgICAgLy8gaXMgZmFsc2UsIG90
aGVyd2lzZSB3ZSBjb3VsZCBjb250aW5vdXNseSBjcmVhdGUgYW5kIGRlc3Ryb3kgUHNldWRvRWxl
bWVudHMKKyAgICAgICAgLy8gd2hlbiBSZW5kZXJPYmplY3Q6OmlzQ2hpbGRBbGxvd2VkIG9uIG91
ciBwYXJlbnQgcmV0dXJucyBmYWxzZSBmb3IgdGhlCisgICAgICAgIC8vIFBzZXVkb0VsZW1lbnQn
cyByZW5kZXJlciBmb3IgZWFjaCBzdHlsZSByZWNhbGMuCisgICAgICAgIGlmICghcmVuZGVyZXIo
KSB8fCAhcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQocmVuZGVyZXIoKS0+Z2V0Q2FjaGVk
UHNldWRvU3R5bGUocHNldWRvSWQpKSkKKyAgICAgICAgICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5z
ZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCAwKTsKKyAgICB9IGVsc2UgaWYgKFJlZlB0cjxQc2V1
ZG9FbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlUHNldWRvRWxlbWVudElmTmVlZGVkKHBzZXVkb0lk
KSkgeworICAgICAgICBlbGVtZW50LT5hdHRhY2goKTsKKyAgICAgICAgZW5zdXJlRWxlbWVudFJh
cmVEYXRhKCktPnNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIGVsZW1lbnQucmVsZWFzZSgpKTsK
KyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4gRWxlbWVudDo6Y3JlYXRlUHNl
dWRvRWxlbWVudElmTmVlZGVkKFBzZXVkb0lkIHBzZXVkb0lkKQoreworICAgIGlmICghZG9jdW1l
bnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc0JlZm9yZUFmdGVyUnVsZXMoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVyKCktPmNh
bkhhdmVHZW5lcmF0ZWRDaGlsZHJlbigpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChp
c1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIXBzZXVkb0Vs
ZW1lbnRSZW5kZXJlcklzTmVlZGVkKHJlbmRlcmVyKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKHBz
ZXVkb0lkKSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFBzZXVkb0VsZW1lbnQ6
OmNyZWF0ZSh0aGlzLCBwc2V1ZG9JZCk7Cit9CisKK1BzZXVkb0VsZW1lbnQqIEVsZW1lbnQ6OmJl
Zm9yZVBzZXVkb0VsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8g
ZWxlbWVudFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQoQkVGT1JFKSA6IDA7Cit9CisKK1BzZXVk
b0VsZW1lbnQqIEVsZW1lbnQ6OmFmdGVyUHNldWRvRWxlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVudChBRlRF
UikgOiAwOworfQorCiAvLyBFbGVtZW50VHJhdmVyc2FsIEFQSQogRWxlbWVudCogRWxlbWVudDo6
Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYTI0NTk0
ZjVlNmJkODE3MzY0MzdhY2Y1ZWU1ZWMzNzljMWY4ODZlZC4uYTUyYjFiZjQ5M2E1Y2ExYmY2M2Zk
YWM0ZjFjOTI4N2I4MGM0NTA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00Myw2ICs0Myw3IEBA
IGNsYXNzIEVsZW1lbnRSYXJlRGF0YTsKIGNsYXNzIEVsZW1lbnRTaGFkb3c7CiBjbGFzcyBJbnRT
aXplOwogY2xhc3MgTG9jYWxlOworY2xhc3MgUHNldWRvRWxlbWVudDsKIGNsYXNzIFJlbmRlclJl
Z2lvbjsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBXZWJLaXRBbmltYXRpb25MaXN0OwpAQCAt
MzY1LDYgKzM2Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0No
aWxkcmVuKCk7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFyc2luZ0NoaWxkcmVuKCk7CiAKKyAg
ICBQc2V1ZG9FbGVtZW50KiBiZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisgICAgUHNldWRv
RWxlbWVudCogYWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisKICAgICAvLyBFbGVtZW50VHJh
dmVyc2FsIEFQSQogICAgIEVsZW1lbnQqIGZpcnN0RWxlbWVudENoaWxkKCkgY29uc3Q7CiAgICAg
RWxlbWVudCogbGFzdEVsZW1lbnRDaGlsZCgpIGNvbnN0OwpAQCAtNDkzLDYgKzQ5Nyw5IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGNsYXNzQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJp
bmcmIG5ld0NsYXNzU3RyaW5nKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZVBzZXVkb0Vs
ZW1lbnQoUHNldWRvSWQsIFN0eWxlQ2hhbmdlID0gTm9DaGFuZ2UpOworICAgIFBhc3NSZWZQdHI8
UHNldWRvRWxlbWVudD4gY3JlYXRlUHNldWRvRWxlbWVudElmTmVlZGVkKFBzZXVkb0lkKTsKKwog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIG5lZWQgZm9yIEF0dHIgdG8gY2FsbCB3aWxsTW9kaWZ5
QXR0cmlidXRlL2RpZE1vZGlmeUF0dHJpYnV0ZS4KICAgICBmcmllbmQgY2xhc3MgQXR0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IGRjNjJkZjYwMWI5ODBlMzBiODky
YWI2MzJlZjJjZDU3MWM5MzIwYTcuLjYyYzZhZTRlYjEyZjFhN2NmMGM5OGIyYzA1NjhlNTUzMGIz
NmFhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgi
CiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCisjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgog
I2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
IApAQCAtMzcsNiArMzgsOSBAQCBwdWJsaWM6CiAgICAgRWxlbWVudFJhcmVEYXRhKERvY3VtZW50
Kik7CiAgICAgdmlydHVhbCB+RWxlbWVudFJhcmVEYXRhKCk7CiAKKyAgICB2b2lkIHNldFBzZXVk
b0VsZW1lbnQoUHNldWRvSWQsIFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4pOworICAgIFBzZXVk
b0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQoUHNldWRvSWQpIGNvbnN0OworCiAgICAgdm9pZCByZXNl
dENvbXB1dGVkU3R5bGUoKTsKICAgICB2b2lkIHJlc2V0RHluYW1pY1Jlc3R5bGVPYnNlcnZhdGlv
bnMoKTsKIApAQCAtODMsNyArODcsMTMgQEAgcHVibGljOgogICAgIE93blB0cjxFbGVtZW50U2hh
ZG93PiBtX3NoYWRvdzsKICAgICBPd25QdHI8TmFtZWROb2RlTWFwPiBtX2F0dHJpYnV0ZU1hcDsK
IAorICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2dlbmVyYXRlZEJlZm9yZTsKKyAgICBSZWZQ
dHI8UHNldWRvRWxlbWVudD4gbV9nZW5lcmF0ZWRBZnRlcjsKKwogICAgIEludFNpemUgbV9zYXZl
ZExheWVyU2Nyb2xsT2Zmc2V0OworCitwcml2YXRlOgorICAgIHZvaWQgcmVsZWFzZVBzZXVkb0Vs
ZW1lbnQoUHNldWRvRWxlbWVudCopOwogfTsKIAogaW5saW5lIEludFNpemUgZGVmYXVsdE1pbmlt
dW1TaXplRm9yUmVzaXppbmcoKQpAQCAtOTQsMTIgKzEwNCw1OSBAQCBpbmxpbmUgSW50U2l6ZSBk
ZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpCiBpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjpF
bGVtZW50UmFyZURhdGEoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogTm9kZVJhcmVEYXRhKGRv
Y3VtZW50KQogICAgICwgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nKGRlZmF1bHRNaW5pbXVtU2l6
ZUZvclJlc2l6aW5nKCkpCisgICAgLCBtX2dlbmVyYXRlZEJlZm9yZSgwKQorICAgICwgbV9nZW5l
cmF0ZWRBZnRlcigwKQogewogfQogCiBpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjp+RWxlbWVudFJh
cmVEYXRhKCkKIHsKICAgICBBU1NFUlQoIW1fc2hhZG93KTsKKyAgICBBU1NFUlQoIW1fZ2VuZXJh
dGVkQmVmb3JlKTsKKyAgICBBU1NFUlQoIW1fZ2VuZXJhdGVkQWZ0ZXIpOworfQorCitpbmxpbmUg
dm9pZCBFbGVtZW50UmFyZURhdGE6OnNldFBzZXVkb0VsZW1lbnQoUHNldWRvSWQgcHNldWRvSWQs
IFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICBzd2l0Y2ggKHBzZXVk
b0lkKSB7CisgICAgY2FzZSBCRUZPUkU6CisgICAgICAgIHJlbGVhc2VQc2V1ZG9FbGVtZW50KG1f
Z2VuZXJhdGVkQmVmb3JlLmdldCgpKTsKKyAgICAgICAgbV9nZW5lcmF0ZWRCZWZvcmUgPSBlbGVt
ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFGVEVSOgorICAgICAgICByZWxlYXNlUHNl
dWRvRWxlbWVudChtX2dlbmVyYXRlZEFmdGVyLmdldCgpKTsKKyAgICAgICAgbV9nZW5lcmF0ZWRB
ZnRlciA9IGVsZW1lbnQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworaW5saW5lIFBzZXVkb0VsZW1lbnQqIEVs
ZW1lbnRSYXJlRGF0YTo6cHNldWRvRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKK3sK
KyAgICBzd2l0Y2ggKHBzZXVkb0lkKSB7CisgICAgY2FzZSBCRUZPUkU6CisgICAgICAgIHJldHVy
biBtX2dlbmVyYXRlZEJlZm9yZS5nZXQoKTsKKyAgICBjYXNlIEFGVEVSOgorICAgICAgICByZXR1
cm4gbV9nZW5lcmF0ZWRBZnRlci5nZXQoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbmxpbmUgdm9p
ZCBFbGVtZW50UmFyZURhdGE6OnJlbGVhc2VQc2V1ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqIGVs
ZW1lbnQpCit7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
ZWxlbWVudC0+YXR0YWNoZWQoKSkKKyAgICAgICAgZWxlbWVudC0+ZGV0YWNoKCk7CisKKyAgICBB
U1NFUlQoIWVsZW1lbnQtPm5leHRTaWJsaW5nKCkpOworICAgIEFTU0VSVCghZWxlbWVudC0+cHJl
dmlvdXNTaWJsaW5nKCkpOworCisgICAgZWxlbWVudC0+c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsK
IH0KIAogaW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpyZXNldENvbXB1dGVkU3R5bGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCmluZGV4IGQyZmJiMTZjOGY0NTg5ZmY0MjA0Yjk0ZTdhNTk2YWRjOTAwNTFi
ZGQuLjQ2MTFmZjVjNWQyY2FkYjZmYTZjODk5YzY4ZTVjYjMzY2Y0MDNkN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKQEAgLTQ0Nyw2ICs0NDcsMzQgQEAgdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNj
b3BlKiBzY29wZSkKICAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUoc2NvcGUpOwog
fQogCitOb2RlKiBOb2RlOjpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzRWxlbWVudE5vZGUoKSAmJiAhcHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAg
RWxlbWVudCogcGFyZW50ID0gcGFyZW50T3JIb3N0RWxlbWVudCgpOworICAgICAgICBpZiAoIXBh
cmVudCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoaXNBZnRlclBzZXVkb0Vs
ZW1lbnQoKSAmJiBwYXJlbnQtPmxhc3RDaGlsZCgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dC0+bGFzdENoaWxkKCk7CisgICAgICAgIGlmICghaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkpCisg
ICAgICAgICAgICByZXR1cm4gcGFyZW50LT5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7CisgICAgfQor
ICAgIHJldHVybiBwcmV2aW91c1NpYmxpbmcoKTsKK30KKworTm9kZSogTm9kZTo6cHNldWRvQXdh
cmVOZXh0U2libGluZygpIGNvbnN0Cit7CisgICAgaWYgKGlzRWxlbWVudE5vZGUoKSAmJiAhbmV4
dFNpYmxpbmcoKSkgeworICAgICAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRPckhvc3RFbGVt
ZW50KCk7CisgICAgICAgIGlmICghcGFyZW50KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIGlmIChpc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSAmJiBwYXJlbnQtPmZpcnN0Q2hpbGQoKSkK
KyAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgaWYgKCFp
c0FmdGVyUHNldWRvRWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+YWZ0ZXJQ
c2V1ZG9FbGVtZW50KCk7CisgICAgfQorICAgIHJldHVybiBuZXh0U2libGluZygpOworfQorCiBO
b2RlUmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzUmFy
ZURhdGEoKSk7CkBAIC03MDUsNiArNzMzLDkgQEAgYm9vbCBOb2RlOjpyZW5kZXJlcklzRWRpdGFi
bGUoRWRpdGFibGVMZXZlbCBlZGl0YWJsZUxldmVsLCBVc2VyU2VsZWN0QWxsVHJlYXRtZW4KICAg
ICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCkg
JiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5pc0VkaXRhYmxlKCkgJiYgIXNoYWRvd1Jv
b3QoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIElkZWFsbHkgd2UnZCBjYWxsIEFTU0VS
VCghbmVlZHNTdHlsZVJlY2FsYygpKSBoZXJlLCBidXQKICAgICAvLyBDb250YWluZXJOb2RlOjpz
ZXRGb2N1cygpIGNhbGxzIHNldE5lZWRzU3R5bGVSZWNhbGMoKSwgc28gdGhlIGFzc2VydGlvbgog
ICAgIC8vIHdvdWxkIGZpcmUgaW4gdGhlIG1pZGRsZSBvZiBEb2N1bWVudDo6c2V0Rm9jdXNlZE5v
ZGUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCmluZGV4IDViZGZiZWFlMDZiYjhmNDM0NTA0MTg0MjNjNGZhZDE5ZDVh
YmE2YWQuLmVmNDA1YzBhNmJhMzRiNDQyZTcyYWQyOGViNzlkYmU5OTRmY2Q4NmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaApAQCAtMTkwLDYgKzE5MCw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0F0dHJpYnV0ZXMo
KSBjb25zdDsKICAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMoKSBjb25zdDsKIAorICAgIE5v
ZGUqIHBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCkgY29uc3Q7CisgICAgTm9kZSogcHNldWRv
QXdhcmVOZXh0U2libGluZygpIGNvbnN0OworCiAgICAgdmlydHVhbCBLVVJMIGJhc2VVUkkoKSBj
b25zdDsKICAgICAKICAgICB2b2lkIGdldFN1YnJlc291cmNlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYpIGNvbnN0OwpAQCAtMjM0LDYgKzIzNywxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0hUTUxF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0hUTUxGbGFnKTsgfQogICAgIGJvb2wg
aXNTVkdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1NWR0ZsYWcpOyB9CiAKKyAg
ICBib29sIGlzUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHBzZXVkb0lkKCkgIT0gTk9Q
U0VVRE87IH0KKyAgICBib29sIGlzQmVmb3JlUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHBzZXVkb0lkKCkgPT0gQkVGT1JFOyB9CisgICAgYm9vbCBpc0FmdGVyUHNldWRvRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHBzZXVkb0lkKCkgPT0gQUZURVI7IH0KKyAgICBQc2V1ZG9JZCBwc2V1
ZG9JZCgpIGNvbnN0IHsgcmV0dXJuIChpc0VsZW1lbnROb2RlKCkgJiYgaGFzQ3VzdG9tQ2FsbGJh
Y2tzKCkpID8gY3VzdG9tUHNldWRvSWQoKSA6IE5PUFNFVURPOyB9CisKICAgICB2aXJ0dWFsIGJv
b2wgaXNNZWRpYUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIGlzU3R5bGVkRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTdHlsZWRF
bGVtZW50RmxhZyk7IH0KQEAgLTc0Miw2ICs3NTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENy
ZWF0ZVRleHQgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNUZXh0RmxhZywKICAgICAgICAgQ3JlYXRl
Q29udGFpbmVyID0gRGVmYXVsdE5vZGVGbGFncyB8IElzQ29udGFpbmVyRmxhZywgCiAgICAgICAg
IENyZWF0ZUVsZW1lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJc0VsZW1lbnRGbGFnLCAKKyAgICAg
ICAgQ3JlYXRlUHNldWRvRWxlbWVudCA9ICBDcmVhdGVFbGVtZW50IHwgSW5Eb2N1bWVudEZsYWcs
CiAgICAgICAgIENyZWF0ZVNoYWRvd1Jvb3QgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50
RnJhZ21lbnRGbGFnLAogICAgICAgICBDcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gQ3JlYXRlQ29u
dGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50RmxhZywKICAgICAgICAgQ3JlYXRlU3R5bGVkRWxl
bWVudCA9IENyZWF0ZUVsZW1lbnQgfCBJc1N0eWxlZEVsZW1lbnRGbGFnLCAKQEAgLTc1NCw2ICs3
NjMsMTIgQEAgcHJvdGVjdGVkOgogICAgIH07CiAgICAgTm9kZShEb2N1bWVudCosIENvbnN0cnVj
dGlvblR5cGUpOwogCisgICAgdmlydHVhbCBQc2V1ZG9JZCBjdXN0b21Qc2V1ZG9JZCgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQoaGFzQ3VzdG9tQ2FsbGJhY2tzKCkpOworICAgICAgICBy
ZXR1cm4gTk9QU0VVRE87CisgICAgfQorCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0IHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMTQ4MmZj
NDRhYmIwOTI0MjIzMjA0NDAwMDM1NmNiMTZlYzAzMjljNS4uNDY0NmNkODRhM2Q5YzBiNjZiZjMy
MDMzNmJkNTEzOTk1OWM0YTRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC04Myw2ICs4MywxNSBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJp
bmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChtX3BhcmVudERldGFpbHMu
bm9kZSgpICYmICFtX3BhcmVudERldGFpbHMubm9kZSgpLT5hdHRhY2hlZCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAorICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIHdoZW4gdGhlIG5leHQgc2li
bGluZyB3YXMgYWN0dWFsbHkgbW92ZWQgYXJvdW5kIGJ5IHNoYWRvdyBpbnNlcnRpb24gcG9pbnRz
LgorICAgIGlmIChtX25vZGUtPmlzUHNldWRvRWxlbWVudCgpKSB7CisgICAgICAgIGZvciAoTm9k
ZSogc2libGluZyA9IG1fbm9kZS0+cHNldWRvQXdhcmVOZXh0U2libGluZygpOyBzaWJsaW5nOyBz
aWJsaW5nID0gc2libGluZy0+cHNldWRvQXdhcmVOZXh0U2libGluZygpKSB7CisgICAgICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNpYmxpbmctPnJlbmRlcmVyKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgICAgICB9CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKwogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobV9ub2RlKTsK
ICAgICBmb3IgKHdhbGtlci5uZXh0U2libGluZygpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5uZXh0
U2libGluZygpKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gd2Fsa2Vy
LmdldCgpLT5yZW5kZXJlcigpKSB7CkBAIC0xMDEsNiArMTEwLDEwIEBAIFJlbmRlck9iamVjdCog
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1
cm4gcmVuZGVyZXItPnByZXZpb3VzU2libGluZygpOwogCisgICAgLy8gRklYTUU6IFRoaXMgbWV0
aG9kIGRvZXNuJ3Qgc3VwcG9ydCBwc2V1ZG8gZWxlbWVudHMgc2luY2Ugbm90aGluZyBuZWVkcwor
ICAgIC8vIHByZXZpb3VzUmVuZGVyZXIoKSBzdXBwb3J0IGZvciB0aGVtIHlldC4KKyAgICBBU1NF
UlQoIW1fbm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpOworCiAgICAgaWYgKG1fcGFyZW50Rmxvd1Jl
bmRlcmVyKQogICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXItPnByZXZpb3VzUmVu
ZGVyZXJGb3JOb2RlKG1fbm9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGNiNjA3
MDA3MDcxYzJjNzIxZTcwM2U0MmE0MTM4NTRhNjM3ZGEwNDMuLmExYzBiMDFlMTAyNDI1MzE2YTY2
OTMzNGUzMmRlNDM0MjgxNGIyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtODQwLDcg
Kzg0MCw3IEBAIGJvb2wgUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2VuZGFu
dHNXaXRoSGVpZ2h0KFJlbmRlck9iamVjdCogcmVuZGVyCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBz
dG9wID0gcmVuZGVyZXItPm5leHRJblByZU9yZGVyQWZ0ZXJDaGlsZHJlbigpOwogICAgIGZvciAo
UmVuZGVyT2JqZWN0ICpvID0gcmVuZGVyZXItPmZpcnN0Q2hpbGQoKTsgbyAmJiBvICE9IHN0b3A7
IG8gPSBvLT5uZXh0SW5QcmVPcmRlcigpKQotICAgICAgICBpZiAoby0+bm9kZSgpKSB7CisgICAg
ICAgIGlmIChvLT5ub2RlKCkgJiYgIW8tPm5vZGUoKS0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKICAg
ICAgICAgICAgIGlmICgoby0+aXNUZXh0KCkgJiYgdG9SZW5kZXJUZXh0KG8pLT5saW5lc0JvdW5k
aW5nQm94KCkuaGVpZ2h0KCkpIHx8CiAgICAgICAgICAgICAgICAgKG8tPmlzQm94KCkgJiYgdG9S
ZW5kZXJCb3gobyktPmJvcmRlckJvdW5kaW5nQm94KCkuaGVpZ2h0KCkpKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM3N2EyOTU0NDA1MDljNDQ5Njc3ZTQwNjAzMjA4ZDNmZGEwYWJmZDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKQEAgLTAsMCArMSwx
MDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgor
CisjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4
dC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NvbnN0IFF1YWxpZmllZE5hbWUmIHBzZXVkb0VsZW1lbnRUYWdOYW1lKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIG5hbWUsIChudWxsQXRvbSwgIjxwc2V1ZG8+
IiwgbnVsbEF0b20pKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworUHNldWRvRWxlbWVudDo6UHNl
dWRvRWxlbWVudChFbGVtZW50KiBwYXJlbnQsIFBzZXVkb0lkIHBzZXVkb0lkKQorICAgIDogRWxl
bWVudChwc2V1ZG9FbGVtZW50VGFnTmFtZSgpLCBwYXJlbnQtPmRvY3VtZW50KCksIENyZWF0ZVBz
ZXVkb0VsZW1lbnQpCisgICAgLCBtX3BzZXVkb0lkKHBzZXVkb0lkKQoreworICAgIEFTU0VSVChw
YXJlbnQtPmluRG9jdW1lbnQoKSk7CisgICAgc2V0UGFyZW50T3JIb3N0Tm9kZShwYXJlbnQpOwor
ICAgIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpOworfQorCitQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBQc2V1ZG9FbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkKK3sKKyAgICByZXR1cm4g
cGFyZW50T3JIb3N0RWxlbWVudCgpLT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZSht
X3BzZXVkb0lkKTsKK30KKwordm9pZCBQc2V1ZG9FbGVtZW50OjphdHRhY2goKQoreworICAgIEFT
U0VSVCghcmVuZGVyZXIoKSk7CisKKyAgICBFbGVtZW50OjphdHRhY2goKTsKKworICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIg
fHwgIXJlbmRlcmVyLT5zdHlsZSgpLT5yZWdpb25UaHJlYWQoKS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwor
ICAgIEFTU0VSVChzdHlsZS0+Y29udGVudERhdGEoKSk7CisKKyAgICBmb3IgKGNvbnN0IENvbnRl
bnREYXRhKiBjb250ZW50ID0gc3R5bGUtPmNvbnRlbnREYXRhKCk7IGNvbnRlbnQ7IGNvbnRlbnQg
PSBjb250ZW50LT5uZXh0KCkpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGNvbnRl
bnQtPmNyZWF0ZVJlbmRlcmVyKGRvY3VtZW50KCksIHN0eWxlKTsKKyAgICAgICAgaWYgKHJlbmRl
cmVyLT5pc0NoaWxkQWxsb3dlZChjaGlsZCwgc3R5bGUpKQorICAgICAgICAgICAgcmVuZGVyZXIt
PmFkZENoaWxkKGNoaWxkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2hpbGQtPmRlc3Ry
b3koKTsKKyAgICB9Cit9CisKK2Jvb2wgUHNldWRvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gcHNldWRv
RWxlbWVudFJlbmRlcmVySXNOZWVkZWQoY29udGV4dC5zdHlsZSgpKTsKK30KKwordm9pZCBQc2V1
ZG9FbGVtZW50OjpkaWRSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSkKK3sKKyAgICBpZiAoIXJlbmRl
cmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSByZW5kZXJlcnMgaW5zaWRlIHBz
ZXVkbyBlbGVtZW50cyBhcmUgYW5vbnltb3VzIHNvIHRoZXkgZG9uJ3QgZ2V0IG5vdGlmaWVkIG9m
IHJlY2FsY1N0eWxlIGFuZCBtdXN0IGhhdmUKKyAgICAvLyB0aGUgc3R5bGUgcHJvcGFnYXRlZCBk
b3dud2FyZCBtYW51YWxseSBzaW1pbGFyIHRvIFJlbmRlck9iamVjdDo6cHJvcGFnYXRlU3R5bGVU
b0Fub255bW91c0NoaWxkcmVuLgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHJlbmRlcmVyLT5uZXh0
SW5QcmVPcmRlcihyZW5kZXJlcik7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0SW5QcmVPcmRl
cihyZW5kZXJlcikpIHsKKyAgICAgICAgLy8gV2Ugb25seSBtYW5hZ2UgdGhlIHN0eWxlIGZvciB0
aGUgZ2VuZXJhdGVkIGNvbnRlbnQgd2hpY2ggbXVzdCBiZSBpbWFnZXMgb3IgdGV4dC4KKyAgICAg
ICAgaWYgKCFjaGlsZC0+aXNUZXh0KCkgJiYgIWNoaWxkLT5pc0ltYWdlKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyBUaGUgc3R5bGUgZm9yIHRoZSBSZW5kZXJUZXh0RnJh
Z21lbnQgZm9yIGZpcnN0IGxldHRlciBpcyBtYW5hZ2VkIGJ5IGFuIGVuY2xvc2luZyBibG9jaywg
bm90IGJ5IHVzLgorICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IEZJ
UlNUX0xFVFRFUikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNoaWxkLT5zZXRQ
c2V1ZG9TdHlsZShyZW5kZXJlci0+c3R5bGUoKSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFjNTc0OWQ5NTQ5NjVl
NTU0YjE4NjEzODgwYzE3ODljOWY4OTM4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUHNldWRv
RWxlbWVudF9oCisjZGVmaW5lIFBzZXVkb0VsZW1lbnRfaAorCisjaW5jbHVkZSAiRWxlbWVudC5o
IgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQc2V1ZG9FbGVtZW50IDogcHVibGljIEVsZW1l
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IGNyZWF0
ZShFbGVtZW50KiBwYXJlbnQsIFBzZXVkb0lkIHBzZXVkb0lkKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQc2V1ZG9FbGVtZW50KHBhcmVudCwgcHNldWRvSWQpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVu
ZGVyZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkNvbnRh
aW5SYW5nZUVuZFBvaW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworcHJp
dmF0ZToKKyAgICBQc2V1ZG9FbGVtZW50KEVsZW1lbnQqLCBQc2V1ZG9JZCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgUHNldWRvSWQgY3VzdG9tUHNldWRvSWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Bz
ZXVkb0lkOyB9CisKKyAgICBQc2V1ZG9JZCBtX3BzZXVkb0lkOworfTsKKworY29uc3QgUXVhbGlm
aWVkTmFtZSYgcHNldWRvRWxlbWVudFRhZ05hbWUoKTsKKworaW5saW5lIGJvb2wgcHNldWRvRWxl
bWVudFJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQoreworICAgIHJl
dHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkUgJiYgKHN0eWxlLT5jb250ZW50
RGF0YSgpIHx8ICFzdHlsZS0+cmVnaW9uVGhyZWFkKCkuaXNFbXB0eSgpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zp
c2libGVfdW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNw
cAppbmRleCA2ZWNiNzdjNjQ3NDgyYWNmMjJlMTdkYzM5M2MyNDFhNDdmMmQ1NTljLi4yYjZlOTQ4
MDNhYzc5ZTYxOGQ0MzM5NWJjODUyNjk4NGJjNTdlOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvdmlzaWJsZV91bml0cy5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgY29uc3QgSW5s
aW5lVGV4dEJveCogbG9naWNhbGx5UHJldmlvdXNCb3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
aXNpYmxlUAogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgTm9kZSogc3RhcnROb2RlID0gc3Rh
cnRCb3gtPnJlbmRlcmVyKCkgPyBzdGFydEJveC0+cmVuZGVyZXIoKS0+bm9kZSgpIDogMDsKLSAg
ICAgICAgaWYgKCFzdGFydE5vZGUpCisgICAgICAgIGlmICghc3RhcnROb2RlIHx8IHN0YXJ0Tm9k
ZS0+aXNQc2V1ZG9FbGVtZW50KCkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBQb3Np
dGlvbiBwb3NpdGlvbiA9IHByZXZpb3VzUm9vdElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9uKHN0
YXJ0Tm9kZSwgdmlzaWJsZVBvc2l0aW9uLCBDb250ZW50SXNFZGl0YWJsZSk7CkBAIC0yNTYsNyAr
MjU2LDcgQEAgc3RhdGljIGNvbnN0IElubGluZVRleHRCb3gqIGxvZ2ljYWxseU5leHRCb3goY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXQKIAogICAgIHdoaWxlICgxKSB7CiAgICAg
ICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJlcigpID8gc3RhcnRCb3gtPnJl
bmRlcmVyKCktPm5vZGUoKSA6IDA7Ci0gICAgICAgIGlmICghc3RhcnROb2RlKQorICAgICAgICBp
ZiAoIXN0YXJ0Tm9kZSB8fCBzdGFydE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBuZXh0Um9vdElubGluZUJv
eENhbmRpZGF0ZVBvc2l0aW9uKHN0YXJ0Tm9kZSwgdmlzaWJsZVBvc2l0aW9uLCBDb250ZW50SXNF
ZGl0YWJsZSk7CkBAIC03NDQsNyArNzQ0LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBzdGFy
dFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2kKICAg
ICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKICAgICAgICAgICAgIHN0
YXJ0Tm9kZSA9IHN0YXJ0UmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgICAgIGlmIChzdGFydE5v
ZGUpCisgICAgICAgICAgICBpZiAoc3RhcnROb2RlICYmICFzdGFydE5vZGUtPmlzUHNldWRvRWxl
bWVudCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBzdGFydEJveCA9
IHN0YXJ0Qm94LT5uZXh0TGVhZkNoaWxkKCk7CkBAIC04MTYsNyArODE2LDcgQEAgc3RhdGljIFZp
c2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBj
LCBMaW5lRW5kcG9pbnQKICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7
CiAKICAgICAgICAgICAgIGVuZE5vZGUgPSBlbmRSZW5kZXJlci0+bm9kZSgpOwotICAgICAgICAg
ICAgaWYgKGVuZE5vZGUpCisgICAgICAgICAgICBpZiAoZW5kTm9kZSAmJiAhZW5kTm9kZS0+aXNQ
c2V1ZG9FbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGVuZEJveCA9IGVuZEJveC0+cHJldkxlYWZDaGlsZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRl
eCAyMjFlZDdkOWJiODA3NDIxZGNjNmNiZjlkZDAwNTk3MDc5MDAwMGRhLi4xMmJmYzRhMjc5MjY1
OTFmZjI0ZmFmOTQ0Y2YxZDJkZmZkZWQ2MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTIxLDYgKzUyMSwx
MCBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVB
bmltYXRpb25zKFJlbmRlck9iamVjdCogcmVuZAogICAgIGlmICghcmVuZGVyZXItPmRvY3VtZW50
KCkgfHwgcmVuZGVyZXItPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpCiAgICAgICAgIHJldHVy
biBuZXdTdHlsZTsKIAorICAgIC8vIEZJWE1FOiBXZSBkbyBub3QgYW5pbWF0ZSBnZW5lcmF0ZWQg
Y29udGVudCB5ZXQuCisgICAgaWYgKHJlbmRlcmVyLT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIG5ld1N0eWxlOworCiAgICAgUmVuZGVyU3R5bGUqIG9sZFN0eWxlID0gcmVuZGVy
ZXItPnN0eWxlKCk7CiAKICAgICBpZiAoKCFvbGRTdHlsZSB8fCAoIW9sZFN0eWxlLT5hbmltYXRp
b25zKCkgJiYgIW9sZFN0eWxlLT50cmFuc2l0aW9ucygpKSkgJiYgKCFuZXdTdHlsZS0+YW5pbWF0
aW9ucygpICYmICFuZXdTdHlsZS0+dHJhbnNpdGlvbnMoKSkpCkBAIC01MzQsNyArNTM4LDcgQEAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0
aW9ucyhSZW5kZXJPYmplY3QqIHJlbmQKICAgICAvLyBhZ2FpbnN0IHRoZSBhbmltYXRpb25zIGlu
IHRoZSBzdHlsZSBhbmQgbWFrZSBzdXJlIHdlJ3JlIGluIHN5bmMuICBJZiBkZXN0aW5hdGlvbiB2
YWx1ZXMKICAgICAvLyBoYXZlIGNoYW5nZWQsIHdlIHJlc2V0IHRoZSBhbmltYXRpb24uICBXZSB0
aGVuIGRvIGEgYmxlbmQgdG8gZ2V0IG5ldyB2YWx1ZXMgYW5kIHdlIHJldHVybgogICAgIC8vIGEg
bmV3IHN0eWxlLgotICAgIEFTU0VSVChyZW5kZXJlci0+bm9kZSgpKTsgLy8gRklYTUU6IFdlIGRv
IG5vdCBhbmltYXRlIGdlbmVyYXRlZCBjb250ZW50IHlldC4KKyAgICBBU1NFUlQocmVuZGVyZXIt
Pm5vZGUoKSAmJiAhcmVuZGVyZXItPmlzUHNldWRvRWxlbWVudCgpKTsgLy8gRklYTUU6IFdlIGRv
IG5vdCBhbmltYXRlIGdlbmVyYXRlZCBjb250ZW50IHlldC4KIAogICAgIFJlZlB0cjxDb21wb3Np
dGVBbmltYXRpb24+IHJlbmRlcmVyQW5pbWF0aW9ucyA9IG1fZGF0YS0+YWNjZXNzQ29tcG9zaXRl
QW5pbWF0aW9uKHJlbmRlcmVyKTsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGJsZW5kZWRTdHls
ZSA9IHJlbmRlcmVyQW5pbWF0aW9ucy0+YW5pbWF0ZShyZW5kZXJlciwgb2xkU3R5bGUsIG5ld1N0
eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCAz
OGYxZjY3OWY5MzY1YmIxYTk5YjQwNzk5NzU1NTE1NDJmY2JlOTc3Li5jZmZkZjc4MDY4Y2I3N2Q3
NmNjMjMxZTU1ZmM3OGYxOWRkNThlN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwCkBAIC0yNjcsMTEgKzI2NywxNSBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6
OnNldFRvTm9uU2hhZG93QW5jZXN0b3IoKQogCiB2b2lkIEhpdFRlc3RSZXN1bHQ6OnNldElubmVy
Tm9kZShOb2RlKiBuKQogeworICAgIGlmIChuICYmIG4tPmlzUHNldWRvRWxlbWVudCgpKQorICAg
ICAgICBuID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIG1faW5uZXJOb2RlID0gbjsKIH0K
ICAgICAKIHZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb25TaGFyZWROb2RlKE5vZGUqIG4p
CiB7CisgICAgaWYgKG4gJiYgbi0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIG4gPSBuLT5w
YXJlbnRPckhvc3ROb2RlKCk7CiAgICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBuOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBjMWY3NmUwYjA3N2E1
ZTI3YTE0ZmEwNTgyYjQyMGRhNTlhNTQ0ODQ5Li4yNTgxMWQ4NGY2NjNiYTI5ZmVlY2EyYTc2M2Jj
NWVmY2FlZThiOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
QEAgLTMyMzAsNyArMzIzMCw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnNob3VsZFBhaW50U2VsZWN0
aW9uR2FwcygpIGNvbnN0CiAKIGJvb2wgUmVuZGVyQmxvY2s6OmlzU2VsZWN0aW9uUm9vdCgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFub2RlKCkpCisgICAgaWYgKCFub2RlKCkgfHwgaXNQc2V1ZG9FbGVt
ZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgLy8gRklYTUU6IEV2
ZW50dWFsbHkgdGFibGVzIHNob3VsZCBoYXZlIHRvIGxlYXJuIGhvdyB0byBmaWxsIGdhcHMgYmV0
d2VlbiBjZWxscywgYXQgbGVhc3QgaW4gc2ltcGxlIG5vbi1zcGFubmluZyBjYXNlcy4KQEAgLTc0
NjYsNyArNzQ2NiwxMCBAQCBjb25zdCBjaGFyKiBSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSgpIGNv
bnN0CiAgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGFub255bW91cyBtdWx0aS1jb2x1bW4g
c3BhbikiOwogICAgIGlmIChpc0Fub255bW91c0Jsb2NrKCkpCiAgICAgICAgIHJldHVybiAiUmVu
ZGVyQmxvY2sgKGFub255bW91cykiOwotICAgIGVsc2UgaWYgKGlzQW5vbnltb3VzKCkpCisgICAg
Ly8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHdoaWxlIHRoZSBuZXcgZ2VuZXJhdGVkIGNvbnRlbnQg
c3lzdGVtIGlzIGJlaW5nIGltcGxlbWVudGVkLgorICAgIGlmIChpc1BzZXVkb0VsZW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAoZ2VuZXJhdGVkKSI7CisgICAgaWYgKGlzQW5v
bnltb3VzKCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGdlbmVyYXRlZCkiOwogICAg
IGlmIChpc1JlbFBvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAocmVs
YXRpdmUgcG9zaXRpb25lZCkiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCmluZGV4IDI0Yzg2MzMwNDIxMjJhOGM1MGYzYmFkNzA3MTJjNTQ5OTMyOWU3OWMuLmIy
MzNjNDk2NDcyYjVmZWZjNWJiM2ExMTcxNDM0N2RiYzhhZGU2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTUwMSw3ICs1MDEsNyBAQCBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IFJlbmRlckNvdW50ZXI6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiAgICAg
ICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBpZiAoIWJlZm9yZUFmdGVyQ29udGFpbmVy
KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgaWYgKCFiZWZvcmVBZnRl
ckNvbnRhaW5lci0+aXNBbm9ueW1vdXMoKSkKKyAgICAgICAgICAgIGlmICghYmVmb3JlQWZ0ZXJD
b250YWluZXItPmlzQW5vbnltb3VzKCkgJiYgIWJlZm9yZUFmdGVyQ29udGFpbmVyLT5pc1BzZXVk
b0VsZW1lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsgLy8gUmVuZGVyQ291bnRlcnMg
YXJlIHJlc3RyaWN0ZWQgdG8gYmVmb3JlIGFuZCBhZnRlciBwc2V1ZG8gZWxlbWVudHMKICAgICAg
ICAgICAgIFBzZXVkb0lkIGNvbnRhaW5lclN0eWxlID0gYmVmb3JlQWZ0ZXJDb250YWluZXItPnN0
eWxlKCktPnN0eWxlVHlwZSgpOwogICAgICAgICAgICAgaWYgKChjb250YWluZXJTdHlsZSA9PSBC
RUZPUkUpIHx8IChjb250YWluZXJTdHlsZSA9PSBBRlRFUikpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4
IDMzMjM5ODZjOTkwYzY0OWIyNDRjZWM0NDNlYjI2MTJjMzRkNzI2MzIuLjY5NTBhMTQ3MjE4ZGRk
YjYyNzhmYWJhNDJkNTNmYjViMTY0OTE5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC0xMDgzLDEy
ICsxMDgzLDE1IEBAIExheW91dFVuaXQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphbGxv
d2VkQ2hpbGRGbGV4KFJlbmRlckJveCogY2hpbGQsIGJvb2wKICAgICByZXR1cm4gMDsKIH0KIAot
Y29uc3QgY2hhciAqUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpyZW5kZXJOYW1lKCkgY29u
c3QKK2NvbnN0IGNoYXIqIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6cmVuZGVyTmFtZSgp
IGNvbnN0CiB7CiAgICAgaWYgKGlzRmxvYXRpbmcoKSkKICAgICAgICAgcmV0dXJuICJSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3ggKGZsb2F0aW5nKSI7CiAgICAgaWYgKGlzT3V0T2ZGbG93UG9z
aXRpb25lZCgpKQogICAgICAgICByZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCAo
cG9zaXRpb25lZCkiOworICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFjayB3aGlsZSB0aGUgbmV3
IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWluZyBpbXBsZW1lbnRlZC4KKyAgICBpZiAo
aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94IChnZW5lcmF0ZWQpIjsKICAgICBpZiAoaXNBbm9ueW1vdXMoKSkKICAgICAgICAgcmV0
dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKGdlbmVyYXRlZCkiOwogICAgIGlmIChp
c1JlbFBvc2l0aW9uZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAKaW5kZXggZGIxYjE4NWY2NWQ0NjlkMzMzYjZjNjFkMGEyZTQ5Mjc5YzdlNzE1Ni4uMGUxY2Rh
MzE2YWY5NGFkNGI2NmVmZWM5Zjc3ZmVlZWExOTFhMjIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTc2Miw2ICs3NjIsOSBAQCBjb25zdCBjaGFyKiBS
ZW5kZXJJbmxpbmU6OnJlbmRlck5hbWUoKSBjb25zdAogICAgICAgICByZXR1cm4gIlJlbmRlcklu
bGluZSAocmVsYXRpdmUgcG9zaXRpb25lZCkiOwogICAgIGlmIChpc1N0aWNreVBvc2l0aW9uZWQo
KSkKICAgICAgICAgcmV0dXJuICJSZW5kZXJJbmxpbmUgKHN0aWNreSBwb3NpdGlvbmVkKSI7Cisg
ICAgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHdoaWxlIHRoZSBuZXcgZ2VuZXJhdGVkIGNvbnRl
bnQgc3lzdGVtIGlzIGJlaW5nIGltcGxlbWVudGVkLgorICAgIGlmIChpc1BzZXVkb0VsZW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuICJSZW5kZXJJbmxpbmUgKGdlbmVyYXRlZCkiOwogICAgIGlmIChp
c0Fub255bW91cygpKQogICAgICAgICByZXR1cm4gIlJlbmRlcklubGluZSAoZ2VuZXJhdGVkKSI7
CiAgICAgaWYgKGlzUnVuSW4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtbkJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtbkJsb2NrLmNwcAppbmRleCBiYTNjY2Q5YjI5ODIxY2IxNDBiZDZmYjJj
YjI4YjcyOWQ2YWYwNGViLi4yMzExZGExODhlN2FjOWUyNzU0YzRmOTY0YjUzMGRlMzY2NWUwNDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5C
bG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
QmxvY2suY3BwCkBAIC0xNDUsMTMgKzE0NSwxNiBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uQmxv
Y2s6OmVuc3VyZUNvbHVtblNldHMoKQogfQogCiBjb25zdCBjaGFyKiBSZW5kZXJNdWx0aUNvbHVt
bkJsb2NrOjpyZW5kZXJOYW1lKCkgY29uc3QKLXsgICAgCit7CiAgICAgaWYgKGlzRmxvYXRpbmco
KSkKICAgICAgICAgcmV0dXJuICJSZW5kZXJNdWx0aUNvbHVtbkJsb2NrIChmbG9hdGluZykiOwog
ICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuICJSZW5kZXJN
dWx0aUNvbHVtbkJsb2NrIChwb3NpdGlvbmVkKSI7CiAgICAgaWYgKGlzQW5vbnltb3VzQmxvY2so
KSkKICAgICAgICAgcmV0dXJuICJSZW5kZXJNdWx0aUNvbHVtbkJsb2NrIChhbm9ueW1vdXMpIjsK
KyAgICAvLyBGSVhNRTogVGVtcG9yYXJ5IGhhY2sgd2hpbGUgdGhlIG5ldyBnZW5lcmF0ZWQgY29u
dGVudCBzeXN0ZW0gaXMgYmVpbmcgaW1wbGVtZW50ZWQuCisgICAgaWYgKGlzUHNldWRvRWxlbWVu
dCgpKQorICAgICAgICByZXR1cm4gIlJlbmRlck11bHRpQ29sdW1uQmxvY2sgKGdlbmVyYXRlZCki
OwogICAgIGlmIChpc0Fub255bW91cygpKQogICAgICAgICByZXR1cm4gIlJlbmRlck11bHRpQ29s
dW1uQmxvY2sgKGdlbmVyYXRlZCkiOwogICAgIGlmIChpc1JlbFBvc2l0aW9uZWQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMTEwNDY3YWQ1NDhmY2Jj
YjA0MTRlYWFhYzYyM2EwNDNjY2NiMWE0OC4uZmNjZWVkNjllNDgzMmI1MDg0ZWM1NTMyODlmOWY2
NmM2M2M4ODkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
QEAgLTE0Miw3ICsxNDIsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y3JlYXRlT2Jq
ZWN0KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICAvLyBXb3JrcyBvbmx5IGlm
IHdlIGhhdmUgZXhhY3RseSBvbmUgcGllY2Ugb2YgY29udGVudCBhbmQgaXQncyBhIFVSTC4KICAg
ICAvLyBPdGhlcndpc2UgYWN0cyBhcyBpZiB3ZSBkaWRuJ3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUu
CiAgICAgY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnREYXRhID0gc3R5bGUtPmNvbnRlbnREYXRh
KCk7Ci0gICAgaWYgKGNvbnRlbnREYXRhICYmICFjb250ZW50RGF0YS0+bmV4dCgpICYmIGNvbnRl
bnREYXRhLT5pc0ltYWdlKCkgJiYgZG9jICE9IG5vZGUpIHsKKyAgICBpZiAoY29udGVudERhdGEg
JiYgIWNvbnRlbnREYXRhLT5uZXh0KCkgJiYgY29udGVudERhdGEtPmlzSW1hZ2UoKSAmJiBkb2Mg
IT0gbm9kZSAmJiAhbm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgUmVuZGVySW1h
Z2UqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2Uobm9kZSk7CiAgICAgICAgIC8vIFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlIHJlcXVpcmVzIGEgc3R5bGUgYmVpbmcgcHJlc2Vu
dCBvbiB0aGUgaW1hZ2UgYnV0IHdlIGRvbid0IHdhbnQgdG8KICAgICAgICAgLy8gdHJpZ2dlciBh
IHN0eWxlIGNoYW5nZSBub3cgYXMgdGhlIG5vZGUgaXMgbm90IGZ1bGx5IGF0dGFjaGVkLiBNb3Zp
bmcgdGhpcyBjb2RlIHRvIHN0eWxlIGNoYW5nZQpAQCAtMTc1Niw2ICsxNzU2LDIzIEBAIFN0eWxl
RGlmZmVyZW5jZSBSZW5kZXJPYmplY3Q6OmFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgdW5zaWduCiAgICAgcmV0dXJuIGRpZmY7CiB9CiAKK3ZvaWQgUmVuZGVyT2Jq
ZWN0OjpzZXRQc2V1ZG9TdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZSkK
K3sKKyAgICBBU1NFUlQocHNldWRvU3R5bGUtPnN0eWxlVHlwZSgpID09IEJFRk9SRSB8fCBwc2V1
ZG9TdHlsZS0+c3R5bGVUeXBlKCkgPT0gQUZURVIpOworCisgICAgLy8gSW1hZ2VzIGFyZSBzcGVj
aWFsIGFuZCBtdXN0IGluaGVyaXQgdGhlIHBzZXVkb1N0eWxlIHNvIHRoZSB3aWR0aCBhbmQgaGVp
Z2h0IG9mCisgICAgLy8gdGhlIHBzZXVkbyBlbGVtZW50IGRvZXNuJ3QgY2hhbmdlIHRoZSBzaXpl
IG9mIHRoZSBpbWFnZS4gSW4gYWxsIG90aGVyIGNhc2VzIHdlCisgICAgLy8gY2FuIGp1c3Qgc2hh
cmUgdGhlIHN0eWxlLgorICAgIGlmIChpc0ltYWdlKCkpIHsKKyAgICAgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgc3R5bGUtPmlu
aGVyaXRGcm9tKHBzZXVkb1N0eWxlLmdldCgpKTsKKyAgICAgICAgc2V0U3R5bGUoc3R5bGUucmVs
ZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldFN0eWxlKHBzZXVkb1N0
eWxlKTsKK30KKwogdm9pZCBSZW5kZXJPYmplY3Q6OnNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKQogewogICAgIGlmIChtX3N0eWxlID09IHN0eWxlKSB7CkBAIC0yOTY3LDcg
KzI5ODQsOCBAQCBSZW5kZXJCb3hNb2RlbE9iamVjdCogUmVuZGVyT2JqZWN0OjpvZmZzZXRQYXJl
bnQoKSBjb25zdAogVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBv
c2l0aW9uKGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbml0eSkKIHsKICAgICAvLyBJZiB0aGlz
IGlzIGEgbm9uLWFub255bW91cyByZW5kZXJlciBpbiBhbiBlZGl0YWJsZSBhcmVhLCB0aGVuIGl0
J3Mgc2ltcGxlLgotICAgIGlmIChOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpKSB7CisgICAgaWYg
KG5vZGUoKSAmJiAhaXNQc2V1ZG9FbGVtZW50KCkpIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IHRo
aXMtPm5vZGUoKTsKICAgICAgICAgaWYgKCFub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoKSkgewog
ICAgICAgICAgICAgLy8gSWYgaXQgY2FuIGJlIGZvdW5kLCB3ZSBwcmVmZXIgYSB2aXN1YWxseSBl
cXVpdmFsZW50IHBvc2l0aW9uIHRoYXQgaXMgZWRpdGFibGUuIAogICAgICAgICAgICAgUG9zaXRp
b24gcG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgb2Zmc2V0KTsK
QEAgLTI5OTMsOCArMzAxMSw4IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0
ZVZpc2libGVQb3NpdGlvbihpbnQgb2Zmc2V0LCBFQWZmaW5pdHkgYWZmaW5pCiAgICAgICAgIC8v
IEZpbmQgbm9uLWFub255bW91cyBjb250ZW50IGFmdGVyLgogICAgICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gY2hpbGQ7CiAgICAgICAgIHdoaWxlICgocmVuZGVyZXIgPSByZW5kZXJlci0+
bmV4dEluUHJlT3JkZXIocGFyZW50KSkpIHsKLSAgICAgICAgICAgIGlmIChOb2RlKiBub2RlID0g
cmVuZGVyZXItPm5vZGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKSwgRE9XTlNUUkVBTSk7CisgICAgICAg
ICAgICBpZiAocmVuZGVyZXItPm5vZGUoKSAmJiAhcmVuZGVyZXItPmlzUHNldWRvRWxlbWVudCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKHJlbmRlcmVyLT5ub2RlKCkpLCBET1dOU1RSRUFNKTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIEZpbmQgbm9uLWFub255bW91cyBjb250ZW50IGJlZm9yZS4KQEAgLTMwMDIs
MTMgKzMwMjAsMTMgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJs
ZVBvc2l0aW9uKGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbmkKICAgICAgICAgd2hpbGUgKChy
ZW5kZXJlciA9IHJlbmRlcmVyLT5wcmV2aW91c0luUHJlT3JkZXIoKSkpIHsKICAgICAgICAgICAg
IGlmIChyZW5kZXJlciA9PSBwYXJlbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBpZiAoTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbihsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpLCBE
T1dOU1RSRUFNKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpICYmICFyZW5kZXJl
ci0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbihsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKHJlbmRlcmVyLT5ub2RlKCkpLCBET1dOU1RS
RUFNKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFVzZSB0aGUgcGFyZW50IGl0c2VsZiB1bmxl
c3MgaXQgdG9vIGlzIGFub255bW91cy4KLSAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSBwYXJlbnQt
Pm5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgaWYgKHBhcmVudC0+
bm9kZSgpICYmICFpc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24oZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudC0+bm9kZSgpKSwgRE9X
TlNUUkVBTSk7CiAKICAgICAgICAgLy8gUmVwZWF0IGF0IHRoZSBuZXh0IGxldmVsIHVwLgogICAg
ICAgICBjaGlsZCA9IHBhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAppbmRleCA0NzkyZjczNzM4MWE1NDg4OTFkNTA2ZDk2NGYxYjU0YTc5NTBmYTk2Li5iMDEwMzM3
ODAxOTY2M2MzODNlM2MwN2U5M2Y5MDIwYjkzYzMyNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCkBAIC0zMzAsNiArMzMwLDggQEAgcHJpdmF0ZToKIHB1YmxpYzoK
ICAgICBSZW5kZXJBcmVuYSogcmVuZGVyQXJlbmEoKSBjb25zdCB7IHJldHVybiBkb2N1bWVudCgp
LT5yZW5kZXJBcmVuYSgpOyB9CiAKKyAgICBib29sIGlzUHNldWRvRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmlzUHNldWRvRWxlbWVudCgpOyB9CisKICAgICB2aXJ0
dWFsIGJvb2wgaXNCUigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzQmxvY2tGbG93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNCb3hNb2RlbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02MjMsNyArNjI1
LDEyIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBzdHlsZWQgbm9kZSB0aGF0IGNhdXNl
ZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIHJlbmRlcmVyLgogICAgIC8vIFRoaXMgaXMgdGhlIHNh
bWUgYXMgbm9kZSgpIGV4Y2VwdCBmb3IgcmVuZGVyZXJzIG9mIDpiZWZvcmUgYW5kIDphZnRlcgog
ICAgIC8vIHBzZXVkbyBlbGVtZW50cyBmb3Igd2hpY2ggdGhlaXIgcGFyZW50IG5vZGUgaXMgcmV0
dXJuZWQuCi0gICAgTm9kZSogZ2VuZXJhdGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGUg
PT0gZG9jdW1lbnQoKSA/IDAgOiBtX25vZGU7IH0KKyAgICBOb2RlKiBnZW5lcmF0aW5nTm9kZSgp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAg
ICByZXR1cm4gbm9kZSgpLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIHJldHVybiBtX25v
ZGUgPT0gZG9jdW1lbnQoKSA/IDAgOiBtX25vZGU7CisgICAgfQogICAgIHZvaWQgc2V0Tm9kZShO
b2RlKiBub2RlKSB7IG1fbm9kZSA9IG5vZGU7IH0KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+ZG9jdW1lbnQoKTsgfQpAQCAtNzEzLDYgKzcyMCw5IEBA
IHB1YmxpYzoKICAgICAvLyBTZXQgdGhlIHN0eWxlIG9mIHRoZSBvYmplY3QgYW5kIHVwZGF0ZSB0
aGUgc3RhdGUgb2YgdGhlIG9iamVjdCBhY2NvcmRpbmdseS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0
U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwogCisgICAgLy8gU2V0IHRoZSBzdHlsZSBv
ZiB0aGUgb2JqZWN0IGlmIGl0J3MgZ2VuZXJhdGVkIGNvbnRlbnQuCisgICAgdm9pZCBzZXRQc2V1
ZG9TdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7CisKICAgICAvLyBVcGRhdGVzIG9ubHkg
dGhlIGxvY2FsIHN0eWxlIHB0ciBvZiB0aGUgb2JqZWN0LiAgRG9lcyBub3QgdXBkYXRlIHRoZSBz
dGF0ZSBvZiB0aGUgb2JqZWN0LAogICAgIC8vIGFuZCBzbyBvbmx5IHNob3VsZCBiZSBjYWxsZWQg
d2hlbiB0aGUgc3R5bGUgaXMga25vd24gbm90IHRvIGhhdmUgY2hhbmdlZCAob3IgZnJvbSBzZXRT
dHlsZSkuCiAgICAgdm9pZCBzZXRTdHlsZUludGVybmFsKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKSB7IG1fc3R5bGUgPSBzdHlsZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5oCmluZGV4IDJkZDI2YTI0ZDQyNTE4Yzk0MjU4ODM2ZjE0ZDQ1YTcyMDVh
YTFhZWEuLjY1NzczY2E0ZjQ0MDViZjI1YjYwZjVkODNhNjk0ODdiNjg4OTMyYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTIwOSw3ICsyMDksNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiBpc0Fub255bW91cygp
ID8gIlJlbmRlclRhYmxlQ2VsbCAoYW5vbnltb3VzKSIgOiAiUmVuZGVyVGFibGVDZWxsIjsgfQor
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIChpc0Fu
b255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZUNlbGwgKGFub255
bW91cykiIDogIlJlbmRlclRhYmxlQ2VsbCI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxl
Q2VsbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVSb3cuaAppbmRleCA2ZjE5NWQzMDQ4MGU1NjE3ZGM1NjZkMTc1MGJjMDAyNTQ4
MTIwMjQ0Li5jMDVmNDRiNjg1OTVlODI5N2Q0ZWRjMjZhOGMyNThiNWM5YTlmYTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaApAQCAtOTIsNyArOTIsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRy
ZW4oKSB7IHJldHVybiBjaGlsZHJlbigpOyB9CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmpl
Y3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVuKCk7
IH0KIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyVGFibGVSb3cgKGFub255bW91cykiIDogIlJlbmRlclRh
YmxlUm93IjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJs
ZVJvdyAoYW5vbnltb3VzKSIgOiAiUmVuZGVyVGFibGVSb3ciOyB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNUYWJsZVJvdygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCmluZGV4IDc5Y2RkNGExZGE1MmRlOWRl
OTViNzAxMmYyYjgwYmFkMTUxN2JjYmMuLjYzOTlmN2MwZTU1ZjkzYjQwYjg4NWI1ODY4MjZmNGQ4
N2IxNjY3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZHJlbigpOyB9CiAg
ICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyVGFibGVT
ZWN0aW9uIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZVNlY3Rpb24iOyB9CisgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkg
fHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlU2VjdGlvbiAoYW5vbnltb3VzKSIg
OiAiUmVuZGVyVGFibGVTZWN0aW9uIjsgfQogCiAgICAgdmlydHVhbCBib29sIGlzVGFibGVTZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggNWI0ZWI3MzU4MDI3N2E5NGFlZGUxY2YzZDc0
NTI1OTkzNjk0N2YwMS4uZTgzODk4ZWY4NzdhZDYxOWEwMDZjM2RmN2ZjMzk5ZWM5MDczZGNkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAt
MjIxLDYgKzIyMSw5IEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3Qo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKIAogICAgIGlmIChvLm5vZGUo
KSkgewogICAgICAgICBTdHJpbmcgdGFnTmFtZSA9IGdldFRhZ05hbWUoby5ub2RlKCkpOworICAg
ICAgICAvLyBGSVhNRTogVGVtcG9yYXJ5IGhhY2sgdG8gbWFrZSB0ZXN0cyBwYXNzIGJ5IHNpbXVs
YXRpbmcgdGhlIG9sZCBnZW5lcmF0ZWQgY29udGVudCBvdXRwdXQuCisgICAgICAgIGlmIChvLmlz
UHNldWRvRWxlbWVudCgpIHx8IChvLnBhcmVudCgpICYmIG8ucGFyZW50KCktPmlzUHNldWRvRWxl
bWVudCgpKSkKKyAgICAgICAgICAgIHRhZ05hbWUgPSBlbXB0eUF0b207CiAgICAgICAgIGlmICgh
dGFnTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHRzIDw8ICIgeyIgPDwgdGFnTmFtZSA8
PCAifSI7CiAgICAgICAgICAgICAvLyBmbGFnIGVtcHR5IG9yIHVuc3R5bGVkIEFwcGxlU3R5bGVT
cGFuIGJlY2F1c2Ugd2UgbmV2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9Db250ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
Q29udGVudERhdGEuY3BwCmluZGV4IDljYWMyNTRjZTkyM2I0YjgyZmEwZDBiZmRiYjhlZGViNDQ5
YjZjN2UuLmUxODRiOWJmNjRlNWExNDcxM2NkNDA2NjYxMjQ0MTZkYTgyMmUzZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcApAQCAtNzAsMTIg
KzcwLDcgQEAgUGFzc093blB0cjxDb250ZW50RGF0YT4gQ29udGVudERhdGE6OmNsb25lKCkgY29u
c3QKIFJlbmRlck9iamVjdCogSW1hZ2VDb250ZW50RGF0YTo6Y3JlYXRlUmVuZGVyZXIoRG9jdW1l
bnQqIGRvYywgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlKSBjb25zdAogewogICAgIFJlbmRlcklt
YWdlKiBpbWFnZSA9IG5ldyAoZG9jLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJJbWFnZShkb2MpOwot
ICAgIC8vIEltYWdlcyBhcmUgc3BlY2lhbCBhbmQgbXVzdCBpbmhlcml0IHRoZSBwc2V1ZG9TdHls
ZSBzbyB0aGUgd2lkdGggYW5kIGhlaWdodCBvZgotICAgIC8vIHRoZSBwc2V1ZG8gZWxlbWVudCBk
b24ndCBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGltYWdlLiBJbiBhbGwgb3RoZXIgY2FzZXMgd2UK
LSAgICAvLyBjYW4ganVzdCBzaGFyZSB0aGUgc3R5bGUuCi0gICAgUmVmUHRyPFJlbmRlclN0eWxl
PiBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKLSAgICBzdHlsZS0+aW5oZXJpdEZyb20o
cHNldWRvU3R5bGUpOwotICAgIGltYWdlLT5zZXRTdHlsZShzdHlsZS5yZWxlYXNlKCkpOworICAg
IGltYWdlLT5zZXRQc2V1ZG9TdHlsZShwc2V1ZG9TdHlsZSk7CiAgICAgaWYgKG1faW1hZ2UpCiAg
ICAgICAgIGltYWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlOjpjcmVhdGUobV9pbWFnZS5nZXQoKSkpOwogICAgIGVsc2UKQEAgLTg2LDIxICs4MSwyMSBA
QCBSZW5kZXJPYmplY3QqIEltYWdlQ29udGVudERhdGE6OmNyZWF0ZVJlbmRlcmVyKERvY3VtZW50
KiBkb2MsIFJlbmRlclN0eWxlKiBwc2V1ZAogUmVuZGVyT2JqZWN0KiBUZXh0Q29udGVudERhdGE6
OmNyZWF0ZVJlbmRlcmVyKERvY3VtZW50KiBkb2MsIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSkg
Y29uc3QKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbmV3IChkb2MtPnJlbmRlckFy
ZW5hKCkpIFJlbmRlclRleHRGcmFnbWVudChkb2MsIG1fdGV4dC5pbXBsKCkpOwotICAgIHJlbmRl
cmVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7CisgICAgcmVuZGVyZXItPnNldFBzZXVkb1N0eWxl
KHBzZXVkb1N0eWxlKTsKICAgICByZXR1cm4gcmVuZGVyZXI7CiB9CiAKIFJlbmRlck9iamVjdCog
Q291bnRlckNvbnRlbnREYXRhOjpjcmVhdGVSZW5kZXJlcihEb2N1bWVudCogZG9jLCBSZW5kZXJT
dHlsZSogcHNldWRvU3R5bGUpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG5ldyAoZG9jLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJDb3VudGVyKGRvYywgKm1fY291bnRlcik7
Ci0gICAgcmVuZGVyZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKKyAgICByZW5kZXJlci0+c2V0
UHNldWRvU3R5bGUocHNldWRvU3R5bGUpOwogICAgIHJldHVybiByZW5kZXJlcjsKIH0KIAogUmVu
ZGVyT2JqZWN0KiBRdW90ZUNvbnRlbnREYXRhOjpjcmVhdGVSZW5kZXJlcihEb2N1bWVudCogZG9j
LCBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG5ldyAoZG9jLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJRdW90ZShkb2MsIG1fcXVv
dGUpOwotICAgIHJlbmRlcmVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7CisgICAgcmVuZGVyZXIt
PnNldFBzZXVkb1N0eWxlKHBzZXVkb1N0eWxlKTsKICAgICByZXR1cm4gcmVuZGVyZXI7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>