<?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>74953</bug_id>
          
          <creation_ts>2011-12-20 13:56:51 -0800</creation_ts>
          <short_desc>Avoid unnecessary work when removing attributes from an element</short_desc>
          <delta_ts>2011-12-20 17:33:09 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>ojan</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>524803</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-20 13:56:51 -0800</bug_when>
    <thetext>Avoid unnecessary work when removing attributes from an element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524807</commentid>
    <comment_count>1</comment_count>
      <attachid>120076</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-20 14:01:43 -0800</bug_when>
    <thetext>Created attachment 120076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524808</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-20 14:02:16 -0800</bug_when>
    <thetext>I&apos;m seeing inspector test failures which I&apos;m now investigating...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524809</commentid>
    <comment_count>3</comment_count>
      <attachid>120077</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-20 14:04:37 -0800</bug_when>
    <thetext>Created attachment 120077
More changelog detail</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524818</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-20 14:15:41 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m seeing inspector test failures which I&apos;m now investigating...

Never mind, just the usual debug timeouts. Ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524827</commentid>
    <comment_count>5</comment_count>
      <attachid>120077</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-20 14:23:21 -0800</bug_when>
    <thetext>Comment on attachment 120077
More changelog detail

Attachment 120077 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10993335</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524834</commentid>
    <comment_count>6</comment_count>
      <attachid>120088</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-20 14:30:37 -0800</bug_when>
    <thetext>Created attachment 120088
Fix Qt build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524849</commentid>
    <comment_count>7</comment_count>
      <attachid>120077</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-20 14:58:12 -0800</bug_when>
    <thetext>Comment on attachment 120077
More changelog detail

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

&gt; Source/WebCore/dom/Element.cpp:202
&gt; +    willModifyAttribute(name, m_attributeMap-&gt;attributeItem(index)-&gt;value(), nullAtom);
&gt; +
&gt; +    m_attributeMap-&gt;removeAttribute(index);

It&apos;s not great that some of these functions call willModifyAttribute themselves but not attributeChanged. We should try to make them symmetric as possible to make the interface less obscure. Asymmetric interfaces like this one makes the correctness harder to verify if it doesn&apos;t introduce more bugs. e.g. why is it okay not to call InspectorInstrumentation::willModifyDOMAttr here?

&gt; Source/WebCore/dom/Element.cpp:207
&gt;  void Element::setBooleanAttribute(const QualifiedName&amp; name, bool b)
&gt;  {
&gt;      if (b)

Could you rename b? e.g. value.

&gt; Source/WebCore/dom/NamedNodeMap.cpp:154
&gt;      RefPtr&lt;Attr&gt; attr = attribute-&gt;createAttrIfNeeded(m_element);

Do we need to create attr here or can we get away by creating on return?

&gt; Source/WebCore/dom/NamedNodeMap.cpp:263
&gt; -void NamedNodeMap::removeAttribute(const QualifiedName&amp; name)
&gt; +void NamedNodeMap::replaceAttribute(size_t index, PassRefPtr&lt;Attribute&gt; attribute)

Could you define replaceAttribute after removeAttribute so that the diff would look saner?

&gt; Source/WebCore/dom/NamedNodeMap.cpp:271
&gt; +    if (Attr* attr = m_attributes[index]-&gt;attr())
&gt; +        attr-&gt;m_element = m_element;

It seems like we should define attr outside of the if condition to avoid having to duplicate &quot;m_attributes[index]-&gt;attr()&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524853</commentid>
    <comment_count>8</comment_count>
      <attachid>120093</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-20 15:02:27 -0800</bug_when>
    <thetext>Created attachment 120093
Update setAttribute to use indices as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524857</commentid>
    <comment_count>9</comment_count>
      <attachid>120093</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-20 15:04:24 -0800</bug_when>
    <thetext>Comment on attachment 120093
Update setAttribute to use indices as well

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

&gt; Source/WebCore/dom/NamedNodeMap.cpp:263
&gt; -void NamedNodeMap::removeAttribute(const QualifiedName&amp; name)
&gt; +void NamedNodeMap::replaceAttribute(size_t index, PassRefPtr&lt;Attribute&gt; attribute)

Please re-odering these two functions if that improves the readability of diff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524862</commentid>
    <comment_count>10</comment_count>
      <attachid>120077</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-20 15:08:53 -0800</bug_when>
    <thetext>Comment on attachment 120077
More changelog detail

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

&gt;&gt; Source/WebCore/dom/Element.cpp:202
&gt;&gt; +    m_attributeMap-&gt;removeAttribute(index);
&gt; 
&gt; It&apos;s not great that some of these functions call willModifyAttribute themselves but not attributeChanged. We should try to make them symmetric as possible to make the interface less obscure. Asymmetric interfaces like this one makes the correctness harder to verify if it doesn&apos;t introduce more bugs. e.g. why is it okay not to call InspectorInstrumentation::willModifyDOMAttr here?

Agreed that it&apos;s not ideal.  Once I&apos;ve pruned NamedNodeMap down to the simplest possible interface I aim to fix up who calls attributeChanged and willModifyAttribute appropriately.

As for InspectorInstrumentation, I didn&apos;t want to change any behavior in this change: it&apos;s basically totally broken and needs fixing.  I guess I should file a bug with the inspector folks.

&gt;&gt; Source/WebCore/dom/Element.cpp:207
&gt;&gt;      if (b)
&gt; 
&gt; Could you rename b? e.g. value.

Done.

&gt;&gt; Source/WebCore/dom/NamedNodeMap.cpp:154
&gt;&gt;      RefPtr&lt;Attr&gt; attr = attribute-&gt;createAttrIfNeeded(m_element);
&gt; 
&gt; Do we need to create attr here or can we get away by creating on return?

The Attribute* would be invalid by the time we get to the return.  We&apos;re not doing any refcount churn here (since we return attr.release()), so I&apos;m not sure I see a problem with this construction.

&gt;&gt; Source/WebCore/dom/NamedNodeMap.cpp:263
&gt;&gt; +void NamedNodeMap::replaceAttribute(size_t index, PassRefPtr&lt;Attribute&gt; attribute)
&gt; 
&gt; Could you define replaceAttribute after removeAttribute so that the diff would look saner?

Moved, we&apos;ll see if it helps.

&gt;&gt; Source/WebCore/dom/NamedNodeMap.cpp:271
&gt;&gt; +        attr-&gt;m_element = m_element;
&gt; 
&gt; It seems like we should define attr outside of the if condition to avoid having to duplicate &quot;m_attributes[index]-&gt;attr()&quot;

These are different m_attributes[index]-&gt;attr()s: the first one is the one we&apos;re about to remove, and the second is the new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524865</commentid>
    <comment_count>11</comment_count>
      <attachid>120096</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-20 15:10:16 -0800</bug_when>
    <thetext>Created attachment 120096
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524893</commentid>
    <comment_count>12</comment_count>
      <attachid>120096</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-20 15:44:50 -0800</bug_when>
    <thetext>Comment on attachment 120096
Patch for landing

Attachment 120096 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10993359</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524920</commentid>
    <comment_count>13</comment_count>
      <attachid>120106</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-20 16:02:49 -0800</bug_when>
    <thetext>Created attachment 120106
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525006</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-20 17:33:04 -0800</bug_when>
    <thetext>Committed r103373: &lt;http://trac.webkit.org/changeset/103373&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120076</attachid>
            <date>2011-12-20 14:01:43 -0800</date>
            <delta_ts>2011-12-20 14:04:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74953-20111220140142.patch</filename>
            <type>text/plain</type>
            <size>25450</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYxODY2NGFhOTQ3NmFk
MmM1YjhkNjRiZTY3YmIxNzk1YTNkYmNiNy4uMTMzNDQ2YzU4NWFhZTY4NjFmOGUzZjlkZTM5ZTRj
NjljMDk4OGJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY0IEBACiAyMDExLTEyLTIwICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5
IHdvcmsgd2hlbiByZW1vdmluZyBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWYXJpb3VzIGNvZGVwYXRocyBp
biBFbGVtZW50IGFuZCBOYW1lZE5vZGVNYXAgcmVwZWF0ZWRseSBzZWFyY2gKKyAgICAgICAgdGhy
b3VnaCB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIGR1cmluZyBhIHNpbmdsZSBvcGVyYXRpb24uIFRv
IGF2b2lkCisgICAgICAgIHRoaXMsIEkndmUgYWRkZWQgbmV3IGdldHRlcnMgdG8gTmFtZWROb2Rl
TWFwIHRoYXQgcmV0dXJuIGluZGljZXMKKyAgICAgICAgcmF0aGVyIHRoYW4gQXR0cmlidXRlKnMg
KHRoZXkgcmV0dXJuIFdURjo6bm90Rm91bmQgaWYgbm8gbWF0Y2ggaXMKKyAgICAgICAgZm91bmQp
LiBUaGVzZSBuZXcgbWV0aG9kcyBhcmUgbm93IHVzZWQgZHVyaW5nIHJlbW92ZUF0dHJpYnV0ZQor
ICAgICAgICBvcGVyYXRpb25zOyB0aGV5J3JlIG5vdCB5ZXQgdXNlZCBldmVyeXdoZXJlLgorCisg
ICAgICAgIFRoZSBvdGhlciBvcHRpbWl6YXRpb24gaGVyZSBpbnZvbHZlcyB0aGUgY3JlYXRpb24v
ZGVzdHJ1Y3Rpb24KKyAgICAgICAgb2YgbmV2ZXItcmVmZXJlbmNlcyBBdHRyIG5vZGVzLiBUaGlz
IGlzIG5vdyBhdm9pZGVkIGJ5IGNhbGxpbmcKKyAgICAgICAgTmFtZWROb2RlTWFwOjpyZW1vdmVB
dHRyaWJ1dGUgZGlyZWN0bHkgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoCisgICAgICAgIE5hbWVk
Tm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtLgorCisgICAgICAgIEFzIGEgY2xlYW51cCBhZnRlciB0
aGUgYWJvdmUgY2hhbmdlcywgdGhlIEV4Y2VwdGlvbkNvZGUgYXJndW1lbnQgaXMKKyAgICAgICAg
Z29uZSBmcm9tIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSBhbmQgZnJpZW5kcyAoaXQgd2FzIG5l
dmVyIHNldAorICAgICAgICBwcmV2aW91c2x5KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5v
IGNoYW5nZSBpbiBiZWhhdmlvciBleHBlY3RlZC4KKworICAgICAgICAqIGRvbS9EYXRhc2V0RE9N
U3RyaW5nTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmRl
bGV0ZUl0ZW0pOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpz
ZXRCb29sZWFuQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0
dHJpYnV0ZU5TKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmlkbDoKKyAgICAgICAgKiBkb20vTmFtZWROb2RlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hbWVkTm9kZU1hcDo6c2V0TmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVk
Tm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1h
cDo6Z2V0QXR0cmlidXRlSXRlbUluZGV4U2xvd0Nhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TmFt
ZWROb2RlTWFwOjpyZXBsYWNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9k
ZU1hcDo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKiBkb20vTmFtZWROb2RlTWFwLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAqIGVk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHls
ZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKToKKyAgICAgICAgKiBlZGl0
aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6Y2xvbmVIaWVyYXJjaHlVbmRlck5l
d0Jsb2NrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3BsaXRFbGVtZW50Q29tbWFuZDo6ZXhlY3V0ZUFwcGx5KToKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
OjpzZXRDb250ZW50RWRpdGFibGUpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRUeXBlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6dHJhbnNm
ZXJVc2VBdHRyaWJ1dGVzVG9SZXBsYWNlZEVsZW1lbnQpOgorCisyMDExLTEyLTIwICBBZGFtIEts
ZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJlbW92ZSBuby1vcCBET01BdHRy
KiBldmVudCBkaXNwYXRjaCBtZXRob2RzIGZyb20gRWxlbWVudAogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NDYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCmluZGV4IGU2OGU5ZDk1OTIxYjM4NjUwOTYwYTAxYTNj
ZDE1MmI2ZTRiZTc3MWYuLmUwZDg3NWRjYmIwZDdiZTYwNDdmMTdmM2ExMTFlZjU5MTFmMGU4YjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKQEAgLTE5OSw4
ICsxOTksNyBAQCB2b2lkIERhdGFzZXRET01TdHJpbmdNYXA6OmRlbGV0ZUl0ZW0oY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIEV4Y2VwdGlvbkNvZGUgZHVtbXk7Ci0gICAgbV9lbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUo
Y29udmVydFByb3BlcnR5TmFtZVRvQXR0cmlidXRlTmFtZShuYW1lKSwgZHVtbXkpOworICAgIG1f
ZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKGNvbnZlcnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5h
bWUobmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggYjE1MDAzY2QyYWYyNDM2ZDE5YzkzOWRhMWRmNTgzNGVlODhkNWZmOS4uYmIwMmU5
MjczMDlmZGIwYzQwYjlmZjhlOTc0OTZiNjg2OTFlYTU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtMTg4LDI0ICsxODgsMjYgQEAgdm9pZCBFbGVtZW50OjplbnF1ZXVlQXR0cmlidXRlc011
dGF0aW9uUmVjb3JkSWZSZXF1ZXN0ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXQKIH0KICNlbmRp
ZgogCi12b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAgaWYgKG1fYXR0cmlidXRlTWFwKSB7Ci0g
ICAgICAgIGVjID0gMDsKLSAgICAgICAgUmVmUHRyPE5vZGU+IGF0dHJOb2RlID0gbV9hdHRyaWJ1
dGVNYXAtPnJlbW92ZU5hbWVkSXRlbShuYW1lLCBlYyk7Ci0gICAgICAgIGlmIChlYyA9PSBOT1Rf
Rk9VTkRfRVJSKQotICAgICAgICAgICAgZWMgPSAwOwotICAgIH0KKyAgICBpZiAoIW1fYXR0cmli
dXRlTWFwKQorICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3QgaW5kZXggPSBtX2F0dHJpYnV0
ZU1hcC0+Z2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOworICAgIGlmIChpbmRleCA9PSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShuYW1lLCBt
X2F0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpbmRleCktPnZhbHVlKCksIG51bGxBdG9tKTsK
KworICAgIG1fYXR0cmlidXRlTWFwLT5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgpOwogfQogCiB2b2lk
IEVsZW1lbnQ6OnNldEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Ym9vbCBiKQogewogICAgIGlmIChiKQogICAgICAgICBzZXRBdHRyaWJ1dGUobmFtZSwgZW1wdHlB
dG9tKTsKLSAgICBlbHNlIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBleDsKLSAgICAgICAgcmVt
b3ZlQXR0cmlidXRlKG5hbWUsIGV4KTsKLSAgICB9CisgICAgZWxzZQorICAgICAgICByZW1vdmVB
dHRyaWJ1dGUobmFtZSk7CiB9CiAKIE5vZGU6Ok5vZGVUeXBlIEVsZW1lbnQ6Om5vZGVUeXBlKCkg
Y29uc3QKQEAgLTE0NjEsMjUgKzE0NjMsMzEgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVO
Uyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW4KICAg
ICBzZXRBdHRyaWJ1dGUocU5hbWUsIHZhbHVlKTsKIH0KIAotdm9pZCBFbGVtZW50OjpyZW1vdmVB
dHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRWxl
bWVudDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwor
ICAgIGlmICghbV9hdHRyaWJ1dGVNYXApCisgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBs
b2NhbE5hbWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMpID8gbmFtZS5sb3dlcigp
IDogbmFtZTsKKyAgICBzaXplX3QgaW5kZXggPSBtX2F0dHJpYnV0ZU1hcC0+Z2V0QXR0cmlidXRl
SXRlbUluZGV4KGxvY2FsTmFtZSwgZmFsc2UpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBtX2F0dHJpYnV0
ZU1hcC0+YXR0cmlidXRlSXRlbShpbmRleCk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOworCisgICAgaWYgKCFhdHRy
aWJ1dGUtPmlzTnVsbCgpKQorICAgICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZS0+
bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCksIG51bGxBdG9tKTsKKworICAgIG1fYXR0cmlidXRl
TWFwLT5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgpOwogCi0gICAgaWYgKG1fYXR0cmlidXRlTWFwKSB7
Ci0gICAgICAgIGVjID0gMDsKLSAgICAgICAgUmVmUHRyPE5vZGU+IGF0dHJOb2RlID0gbV9hdHRy
aWJ1dGVNYXAtPnJlbW92ZU5hbWVkSXRlbShsb2NhbE5hbWUsIGVjKTsKLSAgICAgICAgaWYgKGVj
ID09IE5PVF9GT1VORF9FUlIpCi0gICAgICAgICAgICBlYyA9IDA7Ci0gICAgfQotICAgIAogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NQXR0cihkb2N1bWVudCgpLCB0
aGlzLCBuYW1lKTsKIH0KIAotdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBT
dHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQordm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5h
bWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpCiB7Ci0gICAgcmVtb3ZlQXR0cmli
dXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSwgZWMp
OworICAgIHJlbW92ZUF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUs
IG5hbWVzcGFjZVVSSSkpOwogfQogCiBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmdldEF0dHJp
YnV0ZU5vZGUoY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjIwYTBi
MzlkNThmOWRkZWEzOGFjYTY5NDk1NzQwODk0MjQ1ZmEwOC4uMjcyYWI1NzBhN2Y2ZjIyZWZhZGY0
YWZkZmQ5NTU5OGNkYjlkMDdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgLy8gVHlwZWQgZ2V0dGVycyBh
bmQgc2V0dGVycyBmb3IgbGFuZ3VhZ2UgYmluZGluZ3MuCiAgICAgaW50IGdldEludGVncmFsQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0OwpAQCAtMTc2
LDggKzE3Niw4IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBib3VuZGlu
ZyBib3ggdHJhbnNsYXRlZCBpbnRvIHNjcmVlbiBjb29yZGluYXRlczoKICAgICBMYXlvdXRSZWN0
IHNjcmVlblJlY3QoKSBjb25zdDsKIAotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMo
Y29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJ
LCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSk7CiAKICAgICBQYXNzUmVmUHRyPEF0dHI+IGdldEF0
dHJpYnV0ZU5vZGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBQYXNzUmVmUHRyPEF0dHI+IGdl
dEF0dHJpYnV0ZU5vZGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5n
JiBsb2NhbE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IDgxMDMyZTY2YTQyMGMyYTcz
OTJiM2MzZWRhZDM3YmUxMjFkMjVhNDguLjgxZmIyNjAzNTFlNDM1MmYxMDVmNDc0YzJkNWMzMzgz
YTliYTlkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTMzLDggKzMzLDcgQEAgbW9kdWxl
IGNvcmUgewogICAgICAgICBbT2xkU3R5bGVPYmpDXSB2b2lkIHNldEF0dHJpYnV0ZShpbiBbT3B0
aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0
VmFsdWVdIERPTVN0cmluZyB2YWx1ZSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OwotICAgICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZh
dWx0VmFsdWVdIERPTVN0cmluZyBuYW1lKQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGluIFtPcHRpb25hbD1DYWxsV2l0aERl
ZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG5hbWUpOwogICAgICAgICBBdHRyIGdldEF0dHJpYnV0ZU5v
ZGUoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgbmFtZSk7CiAg
ICAgICAgIEF0dHIgc2V0QXR0cmlidXRlTm9kZShpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0
VmFsdWVdIEF0dHIgbmV3QXR0cikKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwpA
QCAtNTEsOCArNTAsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01T
dHJpbmcgdmFsdWUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAg
W09sZFN0eWxlT2JqQ10gdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhpbiBbQ29udmVydE51bGxUb051
bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSkKLSAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgICAgICBbT2xkU3R5
bGVPYmpDXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGluIFtDb252ZXJ0TnVsbFRv
TnVsbFN0cmluZyxPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG5hbWVz
cGFjZVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBsb2Nh
bE5hbWUpOwogICAgICAgICBbT2xkU3R5bGVPYmpDXSBBdHRyIGdldEF0dHJpYnV0ZU5vZGVOUyhp
biBbQ29udmVydE51bGxUb051bGxTdHJpbmcsT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVd
IERPTVN0cmluZyBuYW1lc3BhY2VVUkksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TmFtZWROb2RlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCmlu
ZGV4IDg2YjdkZTM4ZDBkZmFkNzYzNWUxZDJmM2ZiYzY0ZjIzZjYzNWI3MjMuLjczY2MxOWZiN2E0
MTRmYTk5Mjg5YTVjMGMzZDY0ODBkYjI5OGFjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9OYW1lZE5vZGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVN
YXAuY3BwCkBAIC0xMDgsNyArMTA4LDggQEAgUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6
OnNldE5hbWVkSXRlbShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBBdHRyKiBh
dHRyID0gc3RhdGljX2Nhc3Q8QXR0cio+KG5vZGUpOwogCiAgICAgQXR0cmlidXRlKiBhdHRyaWJ1
dGUgPSBhdHRyLT5hdHRyKCk7Ci0gICAgQXR0cmlidXRlKiBvbGRBdHRyaWJ1dGUgPSBnZXRBdHRy
aWJ1dGVJdGVtKGF0dHJpYnV0ZS0+bmFtZSgpKTsKKyAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRy
aWJ1dGVJdGVtSW5kZXgoYXR0cmlidXRlLT5uYW1lKCkpOworICAgIEF0dHJpYnV0ZSogb2xkQXR0
cmlidXRlID0gaW5kZXggIT0gbm90Rm91bmQgPyBhdHRyaWJ1dGVJdGVtKGluZGV4KSA6IDA7CiAg
ICAgaWYgKG9sZEF0dHJpYnV0ZSA9PSBhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybiBub2RlOyAv
LyB3ZSBrbm93IGFib3V0IGl0IGFscmVhZHkKIApAQCAtMTI1LDEwICsxMjYsOSBAQCBQYXNzUmVm
UHRyPE5vZGU+IE5hbWVkTm9kZU1hcDo6c2V0TmFtZWRJdGVtKE5vZGUqIG5vZGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIFJlZlB0cjxBdHRyPiBvbGRBdHRyOwogICAgIGlmIChvbGRBdHRyaWJ1
dGUpIHsKICAgICAgICAgb2xkQXR0ciA9IG9sZEF0dHJpYnV0ZS0+Y3JlYXRlQXR0cklmTmVlZGVk
KG1fZWxlbWVudCk7Ci0gICAgICAgIHJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSk7
Ci0gICAgfQotCi0gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIHJlcGxhY2VB
dHRyaWJ1dGUoaW5kZXgsIGF0dHJpYnV0ZSk7CisgICAgfSBlbHNlCisgICAgICAgIGFkZEF0dHJp
YnV0ZShhdHRyaWJ1dGUpOwogICAgIHJldHVybiBvbGRBdHRyLnJlbGVhc2UoKTsKIH0KIApAQCAt
MTQ0LDE3ICsxNDQsMTggQEAgUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnJlbW92ZU5h
bWVkSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBFeGNlcHQKIHsKICAgICBBU1NFUlQo
bV9lbGVtZW50KTsKIAotICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZ2V0QXR0cmlidXRlSXRl
bShuYW1lKTsKLSAgICBpZiAoIWF0dHJpYnV0ZSkgeworICAgIHNpemVfdCBpbmRleCA9IGdldEF0
dHJpYnV0ZUl0ZW1JbmRleChuYW1lKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKICAg
ICAgICAgZWMgPSBOT1RfRk9VTkRfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAg
ICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUl0ZW0oaW5kZXgpOwogICAgIFJlZlB0
cjxBdHRyPiBhdHRyID0gYXR0cmlidXRlLT5jcmVhdGVBdHRySWZOZWVkZWQobV9lbGVtZW50KTsK
IAogICAgIG1fZWxlbWVudC0+d2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwg
YXR0cmlidXRlLT52YWx1ZSgpLCBudWxsQXRvbSk7CiAKLSAgICByZW1vdmVBdHRyaWJ1dGUobmFt
ZSk7CisgICAgcmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKICAgICByZXR1cm4gYXR0ci5yZWxlYXNl
KCk7CiB9CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCB2b2lkIE5hbWVkTm9kZU1hcDo6Y29weUF0dHJp
YnV0ZXNUb1ZlY3RvcihWZWN0b3I8UmVmUHRyPEF0dHJpYnV0ZT4gPiYgY29weSkKICAgICBjb3B5
ID0gbV9hdHRyaWJ1dGVzOwogfQogCi1BdHRyaWJ1dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmli
dXRlSXRlbVNsb3dDYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRy
aWJ1dGVDYXNlKSBjb25zdAorc2l6ZV90IE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbUlu
ZGV4U2xvd0Nhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0
ZUNhc2UpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbGVuID0gbGVuZ3RoKCk7CiAKQEAgLTE4MCwx
NiArMTgxLDE2IEBAIEF0dHJpYnV0ZSogTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtU2xv
d0Nhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsCiAgICAgICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lID0gbV9hdHRyaWJ1dGVzW2ldLT5uYW1lKCk7CiAgICAgICAgIGlm
ICghYXR0ck5hbWUuaGFzUHJlZml4KCkpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRJZ25vcmVB
dHRyaWJ1dGVDYXNlICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIGF0dHJOYW1lLmxvY2FsTmFt
ZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzW2ldLmdldCgpOworICAg
ICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
RklYTUU6IFdvdWxkIGJlIGZhc3RlciB0byBkbyB0aGlzIGNvbXBhcmlzb24gd2l0aG91dCBjYWxs
aW5nIHRvU3RyaW5nLCB3aGljaAogICAgICAgICAgICAgLy8gZ2VuZXJhdGVzIGEgdGVtcG9yYXJ5
IHN0cmluZyBieSBjb25jYXRlbmF0aW9uLiBCdXQgdGhpcyBicmFuY2ggaXMgb25seSByZWFjaGVk
CiAgICAgICAgICAgICAvLyBpZiB0aGUgYXR0cmlidXRlIG5hbWUgaGFzIGEgcHJlZml4LCB3aGlj
aCBpcyByYXJlIGluIEhUTUwuCiAgICAgICAgICAgICBpZiAoZXF1YWxQb3NzaWJseUlnbm9yaW5n
Q2FzZShuYW1lLCBhdHRyTmFtZS50b1N0cmluZygpLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzW2ldLmdldCgpOworICAgICAg
ICAgICAgICAgIHJldHVybiBpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAwOworICAg
IHJldHVybiBub3RGb3VuZDsKIH0KIAogdm9pZCBOYW1lZE5vZGVNYXA6OmNsZWFyQXR0cmlidXRl
cygpCkBAIC0yNTksMzQgKzI2MCwzOCBAQCB2b2lkIE5hbWVkTm9kZU1hcDo6YWRkQXR0cmlidXRl
KFBhc3NSZWZQdHI8QXR0cmlidXRlPiBwcnBBdHRyaWJ1dGUpCiAgICAgfQogfQogCi12b2lkIE5h
bWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit2
b2lkIE5hbWVkTm9kZU1hcDo6cmVwbGFjZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgsIFBhc3NSZWZQ
dHI8QXR0cmlidXRlPiBhdHRyaWJ1dGUpCiB7Ci0gICAgdW5zaWduZWQgbGVuID0gbGVuZ3RoKCk7
Ci0gICAgdW5zaWduZWQgaW5kZXggPSBsZW47Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbjsgKytpKSB7Ci0gICAgICAgIGlmIChtX2F0dHJpYnV0ZXNbaV0tPm5hbWUoKS5tYXRjaGVz
KG5hbWUpKSB7Ci0gICAgICAgICAgICBpbmRleCA9IGk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQorICAgIEFTU0VSVChpbmRleCA8IGxlbmd0aCgpKTsKKworICAgIGlmIChBdHRyKiBh
dHRyID0gbV9hdHRyaWJ1dGVzW2luZGV4XS0+YXR0cigpKQorICAgICAgICBhdHRyLT5tX2VsZW1l
bnQgPSAwOworICAgIG1fYXR0cmlidXRlc1tpbmRleF0gPSBhdHRyaWJ1dGU7CisgICAgaWYgKEF0
dHIqIGF0dHIgPSBtX2F0dHJpYnV0ZXNbaW5kZXhdLT5hdHRyKCkpCisgICAgICAgIGF0dHItPm1f
ZWxlbWVudCA9IG1fZWxlbWVudDsKKworICAgIGlmIChtX2VsZW1lbnQpIHsKKyAgICAgICAgbV9l
bGVtZW50LT5hdHRyaWJ1dGVDaGFuZ2VkKG1fYXR0cmlidXRlc1tpbmRleF0uZ2V0KCkpOworICAg
ICAgICBpZiAobV9hdHRyaWJ1dGVzW2luZGV4XS0+bmFtZSgpICE9IHN0eWxlQXR0cikKKyAgICAg
ICAgICAgIG1fZWxlbWVudC0+ZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogICAgIH0K
K30KIAotICAgIGlmIChpbmRleCA+PSBsZW4pCi0gICAgICAgIHJldHVybjsKK3ZvaWQgTmFtZWRO
b2RlTWFwOjpyZW1vdmVBdHRyaWJ1dGUoc2l6ZV90IGluZGV4KQoreworICAgIEFTU0VSVChpbmRl
eCA8IGxlbmd0aCgpKTsKIAotICAgIC8vIFJlbW92ZSB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGxp
c3QKLSAgICBSZWZQdHI8QXR0cmlidXRlPiBhdHRyID0gbV9hdHRyaWJ1dGVzW2luZGV4XS5nZXQo
KTsKLSAgICBpZiAoQXR0ciogYSA9IG1fYXR0cmlidXRlc1tpbmRleF0tPmF0dHIoKSkKLSAgICAg
ICAgYS0+bV9lbGVtZW50ID0gMDsKKyAgICBSZWZQdHI8QXR0cmlidXRlPiBhdHRyaWJ1dGUgPSBt
X2F0dHJpYnV0ZXNbaW5kZXhdOworICAgIGlmIChBdHRyKiBhdHRyID0gYXR0cmlidXRlLT5hdHRy
KCkpCisgICAgICAgIGF0dHItPm1fZWxlbWVudCA9IDA7CiAKICAgICBtX2F0dHJpYnV0ZXMucmVt
b3ZlKGluZGV4KTsKIAotICAgIC8vIE5vdGlmeSB0aGUgZWxlbWVudCB0aGF0IHRoZSBhdHRyaWJ1
dGUgaGFzIGJlZW4gcmVtb3ZlZAotICAgIC8vIGRpc3BhdGNoIGFwcHJvcHJpYXRlIG11dGF0aW9u
IGV2ZW50cwotICAgIGlmIChtX2VsZW1lbnQgJiYgIWF0dHItPm1fdmFsdWUuaXNOdWxsKCkpIHsK
LSAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVlID0gYXR0ci0+bV92YWx1ZTsKLSAgICAgICAgYXR0
ci0+bV92YWx1ZSA9IG51bGxBdG9tOwotICAgICAgICBtX2VsZW1lbnQtPmF0dHJpYnV0ZUNoYW5n
ZWQoYXR0ci5nZXQoKSk7Ci0gICAgICAgIGF0dHItPm1fdmFsdWUgPSB2YWx1ZTsKKyAgICBpZiAo
bV9lbGVtZW50ICYmICFhdHRyaWJ1dGUtPm1fdmFsdWUuaXNOdWxsKCkpIHsKKyAgICAgICAgQXRv
bWljU3RyaW5nIHZhbHVlID0gYXR0cmlidXRlLT5tX3ZhbHVlOworICAgICAgICBhdHRyaWJ1dGUt
Pm1fdmFsdWUgPSBudWxsQXRvbTsKKyAgICAgICAgbV9lbGVtZW50LT5hdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJpYnV0ZS5nZXQoKSk7CisgICAgICAgIGF0dHJpYnV0ZS0+bV92YWx1ZSA9IHZhbHVlOwog
ICAgIH0KICAgICBpZiAobV9lbGVtZW50KQogICAgICAgICBtX2VsZW1lbnQtPmRpc3BhdGNoU3Vi
dHJlZU1vZGlmaWVkRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1l
ZE5vZGVNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaAppbmRleCAzNGYz
ODYwNDY3Y2ZlY2Y1YzlkMmFlMGY4NTkwMzUxZWFhZThhYTY0Li4zNTM0MDE0ODM5NWI0M2E2OTg1
Y2Q1M2E3NDc3MDkzODYxMDUwOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFt
ZWROb2RlTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJTcGFjZVNw
bGl0U3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNjUsNiArNjYsNyBAQCBwdWJsaWM6CiAKICAgICBBdHRyaWJ1dGUqIGF0dHJp
YnV0ZUl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlc1tpbmRl
eF0uZ2V0KCk7IH0KICAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGNvbnN0OworICAgIHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogCiAgICAgdm9pZCBjb3B5QXR0cmlidXRlc1RvVmVjdG9y
KFZlY3RvcjxSZWZQdHI8QXR0cmlidXRlPiA+Jik7CiAKQEAgLTg5LDYgKzkxLDcgQEAgcHVibGlj
OgogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBubyBlcnJvciBjaGVja2luZy4KICAgICB2b2lk
IGFkZEF0dHJpYnV0ZShQYXNzUmVmUHRyPEF0dHJpYnV0ZT4pOwogICAgIHZvaWQgcmVtb3ZlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShz
aXplX3QgaW5kZXgpOwogCiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZWxlbWVudDsgfQogCkBAIC0xMTAsOSArMTEzLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXRh
Y2hBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoKTsKICAgICB2b2lkIGRldGFjaEZyb21FbGVtZW50KCk7
CiAgICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9v
bCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKLSAgICBBdHRyaWJ1dGUqIGdldEF0
dHJpYnV0ZUl0ZW1TbG93Q2FzZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZSkgY29uc3Q7CisgICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7
CisgICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleFNsb3dDYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKICAgICB2b2lkIHNl
dEF0dHJpYnV0ZXMoY29uc3QgTmFtZWROb2RlTWFwJik7CiAgICAgdm9pZCBjbGVhckF0dHJpYnV0
ZXMoKTsKKyAgICB2b2lkIHJlcGxhY2VBdHRyaWJ1dGUoc2l6ZV90IGluZGV4LCBQYXNzUmVmUHRy
PEF0dHJpYnV0ZT4pOwogICAgIGludCBkZWNsQ291bnQoKSBjb25zdDsKIAogICAgIGludCBtX21h
cHBlZEF0dHJpYnV0ZUNvdW50OwpAQCAtMTI0LDM0ICsxMjksNTkgQEAgcHJpdmF0ZToKIAogaW5s
aW5lIEF0dHJpYnV0ZSogTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgbGVuID0gbGVuZ3RoKCk7Cisg
ICAgc2l6ZV90IGluZGV4ID0gZ2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOworICAgIGlmIChp
bmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpbmRleF0uZ2V0
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBzaXplX3QgTmFtZWROb2RlTWFwOjpnZXRB
dHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK3sKKyAg
ICBzaXplX3QgbGVuID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bjsgKytpKSB7CiAgICAgICAgIGlmIChtX2F0dHJpYnV0ZXNbaV0tPm5hbWUoKS5tYXRjaGVzKG5h
bWUpKQotICAgICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpXS5nZXQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBpOwogICAgIH0KKyAgICByZXR1cm4gbm90Rm91bmQ7Cit9CisKK2lubGluZSBB
dHRyaWJ1dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcmIG5h
bWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKK3sKKyAgICBzaXplX3Qg
aW5kZXggPSBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSk7CisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gbV9hdHRy
aWJ1dGVzW2luZGV4XS5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KIAogLy8gV2UgdXNlIGEgYm9v
bGVhbiBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBjYWxsaW5nIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNh
c2Ugc28gdGhhdCB0aGUgY2FsbGVyCiAvLyBjYW4gdHVuZSB0aGUgYmVoYXZpb3IgKGhhc0F0dHJp
YnV0ZSBpcyBjYXNlIHNlbnNpdGl2ZSB3aGVyZWFzIGdldEF0dHJpYnV0ZSBpcyBub3QpLgotaW5s
aW5lIEF0dHJpYnV0ZSogTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAoraW5saW5lIHNp
emVfdCBOYW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKIHsKICAgICB1bnNpZ25l
ZCBsZW4gPSBsZW5ndGgoKTsKICAgICBib29sIGRvU2xvd0NoZWNrID0gc2hvdWxkSWdub3JlQXR0
cmlidXRlQ2FzZTsKLSAgICAKKwogICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0
aGUgYXR0cmlidXRlIGV4aXN0cyBhbmQgaXRzIG5hbWUgZXhhY3RseSBtYXRjaGVzLgogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSA9IG1fYXR0cmlidXRlc1tpXS0+bmFtZSgpOwogICAgICAgICBpZiAo
IWF0dHJOYW1lLmhhc1ByZWZpeCgpKSB7CiAgICAgICAgICAgICBpZiAobmFtZSA9PSBhdHRyTmFt
ZS5sb2NhbE5hbWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzW2ldLmdl
dCgpOworICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGRvU2xvd0NoZWNrID0gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoZG9TbG93Q2hlY2spCi0g
ICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGVJdGVtU2xvd0Nhc2UobmFtZSwgc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZSk7Ci0gICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBnZXRBdHRyaWJ1
dGVJdGVtSW5kZXhTbG93Q2FzZShuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKTsKKyAg
ICByZXR1cm4gbm90Rm91bmQ7Cit9CisKK2lubGluZSB2b2lkIE5hbWVkTm9kZU1hcDo6cmVtb3Zl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit7CisgICAgc2l6ZV90IGluZGV4
ID0gZ2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOworICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcAppbmRleCBiZmZmYTNhM2JkYTU0OTg3YTQxMWJiOGU0ZmM1MGFjOTY0NmRi
MDJiLi41NGQyMTYzMWZiNDNkMmNkZTNjN2U1NjgyNDY0ZjcyZDMxMTAzYzNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtOTkwLDkgKzk5MCw3
IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2Rl
KEVkaXRpbmdTdHlsZSogc3R5bGUsIE5vZGUqCiAgICAgICAgICAgICBpZiAoIWNoaWxkLT5jb250
YWlucyh0YXJnZXROb2RlKSAmJiBlbGVtZW50c1RvUHVzaERvd24uc2l6ZSgpKSB7CiAgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50c1RvUHVzaERvd24uc2l6ZSgp
OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHdyYXBwZXIgPSBl
bGVtZW50c1RvUHVzaERvd25baV0tPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOwotICAg
ICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgICAgICAg
ICAgd3JhcHBlci0+cmVtb3ZlQXR0cmlidXRlKHN0eWxlQXR0ciwgZWMpOwotICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgICAgICAgICAgd3JhcHBlci0+cmVtb3Zl
QXR0cmlidXRlKHN0eWxlQXR0cik7CiAgICAgICAgICAgICAgICAgICAgIHN1cnJvdW5kTm9kZVJh
bmdlV2l0aEVsZW1lbnQoY2hpbGQsIGNoaWxkLCB3cmFwcGVyKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAppbmRleCA2NDg0YzU4YTk2NDM2MjJi
ZDczYTcyN2ZiY2JlZjQzNThhNTU5NWQ4Li5mNDBjMTVjYjRiN2EyNmMyMGU3ZjI5MjY2MWI5YmVk
NGRiNTA0MTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFn
cmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKQEAgLTEzNyw5ICsxMzcsNyBAQCBQYXNz
UmVmUHRyPEVsZW1lbnQ+IEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmNsb25lSGll
cmFyY2h5VW5kZXJOZXdCbG9jawogICAgIGZvciAoc2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgp
OyBpICE9IDA7IC0taSkgewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gY2hpbGQgPSBhbmNlc3Rv
cnNbaSAtIDFdLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKICAgICAgICAgLy8gSXQg
c2hvdWxkIGFsd2F5cyBiZSBva2F5IHRvIHJlbW92ZSBpZCBmcm9tIHRoZSBjbG9uZWQgZWxlbWVu
dHMsIHNpbmNlIHRoZSBvcmlnaW5hbHMgYXJlIG5vdCBkZWxldGVkLgotICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICAgICAgY2hpbGQtPnJlbW92ZUF0dHJpYnV0ZShpZEF0dHIsIGVj
KTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIGNoaWxkLT5yZW1vdmVBdHRyaWJ1dGUo
aWRBdHRyKTsKICAgICAgICAgYXBwZW5kTm9kZShjaGlsZCwgcGFyZW50KTsKICAgICAgICAgcGFy
ZW50ID0gY2hpbGQucmVsZWFzZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCmluZGV4IDE5YmI4YmZiYjI1YWVjOGE5ZDVkZWRkZTQw
MjU4NDc4NWRhYjM3ODEuLmFjNzdiZjkxNmY1ODQ0MDExYjNmZjIwZTgyYTc2NjY3MjZhMjQwMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcApA
QCAtNjEsOCArNjEsNyBAQCB2b2lkIFNwbGl0RWxlbWVudENvbW1hbmQ6OmV4ZWN1dGVBcHBseSgp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERlbGV0ZSBpZCBhdHRyaWJ1dGUgZnJvbSB0aGUg
c2Vjb25kIGVsZW1lbnQgYmVjYXVzZSB0aGUgc2FtZSBpZCBjYW5ub3QgYmUgdXNlZCBmb3IgbW9y
ZSB0aGFuIG9uZSBlbGVtZW50Ci0gICAgbV9lbGVtZW50Mi0+cmVtb3ZlQXR0cmlidXRlKEhUTUxO
YW1lczo6aWRBdHRyLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgbV9lbGVtZW50Mi0+cmVt
b3ZlQXR0cmlidXRlKEhUTUxOYW1lczo6aWRBdHRyKTsKIAogICAgIHNpemVfdCBzaXplID0gY2hp
bGRyZW4uc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA2NTczY2E2MThmZWUyMmZmODlhN2ViNWI1
MWYyNDFmMjhhNDZkMGY0Li5jMTlmZTk0M2ZiMjQzMjg4MjkwOGU4MGZkZTMyYTUxNjJhOTQ2YWQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNzUyLDcgKzc1Miw3IEBAIHZv
aWQgSFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVuYWJs
ZWQsICJwbGFpbnRleHQtb25seSIpKQogICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVkaXRh
YmxlQXR0ciwgInBsYWludGV4dC1vbmx5Iik7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoZW5hYmxlZCwgImluaGVyaXQiKSkKLSAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGNvbnRlbnRl
ZGl0YWJsZUF0dHIsIGVjKTsKKyAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGNvbnRlbnRlZGl0YWJs
ZUF0dHIpOwogICAgIGVsc2UKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggN2UwM2VjNmYxYWNkYzU4NDU5Njkw
YWQ5ZDM1ZjQ2MDkxYTZjN2FkYy4uMTU5NmQ2OGI2YzgwMTExZmM2NzliNmViOWJmYTQ1ZTVkZTgz
NDA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC01MzIs
MTAgKzUzMiw5IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCiAgICAgLy8gV2Ugc2hvdWxkIHdyaXRlIGEgdGVzdCBjYXNlIHRvIHNob3cgdGhhdCBz
ZXR0aW5nIHRvIHRoZSBlbXB0eSBzdHJpbmcgZG9lcyBub3QgcmVtb3ZlIHRoZQogICAgIC8vIGF0
dHJpYnV0ZSBpbiBvdGhlciBicm93c2VycyBhbmQgdGhlbiBmaXggdGhpcy4gTm90ZSB0aGF0IHNl
dHRpbmcgdG8gbnVsbCAqZG9lcyogcmVtb3ZlCiAgICAgLy8gdGhlIGF0dHJpYnV0ZSBhbmQgc2V0
QXR0cmlidXRlIGltcGxlbWVudHMgdGhhdC4KLSAgICBpZiAodHlwZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgcmVtb3ZlQXR0cmlidXRlKHR5cGVBdHRy
LCBlYyk7Ci0gICAgfSBlbHNlCisgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQorICAgICAgICByZW1v
dmVBdHRyaWJ1dGUodHlwZUF0dHIpOworICAgIGVsc2UKICAgICAgICAgc2V0QXR0cmlidXRlKHR5
cGVBdHRyLCB0eXBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKaW5kZXggN2E5ZjI2ZGU5ODE4NjkzMzgxNmE1NThlZTU0NjVjYWI4NDYy
OTlmYS4uNTQ2Yzc3ZDY1MzAwZTgwNGFlMDRlODE1Y2Y4ZTA5MTNjMWQ4MDlkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01MjgsOSAr
NTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW4KIAogICAgIGNvbnN0IE5hbWVkTm9kZU1h
cCogYXR0ck1hcCA9IHRvSFRNTEVsZW1lbnQoY2hpbGQpLT5hdHRyaWJ1dGVzKHRydWUpOwogICAg
IGlmICghYXR0ck1hcCAmJiBuYW1lKSB7Ci0gICAgICAgIGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0
ZSgqbmFtZSwgZWMpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiQ291bGQgbm90IHJlbW92ZSBhdHRyaWJ1dGUiOworICAgICAgICBlbGVtZW50LT5yZW1vdmVB
dHRyaWJ1dGUoKm5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NDQsOSArNTQy
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW4KICAgICB9CiAKICAgICBpZiAoIWZvdW5kT3Jp
Z2luYWxBdHRyaWJ1dGUgJiYgbmFtZSkgewotICAgICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1
dGUoKm5hbWUsIGVjKTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgKmVycm9yU3RyaW5n
ID0gIkNvdWxkIG5vdCByZW1vdmUgYXR0cmlidXRlIjsKKyAgICAgICAgZWxlbWVudC0+cmVtb3Zl
QXR0cmlidXRlKCpuYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTU1NCwxMiAr
NTUwLDggQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW4KIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnJlbW92ZUF0dHJpYnV0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW50SWQs
IGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0RWxl
bWVudChlcnJvclN0cmluZywgZWxlbWVudElkKTsKLSAgICBpZiAoZWxlbWVudCkgewotICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRl
KG5hbWUsIGVjKTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0g
IkV4Y2VwdGlvbiB3aGlsZSByZW1vdmluZyBhdHRyaWJ1dGUiOwotICAgIH0KKyAgICBpZiAoZWxl
bWVudCkKKyAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKG5hbWUpOwogfQogCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCA1ZTY3ZmY1
MmE1MjA1MjVkZTM5NGM1YjJhMDZmNjE0ZDhhYWYwMzQwLi41NWY3MGY0NTMxZDJhODRhMDg0MmM1
MGY2ZmY2ODc4NjJkY2U0NDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBA
IC0xMDM1LDExICsxMDM1LDExIEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6dHJhbnNmZXJVc2VBdHRy
aWJ1dGVzVG9SZXBsYWNlZEVsZW1lbnQoU1ZHRWxlbWVudCogZnJvbSwgU1ZHCiAKICAgICB0by0+
c2V0QXR0cmlidXRlc0Zyb21FbGVtZW50KCpmcm9tKTsKIAotICAgIHRvLT5yZW1vdmVBdHRyaWJ1
dGUoU1ZHTmFtZXM6OnhBdHRyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICB0by0+cmVtb3Zl
QXR0cmlidXRlKFNWR05hbWVzOjp5QXR0ciwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgdG8t
PnJlbW92ZUF0dHJpYnV0ZShTVkdOYW1lczo6d2lkdGhBdHRyLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKLSAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKLSAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZB
dHRyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFNWR05h
bWVzOjp4QXR0cik7CisgICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShTVkdOYW1lczo6eUF0dHIpOwor
ICAgIHRvLT5yZW1vdmVBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0cik7CisgICAgdG8tPnJl
bW92ZUF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0cik7CisgICAgdG8tPnJlbW92ZUF0dHJp
YnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7CiB9CiAKIGJvb2wgU1ZHVXNlRWxlbWVudDo6c2Vs
Zkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120077</attachid>
            <date>2011-12-20 14:04:37 -0800</date>
            <delta_ts>2011-12-20 15:08:53 -0800</delta_ts>
            <desc>More changelog detail</desc>
            <filename>bug-74953-20111220140436.patch</filename>
            <type>text/plain</type>
            <size>25543</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYxODY2NGFhOTQ3NmFk
MmM1YjhkNjRiZTY3YmIxNzk1YTNkYmNiNy4uZWY0NDRjOGYxNWM5OTQwMzI2MDFmMmVkOTk0ZmMy
ODVlNWZiMmRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY1IEBACiAyMDExLTEyLTIwICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5
IHdvcmsgd2hlbiByZW1vdmluZyBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWYXJpb3VzIGNvZGVwYXRocyBp
biBFbGVtZW50IGFuZCBOYW1lZE5vZGVNYXAgcmVwZWF0ZWRseSBzZWFyY2gKKyAgICAgICAgdGhy
b3VnaCB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIGR1cmluZyBhIHNpbmdsZSBvcGVyYXRpb24uIFRv
IGF2b2lkCisgICAgICAgIHRoaXMsIEkndmUgYWRkZWQgbmV3IGdldHRlcnMgdG8gTmFtZWROb2Rl
TWFwIHRoYXQgcmV0dXJuIGluZGljZXMKKyAgICAgICAgcmF0aGVyIHRoYW4gQXR0cmlidXRlKnMg
KHRoZXkgcmV0dXJuIFdURjo6bm90Rm91bmQgaWYgbm8gbWF0Y2ggaXMKKyAgICAgICAgZm91bmQp
LiBUaGVzZSBuZXcgbWV0aG9kcyBhcmUgbm93IHVzZWQgZHVyaW5nIHJlbW92ZUF0dHJpYnV0ZQor
ICAgICAgICBvcGVyYXRpb25zOyB0aGV5J3JlIG5vdCB5ZXQgdXNlZCBldmVyeXdoZXJlLgorCisg
ICAgICAgIFRoZSBvdGhlciBvcHRpbWl6YXRpb24gaGVyZSBpbnZvbHZlcyB0aGUgY3JlYXRpb24v
ZGVzdHJ1Y3Rpb24KKyAgICAgICAgb2YgbmV2ZXItcmVmZXJlbmNlcyBBdHRyIG5vZGVzLiBUaGlz
IGlzIG5vdyBhdm9pZGVkIGJ5IGNhbGxpbmcKKyAgICAgICAgTmFtZWROb2RlTWFwOjpyZW1vdmVB
dHRyaWJ1dGUgZGlyZWN0bHkgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoCisgICAgICAgIE5hbWVk
Tm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtLgorCisgICAgICAgIEFzIGEgY2xlYW51cCBhZnRlciB0
aGUgYWJvdmUgY2hhbmdlcywgdGhlIEV4Y2VwdGlvbkNvZGUgYXJndW1lbnQgaXMKKyAgICAgICAg
Z29uZSBmcm9tIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSBhbmQgZnJpZW5kcyAoaXQgd2FzIG5l
dmVyIHNldAorICAgICAgICBwcmV2aW91c2x5KS4gVGhlIGJ1bGsgb2YgdGhlIGZpbGVzIG1lbnRp
b25lZCBiZWxvdyBhcmUgc2ltcGx5IHVwZGF0aW5nCisgICAgICAgIGNhbGxlcnMgdG8gdGhlc2Ug
bWV0aG9kcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvciBl
eHBlY3RlZC4KKworICAgICAgICAqIGRvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmRlbGV0ZUl0ZW0pOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRCb29sZWFuQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKToKKyAgICAgICAg
KiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBk
b20vTmFtZWROb2RlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6c2V0
TmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJ
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbUlu
ZGV4U2xvd0Nhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpyZXBsYWNlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmlidXRl
KToKKyAgICAgICAgKiBkb20vTmFtZWROb2RlTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpOYW1l
ZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2Rl
TWFwOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2Rl
TWFwOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5s
aW5lU3R5bGVBcm91bmROb2RlKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBoU2Vw
YXJhdG9yQ29tbWFuZDo6Y2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrKToKKyAgICAgICAgKiBl
ZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRF
bGVtZW50Q29tbWFuZDo6ZXhlY3V0ZUFwcGx5KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUp
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpzZXRUeXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEF0dHJpYnV0ZXNBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6dHJhbnNmZXJVc2VBdHRyaWJ1dGVzVG9SZXBs
YWNlZEVsZW1lbnQpOgorCisyMDExLTEyLTIwICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0u
b3JnPgorCiAgICAgICAgIFJlbW92ZSBuby1vcCBET01BdHRyKiBldmVudCBkaXNwYXRjaCBtZXRo
b2RzIGZyb20gRWxlbWVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzQ5NDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRE
T01TdHJpbmdNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAu
Y3BwCmluZGV4IGU2OGU5ZDk1OTIxYjM4NjUwOTYwYTAxYTNjZDE1MmI2ZTRiZTc3MWYuLmUwZDg3
NWRjYmIwZDdiZTYwNDdmMTdmM2ExMTFlZjU5MTFmMGU4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKQEAgLTE5OSw4ICsxOTksNyBAQCB2b2lkIERhdGFz
ZXRET01TdHJpbmdNYXA6OmRlbGV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEV4Y2VwdGlvbkNvZGUgZHVt
bXk7Ci0gICAgbV9lbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoY29udmVydFByb3BlcnR5TmFtZVRv
QXR0cmlidXRlTmFtZShuYW1lKSwgZHVtbXkpOworICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmli
dXRlKGNvbnZlcnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUobmFtZSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjE1MDAzY2QyYWYy
NDM2ZDE5YzkzOWRhMWRmNTgzNGVlODhkNWZmOS4uYmIwMmU5MjczMDlmZGIwYzQwYjlmZjhlOTc0
OTZiNjg2OTFlYTU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTg4LDI0ICsxODgsMjYg
QEAgdm9pZCBFbGVtZW50OjplbnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3JkSWZSZXF1ZXN0
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXQKIH0KICNlbmRpZgogCi12b2lkIEVsZW1lbnQ6OnJl
bW92ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpCiB7Ci0gICAgaWYgKG1fYXR0cmlidXRlTWFwKSB7Ci0gICAgICAgIGVjID0gMDsKLSAgICAg
ICAgUmVmUHRyPE5vZGU+IGF0dHJOb2RlID0gbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZU5hbWVkSXRl
bShuYW1lLCBlYyk7Ci0gICAgICAgIGlmIChlYyA9PSBOT1RfRk9VTkRfRVJSKQotICAgICAgICAg
ICAgZWMgPSAwOwotICAgIH0KKyAgICBpZiAoIW1fYXR0cmlidXRlTWFwKQorICAgICAgICByZXR1
cm47CisKKyAgICBzaXplX3QgaW5kZXggPSBtX2F0dHJpYnV0ZU1hcC0+Z2V0QXR0cmlidXRlSXRl
bUluZGV4KG5hbWUpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShuYW1lLCBtX2F0dHJpYnV0ZU1hcC0+YXR0cmli
dXRlSXRlbShpbmRleCktPnZhbHVlKCksIG51bGxBdG9tKTsKKworICAgIG1fYXR0cmlidXRlTWFw
LT5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldEJvb2xlYW5B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCBiKQogewogICAgIGlmIChi
KQogICAgICAgICBzZXRBdHRyaWJ1dGUobmFtZSwgZW1wdHlBdG9tKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgRXhjZXB0aW9uQ29kZSBleDsKLSAgICAgICAgcmVtb3ZlQXR0cmlidXRlKG5hbWUsIGV4
KTsKLSAgICB9CisgICAgZWxzZQorICAgICAgICByZW1vdmVBdHRyaWJ1dGUobmFtZSk7CiB9CiAK
IE5vZGU6Ok5vZGVUeXBlIEVsZW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKQEAgLTE0NjEsMjUgKzE0
NjMsMzEgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW4KICAgICBzZXRBdHRyaWJ1dGUocU5hbWUs
IHZhbHVlKTsKIH0KIAotdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRl
KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOworICAgIGlmICghbV9hdHRyaWJ1dGVN
YXApCisgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzaG91bGRJZ25v
cmVBdHRyaWJ1dGVDYXNlKHRoaXMpID8gbmFtZS5sb3dlcigpIDogbmFtZTsKKyAgICBzaXplX3Qg
aW5kZXggPSBtX2F0dHJpYnV0ZU1hcC0+Z2V0QXR0cmlidXRlSXRlbUluZGV4KGxvY2FsTmFtZSwg
ZmFsc2UpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBtX2F0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShp
bmRleCk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRy
KGRvY3VtZW50KCksIHRoaXMpOworCisgICAgaWYgKCFhdHRyaWJ1dGUtPmlzTnVsbCgpKQorICAg
ICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1dGUtPnZh
bHVlKCksIG51bGxBdG9tKTsKKworICAgIG1fYXR0cmlidXRlTWFwLT5yZW1vdmVBdHRyaWJ1dGUo
aW5kZXgpOwogCi0gICAgaWYgKG1fYXR0cmlidXRlTWFwKSB7Ci0gICAgICAgIGVjID0gMDsKLSAg
ICAgICAgUmVmUHRyPE5vZGU+IGF0dHJOb2RlID0gbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZU5hbWVk
SXRlbShsb2NhbE5hbWUsIGVjKTsKLSAgICAgICAgaWYgKGVjID09IE5PVF9GT1VORF9FUlIpCi0g
ICAgICAgICAgICBlYyA9IDA7Ci0gICAgfQotICAgIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVtb3ZlRE9NQXR0cihkb2N1bWVudCgpLCB0aGlzLCBuYW1lKTsKIH0KIAotdm9p
ZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwg
Y29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBFbGVtZW50
OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3Ry
aW5nJiBsb2NhbE5hbWUpCiB7Ci0gICAgcmVtb3ZlQXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVs
bEF0b20sIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSwgZWMpOworICAgIHJlbW92ZUF0dHJpYnV0
ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpOwogfQog
CiBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGUoY29uc3QgU3RyaW5n
JiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjIwYTBiMzlkNThmOWRkZWEzOGFjYTY5NDk1
NzQwODk0MjQ1ZmEwOC4uMjcyYWI1NzBhN2Y2ZjIyZWZhZGY0YWZkZmQ5NTU5OGNkYjlkMDdkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAg
dm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpOwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogCiAgICAgLy8gVHlwZWQgZ2V0dGVycyBhbmQgc2V0dGVycyBmb3IgbGFuZ3Vh
Z2UgYmluZGluZ3MuCiAgICAgaW50IGdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0OwpAQCAtMTc2LDggKzE3Niw4IEBAIHB1YmxpYzoK
ICAgICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBib3VuZGluZyBib3ggdHJhbnNsYXRlZCBpbnRv
IHNjcmVlbiBjb29yZGluYXRlczoKICAgICBMYXlvdXRSZWN0IHNjcmVlblJlY3QoKSBjb25zdDsK
IAotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3Bh
Y2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlbW92ZUF0
dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2Fs
TmFtZSk7CiAKICAgICBQYXNzUmVmUHRyPEF0dHI+IGdldEF0dHJpYnV0ZU5vZGUoY29uc3QgU3Ry
aW5nJiBuYW1lKTsKICAgICBQYXNzUmVmUHRyPEF0dHI+IGdldEF0dHJpYnV0ZU5vZGVOUyhjb25z
dCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCmluZGV4IDgxMDMyZTY2YTQyMGMyYTczOTJiM2MzZWRhZDM3YmUxMjFkMjVh
NDguLjgxZmIyNjAzNTFlNDM1MmYxMDVmNDc0YzJkNWMzMzgzYTliYTlkZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKQEAgLTMzLDggKzMzLDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbT2xk
U3R5bGVPYmpDXSB2b2lkIHNldEF0dHJpYnV0ZShpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0
VmFsdWVdIERPTVN0cmluZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyB2YWx1
ZSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICB2b2lkIHJlbW92
ZUF0dHJpYnV0ZShpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBu
YW1lKQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgcmVt
b3ZlQXR0cmlidXRlKGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5n
IG5hbWUpOwogICAgICAgICBBdHRyIGdldEF0dHJpYnV0ZU5vZGUoaW4gW09wdGlvbmFsPUNhbGxX
aXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgbmFtZSk7CiAgICAgICAgIEF0dHIgc2V0QXR0cmli
dXRlTm9kZShpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIEF0dHIgbmV3QXR0cikK
ICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwpAQCAtNTEsOCArNTAsNyBAQCBtb2R1
bGUgY29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
W09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgdmFsdWUpCiAgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgW09sZFN0eWxlT2JqQ10gdm9pZCBy
ZW1vdmVBdHRyaWJ1dGVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBu
YW1lc3BhY2VVUkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSkKLSAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERP
TVN0cmluZyBsb2NhbE5hbWUpOwogICAgICAgICBbT2xkU3R5bGVPYmpDXSBOb2RlTGlzdCBnZXRF
bGVtZW50c0J5VGFnTmFtZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZyxPcHRpb25hbD1D
YWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9
Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgICAgICBbT2xk
U3R5bGVPYmpDXSBBdHRyIGdldEF0dHJpYnV0ZU5vZGVOUyhpbiBbQ29udmVydE51bGxUb051bGxT
dHJpbmcsT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBuYW1lc3BhY2VV
UkksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCmluZGV4IDg2YjdkZTM4ZDBkZmFkNzYz
NWUxZDJmM2ZiYzY0ZjIzZjYzNWI3MjMuLjczY2MxOWZiN2E0MTRmYTk5Mjg5YTVjMGMzZDY0ODBk
YjI5OGFjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCkBAIC0xMDgsNyArMTA4
LDggQEAgUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnNldE5hbWVkSXRlbShOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBBdHRyKiBhdHRyID0gc3RhdGljX2Nhc3Q8QXR0
cio+KG5vZGUpOwogCiAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyLT5hdHRyKCk7Ci0g
ICAgQXR0cmlidXRlKiBvbGRBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZS0+
bmFtZSgpKTsKKyAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoYXR0cmli
dXRlLT5uYW1lKCkpOworICAgIEF0dHJpYnV0ZSogb2xkQXR0cmlidXRlID0gaW5kZXggIT0gbm90
Rm91bmQgPyBhdHRyaWJ1dGVJdGVtKGluZGV4KSA6IDA7CiAgICAgaWYgKG9sZEF0dHJpYnV0ZSA9
PSBhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybiBub2RlOyAvLyB3ZSBrbm93IGFib3V0IGl0IGFs
cmVhZHkKIApAQCAtMTI1LDEwICsxMjYsOSBAQCBQYXNzUmVmUHRyPE5vZGU+IE5hbWVkTm9kZU1h
cDo6c2V0TmFtZWRJdGVtKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIFJlZlB0
cjxBdHRyPiBvbGRBdHRyOwogICAgIGlmIChvbGRBdHRyaWJ1dGUpIHsKICAgICAgICAgb2xkQXR0
ciA9IG9sZEF0dHJpYnV0ZS0+Y3JlYXRlQXR0cklmTmVlZGVkKG1fZWxlbWVudCk7Ci0gICAgICAg
IHJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSk7Ci0gICAgfQotCi0gICAgYWRkQXR0
cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIHJlcGxhY2VBdHRyaWJ1dGUoaW5kZXgsIGF0dHJp
YnV0ZSk7CisgICAgfSBlbHNlCisgICAgICAgIGFkZEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogICAg
IHJldHVybiBvbGRBdHRyLnJlbGVhc2UoKTsKIH0KIApAQCAtMTQ0LDE3ICsxNDQsMTggQEAgUGFz
c1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnJlbW92ZU5hbWVkSXRlbShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBFeGNlcHQKIHsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKIAotICAgIEF0
dHJpYnV0ZSogYXR0cmlidXRlID0gZ2V0QXR0cmlidXRlSXRlbShuYW1lKTsKLSAgICBpZiAoIWF0
dHJpYnV0ZSkgeworICAgIHNpemVfdCBpbmRleCA9IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1l
KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKICAgICAgICAgZWMgPSBOT1RfRk9VTkRf
RVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSA9IGF0dHJpYnV0ZUl0ZW0oaW5kZXgpOwogICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gYXR0cmli
dXRlLT5jcmVhdGVBdHRySWZOZWVkZWQobV9lbGVtZW50KTsKIAogICAgIG1fZWxlbWVudC0+d2ls
bE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpLCBu
dWxsQXRvbSk7CiAKLSAgICByZW1vdmVBdHRyaWJ1dGUobmFtZSk7CisgICAgcmVtb3ZlQXR0cmli
dXRlKGluZGV4KTsKICAgICByZXR1cm4gYXR0ci5yZWxlYXNlKCk7CiB9CiAKQEAgLTE3MSw3ICsx
NzIsNyBAQCB2b2lkIE5hbWVkTm9kZU1hcDo6Y29weUF0dHJpYnV0ZXNUb1ZlY3RvcihWZWN0b3I8
UmVmUHRyPEF0dHJpYnV0ZT4gPiYgY29weSkKICAgICBjb3B5ID0gbV9hdHRyaWJ1dGVzOwogfQog
Ci1BdHRyaWJ1dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbVNsb3dDYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAorc2l6
ZV90IE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbUluZGV4U2xvd0Nhc2UoY29uc3QgU3Ry
aW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0CiB7CiAgICAg
dW5zaWduZWQgbGVuID0gbGVuZ3RoKCk7CiAKQEAgLTE4MCwxNiArMTgxLDE2IEBAIEF0dHJpYnV0
ZSogTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtU2xvd0Nhc2UoY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sIHNob3VsCiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0g
bV9hdHRyaWJ1dGVzW2ldLT5uYW1lKCk7CiAgICAgICAgIGlmICghYXR0ck5hbWUuaGFzUHJlZml4
KCkpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlICYmIGVxdWFs
SWdub3JpbmdDYXNlKG5hbWUsIGF0dHJOYW1lLmxvY2FsTmFtZSgpKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbV9hdHRyaWJ1dGVzW2ldLmdldCgpOworICAgICAgICAgICAgICAgIHJldHVybiBp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IFdvdWxkIGJlIGZhc3Rl
ciB0byBkbyB0aGlzIGNvbXBhcmlzb24gd2l0aG91dCBjYWxsaW5nIHRvU3RyaW5nLCB3aGljaAog
ICAgICAgICAgICAgLy8gZ2VuZXJhdGVzIGEgdGVtcG9yYXJ5IHN0cmluZyBieSBjb25jYXRlbmF0
aW9uLiBCdXQgdGhpcyBicmFuY2ggaXMgb25seSByZWFjaGVkCiAgICAgICAgICAgICAvLyBpZiB0
aGUgYXR0cmlidXRlIG5hbWUgaGFzIGEgcHJlZml4LCB3aGljaCBpcyByYXJlIGluIEhUTUwuCiAg
ICAgICAgICAgICBpZiAoZXF1YWxQb3NzaWJseUlnbm9yaW5nQ2FzZShuYW1lLCBhdHRyTmFtZS50
b1N0cmluZygpLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9hdHRyaWJ1dGVzW2ldLmdldCgpOworICAgICAgICAgICAgICAgIHJldHVybiBpOwog
ICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBub3RGb3VuZDsKIH0K
IAogdm9pZCBOYW1lZE5vZGVNYXA6OmNsZWFyQXR0cmlidXRlcygpCkBAIC0yNTksMzQgKzI2MCwz
OCBAQCB2b2lkIE5hbWVkTm9kZU1hcDo6YWRkQXR0cmlidXRlKFBhc3NSZWZQdHI8QXR0cmlidXRl
PiBwcnBBdHRyaWJ1dGUpCiAgICAgfQogfQogCi12b2lkIE5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit2b2lkIE5hbWVkTm9kZU1hcDo6cmVw
bGFjZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgsIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBhdHRyaWJ1
dGUpCiB7Ci0gICAgdW5zaWduZWQgbGVuID0gbGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgaW5kZXgg
PSBsZW47Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAg
IGlmIChtX2F0dHJpYnV0ZXNbaV0tPm5hbWUoKS5tYXRjaGVzKG5hbWUpKSB7Ci0gICAgICAgICAg
ICBpbmRleCA9IGk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgIEFTU0VSVChp
bmRleCA8IGxlbmd0aCgpKTsKKworICAgIGlmIChBdHRyKiBhdHRyID0gbV9hdHRyaWJ1dGVzW2lu
ZGV4XS0+YXR0cigpKQorICAgICAgICBhdHRyLT5tX2VsZW1lbnQgPSAwOworICAgIG1fYXR0cmli
dXRlc1tpbmRleF0gPSBhdHRyaWJ1dGU7CisgICAgaWYgKEF0dHIqIGF0dHIgPSBtX2F0dHJpYnV0
ZXNbaW5kZXhdLT5hdHRyKCkpCisgICAgICAgIGF0dHItPm1fZWxlbWVudCA9IG1fZWxlbWVudDsK
KworICAgIGlmIChtX2VsZW1lbnQpIHsKKyAgICAgICAgbV9lbGVtZW50LT5hdHRyaWJ1dGVDaGFu
Z2VkKG1fYXR0cmlidXRlc1tpbmRleF0uZ2V0KCkpOworICAgICAgICBpZiAobV9hdHRyaWJ1dGVz
W2luZGV4XS0+bmFtZSgpICE9IHN0eWxlQXR0cikKKyAgICAgICAgICAgIG1fZWxlbWVudC0+ZGlz
cGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogICAgIH0KK30KIAotICAgIGlmIChpbmRleCA+
PSBsZW4pCi0gICAgICAgIHJldHVybjsKK3ZvaWQgTmFtZWROb2RlTWFwOjpyZW1vdmVBdHRyaWJ1
dGUoc2l6ZV90IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8IGxlbmd0aCgpKTsKIAotICAg
IC8vIFJlbW92ZSB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGxpc3QKLSAgICBSZWZQdHI8QXR0cmli
dXRlPiBhdHRyID0gbV9hdHRyaWJ1dGVzW2luZGV4XS5nZXQoKTsKLSAgICBpZiAoQXR0ciogYSA9
IG1fYXR0cmlidXRlc1tpbmRleF0tPmF0dHIoKSkKLSAgICAgICAgYS0+bV9lbGVtZW50ID0gMDsK
KyAgICBSZWZQdHI8QXR0cmlidXRlPiBhdHRyaWJ1dGUgPSBtX2F0dHJpYnV0ZXNbaW5kZXhdOwor
ICAgIGlmIChBdHRyKiBhdHRyID0gYXR0cmlidXRlLT5hdHRyKCkpCisgICAgICAgIGF0dHItPm1f
ZWxlbWVudCA9IDA7CiAKICAgICBtX2F0dHJpYnV0ZXMucmVtb3ZlKGluZGV4KTsKIAotICAgIC8v
IE5vdGlmeSB0aGUgZWxlbWVudCB0aGF0IHRoZSBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZAot
ICAgIC8vIGRpc3BhdGNoIGFwcHJvcHJpYXRlIG11dGF0aW9uIGV2ZW50cwotICAgIGlmIChtX2Vs
ZW1lbnQgJiYgIWF0dHItPm1fdmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgQXRvbWljU3RyaW5n
IHZhbHVlID0gYXR0ci0+bV92YWx1ZTsKLSAgICAgICAgYXR0ci0+bV92YWx1ZSA9IG51bGxBdG9t
OwotICAgICAgICBtX2VsZW1lbnQtPmF0dHJpYnV0ZUNoYW5nZWQoYXR0ci5nZXQoKSk7Ci0gICAg
ICAgIGF0dHItPm1fdmFsdWUgPSB2YWx1ZTsKKyAgICBpZiAobV9lbGVtZW50ICYmICFhdHRyaWJ1
dGUtPm1fdmFsdWUuaXNOdWxsKCkpIHsKKyAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVlID0gYXR0
cmlidXRlLT5tX3ZhbHVlOworICAgICAgICBhdHRyaWJ1dGUtPm1fdmFsdWUgPSBudWxsQXRvbTsK
KyAgICAgICAgbV9lbGVtZW50LT5hdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZS5nZXQoKSk7Cisg
ICAgICAgIGF0dHJpYnV0ZS0+bV92YWx1ZSA9IHZhbHVlOwogICAgIH0KICAgICBpZiAobV9lbGVt
ZW50KQogICAgICAgICBtX2VsZW1lbnQtPmRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaAppbmRleCAzNGYzODYwNDY3Y2ZlY2Y1YzlkMmFlMGY4
NTkwMzUxZWFhZThhYTY0Li4zNTM0MDE0ODM5NWI0M2E2OTg1Y2Q1M2E3NDc3MDkzODYxMDUwOThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCisjaW5jbHVk
ZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjUsNiArNjYs
NyBAQCBwdWJsaWM6CiAKICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlc1tpbmRleF0uZ2V0KCk7IH0KICAgICBBdHRy
aWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAg
IHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
OwogCiAgICAgdm9pZCBjb3B5QXR0cmlidXRlc1RvVmVjdG9yKFZlY3RvcjxSZWZQdHI8QXR0cmli
dXRlPiA+Jik7CiAKQEAgLTg5LDYgKzkxLDcgQEAgcHVibGljOgogICAgIC8vIFRoZXNlIGZ1bmN0
aW9ucyBkbyBubyBlcnJvciBjaGVja2luZy4KICAgICB2b2lkIGFkZEF0dHJpYnV0ZShQYXNzUmVm
UHRyPEF0dHJpYnV0ZT4pOwogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgpOwogCiAgICAg
RWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCkBAIC0xMTAs
OSArMTEzLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXRhY2hBdHRyaWJ1dGVzRnJvbUVsZW1l
bnQoKTsKICAgICB2b2lkIGRldGFjaEZyb21FbGVtZW50KCk7CiAgICAgQXR0cmlidXRlKiBnZXRB
dHRyaWJ1dGVJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlKSBjb25zdDsKLSAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW1TbG93Q2FzZShj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7
CisgICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CisgICAgc2l6ZV90IGdldEF0dHJp
YnV0ZUl0ZW1JbmRleFNsb3dDYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25v
cmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKICAgICB2b2lkIHNldEF0dHJpYnV0ZXMoY29uc3QgTmFt
ZWROb2RlTWFwJik7CiAgICAgdm9pZCBjbGVhckF0dHJpYnV0ZXMoKTsKKyAgICB2b2lkIHJlcGxh
Y2VBdHRyaWJ1dGUoc2l6ZV90IGluZGV4LCBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4pOwogICAgIGlu
dCBkZWNsQ291bnQoKSBjb25zdDsKIAogICAgIGludCBtX21hcHBlZEF0dHJpYnV0ZUNvdW50OwpA
QCAtMTI0LDM0ICsxMjksNTkgQEAgcHJpdmF0ZToKIAogaW5saW5lIEF0dHJpYnV0ZSogTmFtZWRO
b2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CiB7Ci0gICAgdW5zaWduZWQgbGVuID0gbGVuZ3RoKCk7CisgICAgc2l6ZV90IGluZGV4ID0gZ2V0
QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOworICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKKyAg
ICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpbmRleF0uZ2V0KCk7CisgICAgcmV0dXJuIDA7Cit9
CisKK2lubGluZSBzaXplX3QgTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK3sKKyAgICBzaXplX3QgbGVuID0gbGVuZ3Ro
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CiAgICAgICAgIGlm
IChtX2F0dHJpYnV0ZXNbaV0tPm5hbWUoKS5tYXRjaGVzKG5hbWUpKQotICAgICAgICAgICAgcmV0
dXJuIG1fYXR0cmlidXRlc1tpXS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBpOwogICAgIH0K
KyAgICByZXR1cm4gbm90Rm91bmQ7Cit9CisKK2lubGluZSBBdHRyaWJ1dGUqIE5hbWVkTm9kZU1h
cDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZSkgY29uc3QKK3sKKyAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJ
dGVtSW5kZXgobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSk7CisgICAgaWYgKGluZGV4
ICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzW2luZGV4XS5nZXQoKTsK
ICAgICByZXR1cm4gMDsKIH0KIAogLy8gV2UgdXNlIGEgYm9vbGVhbiBwYXJhbWV0ZXIgaW5zdGVh
ZCBvZiBjYWxsaW5nIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Ugc28gdGhhdCB0aGUgY2FsbGVy
CiAvLyBjYW4gdHVuZSB0aGUgYmVoYXZpb3IgKGhhc0F0dHJpYnV0ZSBpcyBjYXNlIHNlbnNpdGl2
ZSB3aGVyZWFzIGdldEF0dHJpYnV0ZSBpcyBub3QpLgotaW5saW5lIEF0dHJpYnV0ZSogTmFtZWRO
b2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJ
Z25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAoraW5saW5lIHNpemVfdCBOYW1lZE5vZGVNYXA6Omdl
dEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBsZW4gPSBsZW5ndGgoKTsKICAg
ICBib29sIGRvU2xvd0NoZWNrID0gc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZTsKLSAgICAKKwog
ICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgYXR0cmlidXRlIGV4aXN0cyBh
bmQgaXRzIG5hbWUgZXhhY3RseSBtYXRjaGVzLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW47ICsraSkgewogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSA9IG1f
YXR0cmlidXRlc1tpXS0+bmFtZSgpOwogICAgICAgICBpZiAoIWF0dHJOYW1lLmhhc1ByZWZpeCgp
KSB7CiAgICAgICAgICAgICBpZiAobmFtZSA9PSBhdHRyTmFtZS5sb2NhbE5hbWUoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzW2ldLmdldCgpOworICAgICAgICAgICAgICAg
IHJldHVybiBpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRvU2xvd0NoZWNrID0gdHJ1
ZTsKICAgICB9CiAKICAgICBpZiAoZG9TbG93Q2hlY2spCi0gICAgICAgIHJldHVybiBnZXRBdHRy
aWJ1dGVJdGVtU2xvd0Nhc2UobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSk7Ci0gICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGVJdGVtSW5kZXhTbG93Q2FzZShu
YW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKTsKKyAgICByZXR1cm4gbm90Rm91bmQ7Cit9
CisKK2lubGluZSB2b2lkIE5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUpCit7CisgICAgc2l6ZV90IGluZGV4ID0gZ2V0QXR0cmlidXRlSXRlbUlu
ZGV4KG5hbWUpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBi
ZmZmYTNhM2JkYTU0OTg3YTQxMWJiOGU0ZmM1MGFjOTY0NmRiMDJiLi41NGQyMTYzMWZiNDNkMmNk
ZTNjN2U1NjgyNDY0ZjcyZDMxMTAzYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcApAQCAtOTkwLDkgKzk5MCw3IEBAIHZvaWQgQXBwbHlTdHlsZUNv
bW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSogc3R5bGUs
IE5vZGUqCiAgICAgICAgICAgICBpZiAoIWNoaWxkLT5jb250YWlucyh0YXJnZXROb2RlKSAmJiBl
bGVtZW50c1RvUHVzaERvd24uc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBlbGVtZW50c1RvUHVzaERvd24uc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHdyYXBwZXIgPSBlbGVtZW50c1RvUHVzaERvd25baV0t
PmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOwotICAgICAgICAgICAgICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgICAgICAgICAgd3JhcHBlci0+cmVtb3ZlQXR0
cmlidXRlKHN0eWxlQXR0ciwgZWMpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWVjKTsK
KyAgICAgICAgICAgICAgICAgICAgd3JhcHBlci0+cmVtb3ZlQXR0cmlidXRlKHN0eWxlQXR0cik7
CiAgICAgICAgICAgICAgICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoY2hpbGQs
IGNoaWxkLCB3cmFwcGVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JDb21tYW5kLmNwcAppbmRleCA2NDg0YzU4YTk2NDM2MjJiZDczYTcyN2ZiY2JlZjQzNThhNTU5
NWQ4Li5mNDBjMTVjYjRiN2EyNmMyMGU3ZjI5MjY2MWI5YmVkNGRiNTA0MTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
Q29tbWFuZC5jcHAKQEAgLTEzNyw5ICsxMzcsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEluc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmNsb25lSGllcmFyY2h5VW5kZXJOZXdCbG9jawog
ICAgIGZvciAoc2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpICE9IDA7IC0taSkgewogICAg
ICAgICBSZWZQdHI8RWxlbWVudD4gY2hpbGQgPSBhbmNlc3RvcnNbaSAtIDFdLT5jbG9uZUVsZW1l
bnRXaXRob3V0Q2hpbGRyZW4oKTsKICAgICAgICAgLy8gSXQgc2hvdWxkIGFsd2F5cyBiZSBva2F5
IHRvIHJlbW92ZSBpZCBmcm9tIHRoZSBjbG9uZWQgZWxlbWVudHMsIHNpbmNlIHRoZSBvcmlnaW5h
bHMgYXJlIG5vdCBkZWxldGVkLgotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAg
ICAgY2hpbGQtPnJlbW92ZUF0dHJpYnV0ZShpZEF0dHIsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFl
Yyk7CisgICAgICAgIGNoaWxkLT5yZW1vdmVBdHRyaWJ1dGUoaWRBdHRyKTsKICAgICAgICAgYXBw
ZW5kTm9kZShjaGlsZCwgcGFyZW50KTsKICAgICAgICAgcGFyZW50ID0gY2hpbGQucmVsZWFzZSgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQu
Y3BwCmluZGV4IDE5YmI4YmZiYjI1YWVjOGE5ZDVkZWRkZTQwMjU4NDc4NWRhYjM3ODEuLmFjNzdi
ZjkxNmY1ODQ0MDExYjNmZjIwZTgyYTc2NjY3MjZhMjQwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcApAQCAtNjEsOCArNjEsNyBAQCB2b2lk
IFNwbGl0RWxlbWVudENvbW1hbmQ6OmV4ZWN1dGVBcHBseSgpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIERlbGV0ZSBpZCBhdHRyaWJ1dGUgZnJvbSB0aGUgc2Vjb25kIGVsZW1lbnQgYmVjYXVz
ZSB0aGUgc2FtZSBpZCBjYW5ub3QgYmUgdXNlZCBmb3IgbW9yZSB0aGFuIG9uZSBlbGVtZW50Ci0g
ICAgbV9lbGVtZW50Mi0+cmVtb3ZlQXR0cmlidXRlKEhUTUxOYW1lczo6aWRBdHRyLCBlYyk7Ci0g
ICAgQVNTRVJUKCFlYyk7CisgICAgbV9lbGVtZW50Mi0+cmVtb3ZlQXR0cmlidXRlKEhUTUxOYW1l
czo6aWRBdHRyKTsKIAogICAgIHNpemVfdCBzaXplID0gY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAppbmRleCA2NTczY2E2MThmZWUyMmZmODlhN2ViNWI1MWYyNDFmMjhhNDZkMGY0Li5jMTlm
ZTk0M2ZiMjQzMjg4MjkwOGU4MGZkZTMyYTUxNjJhOTQ2YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcApAQCAtNzUyLDcgKzc1Miw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldENv
bnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVuYWJsZWQsICJwbGFpbnRleHQtb25seSIp
KQogICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0ciwgInBsYWludGV4dC1v
bmx5Iik7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgImluaGVyaXQi
KSkKLSAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0dHIsIGVjKTsKKyAg
ICAgICAgcmVtb3ZlQXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0dHIpOwogICAgIGVsc2UKICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKaW5kZXggN2UwM2VjNmYxYWNkYzU4NDU5NjkwYWQ5ZDM1ZjQ2MDkxYTZjN2FkYy4u
MTU5NmQ2OGI2YzgwMTExZmM2NzliNmViOWJmYTQ1ZTVkZTgzNDA4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC01MzIsMTAgKzUzMiw5IEBAIHZvaWQgSFRN
TElucHV0RWxlbWVudDo6c2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgLy8gV2Ugc2hv
dWxkIHdyaXRlIGEgdGVzdCBjYXNlIHRvIHNob3cgdGhhdCBzZXR0aW5nIHRvIHRoZSBlbXB0eSBz
dHJpbmcgZG9lcyBub3QgcmVtb3ZlIHRoZQogICAgIC8vIGF0dHJpYnV0ZSBpbiBvdGhlciBicm93
c2VycyBhbmQgdGhlbiBmaXggdGhpcy4gTm90ZSB0aGF0IHNldHRpbmcgdG8gbnVsbCAqZG9lcyog
cmVtb3ZlCiAgICAgLy8gdGhlIGF0dHJpYnV0ZSBhbmQgc2V0QXR0cmlidXRlIGltcGxlbWVudHMg
dGhhdC4KLSAgICBpZiAodHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YzsKLSAgICAgICAgcmVtb3ZlQXR0cmlidXRlKHR5cGVBdHRyLCBlYyk7Ci0gICAgfSBlbHNlCisg
ICAgaWYgKHR5cGUuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVBdHRyaWJ1dGUodHlwZUF0dHIp
OworICAgIGVsc2UKICAgICAgICAgc2V0QXR0cmlidXRlKHR5cGVBdHRyLCB0eXBlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXgg
N2E5ZjI2ZGU5ODE4NjkzMzgxNmE1NThlZTU0NjVjYWI4NDYyOTlmYS4uNTQ2Yzc3ZDY1MzAwZTgw
NGFlMDRlODE1Y2Y4ZTA5MTNjMWQ4MDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01MjgsOSArNTI4LDcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBlbGVtZW4KIAogICAgIGNvbnN0IE5hbWVkTm9kZU1hcCogYXR0ck1hcCA9IHRvSFRNTEVs
ZW1lbnQoY2hpbGQpLT5hdHRyaWJ1dGVzKHRydWUpOwogICAgIGlmICghYXR0ck1hcCAmJiBuYW1l
KSB7Ci0gICAgICAgIGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZSgqbmFtZSwgZWMpOwotICAgICAg
ICBpZiAoZWMpCi0gICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHJlbW92ZSBh
dHRyaWJ1dGUiOworICAgICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoKm5hbWUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NDQsOSArNTQyLDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBlbGVtZW4KICAgICB9CiAKICAgICBpZiAoIWZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUgJiYgbmFt
ZSkgewotICAgICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoKm5hbWUsIGVjKTsKLSAgICAg
ICAgaWYgKGVjKQotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCByZW1vdmUg
YXR0cmlidXRlIjsKKyAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKCpuYW1lKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTU1NCwxMiArNTUwLDggQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBlbGVtZW4KIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUF0dHJpYnV0ZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywgZWxl
bWVudElkKTsKLSAgICBpZiAoZWxlbWVudCkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIGVjKTsKLSAgICAgICAg
aWYgKGVjKQotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkV4Y2VwdGlvbiB3aGlsZSByZW1v
dmluZyBhdHRyaWJ1dGUiOwotICAgIH0KKyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgZWxlbWVu
dC0+cmVtb3ZlQXR0cmlidXRlKG5hbWUpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpy
ZW1vdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCA1ZTY3ZmY1MmE1MjA1MjVkZTM5NGM1YjJhMDZm
NjE0ZDhhYWYwMzQwLi41NWY3MGY0NTMxZDJhODRhMDg0MmM1MGY2ZmY2ODc4NjJkY2U0NDJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xMDM1LDExICsxMDM1LDExIEBA
IHZvaWQgU1ZHVXNlRWxlbWVudDo6dHJhbnNmZXJVc2VBdHRyaWJ1dGVzVG9SZXBsYWNlZEVsZW1l
bnQoU1ZHRWxlbWVudCogZnJvbSwgU1ZHCiAKICAgICB0by0+c2V0QXR0cmlidXRlc0Zyb21FbGVt
ZW50KCpmcm9tKTsKIAotICAgIHRvLT5yZW1vdmVBdHRyaWJ1dGUoU1ZHTmFtZXM6OnhBdHRyLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFNWR05hbWVzOjp5
QXR0ciwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShTVkdO
YW1lczo6d2lkdGhBdHRyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICB0by0+cmVtb3ZlQXR0
cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICB0
by0+cmVtb3ZlQXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKKyAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFNWR05hbWVzOjp4QXR0cik7CisgICAgdG8t
PnJlbW92ZUF0dHJpYnV0ZShTVkdOYW1lczo6eUF0dHIpOworICAgIHRvLT5yZW1vdmVBdHRyaWJ1
dGUoU1ZHTmFtZXM6OndpZHRoQXR0cik7CisgICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShTVkdOYW1l
czo6aGVpZ2h0QXR0cik7CisgICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVm
QXR0cik7CiB9CiAKIGJvb2wgU1ZHVXNlRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3Rocygp
IGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120088</attachid>
            <date>2011-12-20 14:30:37 -0800</date>
            <delta_ts>2011-12-20 15:02:10 -0800</delta_ts>
            <desc>Fix Qt build</desc>
            <filename>bug-74953-20111220143036.patch</filename>
            <type>text/plain</type>
            <size>27007</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYxODY2NGFhOTQ3NmFk
MmM1YjhkNjRiZTY3YmIxNzk1YTNkYmNiNy4uZWY0NDRjOGYxNWM5OTQwMzI2MDFmMmVkOTk0ZmMy
ODVlNWZiMmRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY1IEBACiAyMDExLTEyLTIwICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5
IHdvcmsgd2hlbiByZW1vdmluZyBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWYXJpb3VzIGNvZGVwYXRocyBp
biBFbGVtZW50IGFuZCBOYW1lZE5vZGVNYXAgcmVwZWF0ZWRseSBzZWFyY2gKKyAgICAgICAgdGhy
b3VnaCB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIGR1cmluZyBhIHNpbmdsZSBvcGVyYXRpb24uIFRv
IGF2b2lkCisgICAgICAgIHRoaXMsIEkndmUgYWRkZWQgbmV3IGdldHRlcnMgdG8gTmFtZWROb2Rl
TWFwIHRoYXQgcmV0dXJuIGluZGljZXMKKyAgICAgICAgcmF0aGVyIHRoYW4gQXR0cmlidXRlKnMg
KHRoZXkgcmV0dXJuIFdURjo6bm90Rm91bmQgaWYgbm8gbWF0Y2ggaXMKKyAgICAgICAgZm91bmQp
LiBUaGVzZSBuZXcgbWV0aG9kcyBhcmUgbm93IHVzZWQgZHVyaW5nIHJlbW92ZUF0dHJpYnV0ZQor
ICAgICAgICBvcGVyYXRpb25zOyB0aGV5J3JlIG5vdCB5ZXQgdXNlZCBldmVyeXdoZXJlLgorCisg
ICAgICAgIFRoZSBvdGhlciBvcHRpbWl6YXRpb24gaGVyZSBpbnZvbHZlcyB0aGUgY3JlYXRpb24v
ZGVzdHJ1Y3Rpb24KKyAgICAgICAgb2YgbmV2ZXItcmVmZXJlbmNlcyBBdHRyIG5vZGVzLiBUaGlz
IGlzIG5vdyBhdm9pZGVkIGJ5IGNhbGxpbmcKKyAgICAgICAgTmFtZWROb2RlTWFwOjpyZW1vdmVB
dHRyaWJ1dGUgZGlyZWN0bHkgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoCisgICAgICAgIE5hbWVk
Tm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtLgorCisgICAgICAgIEFzIGEgY2xlYW51cCBhZnRlciB0
aGUgYWJvdmUgY2hhbmdlcywgdGhlIEV4Y2VwdGlvbkNvZGUgYXJndW1lbnQgaXMKKyAgICAgICAg
Z29uZSBmcm9tIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSBhbmQgZnJpZW5kcyAoaXQgd2FzIG5l
dmVyIHNldAorICAgICAgICBwcmV2aW91c2x5KS4gVGhlIGJ1bGsgb2YgdGhlIGZpbGVzIG1lbnRp
b25lZCBiZWxvdyBhcmUgc2ltcGx5IHVwZGF0aW5nCisgICAgICAgIGNhbGxlcnMgdG8gdGhlc2Ug
bWV0aG9kcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvciBl
eHBlY3RlZC4KKworICAgICAgICAqIGRvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmRlbGV0ZUl0ZW0pOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRCb29sZWFuQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKToKKyAgICAgICAg
KiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBk
b20vTmFtZWROb2RlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6c2V0
TmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJ
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbUlu
ZGV4U2xvd0Nhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpyZXBsYWNlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmlidXRl
KToKKyAgICAgICAgKiBkb20vTmFtZWROb2RlTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpOYW1l
ZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2Rl
TWFwOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2Rl
TWFwOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5s
aW5lU3R5bGVBcm91bmROb2RlKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBoU2Vw
YXJhdG9yQ29tbWFuZDo6Y2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrKToKKyAgICAgICAgKiBl
ZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRF
bGVtZW50Q29tbWFuZDo6ZXhlY3V0ZUFwcGx5KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUp
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpzZXRUeXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEF0dHJpYnV0ZXNBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6dHJhbnNmZXJVc2VBdHRyaWJ1dGVzVG9SZXBs
YWNlZEVsZW1lbnQpOgorCisyMDExLTEyLTIwICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0u
b3JnPgorCiAgICAgICAgIFJlbW92ZSBuby1vcCBET01BdHRyKiBldmVudCBkaXNwYXRjaCBtZXRo
b2RzIGZyb20gRWxlbWVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzQ5NDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAyOTI4YmNkZWE3YTUxNzEyZDRkOWI1
OWVjYjMwYzM5M2I2MmZlNGEyLi40Y2FlYmM2ZDI2MjAxNjE1YWFmNmQxYjA3YWQ5MzM2OWJmZTY3
ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTEyLTIwICBBZGFtIEts
ZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5IHdv
cmsgd2hlbiByZW1vdmluZyBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6
CisgICAgICAgIChRV2ViRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKTogVXBkYXRlZCBhIGNhbGxl
ciBvZgorICAgICAgICBXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUgdG8gcmVtb3Zl
IEV4Y2VwdGlvbkNvZGUgYXJndW1lbnQuCisKIDIwMTEtMTItMjAgIFJhZmFlbCBCcmFuZGFvICA8
cmFmYWVsLmxvYm9Ab3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdIEV4dGVuZCBRUXVpY2tX
ZWJ2aWV3OjpuYXZpZ2F0aW9uUmVxdWVzdGVkIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFz
ZXRET01TdHJpbmdNYXAuY3BwCmluZGV4IGU2OGU5ZDk1OTIxYjM4NjUwOTYwYTAxYTNjZDE1MmI2
ZTRiZTc3MWYuLmUwZDg3NWRjYmIwZDdiZTYwNDdmMTdmM2ExMTFlZjU5MTFmMGU4YjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKQEAgLTE5OSw4ICsxOTks
NyBAQCB2b2lkIERhdGFzZXRET01TdHJpbmdNYXA6OmRlbGV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEV4
Y2VwdGlvbkNvZGUgZHVtbXk7Ci0gICAgbV9lbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoY29udmVy
dFByb3BlcnR5TmFtZVRvQXR0cmlidXRlTmFtZShuYW1lKSwgZHVtbXkpOworICAgIG1fZWxlbWVu
dC0+cmVtb3ZlQXR0cmlidXRlKGNvbnZlcnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUobmFt
ZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggYjE1MDAzY2QyYWYyNDM2ZDE5YzkzOWRhMWRmNTgzNGVlODhkNWZmOS4uYmIwMmU5MjczMDlm
ZGIwYzQwYjlmZjhlOTc0OTZiNjg2OTFlYTU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
MTg4LDI0ICsxODgsMjYgQEAgdm9pZCBFbGVtZW50OjplbnF1ZXVlQXR0cmlidXRlc011dGF0aW9u
UmVjb3JkSWZSZXF1ZXN0ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXQKIH0KICNlbmRpZgogCi12
b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAgaWYgKG1fYXR0cmlidXRlTWFwKSB7Ci0gICAgICAg
IGVjID0gMDsKLSAgICAgICAgUmVmUHRyPE5vZGU+IGF0dHJOb2RlID0gbV9hdHRyaWJ1dGVNYXAt
PnJlbW92ZU5hbWVkSXRlbShuYW1lLCBlYyk7Ci0gICAgICAgIGlmIChlYyA9PSBOT1RfRk9VTkRf
RVJSKQotICAgICAgICAgICAgZWMgPSAwOwotICAgIH0KKyAgICBpZiAoIW1fYXR0cmlidXRlTWFw
KQorICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3QgaW5kZXggPSBtX2F0dHJpYnV0ZU1hcC0+
Z2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShuYW1lLCBtX2F0dHJp
YnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpbmRleCktPnZhbHVlKCksIG51bGxBdG9tKTsKKworICAg
IG1fYXR0cmlidXRlTWFwLT5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgpOwogfQogCiB2b2lkIEVsZW1l
bnQ6OnNldEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCBi
KQogewogICAgIGlmIChiKQogICAgICAgICBzZXRBdHRyaWJ1dGUobmFtZSwgZW1wdHlBdG9tKTsK
LSAgICBlbHNlIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBleDsKLSAgICAgICAgcmVtb3ZlQXR0
cmlidXRlKG5hbWUsIGV4KTsKLSAgICB9CisgICAgZWxzZQorICAgICAgICByZW1vdmVBdHRyaWJ1
dGUobmFtZSk7CiB9CiAKIE5vZGU6Ok5vZGVUeXBlIEVsZW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QK
QEAgLTE0NjEsMjUgKzE0NjMsMzEgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVOUyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW4KICAgICBzZXRB
dHRyaWJ1dGUocU5hbWUsIHZhbHVlKTsKIH0KIAotdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRWxlbWVudDo6
cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOworICAgIGlm
ICghbV9hdHRyaWJ1dGVNYXApCisgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBsb2NhbE5h
bWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMpID8gbmFtZS5sb3dlcigpIDogbmFt
ZTsKKyAgICBzaXplX3QgaW5kZXggPSBtX2F0dHJpYnV0ZU1hcC0+Z2V0QXR0cmlidXRlSXRlbUlu
ZGV4KGxvY2FsTmFtZSwgZmFsc2UpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBtX2F0dHJpYnV0ZU1hcC0+
YXR0cmlidXRlSXRlbShpbmRleCk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOworCisgICAgaWYgKCFhdHRyaWJ1dGUt
PmlzTnVsbCgpKQorICAgICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgp
LCBhdHRyaWJ1dGUtPnZhbHVlKCksIG51bGxBdG9tKTsKKworICAgIG1fYXR0cmlidXRlTWFwLT5y
ZW1vdmVBdHRyaWJ1dGUoaW5kZXgpOwogCi0gICAgaWYgKG1fYXR0cmlidXRlTWFwKSB7Ci0gICAg
ICAgIGVjID0gMDsKLSAgICAgICAgUmVmUHRyPE5vZGU+IGF0dHJOb2RlID0gbV9hdHRyaWJ1dGVN
YXAtPnJlbW92ZU5hbWVkSXRlbShsb2NhbE5hbWUsIGVjKTsKLSAgICAgICAgaWYgKGVjID09IE5P
VF9GT1VORF9FUlIpCi0gICAgICAgICAgICBlYyA9IDA7Ci0gICAgfQotICAgIAogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NQXR0cihkb2N1bWVudCgpLCB0aGlzLCBu
YW1lKTsKIH0KIAotdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFj
ZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpCiB7Ci0gICAgcmVtb3ZlQXR0cmlidXRlKFF1
YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSwgZWMpOworICAg
IHJlbW92ZUF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG5hbWVz
cGFjZVVSSSkpOwogfQogCiBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5v
ZGUoY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjIwYTBiMzlkNThm
OWRkZWEzOGFjYTY5NDk1NzQwODk0MjQ1ZmEwOC4uMjcyYWI1NzBhN2Y2ZjIyZWZhZGY0YWZkZmQ5
NTU5OGNkYjlkMDdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgLy8gVHlwZWQgZ2V0dGVycyBhbmQgc2V0
dGVycyBmb3IgbGFuZ3VhZ2UgYmluZGluZ3MuCiAgICAgaW50IGdldEludGVncmFsQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0OwpAQCAtMTc2LDggKzE3
Niw4IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBib3VuZGluZyBib3gg
dHJhbnNsYXRlZCBpbnRvIHNjcmVlbiBjb29yZGluYXRlczoKICAgICBMYXlvdXRSZWN0IHNjcmVl
blJlY3QoKSBjb25zdDsKIAotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoY29uc3Qg
U3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAg
ICB2b2lkIHJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25z
dCBTdHJpbmcmIGxvY2FsTmFtZSk7CiAKICAgICBQYXNzUmVmUHRyPEF0dHI+IGdldEF0dHJpYnV0
ZU5vZGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBQYXNzUmVmUHRyPEF0dHI+IGdldEF0dHJp
YnV0ZU5vZGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2Nh
bE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IDgxMDMyZTY2YTQyMGMyYTczOTJiM2Mz
ZWRhZDM3YmUxMjFkMjVhNDguLjgxZmIyNjAzNTFlNDM1MmYxMDVmNDc0YzJkNWMzMzgzYTliYTlk
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTMzLDggKzMzLDcgQEAgbW9kdWxlIGNvcmUg
ewogICAgICAgICBbT2xkU3R5bGVPYmpDXSB2b2lkIHNldEF0dHJpYnV0ZShpbiBbT3B0aW9uYWw9
Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVd
IERPTVN0cmluZyB2YWx1ZSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAg
ICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFs
dWVdIERPTVN0cmluZyBuYW1lKQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Cisg
ICAgICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRW
YWx1ZV0gRE9NU3RyaW5nIG5hbWUpOwogICAgICAgICBBdHRyIGdldEF0dHJpYnV0ZU5vZGUoaW4g
W09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgbmFtZSk7CiAgICAgICAg
IEF0dHIgc2V0QXR0cmlidXRlTm9kZShpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVd
IEF0dHIgbmV3QXR0cikKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwpAQCAtNTEs
OCArNTAsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcg
dmFsdWUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgW09sZFN0
eWxlT2JqQ10gdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSkKLSAgICAgICAgICAgIHJh
aXNlcyhET01FeGNlcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgICAgICBbT2xkU3R5bGVPYmpD
XSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZyxPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG5hbWVzcGFjZVVS
SSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBsb2NhbE5hbWUp
OwogICAgICAgICBbT2xkU3R5bGVPYmpDXSBBdHRyIGdldEF0dHJpYnV0ZU5vZGVOUyhpbiBbQ29u
dmVydE51bGxUb051bGxTdHJpbmcsT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0
cmluZyBuYW1lc3BhY2VVUkksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRO
b2RlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCmluZGV4IDg2
YjdkZTM4ZDBkZmFkNzYzNWUxZDJmM2ZiYzY0ZjIzZjYzNWI3MjMuLjczY2MxOWZiN2E0MTRmYTk5
Mjg5YTVjMGMzZDY0ODBkYjI5OGFjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
YW1lZE5vZGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3Bw
CkBAIC0xMDgsNyArMTA4LDggQEAgUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnNldE5h
bWVkSXRlbShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBBdHRyKiBhdHRyID0g
c3RhdGljX2Nhc3Q8QXR0cio+KG5vZGUpOwogCiAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBh
dHRyLT5hdHRyKCk7Ci0gICAgQXR0cmlidXRlKiBvbGRBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGVJ
dGVtKGF0dHJpYnV0ZS0+bmFtZSgpKTsKKyAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJ
dGVtSW5kZXgoYXR0cmlidXRlLT5uYW1lKCkpOworICAgIEF0dHJpYnV0ZSogb2xkQXR0cmlidXRl
ID0gaW5kZXggIT0gbm90Rm91bmQgPyBhdHRyaWJ1dGVJdGVtKGluZGV4KSA6IDA7CiAgICAgaWYg
KG9sZEF0dHJpYnV0ZSA9PSBhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybiBub2RlOyAvLyB3ZSBr
bm93IGFib3V0IGl0IGFscmVhZHkKIApAQCAtMTI1LDEwICsxMjYsOSBAQCBQYXNzUmVmUHRyPE5v
ZGU+IE5hbWVkTm9kZU1hcDo6c2V0TmFtZWRJdGVtKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIFJlZlB0cjxBdHRyPiBvbGRBdHRyOwogICAgIGlmIChvbGRBdHRyaWJ1dGUpIHsK
ICAgICAgICAgb2xkQXR0ciA9IG9sZEF0dHJpYnV0ZS0+Y3JlYXRlQXR0cklmTmVlZGVkKG1fZWxl
bWVudCk7Ci0gICAgICAgIHJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSk7Ci0gICAg
fQotCi0gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIHJlcGxhY2VBdHRyaWJ1
dGUoaW5kZXgsIGF0dHJpYnV0ZSk7CisgICAgfSBlbHNlCisgICAgICAgIGFkZEF0dHJpYnV0ZShh
dHRyaWJ1dGUpOwogICAgIHJldHVybiBvbGRBdHRyLnJlbGVhc2UoKTsKIH0KIApAQCAtMTQ0LDE3
ICsxNDQsMTggQEAgUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnJlbW92ZU5hbWVkSXRl
bShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBFeGNlcHQKIHsKICAgICBBU1NFUlQobV9lbGVt
ZW50KTsKIAotICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZ2V0QXR0cmlidXRlSXRlbShuYW1l
KTsKLSAgICBpZiAoIWF0dHJpYnV0ZSkgeworICAgIHNpemVfdCBpbmRleCA9IGdldEF0dHJpYnV0
ZUl0ZW1JbmRleChuYW1lKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKICAgICAgICAg
ZWMgPSBOT1RfRk9VTkRfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBBdHRy
aWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUl0ZW0oaW5kZXgpOwogICAgIFJlZlB0cjxBdHRy
PiBhdHRyID0gYXR0cmlidXRlLT5jcmVhdGVBdHRySWZOZWVkZWQobV9lbGVtZW50KTsKIAogICAg
IG1fZWxlbWVudC0+d2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmli
dXRlLT52YWx1ZSgpLCBudWxsQXRvbSk7CiAKLSAgICByZW1vdmVBdHRyaWJ1dGUobmFtZSk7Cisg
ICAgcmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKICAgICByZXR1cm4gYXR0ci5yZWxlYXNlKCk7CiB9
CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCB2b2lkIE5hbWVkTm9kZU1hcDo6Y29weUF0dHJpYnV0ZXNU
b1ZlY3RvcihWZWN0b3I8UmVmUHRyPEF0dHJpYnV0ZT4gPiYgY29weSkKICAgICBjb3B5ID0gbV9h
dHRyaWJ1dGVzOwogfQogCi1BdHRyaWJ1dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRl
bVNsb3dDYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVD
YXNlKSBjb25zdAorc2l6ZV90IE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbUluZGV4U2xv
d0Nhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Up
IGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbGVuID0gbGVuZ3RoKCk7CiAKQEAgLTE4MCwxNiArMTgx
LDE2IEBAIEF0dHJpYnV0ZSogTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtU2xvd0Nhc2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsCiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lID0gbV9hdHRyaWJ1dGVzW2ldLT5uYW1lKCk7CiAgICAgICAgIGlmICghYXR0
ck5hbWUuaGFzUHJlZml4KCkpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIGF0dHJOYW1lLmxvY2FsTmFtZSgpKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzW2ldLmdldCgpOworICAgICAgICAg
ICAgICAgIHJldHVybiBpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6
IFdvdWxkIGJlIGZhc3RlciB0byBkbyB0aGlzIGNvbXBhcmlzb24gd2l0aG91dCBjYWxsaW5nIHRv
U3RyaW5nLCB3aGljaAogICAgICAgICAgICAgLy8gZ2VuZXJhdGVzIGEgdGVtcG9yYXJ5IHN0cmlu
ZyBieSBjb25jYXRlbmF0aW9uLiBCdXQgdGhpcyBicmFuY2ggaXMgb25seSByZWFjaGVkCiAgICAg
ICAgICAgICAvLyBpZiB0aGUgYXR0cmlidXRlIG5hbWUgaGFzIGEgcHJlZml4LCB3aGljaCBpcyBy
YXJlIGluIEhUTUwuCiAgICAgICAgICAgICBpZiAoZXF1YWxQb3NzaWJseUlnbm9yaW5nQ2FzZShu
YW1lLCBhdHRyTmFtZS50b1N0cmluZygpLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzW2ldLmdldCgpOworICAgICAgICAgICAg
ICAgIHJldHVybiBpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVy
biBub3RGb3VuZDsKIH0KIAogdm9pZCBOYW1lZE5vZGVNYXA6OmNsZWFyQXR0cmlidXRlcygpCkBA
IC0yNTksMzQgKzI2MCwzOCBAQCB2b2lkIE5hbWVkTm9kZU1hcDo6YWRkQXR0cmlidXRlKFBhc3NS
ZWZQdHI8QXR0cmlidXRlPiBwcnBBdHRyaWJ1dGUpCiAgICAgfQogfQogCi12b2lkIE5hbWVkTm9k
ZU1hcDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit2b2lkIE5h
bWVkTm9kZU1hcDo6cmVwbGFjZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgsIFBhc3NSZWZQdHI8QXR0
cmlidXRlPiBhdHRyaWJ1dGUpCiB7Ci0gICAgdW5zaWduZWQgbGVuID0gbGVuZ3RoKCk7Ci0gICAg
dW5zaWduZWQgaW5kZXggPSBsZW47Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsg
KytpKSB7Ci0gICAgICAgIGlmIChtX2F0dHJpYnV0ZXNbaV0tPm5hbWUoKS5tYXRjaGVzKG5hbWUp
KSB7Ci0gICAgICAgICAgICBpbmRleCA9IGk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQorICAgIEFTU0VSVChpbmRleCA8IGxlbmd0aCgpKTsKKworICAgIGlmIChBdHRyKiBhdHRyID0g
bV9hdHRyaWJ1dGVzW2luZGV4XS0+YXR0cigpKQorICAgICAgICBhdHRyLT5tX2VsZW1lbnQgPSAw
OworICAgIG1fYXR0cmlidXRlc1tpbmRleF0gPSBhdHRyaWJ1dGU7CisgICAgaWYgKEF0dHIqIGF0
dHIgPSBtX2F0dHJpYnV0ZXNbaW5kZXhdLT5hdHRyKCkpCisgICAgICAgIGF0dHItPm1fZWxlbWVu
dCA9IG1fZWxlbWVudDsKKworICAgIGlmIChtX2VsZW1lbnQpIHsKKyAgICAgICAgbV9lbGVtZW50
LT5hdHRyaWJ1dGVDaGFuZ2VkKG1fYXR0cmlidXRlc1tpbmRleF0uZ2V0KCkpOworICAgICAgICBp
ZiAobV9hdHRyaWJ1dGVzW2luZGV4XS0+bmFtZSgpICE9IHN0eWxlQXR0cikKKyAgICAgICAgICAg
IG1fZWxlbWVudC0+ZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogICAgIH0KK30KIAot
ICAgIGlmIChpbmRleCA+PSBsZW4pCi0gICAgICAgIHJldHVybjsKK3ZvaWQgTmFtZWROb2RlTWFw
OjpyZW1vdmVBdHRyaWJ1dGUoc2l6ZV90IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8IGxl
bmd0aCgpKTsKIAotICAgIC8vIFJlbW92ZSB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGxpc3QKLSAg
ICBSZWZQdHI8QXR0cmlidXRlPiBhdHRyID0gbV9hdHRyaWJ1dGVzW2luZGV4XS5nZXQoKTsKLSAg
ICBpZiAoQXR0ciogYSA9IG1fYXR0cmlidXRlc1tpbmRleF0tPmF0dHIoKSkKLSAgICAgICAgYS0+
bV9lbGVtZW50ID0gMDsKKyAgICBSZWZQdHI8QXR0cmlidXRlPiBhdHRyaWJ1dGUgPSBtX2F0dHJp
YnV0ZXNbaW5kZXhdOworICAgIGlmIChBdHRyKiBhdHRyID0gYXR0cmlidXRlLT5hdHRyKCkpCisg
ICAgICAgIGF0dHItPm1fZWxlbWVudCA9IDA7CiAKICAgICBtX2F0dHJpYnV0ZXMucmVtb3ZlKGlu
ZGV4KTsKIAotICAgIC8vIE5vdGlmeSB0aGUgZWxlbWVudCB0aGF0IHRoZSBhdHRyaWJ1dGUgaGFz
IGJlZW4gcmVtb3ZlZAotICAgIC8vIGRpc3BhdGNoIGFwcHJvcHJpYXRlIG11dGF0aW9uIGV2ZW50
cwotICAgIGlmIChtX2VsZW1lbnQgJiYgIWF0dHItPm1fdmFsdWUuaXNOdWxsKCkpIHsKLSAgICAg
ICAgQXRvbWljU3RyaW5nIHZhbHVlID0gYXR0ci0+bV92YWx1ZTsKLSAgICAgICAgYXR0ci0+bV92
YWx1ZSA9IG51bGxBdG9tOwotICAgICAgICBtX2VsZW1lbnQtPmF0dHJpYnV0ZUNoYW5nZWQoYXR0
ci5nZXQoKSk7Ci0gICAgICAgIGF0dHItPm1fdmFsdWUgPSB2YWx1ZTsKKyAgICBpZiAobV9lbGVt
ZW50ICYmICFhdHRyaWJ1dGUtPm1fdmFsdWUuaXNOdWxsKCkpIHsKKyAgICAgICAgQXRvbWljU3Ry
aW5nIHZhbHVlID0gYXR0cmlidXRlLT5tX3ZhbHVlOworICAgICAgICBhdHRyaWJ1dGUtPm1fdmFs
dWUgPSBudWxsQXRvbTsKKyAgICAgICAgbV9lbGVtZW50LT5hdHRyaWJ1dGVDaGFuZ2VkKGF0dHJp
YnV0ZS5nZXQoKSk7CisgICAgICAgIGF0dHJpYnV0ZS0+bV92YWx1ZSA9IHZhbHVlOwogICAgIH0K
ICAgICBpZiAobV9lbGVtZW50KQogICAgICAgICBtX2VsZW1lbnQtPmRpc3BhdGNoU3VidHJlZU1v
ZGlmaWVkRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVN
YXAuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaAppbmRleCAzNGYzODYwNDY3
Y2ZlY2Y1YzlkMmFlMGY4NTkwMzUxZWFhZThhYTY0Li4zNTM0MDE0ODM5NWI0M2E2OTg1Y2Q1M2E3
NDc3MDkzODYxMDUwOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2Rl
TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3Ry
aW5nLmgiCisjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjUsNiArNjYsNyBAQCBwdWJsaWM6CiAKICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0
ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlc1tpbmRleF0uZ2V0
KCk7IH0KICAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OworICAgIHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGNvbnN0OwogCiAgICAgdm9pZCBjb3B5QXR0cmlidXRlc1RvVmVjdG9yKFZlY3Rv
cjxSZWZQdHI8QXR0cmlidXRlPiA+Jik7CiAKQEAgLTg5LDYgKzkxLDcgQEAgcHVibGljOgogICAg
IC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBubyBlcnJvciBjaGVja2luZy4KICAgICB2b2lkIGFkZEF0
dHJpYnV0ZShQYXNzUmVmUHRyPEF0dHJpYnV0ZT4pOwogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShzaXplX3Qg
aW5kZXgpOwogCiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVu
dDsgfQogCkBAIC0xMTAsOSArMTEzLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXRhY2hBdHRy
aWJ1dGVzRnJvbUVsZW1lbnQoKTsKICAgICB2b2lkIGRldGFjaEZyb21FbGVtZW50KCk7CiAgICAg
QXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91
bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKLSAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0
ZUl0ZW1TbG93Q2FzZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmli
dXRlQ2FzZSkgY29uc3Q7CisgICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CisgICAg
c2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleFNsb3dDYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKICAgICB2b2lkIHNldEF0dHJp
YnV0ZXMoY29uc3QgTmFtZWROb2RlTWFwJik7CiAgICAgdm9pZCBjbGVhckF0dHJpYnV0ZXMoKTsK
KyAgICB2b2lkIHJlcGxhY2VBdHRyaWJ1dGUoc2l6ZV90IGluZGV4LCBQYXNzUmVmUHRyPEF0dHJp
YnV0ZT4pOwogICAgIGludCBkZWNsQ291bnQoKSBjb25zdDsKIAogICAgIGludCBtX21hcHBlZEF0
dHJpYnV0ZUNvdW50OwpAQCAtMTI0LDM0ICsxMjksNTkgQEAgcHJpdmF0ZToKIAogaW5saW5lIEF0
dHJpYnV0ZSogTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgbGVuID0gbGVuZ3RoKCk7CisgICAgc2l6
ZV90IGluZGV4ID0gZ2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOworICAgIGlmIChpbmRleCAh
PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpbmRleF0uZ2V0KCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBzaXplX3QgTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1
dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK3sKKyAgICBzaXpl
X3QgbGVuID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgKytp
KSB7CiAgICAgICAgIGlmIChtX2F0dHJpYnV0ZXNbaV0tPm5hbWUoKS5tYXRjaGVzKG5hbWUpKQot
ICAgICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpXS5nZXQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBpOwogICAgIH0KKyAgICByZXR1cm4gbm90Rm91bmQ7Cit9CisKK2lubGluZSBBdHRyaWJ1
dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKK3sKKyAgICBzaXplX3QgaW5kZXgg
PSBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSk7
CisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVz
W2luZGV4XS5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KIAogLy8gV2UgdXNlIGEgYm9vbGVhbiBw
YXJhbWV0ZXIgaW5zdGVhZCBvZiBjYWxsaW5nIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Ugc28g
dGhhdCB0aGUgY2FsbGVyCiAvLyBjYW4gdHVuZSB0aGUgYmVoYXZpb3IgKGhhc0F0dHJpYnV0ZSBp
cyBjYXNlIHNlbnNpdGl2ZSB3aGVyZWFzIGdldEF0dHJpYnV0ZSBpcyBub3QpLgotaW5saW5lIEF0
dHJpYnV0ZSogTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAoraW5saW5lIHNpemVfdCBO
YW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBsZW4g
PSBsZW5ndGgoKTsKICAgICBib29sIGRvU2xvd0NoZWNrID0gc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZTsKLSAgICAKKwogICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgYXR0
cmlidXRlIGV4aXN0cyBhbmQgaXRzIG5hbWUgZXhhY3RseSBtYXRjaGVzLgogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSA9IG1fYXR0cmlidXRlc1tpXS0+bmFtZSgpOwogICAgICAgICBpZiAoIWF0dHJO
YW1lLmhhc1ByZWZpeCgpKSB7CiAgICAgICAgICAgICBpZiAobmFtZSA9PSBhdHRyTmFtZS5sb2Nh
bE5hbWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzW2ldLmdldCgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRv
U2xvd0NoZWNrID0gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoZG9TbG93Q2hlY2spCi0gICAgICAg
IHJldHVybiBnZXRBdHRyaWJ1dGVJdGVtU2xvd0Nhc2UobmFtZSwgc2hvdWxkSWdub3JlQXR0cmli
dXRlQ2FzZSk7Ci0gICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGVJdGVt
SW5kZXhTbG93Q2FzZShuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKTsKKyAgICByZXR1
cm4gbm90Rm91bmQ7Cit9CisKK2lubGluZSB2b2lkIE5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit7CisgICAgc2l6ZV90IGluZGV4ID0gZ2V0
QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmNwcAppbmRleCBiZmZmYTNhM2JkYTU0OTg3YTQxMWJiOGU0ZmM1MGFjOTY0NmRiMDJiLi41
NGQyMTYzMWZiNDNkMmNkZTNjN2U1NjgyNDY0ZjcyZDMxMTAzYzNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtOTkwLDkgKzk5MCw3IEBAIHZv
aWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRp
bmdTdHlsZSogc3R5bGUsIE5vZGUqCiAgICAgICAgICAgICBpZiAoIWNoaWxkLT5jb250YWlucyh0
YXJnZXROb2RlKSAmJiBlbGVtZW50c1RvUHVzaERvd24uc2l6ZSgpKSB7CiAgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50c1RvUHVzaERvd24uc2l6ZSgpOyBpKysp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHdyYXBwZXIgPSBlbGVtZW50
c1RvUHVzaERvd25baV0tPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOwotICAgICAgICAg
ICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgICAgICAgICAgd3Jh
cHBlci0+cmVtb3ZlQXR0cmlidXRlKHN0eWxlQXR0ciwgZWMpOwotICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgICAgICAgICAgd3JhcHBlci0+cmVtb3ZlQXR0cmli
dXRlKHN0eWxlQXR0cik7CiAgICAgICAgICAgICAgICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0
aEVsZW1lbnQoY2hpbGQsIGNoaWxkLCB3cmFwcGVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFn
cmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAppbmRleCA2NDg0YzU4YTk2NDM2MjJiZDczYTcy
N2ZiY2JlZjQzNThhNTU5NWQ4Li5mNDBjMTVjYjRiN2EyNmMyMGU3ZjI5MjY2MWI5YmVkNGRiNTA0
MTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKQEAgLTEzNyw5ICsxMzcsNyBAQCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmNsb25lSGllcmFyY2h5
VW5kZXJOZXdCbG9jawogICAgIGZvciAoc2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpICE9
IDA7IC0taSkgewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gY2hpbGQgPSBhbmNlc3RvcnNbaSAt
IDFdLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKICAgICAgICAgLy8gSXQgc2hvdWxk
IGFsd2F5cyBiZSBva2F5IHRvIHJlbW92ZSBpZCBmcm9tIHRoZSBjbG9uZWQgZWxlbWVudHMsIHNp
bmNlIHRoZSBvcmlnaW5hbHMgYXJlIG5vdCBkZWxldGVkLgotICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICAgICAgY2hpbGQtPnJlbW92ZUF0dHJpYnV0ZShpZEF0dHIsIGVjKTsKLSAg
ICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIGNoaWxkLT5yZW1vdmVBdHRyaWJ1dGUoaWRBdHRy
KTsKICAgICAgICAgYXBwZW5kTm9kZShjaGlsZCwgcGFyZW50KTsKICAgICAgICAgcGFyZW50ID0g
Y2hpbGQucmVsZWFzZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0
RWxlbWVudENvbW1hbmQuY3BwCmluZGV4IDE5YmI4YmZiYjI1YWVjOGE5ZDVkZWRkZTQwMjU4NDc4
NWRhYjM3ODEuLmFjNzdiZjkxNmY1ODQ0MDExYjNmZjIwZTgyYTc2NjY3MjZhMjQwMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcApAQCAtNjEs
OCArNjEsNyBAQCB2b2lkIFNwbGl0RWxlbWVudENvbW1hbmQ6OmV4ZWN1dGVBcHBseSgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIERlbGV0ZSBpZCBhdHRyaWJ1dGUgZnJvbSB0aGUgc2Vjb25k
IGVsZW1lbnQgYmVjYXVzZSB0aGUgc2FtZSBpZCBjYW5ub3QgYmUgdXNlZCBmb3IgbW9yZSB0aGFu
IG9uZSBlbGVtZW50Ci0gICAgbV9lbGVtZW50Mi0+cmVtb3ZlQXR0cmlidXRlKEhUTUxOYW1lczo6
aWRBdHRyLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgbV9lbGVtZW50Mi0+cmVtb3ZlQXR0
cmlidXRlKEhUTUxOYW1lczo6aWRBdHRyKTsKIAogICAgIHNpemVfdCBzaXplID0gY2hpbGRyZW4u
c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA2NTczY2E2MThmZWUyMmZmODlhN2ViNWI1MWYyNDFm
MjhhNDZkMGY0Li5jMTlmZTk0M2ZiMjQzMjg4MjkwOGU4MGZkZTMyYTUxNjJhOTQ2YWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNzUyLDcgKzc1Miw3IEBAIHZvaWQgSFRN
TEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVuYWJsZWQsICJw
bGFpbnRleHQtb25seSIpKQogICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0
ciwgInBsYWludGV4dC1vbmx5Iik7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5h
YmxlZCwgImluaGVyaXQiKSkKLSAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGNvbnRlbnRlZGl0YWJs
ZUF0dHIsIGVjKTsKKyAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0dHIp
OwogICAgIGVsc2UKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggN2UwM2VjNmYxYWNkYzU4NDU5NjkwYWQ5ZDM1
ZjQ2MDkxYTZjN2FkYy4uMTU5NmQ2OGI2YzgwMTExZmM2NzliNmViOWJmYTQ1ZTVkZTgzNDA4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC01MzIsMTAgKzUz
Miw5IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUp
CiAgICAgLy8gV2Ugc2hvdWxkIHdyaXRlIGEgdGVzdCBjYXNlIHRvIHNob3cgdGhhdCBzZXR0aW5n
IHRvIHRoZSBlbXB0eSBzdHJpbmcgZG9lcyBub3QgcmVtb3ZlIHRoZQogICAgIC8vIGF0dHJpYnV0
ZSBpbiBvdGhlciBicm93c2VycyBhbmQgdGhlbiBmaXggdGhpcy4gTm90ZSB0aGF0IHNldHRpbmcg
dG8gbnVsbCAqZG9lcyogcmVtb3ZlCiAgICAgLy8gdGhlIGF0dHJpYnV0ZSBhbmQgc2V0QXR0cmli
dXRlIGltcGxlbWVudHMgdGhhdC4KLSAgICBpZiAodHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgcmVtb3ZlQXR0cmlidXRlKHR5cGVBdHRyLCBlYyk7
Ci0gICAgfSBlbHNlCisgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVBdHRy
aWJ1dGUodHlwZUF0dHIpOworICAgIGVsc2UKICAgICAgICAgc2V0QXR0cmlidXRlKHR5cGVBdHRy
LCB0eXBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKaW5kZXggN2E5ZjI2ZGU5ODE4NjkzMzgxNmE1NThlZTU0NjVjYWI4NDYyOTlmYS4u
NTQ2Yzc3ZDY1MzAwZTgwNGFlMDRlODE1Y2Y4ZTA5MTNjMWQ4MDlkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01MjgsOSArNTI4LDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW4KIAogICAgIGNvbnN0IE5hbWVkTm9kZU1hcCogYXR0
ck1hcCA9IHRvSFRNTEVsZW1lbnQoY2hpbGQpLT5hdHRyaWJ1dGVzKHRydWUpOwogICAgIGlmICgh
YXR0ck1hcCAmJiBuYW1lKSB7Ci0gICAgICAgIGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZSgqbmFt
ZSwgZWMpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQ291
bGQgbm90IHJlbW92ZSBhdHRyaWJ1dGUiOworICAgICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1
dGUoKm5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NDQsOSArNTQyLDcgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBlbGVtZW4KICAgICB9CiAKICAgICBpZiAoIWZvdW5kT3JpZ2luYWxB
dHRyaWJ1dGUgJiYgbmFtZSkgewotICAgICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoKm5h
bWUsIGVjKTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkNv
dWxkIG5vdCByZW1vdmUgYXR0cmlidXRlIjsKKyAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmli
dXRlKCpuYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTU1NCwxMiArNTUwLDgg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW4KIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92
ZUF0dHJpYnV0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW50SWQsIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0RWxlbWVudChl
cnJvclN0cmluZywgZWxlbWVudElkKTsKLSAgICBpZiAoZWxlbWVudCkgewotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKG5hbWUs
IGVjKTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkV4Y2Vw
dGlvbiB3aGlsZSByZW1vdmluZyBhdHRyaWJ1dGUiOwotICAgIH0KKyAgICBpZiAoZWxlbWVudCkK
KyAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKG5hbWUpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpyZW1vdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5v
ZGVJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCA1ZTY3ZmY1MmE1MjA1
MjVkZTM5NGM1YjJhMDZmNjE0ZDhhYWYwMzQwLi41NWY3MGY0NTMxZDJhODRhMDg0MmM1MGY2ZmY2
ODc4NjJkY2U0NDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xMDM1
LDExICsxMDM1LDExIEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6dHJhbnNmZXJVc2VBdHRyaWJ1dGVz
VG9SZXBsYWNlZEVsZW1lbnQoU1ZHRWxlbWVudCogZnJvbSwgU1ZHCiAKICAgICB0by0+c2V0QXR0
cmlidXRlc0Zyb21FbGVtZW50KCpmcm9tKTsKIAotICAgIHRvLT5yZW1vdmVBdHRyaWJ1dGUoU1ZH
TmFtZXM6OnhBdHRyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICB0by0+cmVtb3ZlQXR0cmli
dXRlKFNWR05hbWVzOjp5QXR0ciwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgdG8tPnJlbW92
ZUF0dHJpYnV0ZShTVkdOYW1lczo6d2lkdGhBdHRyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAg
ICB0by0+cmVtb3ZlQXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKLSAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFNWR05hbWVzOjp4
QXR0cik7CisgICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShTVkdOYW1lczo6eUF0dHIpOworICAgIHRv
LT5yZW1vdmVBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0cik7CisgICAgdG8tPnJlbW92ZUF0
dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0cik7CisgICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShY
TGlua05hbWVzOjpocmVmQXR0cik7CiB9CiAKIGJvb2wgU1ZHVXNlRWxlbWVudDo6c2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2ViZWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAKaW5k
ZXggMjFlODAwNGVhYzI3ODI0OGRlZTVkMmIzMGJkY2NjNjE4NDUxYTA4NC4uMzAxM2Y3ZjY5ZWNi
NDZiMTExMTMxY2Y3Y2ZlOTU3MDZmOTVmNzhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYmVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVt
ZW50LmNwcApAQCAtNDYzLDggKzQ2Myw3IEBAIHZvaWQgUVdlYkVsZW1lbnQ6OnJlbW92ZUF0dHJp
YnV0ZShjb25zdCBRU3RyaW5nICZuYW1lKQogewogICAgIGlmICghbV9lbGVtZW50KQogICAgICAg
ICByZXR1cm47Ci0gICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb24gPSAwOwotICAgIG1fZWxlbWVu
dC0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbik7CisgICAgbV9lbGVtZW50LT5yZW1v
dmVBdHRyaWJ1dGUobmFtZSk7CiB9CiAKIC8qIQpAQCAtMjEzNCw0ICsyMTMzLDMgQEAgdm9pZCBR
dFdlYkVsZW1lbnRSdW50aW1lOjppbml0aWFsaXplKCkKICAgICBKU0M6OkJpbmRpbmdzOjpyZWdp
c3RlckN1c3RvbVR5cGUoaWQsIGNvbnZlcnRKU1ZhbHVlVG9XZWJFbGVtZW50VmFyaWFudCwgY29u
dmVydFdlYkVsZW1lbnRWYXJpYW50VG9KU1ZhbHVlKTsKICNlbmRpZgogfQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120093</attachid>
            <date>2011-12-20 15:02:27 -0800</date>
            <delta_ts>2011-12-20 15:10:04 -0800</delta_ts>
            <desc>Update setAttribute to use indices as well</desc>
            <filename>bug-74953-20111220150226.patch</filename>
            <type>text/plain</type>
            <size>29541</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYxODY2NGFhOTQ3NmFk
MmM1YjhkNjRiZTY3YmIxNzk1YTNkYmNiNy4uNGY3MmRiMDBjZTE2ZWRlMmVlZDMwOThiYWNkMzk3
MDJiNzE0Nzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4IEBACiAyMDExLTEyLTIwICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5
IHdvcmsgd2hlbiByZW1vdmluZyBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWYXJpb3VzIGNvZGVwYXRocyBp
biBFbGVtZW50IGFuZCBOYW1lZE5vZGVNYXAgcmVwZWF0ZWRseSBzZWFyY2gKKyAgICAgICAgdGhy
b3VnaCB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIGR1cmluZyBhIHNpbmdsZSBvcGVyYXRpb24uIFRv
IGF2b2lkCisgICAgICAgIHRoaXMsIEkndmUgYWRkZWQgbmV3IGdldHRlcnMgdG8gTmFtZWROb2Rl
TWFwIHRoYXQgcmV0dXJuIGluZGljZXMKKyAgICAgICAgcmF0aGVyIHRoYW4gQXR0cmlidXRlKnMg
KHRoZXkgcmV0dXJuIFdURjo6bm90Rm91bmQgaWYgbm8gbWF0Y2ggaXMKKyAgICAgICAgZm91bmQp
LiBUaGVzZSBuZXcgbWV0aG9kcyBhcmUgbm93IHVzZWQgZHVyaW5nIHJlbW92ZUF0dHJpYnV0ZQor
ICAgICAgICBvcGVyYXRpb25zLCBhcyB3ZWxsIGFzIHNldEF0dHJpYnV0ZSBhbmQgTmFtZWROb2Rl
TWFwOjpzZXROYW1lZEl0ZW0KKyAgICAgICAgKGFsb25nIHdpdGggYSBuZXcgcmVwbGFjZUF0dHJp
YnV0ZSBoZWxwZXIgbWV0aG9kKS4KKworICAgICAgICBUaGUgb3RoZXIgb3B0aW1pemF0aW9uIGhl
cmUgaW52b2x2ZXMgdGhlIGNyZWF0aW9uL2Rlc3RydWN0aW9uCisgICAgICAgIG9mIG5ldmVyLXJl
ZmVyZW5jZXMgQXR0ciBub2Rlcy4gVGhpcyBpcyBub3cgYXZvaWRlZCBieSBjYWxsaW5nCisgICAg
ICAgIE5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmlidXRlIGRpcmVjdGx5IGluc3RlYWQgb2YgZ29p
bmcgdGhyb3VnaAorICAgICAgICBOYW1lZE5vZGVNYXA6OnJlbW92ZU5hbWVkSXRlbS4KKworICAg
ICAgICBBcyBhIGNsZWFudXAgYWZ0ZXIgdGhlIGFib3ZlIGNoYW5nZXMsIHRoZSBFeGNlcHRpb25D
b2RlIGFyZ3VtZW50IGlzCisgICAgICAgIGdvbmUgZnJvbSBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1
dGUgYW5kIGZyaWVuZHMgKGl0IHdhcyBuZXZlciBzZXQKKyAgICAgICAgcHJldmlvdXNseSkuIFRo
ZSBidWxrIG9mIHRoZSBmaWxlcyBtZW50aW9uZWQgYmVsb3cgYXJlIHNpbXBseSB1cGRhdGluZwor
ICAgICAgICBjYWxsZXJzIHRvIHRoZXNlIG1ldGhvZHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IgZXhwZWN0ZWQuCisKKyAgICAgICAgKiBkb20vRGF0YXNl
dERPTVN0cmluZ01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhc2V0RE9NU3RyaW5nTWFw
OjpkZWxldGVJdGVtKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1v
dmVBdHRyaWJ1dGVOUyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwpOgorICAg
ICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAg
ICAqIGRvbS9OYW1lZE5vZGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFw
OjpzZXROYW1lZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpyZW1vdmVO
YW1lZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJ
dGVtSW5kZXhTbG93Q2FzZSk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OnJlcGxh
Y2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpyZW1vdmVBdHRy
aWJ1dGUpOgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpOYW1l
ZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpOYW1l
ZE5vZGVNYXA6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxl
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERv
d25JbmxpbmVTdHlsZUFyb3VuZE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kOjpjbG9uZUhpZXJhcmNoeVVuZGVyTmV3QmxvY2spOgorICAgICAg
ICAqIGVkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
cGxpdEVsZW1lbnRDb21tYW5kOjpleGVjdXRlQXBwbHkpOgorICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0
YWJsZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFR5cGUpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6c2V0QXR0cmlidXRlc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp0cmFuc2ZlclVzZUF0dHJpYnV0ZXNU
b1JlcGxhY2VkRWxlbWVudCk6CisKKzIwMTEtMTItMjAgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJv
bWl1bS5vcmc+CisKICAgICAgICAgUmVtb3ZlIG5vLW9wIERPTUF0dHIqIGV2ZW50IGRpc3BhdGNo
IG1ldGhvZHMgZnJvbSBFbGVtZW50CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDk0NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDI5MjhiY2RlYTdhNTE3MTJk
NGQ5YjU5ZWNiMzBjMzkzYjYyZmU0YTIuLjRjYWViYzZkMjYyMDE2MTVhYWY2ZDFiMDdhZDkzMzY5
YmZlNjc4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTItMjAgIEFk
YW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQXZvaWQgdW5uZWNlc3Nh
cnkgd29yayB3aGVuIHJlbW92aW5nIGF0dHJpYnV0ZXMgZnJvbSBhbiBlbGVtZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDk1MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50
LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOiBVcGRhdGVkIGEg
Y2FsbGVyIG9mCisgICAgICAgIFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSB0byBy
ZW1vdmUgRXhjZXB0aW9uQ29kZSBhcmd1bWVudC4KKwogMjAxMS0xMi0yMCAgUmFmYWVsIEJyYW5k
YW8gIDxyYWZhZWwubG9ib0BvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0gRXh0ZW5kIFFR
dWlja1dlYnZpZXc6Om5hdmlnYXRpb25SZXF1ZXN0ZWQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YXNldERPTVN0cmluZ01hcC5jcHAKaW5kZXggZTY4ZTlkOTU5MjFiMzg2NTA5NjBhMDFhM2Nk
MTUyYjZlNGJlNzcxZi4uZTBkODc1ZGNiYjBkN2JlNjA0N2YxN2YzYTExMWVmNTkxMWYwZThiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcApAQCAtMTk5LDgg
KzE5OSw3IEBAIHZvaWQgRGF0YXNldERPTVN0cmluZ01hcDo6ZGVsZXRlSXRlbShjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgRXhjZXB0aW9uQ29kZSBkdW1teTsKLSAgICBtX2VsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZShj
b252ZXJ0UHJvcGVydHlOYW1lVG9BdHRyaWJ1dGVOYW1lKG5hbWUpLCBkdW1teSk7CisgICAgbV9l
bGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoY29udmVydFByb3BlcnR5TmFtZVRvQXR0cmlidXRlTmFt
ZShuYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCBiMTUwMDNjZDJhZjI0MzZkMTljOTM5ZGExZGY1ODM0ZWU4OGQ1ZmY5Li41NTgyNTE4
YTJkYzk1YTEwMzNiY2EyNThjZjY1ZGZhMDBlNjE4NDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC0xODgsMjQgKzE4OCwyNiBAQCB2b2lkIEVsZW1lbnQ6OmVucXVldWVBdHRyaWJ1dGVzTXV0
YXRpb25SZWNvcmRJZlJlcXVlc3RlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdAogfQogI2VuZGlm
CiAKLXZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKLSAgICBpZiAobV9hdHRyaWJ1dGVNYXApIHsKLSAg
ICAgICAgZWMgPSAwOwotICAgICAgICBSZWZQdHI8Tm9kZT4gYXR0ck5vZGUgPSBtX2F0dHJpYnV0
ZU1hcC0+cmVtb3ZlTmFtZWRJdGVtKG5hbWUsIGVjKTsKLSAgICAgICAgaWYgKGVjID09IE5PVF9G
T1VORF9FUlIpCi0gICAgICAgICAgICBlYyA9IDA7Ci0gICAgfQorICAgIGlmICghbV9hdHRyaWJ1
dGVNYXApCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBpbmRleCA9IG1fYXR0cmlidXRl
TWFwLT5nZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZv
dW5kKQorICAgICAgICByZXR1cm47CisKKyAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKG5hbWUsIG1f
YXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGluZGV4KS0+dmFsdWUoKSwgbnVsbEF0b20pOwor
CisgICAgbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZUF0dHJpYnV0ZShpbmRleCk7CiB9CiAKIHZvaWQg
RWxlbWVudDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBi
b29sIGIpCiB7CiAgICAgaWYgKGIpCiAgICAgICAgIHNldEF0dHJpYnV0ZShuYW1lLCBlbXB0eUF0
b20pOwotICAgIGVsc2UgewotICAgICAgICBFeGNlcHRpb25Db2RlIGV4OwotICAgICAgICByZW1v
dmVBdHRyaWJ1dGUobmFtZSwgZXgpOwotICAgIH0KKyAgICBlbHNlCisgICAgICAgIHJlbW92ZUF0
dHJpYnV0ZShuYW1lKTsKIH0KIAogTm9kZTo6Tm9kZVR5cGUgRWxlbWVudDo6bm9kZVR5cGUoKSBj
b25zdApAQCAtNjI3LDIwICs2MjksMjAgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLAogCiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNl
KHRoaXMpID8gbmFtZS5sb3dlcigpIDogbmFtZTsKIAotICAgIC8vIEFsbG9jYXRlIGF0dHJpYnV0
ZSBtYXAgaWYgbmVjZXNzYXJ5LgotICAgIEF0dHJpYnV0ZSogb2xkID0gYXR0cmlidXRlcyhmYWxz
ZSktPmdldEF0dHJpYnV0ZUl0ZW0obG9jYWxOYW1lLCBmYWxzZSk7Ci0gICAgc2V0QXR0cmlidXRl
SW50ZXJuYWwob2xkLCBvbGQgPyBvbGQtPm5hbWUoKSA6IFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IGxvY2FsTmFtZSwgbnVsbEF0b20pLCB2YWx1ZSk7CisgICAgc2l6ZV90IGluZGV4ID0gYXR0cmli
dXRlcyhmYWxzZSktPmdldEF0dHJpYnV0ZUl0ZW1JbmRleChsb2NhbE5hbWUsIGZhbHNlKTsKKyAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSA9IGluZGV4ICE9IG5vdEZvdW5kID8gbV9hdHRy
aWJ1dGVNYXAtPmF0dHJpYnV0ZUl0ZW0oaW5kZXgpLT5uYW1lKCkgOiBRdWFsaWZpZWROYW1lKG51
bGxBdG9tLCBsb2NhbE5hbWUsIG51bGxBdG9tKTsKKyAgICBzZXRBdHRyaWJ1dGVJbnRlcm5hbChp
bmRleCwgcU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICAvLyBBbGxvY2F0ZSBhdHRyaWJ1dGUgbWFwIGlmIG5lY2Vzc2FyeS4KLSAgICBBdHRyaWJ1dGUq
IG9sZCA9IGF0dHJpYnV0ZXMoZmFsc2UpLT5nZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOwotICAgIHNl
dEF0dHJpYnV0ZUludGVybmFsKG9sZCwgbmFtZSwgdmFsdWUpOworICAgIHNldEF0dHJpYnV0ZUlu
dGVybmFsKGF0dHJpYnV0ZXMoZmFsc2UpLT5nZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSksIG5h
bWUsIHZhbHVlKTsKIH0KIAotaW5saW5lIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJu
YWwoQXR0cmlidXRlKiBvbGQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCitpbmxpbmUgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5h
bChzaXplX3QgaW5kZXgsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCiB7CisgICAgQXR0cmlidXRlKiBvbGQgPSBpbmRleCAhPSBub3RGb3VuZCA/
IG1fYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGluZGV4KSA6IDA7CisKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVu
dCgpLCB0aGlzKTsKQEAgLTY1MSw3ICs2NTMsNyBAQCBpbmxpbmUgdm9pZCBFbGVtZW50OjpzZXRB
dHRyaWJ1dGVJbnRlcm5hbChBdHRyaWJ1dGUqIG9sZCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbgog
ICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUobmFtZSwgb2xkID8gb2xkLT52YWx1ZSgpIDogbnVsbEF0
b20sIHZhbHVlKTsKIAogICAgIGlmIChvbGQgJiYgdmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIG1f
YXR0cmlidXRlTWFwLT5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7CisgICAgICAgIG1fYXR0cmlidXRl
TWFwLT5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgpOwogICAgIGVsc2UgaWYgKCFvbGQgJiYgIXZhbHVl
LmlzTnVsbCgpKQogICAgICAgICBtX2F0dHJpYnV0ZU1hcC0+YWRkQXR0cmlidXRlKGNyZWF0ZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG9sZCkgewpAQCAtMTQ2MSwyNSAr
MTQ2MywzMSBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbgogICAgIHNldEF0dHJpYnV0ZShxTmFt
ZSwgdmFsdWUpOwogfQogCi12b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1
dGUoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CisgICAgaWYgKCFtX2F0dHJpYnV0
ZU1hcCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGxvY2FsTmFtZSA9IHNob3VsZEln
bm9yZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBuYW1lOworICAgIHNpemVf
dCBpbmRleCA9IG1fYXR0cmlidXRlTWFwLT5nZXRBdHRyaWJ1dGVJdGVtSW5kZXgobG9jYWxOYW1l
LCBmYWxzZSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisK
KyAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IG1fYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVt
KGluZGV4KTsKKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0
dHIoZG9jdW1lbnQoKSwgdGhpcyk7CisKKyAgICBpZiAoIWF0dHJpYnV0ZS0+aXNOdWxsKCkpCisg
ICAgICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+
dmFsdWUoKSwgbnVsbEF0b20pOworCisgICAgbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZUF0dHJpYnV0
ZShpbmRleCk7CiAKLSAgICBpZiAobV9hdHRyaWJ1dGVNYXApIHsKLSAgICAgICAgZWMgPSAwOwot
ICAgICAgICBSZWZQdHI8Tm9kZT4gYXR0ck5vZGUgPSBtX2F0dHJpYnV0ZU1hcC0+cmVtb3ZlTmFt
ZWRJdGVtKGxvY2FsTmFtZSwgZWMpOwotICAgICAgICBpZiAoZWMgPT0gTk9UX0ZPVU5EX0VSUikK
LSAgICAgICAgICAgIGVjID0gMDsKLSAgICB9Ci0gICAgCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZW1vdmVET01BdHRyKGRvY3VtZW50KCksIHRoaXMsIG5hbWUpOwogfQogCi12
b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJ
LCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEVsZW1l
bnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBT
dHJpbmcmIGxvY2FsTmFtZSkKIHsKLSAgICByZW1vdmVBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpLCBlYyk7CisgICAgcmVtb3ZlQXR0cmli
dXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSk7CiB9
CiAKIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZShjb25zdCBTdHJp
bmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2MjBhMGIzOWQ1OGY5ZGRlYTM4YWNhNjk0
OTU3NDA4OTQyNDVmYTA4Li45MmQ1OWM5MTEyMDk1NTY3OGQ0NzE5YTM0ZTIyZWU5NjEyZDM0NWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAg
ICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAKICAgICAvLyBUeXBlZCBnZXR0ZXJzIGFuZCBzZXR0ZXJzIGZvciBsYW5n
dWFnZSBiaW5kaW5ncy4KICAgICBpbnQgZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3Q7CkBAIC0xNzYsOCArMTc2LDggQEAgcHVibGlj
OgogICAgIC8vIFJldHVybnMgdGhlIGFic29sdXRlIGJvdW5kaW5nIGJveCB0cmFuc2xhdGVkIGlu
dG8gc2NyZWVuIGNvb3JkaW5hdGVzOgogICAgIExheW91dFJlY3Qgc2NyZWVuUmVjdCgpIGNvbnN0
OwogCi0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVz
cGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgcmVtb3Zl
QXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9j
YWxOYW1lKTsKIAogICAgIFBhc3NSZWZQdHI8QXR0cj4gZ2V0QXR0cmlidXRlTm9kZShjb25zdCBT
dHJpbmcmIG5hbWUpOwogICAgIFBhc3NSZWZQdHI8QXR0cj4gZ2V0QXR0cmlidXRlTm9kZU5TKGNv
bnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSk7CkBAIC0z
OTUsNyArMzk1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0
OwogCi0gICAgdm9pZCBzZXRBdHRyaWJ1dGVJbnRlcm5hbChBdHRyaWJ1dGUqIG9sZCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOworICAgIHZvaWQgc2V0
QXR0cmlidXRlSW50ZXJuYWwoc2l6ZV90IGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEF0dHJpYnV0
ZT4gY3JlYXRlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKTsKICAgICAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5k
ZXggODEwMzJlNjZhNDIwYzJhNzM5MmIzYzNlZGFkMzdiZTEyMWQyNWE0OC4uODFmYjI2MDM1MWU0
MzUyZjEwNWY0NzRjMmQ1YzMzODNhOWJhOWRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAt
MzMsOCArMzMsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtPbGRTdHlsZU9iakNdIHZvaWQg
c2V0QXR0cmlidXRlKGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5n
IG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIHZhbHVlKQogICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGluIFtP
cHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG5hbWUpCi0gICAgICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4g
W09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgbmFtZSk7CiAgICAgICAg
IEF0dHIgZ2V0QXR0cmlidXRlTm9kZShpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVd
IERPTVN0cmluZyBuYW1lKTsKICAgICAgICAgQXR0ciBzZXRBdHRyaWJ1dGVOb2RlKGluIFtPcHRp
b25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gQXR0ciBuZXdBdHRyKQogICAgICAgICAgICAgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CkBAIC01MSw4ICs1MCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdp
dGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyB2YWx1ZSkKICAgICAgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOwogICAgICAgICBbT2xkU3R5bGVPYmpDXSB2b2lkIHJlbW92ZUF0dHJpYnV0ZU5T
KGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcg
bG9jYWxOYW1lKQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFt
ZSk7CiAgICAgICAgIFtPbGRTdHlsZU9iakNdIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1l
TlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLE9wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZh
bHVlXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRW
YWx1ZV0gRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAgICAgICAgIFtPbGRTdHlsZU9iakNdIEF0dHIg
Z2V0QXR0cmlidXRlTm9kZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZyxPcHRpb25hbD1D
YWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05hbWVkTm9kZU1hcC5jcHAKaW5kZXggODZiN2RlMzhkMGRmYWQ3NjM1ZTFkMmYzZmJjNjRmMjNm
NjM1YjcyMy4uNzNjYzE5ZmI3YTQxNGZhOTkyODlhNWMwYzNkNjQ4MGRiMjk4YWM3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAKQEAgLTEwOCw3ICsxMDgsOCBAQCBQYXNzUmVmUHRy
PE5vZGU+IE5hbWVkTm9kZU1hcDo6c2V0TmFtZWRJdGVtKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIEF0dHIqIGF0dHIgPSBzdGF0aWNfY2FzdDxBdHRyKj4obm9kZSk7CiAKICAg
ICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHItPmF0dHIoKTsKLSAgICBBdHRyaWJ1dGUqIG9s
ZEF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZUl0ZW0oYXR0cmlidXRlLT5uYW1lKCkpOworICAgIHNp
emVfdCBpbmRleCA9IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChhdHRyaWJ1dGUtPm5hbWUoKSk7Cisg
ICAgQXR0cmlidXRlKiBvbGRBdHRyaWJ1dGUgPSBpbmRleCAhPSBub3RGb3VuZCA/IGF0dHJpYnV0
ZUl0ZW0oaW5kZXgpIDogMDsKICAgICBpZiAob2xkQXR0cmlidXRlID09IGF0dHJpYnV0ZSkKICAg
ICAgICAgcmV0dXJuIG5vZGU7IC8vIHdlIGtub3cgYWJvdXQgaXQgYWxyZWFkeQogCkBAIC0xMjUs
MTAgKzEyNiw5IEBAIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpzZXROYW1lZEl0ZW0o
Tm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgUmVmUHRyPEF0dHI+IG9sZEF0dHI7
CiAgICAgaWYgKG9sZEF0dHJpYnV0ZSkgewogICAgICAgICBvbGRBdHRyID0gb2xkQXR0cmlidXRl
LT5jcmVhdGVBdHRySWZOZWVkZWQobV9lbGVtZW50KTsKLSAgICAgICAgcmVtb3ZlQXR0cmlidXRl
KGF0dHJpYnV0ZS0+bmFtZSgpKTsKLSAgICB9Ci0KLSAgICBhZGRBdHRyaWJ1dGUoYXR0cmlidXRl
KTsKKyAgICAgICAgcmVwbGFjZUF0dHJpYnV0ZShpbmRleCwgYXR0cmlidXRlKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiAgICAgcmV0dXJuIG9sZEF0dHIu
cmVsZWFzZSgpOwogfQogCkBAIC0xNDQsMTcgKzE0NCwxOCBAQCBQYXNzUmVmUHRyPE5vZGU+IE5h
bWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIEV4
Y2VwdAogewogICAgIEFTU0VSVChtX2VsZW1lbnQpOwogCi0gICAgQXR0cmlidXRlKiBhdHRyaWJ1
dGUgPSBnZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOwotICAgIGlmICghYXR0cmlidXRlKSB7CisgICAg
c2l6ZV90IGluZGV4ID0gZ2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOworICAgIGlmIChpbmRl
eCA9PSBub3RGb3VuZCkgewogICAgICAgICBlYyA9IE5PVF9GT1VORF9FUlI7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAorICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRlSXRl
bShpbmRleCk7CiAgICAgUmVmUHRyPEF0dHI+IGF0dHIgPSBhdHRyaWJ1dGUtPmNyZWF0ZUF0dHJJ
Zk5lZWRlZChtX2VsZW1lbnQpOwogCiAgICAgbV9lbGVtZW50LT53aWxsTW9kaWZ5QXR0cmlidXRl
KGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCksIG51bGxBdG9tKTsKIAotICAg
IHJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICByZW1vdmVBdHRyaWJ1dGUoaW5kZXgpOwogICAg
IHJldHVybiBhdHRyLnJlbGVhc2UoKTsKIH0KIApAQCAtMTcxLDcgKzE3Miw3IEBAIHZvaWQgTmFt
ZWROb2RlTWFwOjpjb3B5QXR0cmlidXRlc1RvVmVjdG9yKFZlY3RvcjxSZWZQdHI8QXR0cmlidXRl
PiA+JiBjb3B5KQogICAgIGNvcHkgPSBtX2F0dHJpYnV0ZXM7CiB9CiAKLUF0dHJpYnV0ZSogTmFt
ZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtU2xvd0Nhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0CitzaXplX3QgTmFtZWROb2RlTWFw
OjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXhTbG93Q2FzZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wg
c2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBsZW4gPSBs
ZW5ndGgoKTsKIApAQCAtMTgwLDE2ICsxODEsMTYgQEAgQXR0cmlidXRlKiBOYW1lZE5vZGVNYXA6
OmdldEF0dHJpYnV0ZUl0ZW1TbG93Q2FzZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWwK
ICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBtX2F0dHJpYnV0ZXNbaV0t
Pm5hbWUoKTsKICAgICAgICAgaWYgKCFhdHRyTmFtZS5oYXNQcmVmaXgoKSkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgYXR0ck5hbWUubG9jYWxOYW1lKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2F0dHJp
YnV0ZXNbaV0uZ2V0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV291bGQgYmUgZmFzdGVyIHRvIGRvIHRoaXMgY29t
cGFyaXNvbiB3aXRob3V0IGNhbGxpbmcgdG9TdHJpbmcsIHdoaWNoCiAgICAgICAgICAgICAvLyBn
ZW5lcmF0ZXMgYSB0ZW1wb3Jhcnkgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpb24uIEJ1dCB0aGlzIGJy
YW5jaCBpcyBvbmx5IHJlYWNoZWQKICAgICAgICAgICAgIC8vIGlmIHRoZSBhdHRyaWJ1dGUgbmFt
ZSBoYXMgYSBwcmVmaXgsIHdoaWNoIGlzIHJhcmUgaW4gSFRNTC4KICAgICAgICAgICAgIGlmIChl
cXVhbFBvc3NpYmx5SWdub3JpbmdDYXNlKG5hbWUsIGF0dHJOYW1lLnRvU3RyaW5nKCksIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2F0dHJpYnV0
ZXNbaV0uZ2V0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5vdEZvdW5kOwogfQogCiB2b2lkIE5hbWVkTm9k
ZU1hcDo6Y2xlYXJBdHRyaWJ1dGVzKCkKQEAgLTI1OSwzNCArMjYwLDM4IEBAIHZvaWQgTmFtZWRO
b2RlTWFwOjphZGRBdHRyaWJ1dGUoUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IHBycEF0dHJpYnV0ZSkK
ICAgICB9CiB9CiAKLXZvaWQgTmFtZWROb2RlTWFwOjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSkKK3ZvaWQgTmFtZWROb2RlTWFwOjpyZXBsYWNlQXR0cmlidXRlKHNp
emVfdCBpbmRleCwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZSkKIHsKLSAgICB1bnNp
Z25lZCBsZW4gPSBsZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IGxlbjsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgaWYgKG1fYXR0cmlidXRl
c1tpXS0+bmFtZSgpLm1hdGNoZXMobmFtZSkpIHsKLSAgICAgICAgICAgIGluZGV4ID0gaTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgQVNTRVJUKGluZGV4IDwgbGVuZ3RoKCkp
OworCisgICAgaWYgKEF0dHIqIGF0dHIgPSBtX2F0dHJpYnV0ZXNbaW5kZXhdLT5hdHRyKCkpCisg
ICAgICAgIGF0dHItPm1fZWxlbWVudCA9IDA7CisgICAgbV9hdHRyaWJ1dGVzW2luZGV4XSA9IGF0
dHJpYnV0ZTsKKyAgICBpZiAoQXR0ciogYXR0ciA9IG1fYXR0cmlidXRlc1tpbmRleF0tPmF0dHIo
KSkKKyAgICAgICAgYXR0ci0+bV9lbGVtZW50ID0gbV9lbGVtZW50OworCisgICAgaWYgKG1fZWxl
bWVudCkgeworICAgICAgICBtX2VsZW1lbnQtPmF0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1dGVz
W2luZGV4XS5nZXQoKSk7CisgICAgICAgIGlmIChtX2F0dHJpYnV0ZXNbaW5kZXhdLT5uYW1lKCkg
IT0gc3R5bGVBdHRyKQorICAgICAgICAgICAgbV9lbGVtZW50LT5kaXNwYXRjaFN1YnRyZWVNb2Rp
ZmllZEV2ZW50KCk7CiAgICAgfQorfQogCi0gICAgaWYgKGluZGV4ID49IGxlbikKLSAgICAgICAg
cmV0dXJuOwordm9pZCBOYW1lZE5vZGVNYXA6OnJlbW92ZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgp
Cit7CisgICAgQVNTRVJUKGluZGV4IDwgbGVuZ3RoKCkpOwogCi0gICAgLy8gUmVtb3ZlIHRoZSBh
dHRyaWJ1dGUgZnJvbSB0aGUgbGlzdAotICAgIFJlZlB0cjxBdHRyaWJ1dGU+IGF0dHIgPSBtX2F0
dHJpYnV0ZXNbaW5kZXhdLmdldCgpOwotICAgIGlmIChBdHRyKiBhID0gbV9hdHRyaWJ1dGVzW2lu
ZGV4XS0+YXR0cigpKQotICAgICAgICBhLT5tX2VsZW1lbnQgPSAwOworICAgIFJlZlB0cjxBdHRy
aWJ1dGU+IGF0dHJpYnV0ZSA9IG1fYXR0cmlidXRlc1tpbmRleF07CisgICAgaWYgKEF0dHIqIGF0
dHIgPSBhdHRyaWJ1dGUtPmF0dHIoKSkKKyAgICAgICAgYXR0ci0+bV9lbGVtZW50ID0gMDsKIAog
ICAgIG1fYXR0cmlidXRlcy5yZW1vdmUoaW5kZXgpOwogCi0gICAgLy8gTm90aWZ5IHRoZSBlbGVt
ZW50IHRoYXQgdGhlIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkCi0gICAgLy8gZGlzcGF0Y2gg
YXBwcm9wcmlhdGUgbXV0YXRpb24gZXZlbnRzCi0gICAgaWYgKG1fZWxlbWVudCAmJiAhYXR0ci0+
bV92YWx1ZS5pc051bGwoKSkgewotICAgICAgICBBdG9taWNTdHJpbmcgdmFsdWUgPSBhdHRyLT5t
X3ZhbHVlOwotICAgICAgICBhdHRyLT5tX3ZhbHVlID0gbnVsbEF0b207Ci0gICAgICAgIG1fZWxl
bWVudC0+YXR0cmlidXRlQ2hhbmdlZChhdHRyLmdldCgpKTsKLSAgICAgICAgYXR0ci0+bV92YWx1
ZSA9IHZhbHVlOworICAgIGlmIChtX2VsZW1lbnQgJiYgIWF0dHJpYnV0ZS0+bV92YWx1ZS5pc051
bGwoKSkgeworICAgICAgICBBdG9taWNTdHJpbmcgdmFsdWUgPSBhdHRyaWJ1dGUtPm1fdmFsdWU7
CisgICAgICAgIGF0dHJpYnV0ZS0+bV92YWx1ZSA9IG51bGxBdG9tOworICAgICAgICBtX2VsZW1l
bnQtPmF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlLmdldCgpKTsKKyAgICAgICAgYXR0cmlidXRl
LT5tX3ZhbHVlID0gdmFsdWU7CiAgICAgfQogICAgIGlmIChtX2VsZW1lbnQpCiAgICAgICAgIG1f
ZWxlbWVudC0+ZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVk
Tm9kZU1hcC5oCmluZGV4IDM0ZjM4NjA0NjdjZmVjZjVjOWQyYWUwZjg1OTAzNTFlYWFlOGFhNjQu
LjM1MzQwMTQ4Mzk1YjQzYTY5ODVjZDUzYTc0NzcwOTM4NjEwNTA5OGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TmFtZWROb2RlTWFwLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5o
IgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm90Rm91bmQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NSw2ICs2Niw3IEBAIHB1YmxpYzoKIAog
ICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlSXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbV9hdHRyaWJ1dGVzW2luZGV4XS5nZXQoKTsgfQogICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmli
dXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgc2l6ZV90IGdldEF0dHJp
YnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAKICAgICB2b2lkIGNv
cHlBdHRyaWJ1dGVzVG9WZWN0b3IoVmVjdG9yPFJlZlB0cjxBdHRyaWJ1dGU+ID4mKTsKIApAQCAt
ODksNiArOTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGRvIG5vIGVycm9y
IGNoZWNraW5nLgogICAgIHZvaWQgYWRkQXR0cmlidXRlKFBhc3NSZWZQdHI8QXR0cmlidXRlPik7
CiAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZv
aWQgcmVtb3ZlQXR0cmlidXRlKHNpemVfdCBpbmRleCk7CiAKICAgICBFbGVtZW50KiBlbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAKQEAgLTExMCw5ICsxMTMsMTEgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRldGFjaEF0dHJpYnV0ZXNGcm9tRWxlbWVudCgpOwogICAgIHZvaWQg
ZGV0YWNoRnJvbUVsZW1lbnQoKTsKICAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0Owot
ICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbVNsb3dDYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKKyAgICBzaXplX3QgZ2V0
QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVB
dHRyaWJ1dGVDYXNlKSBjb25zdDsKKyAgICBzaXplX3QgZ2V0QXR0cmlidXRlSXRlbUluZGV4U2xv
d0Nhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Up
IGNvbnN0OwogICAgIHZvaWQgc2V0QXR0cmlidXRlcyhjb25zdCBOYW1lZE5vZGVNYXAmKTsKICAg
ICB2b2lkIGNsZWFyQXR0cmlidXRlcygpOworICAgIHZvaWQgcmVwbGFjZUF0dHJpYnV0ZShzaXpl
X3QgaW5kZXgsIFBhc3NSZWZQdHI8QXR0cmlidXRlPik7CiAgICAgaW50IGRlY2xDb3VudCgpIGNv
bnN0OwogCiAgICAgaW50IG1fbWFwcGVkQXR0cmlidXRlQ291bnQ7CkBAIC0xMjQsMzQgKzEyOSw1
OSBAQCBwcml2YXRlOgogCiBpbmxpbmUgQXR0cmlidXRlKiBOYW1lZE5vZGVNYXA6OmdldEF0dHJp
YnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKLSAgICB1bnNpZ25l
ZCBsZW4gPSBsZW5ndGgoKTsKKyAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJdGVtSW5k
ZXgobmFtZSk7CisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gbV9h
dHRyaWJ1dGVzW2luZGV4XS5nZXQoKTsKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHNpemVf
dCBOYW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lKSBjb25zdAoreworICAgIHNpemVfdCBsZW4gPSBsZW5ndGgoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgaWYgKG1fYXR0cmlidXRlc1tp
XS0+bmFtZSgpLm1hdGNoZXMobmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVz
W2ldLmdldCgpOworICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgfQorICAgIHJldHVybiBub3RG
b3VuZDsKK30KKworaW5saW5lIEF0dHJpYnV0ZSogTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJ
dGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBj
b25zdAoreworICAgIHNpemVfdCBpbmRleCA9IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lLCBz
aG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCisg
ICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXNbaW5kZXhdLmdldCgpOwogICAgIHJldHVybiAwOwog
fQogCiAvLyBXZSB1c2UgYSBib29sZWFuIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGNhbGxpbmcgc2hv
dWxkSWdub3JlQXR0cmlidXRlQ2FzZSBzbyB0aGF0IHRoZSBjYWxsZXIKIC8vIGNhbiB0dW5lIHRo
ZSBiZWhhdmlvciAoaGFzQXR0cmlidXRlIGlzIGNhc2Ugc2Vuc2l0aXZlIHdoZXJlYXMgZ2V0QXR0
cmlidXRlIGlzIG5vdCkuCi1pbmxpbmUgQXR0cmlidXRlKiBOYW1lZE5vZGVNYXA6OmdldEF0dHJp
YnV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNh
c2UpIGNvbnN0CitpbmxpbmUgc2l6ZV90IE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBj
b25zdAogewogICAgIHVuc2lnbmVkIGxlbiA9IGxlbmd0aCgpOwogICAgIGJvb2wgZG9TbG93Q2hl
Y2sgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlOwotICAgIAorCiAgICAgLy8gT3B0aW1pemUg
Zm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBhdHRyaWJ1dGUgZXhpc3RzIGFuZCBpdHMgbmFtZSBleGFj
dGx5IG1hdGNoZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CiAg
ICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gbV9hdHRyaWJ1dGVzW2ldLT5u
YW1lKCk7CiAgICAgICAgIGlmICghYXR0ck5hbWUuaGFzUHJlZml4KCkpIHsKICAgICAgICAgICAg
IGlmIChuYW1lID09IGF0dHJOYW1lLmxvY2FsTmFtZSgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBtX2F0dHJpYnV0ZXNbaV0uZ2V0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgZG9TbG93Q2hlY2sgPSB0cnVlOwogICAgIH0KIAogICAg
IGlmIChkb1Nsb3dDaGVjaykKLSAgICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZUl0ZW1TbG93Q2Fz
ZShuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKTsKLSAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIGdldEF0dHJpYnV0ZUl0ZW1JbmRleFNsb3dDYXNlKG5hbWUsIHNob3VsZElnbm9y
ZUF0dHJpYnV0ZUNhc2UpOworICAgIHJldHVybiBub3RGb3VuZDsKK30KKworaW5saW5lIHZvaWQg
TmFtZWROb2RlTWFwOjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkK
K3sKKyAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSk7CisgICAg
aWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmVBdHRy
aWJ1dGUoaW5kZXgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGJmZmZhM2EzYmRhNTQ5ODdh
NDExYmI4ZTRmYzUwYWM5NjQ2ZGIwMmIuLjU0ZDIxNjMxZmI0M2QyY2RlM2M3ZTU2ODI0NjRmNzJk
MzExMDNjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwCkBAIC05OTAsOSArOTkwLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25J
bmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0eWxlKiBzdHlsZSwgTm9kZSoKICAgICAgICAg
ICAgIGlmICghY2hpbGQtPmNvbnRhaW5zKHRhcmdldE5vZGUpICYmIGVsZW1lbnRzVG9QdXNoRG93
bi5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1l
bnRzVG9QdXNoRG93bi5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
RWxlbWVudD4gd3JhcHBlciA9IGVsZW1lbnRzVG9QdXNoRG93bltpXS0+Y2xvbmVFbGVtZW50V2l0
aG91dENoaWxkcmVuKCk7Ci0gICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLT5yZW1vdmVBdHRyaWJ1dGUoc3R5bGVBdHRy
LCBlYyk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgICAg
ICAgICB3cmFwcGVyLT5yZW1vdmVBdHRyaWJ1dGUoc3R5bGVBdHRyKTsKICAgICAgICAgICAgICAg
ICAgICAgc3Vycm91bmROb2RlUmFuZ2VXaXRoRWxlbWVudChjaGlsZCwgY2hpbGQsIHdyYXBwZXIp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmlu
ZGV4IDY0ODRjNThhOTY0MzYyMmJkNzNhNzI3ZmJjYmVmNDM1OGE1NTk1ZDguLmY0MGMxNWNiNGI3
YTI2YzIwZTdmMjkyNjYxYjliZWQ0ZGI1MDQxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAt
MTM3LDkgKzEzNyw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gSW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZDo6Y2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrCiAgICAgZm9yIChzaXplX3Qg
aSA9IGFuY2VzdG9ycy5zaXplKCk7IGkgIT0gMDsgLS1pKSB7CiAgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBjaGlsZCA9IGFuY2VzdG9yc1tpIC0gMV0tPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJl
bigpOwogICAgICAgICAvLyBJdCBzaG91bGQgYWx3YXlzIGJlIG9rYXkgdG8gcmVtb3ZlIGlkIGZy
b20gdGhlIGNsb25lZCBlbGVtZW50cywgc2luY2UgdGhlIG9yaWdpbmFscyBhcmUgbm90IGRlbGV0
ZWQuCi0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBjaGlsZC0+cmVtb3Zl
QXR0cmlidXRlKGlkQXR0ciwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgY2hp
bGQtPnJlbW92ZUF0dHJpYnV0ZShpZEF0dHIpOwogICAgICAgICBhcHBlbmROb2RlKGNoaWxkLCBw
YXJlbnQpOwogICAgICAgICBwYXJlbnQgPSBjaGlsZC5yZWxlYXNlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKaW5kZXggMTliYjhi
ZmJiMjVhZWM4YTlkNWRlZGRlNDAyNTg0Nzg1ZGFiMzc4MS4uYWM3N2JmOTE2ZjU4NDQwMTFiM2Zm
MjBlODJhNzY2NjcyNmEyNDAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGxpdEVsZW1lbnRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0
RWxlbWVudENvbW1hbmQuY3BwCkBAIC02MSw4ICs2MSw3IEBAIHZvaWQgU3BsaXRFbGVtZW50Q29t
bWFuZDo6ZXhlY3V0ZUFwcGx5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRGVsZXRlIGlk
IGF0dHJpYnV0ZSBmcm9tIHRoZSBzZWNvbmQgZWxlbWVudCBiZWNhdXNlIHRoZSBzYW1lIGlkIGNh
bm5vdCBiZSB1c2VkIGZvciBtb3JlIHRoYW4gb25lIGVsZW1lbnQKLSAgICBtX2VsZW1lbnQyLT5y
ZW1vdmVBdHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsK
KyAgICBtX2VsZW1lbnQyLT5yZW1vdmVBdHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIpOwogCiAg
ICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDY1NzNj
YTYxOGZlZTIyZmY4OWE3ZWI1YjUxZjI0MWYyOGE0NmQwZjQuLmMxOWZlOTQzZmIyNDMyODgyOTA4
ZTgwZmRlMzJhNTE2MmE5NDZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBA
IC03NTIsNyArNzUyLDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0Q29udGVudEVkaXRhYmxlKGNv
bnN0IFN0cmluZyYgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgInBsYWludGV4dC1vbmx5IikpCiAgICAgICAgIHNldEF0
dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCAicGxhaW50ZXh0LW9ubHkiKTsKICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAiaW5oZXJpdCIpKQotICAgICAgICByZW1v
dmVBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0ciwgZWMpOworICAgICAgICByZW1vdmVBdHRy
aWJ1dGUoY29udGVudGVkaXRhYmxlQXR0cik7CiAgICAgZWxzZQogICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA3
ZTAzZWM2ZjFhY2RjNTg0NTk2OTBhZDlkMzVmNDYwOTFhNmM3YWRjLi4xNTk2ZDY4YjZjODAxMTFm
YzY3OWI2ZWI5YmZhNDVlNWRlODM0MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKQEAgLTUzMiwxMCArNTMyLDkgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpz
ZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAvLyBXZSBzaG91bGQgd3JpdGUgYSB0ZXN0
IGNhc2UgdG8gc2hvdyB0aGF0IHNldHRpbmcgdG8gdGhlIGVtcHR5IHN0cmluZyBkb2VzIG5vdCBy
ZW1vdmUgdGhlCiAgICAgLy8gYXR0cmlidXRlIGluIG90aGVyIGJyb3dzZXJzIGFuZCB0aGVuIGZp
eCB0aGlzLiBOb3RlIHRoYXQgc2V0dGluZyB0byBudWxsICpkb2VzKiByZW1vdmUKICAgICAvLyB0
aGUgYXR0cmlidXRlIGFuZCBzZXRBdHRyaWJ1dGUgaW1wbGVtZW50cyB0aGF0LgotICAgIGlmICh0
eXBlLmlzRW1wdHkoKSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICByZW1v
dmVBdHRyaWJ1dGUodHlwZUF0dHIsIGVjKTsKLSAgICB9IGVsc2UKKyAgICBpZiAodHlwZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJlbW92ZUF0dHJpYnV0ZSh0eXBlQXR0cik7CisgICAgZWxzZQogICAg
ICAgICBzZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA3YTlmMjZkZTk4MTg2OTMz
ODE2YTU1OGVlNTQ2NWNhYjg0NjI5OWZhLi41NDZjNzdkNjUzMDBlODA0YWUwNGU4MTVjZjhlMDkx
M2MxZDgwOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKQEAgLTUyOCw5ICs1MjgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRB
dHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGVsZW1lbgogCiAg
ICAgY29uc3QgTmFtZWROb2RlTWFwKiBhdHRyTWFwID0gdG9IVE1MRWxlbWVudChjaGlsZCktPmF0
dHJpYnV0ZXModHJ1ZSk7CiAgICAgaWYgKCFhdHRyTWFwICYmIG5hbWUpIHsKLSAgICAgICAgZWxl
bWVudC0+cmVtb3ZlQXR0cmlidXRlKCpuYW1lLCBlYyk7Ci0gICAgICAgIGlmIChlYykKLSAgICAg
ICAgICAgICplcnJvclN0cmluZyA9ICJDb3VsZCBub3QgcmVtb3ZlIGF0dHJpYnV0ZSI7CisgICAg
ICAgIGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZSgqbmFtZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTU0NCw5ICs1NDIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRy
aWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGVsZW1lbgogICAgIH0K
IAogICAgIGlmICghZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSAmJiBuYW1lKSB7Ci0gICAgICAgIGVs
ZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZSgqbmFtZSwgZWMpOwotICAgICAgICBpZiAoZWMpCi0gICAg
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHJlbW92ZSBhdHRyaWJ1dGUiOworICAg
ICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoKm5hbWUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogfQpAQCAtNTU0LDEyICs1NTAsOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRB
dHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGVsZW1lbgogdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlQXR0cmlidXRlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBhc3NlcnRFbGVtZW50KGVycm9yU3RyaW5nLCBlbGVtZW50SWQpOwotICAgIGlm
IChlbGVtZW50KSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBlbGVt
ZW50LT5yZW1vdmVBdHRyaWJ1dGUobmFtZSwgZWMpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAg
ICAgICAqZXJyb3JTdHJpbmcgPSAiRXhjZXB0aW9uIHdoaWxlIHJlbW92aW5nIGF0dHJpYnV0ZSI7
Ci0gICAgfQorICAgIGlmIChlbGVtZW50KQorICAgICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1
dGUobmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZU5vZGUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwCmluZGV4IDVlNjdmZjUyYTUyMDUyNWRlMzk0YzViMmEwNmY2MTRkOGFhZjAzNDAuLjU1
ZjcwZjQ1MzFkMmE4NGEwODQyYzUwZjZmZjY4Nzg2MmRjZTQ0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKQEAgLTEwMzUsMTEgKzEwMzUsMTEgQEAgdm9pZCBTVkdVc2VFbGVt
ZW50Ojp0cmFuc2ZlclVzZUF0dHJpYnV0ZXNUb1JlcGxhY2VkRWxlbWVudChTVkdFbGVtZW50KiBm
cm9tLCBTVkcKIAogICAgIHRvLT5zZXRBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoKmZyb20pOwogCi0g
ICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShTVkdOYW1lczo6eEF0dHIsIEFTU0VSVF9OT19FWENFUFRJ
T04pOwotICAgIHRvLT5yZW1vdmVBdHRyaWJ1dGUoU1ZHTmFtZXM6OnlBdHRyLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKLSAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIs
IEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIHRvLT5yZW1vdmVBdHRyaWJ1dGUoU1ZHTmFtZXM6
OmhlaWdodEF0dHIsIEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIHRvLT5yZW1vdmVBdHRyaWJ1
dGUoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIHRvLT5y
ZW1vdmVBdHRyaWJ1dGUoU1ZHTmFtZXM6OnhBdHRyKTsKKyAgICB0by0+cmVtb3ZlQXR0cmlidXRl
KFNWR05hbWVzOjp5QXR0cik7CisgICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShTVkdOYW1lczo6d2lk
dGhBdHRyKTsKKyAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyKTsK
KyAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKIH0KIAogYm9v
bCBTVkdVc2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJlbGVtZW50LmNwcAppbmRleCAyMWU4MDA0ZWFjMjc4MjQ4ZGVlNWQyYjMwYmRj
Y2M2MTg0NTFhMDg0Li4zMDEzZjdmNjllY2I0NmIxMTExMzFjZjdjZmU5NTcwNmY5NWY3OGVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCkBAIC00NjMsOCArNDYzLDcgQEAgdm9p
ZCBRV2ViRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFFTdHJpbmcgJm5hbWUpCiB7CiAg
ICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBFeGNlcHRpb25Db2RlIGV4
Y2VwdGlvbiA9IDA7Ci0gICAgbV9lbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUobmFtZSwgZXhjZXB0
aW9uKTsKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKIH0KIAogLyohCkBA
IC0yMTM0LDQgKzIxMzMsMyBAQCB2b2lkIFF0V2ViRWxlbWVudFJ1bnRpbWU6OmluaXRpYWxpemUo
KQogICAgIEpTQzo6QmluZGluZ3M6OnJlZ2lzdGVyQ3VzdG9tVHlwZShpZCwgY29udmVydEpTVmFs
dWVUb1dlYkVsZW1lbnRWYXJpYW50LCBjb252ZXJ0V2ViRWxlbWVudFZhcmlhbnRUb0pTVmFsdWUp
OwogI2VuZGlmCiB9Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120096</attachid>
            <date>2011-12-20 15:10:16 -0800</date>
            <delta_ts>2011-12-20 16:02:40 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-74953-20111220151014.patch</filename>
            <type>text/plain</type>
            <size>29735</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYxODY2NGFhOTQ3NmFk
MmM1YjhkNjRiZTY3YmIxNzk1YTNkYmNiNy4uOTI5ZTA3NjM3Yzg0NGVkNGU5N2Y2Y2I1ZDE0ZWI5
NzcwNDIyODA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4IEBACiAyMDExLTEyLTIwICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5
IHdvcmsgd2hlbiByZW1vdmluZyBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgVmFyaW91cyBjb2RlcGF0aHMgaW4g
RWxlbWVudCBhbmQgTmFtZWROb2RlTWFwIHJlcGVhdGVkbHkgc2VhcmNoCisgICAgICAgIHRocm91
Z2ggdGhlIGxpc3Qgb2YgYXR0cmlidXRlcyBkdXJpbmcgYSBzaW5nbGUgb3BlcmF0aW9uLiBUbyBh
dm9pZAorICAgICAgICB0aGlzLCBJJ3ZlIGFkZGVkIG5ldyBnZXR0ZXJzIHRvIE5hbWVkTm9kZU1h
cCB0aGF0IHJldHVybiBpbmRpY2VzCisgICAgICAgIHJhdGhlciB0aGFuIEF0dHJpYnV0ZSpzICh0
aGV5IHJldHVybiBXVEY6Om5vdEZvdW5kIGlmIG5vIG1hdGNoIGlzCisgICAgICAgIGZvdW5kKS4g
VGhlc2UgbmV3IG1ldGhvZHMgYXJlIG5vdyB1c2VkIGR1cmluZyByZW1vdmVBdHRyaWJ1dGUKKyAg
ICAgICAgb3BlcmF0aW9ucywgYXMgd2VsbCBhcyBzZXRBdHRyaWJ1dGUgYW5kIE5hbWVkTm9kZU1h
cDo6c2V0TmFtZWRJdGVtCisgICAgICAgIChhbG9uZyB3aXRoIGEgbmV3IHJlcGxhY2VBdHRyaWJ1
dGUgaGVscGVyIG1ldGhvZCkuCisKKyAgICAgICAgVGhlIG90aGVyIG9wdGltaXphdGlvbiBoZXJl
IGludm9sdmVzIHRoZSBjcmVhdGlvbi9kZXN0cnVjdGlvbgorICAgICAgICBvZiBuZXZlci1yZWZl
cmVuY2VzIEF0dHIgbm9kZXMuIFRoaXMgaXMgbm93IGF2b2lkZWQgYnkgY2FsbGluZworICAgICAg
ICBOYW1lZE5vZGVNYXA6OnJlbW92ZUF0dHJpYnV0ZSBkaXJlY3RseSBpbnN0ZWFkIG9mIGdvaW5n
IHRocm91Z2gKKyAgICAgICAgTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0uCisKKyAgICAg
ICAgQXMgYSBjbGVhbnVwIGFmdGVyIHRoZSBhYm92ZSBjaGFuZ2VzLCB0aGUgRXhjZXB0aW9uQ29k
ZSBhcmd1bWVudCBpcworICAgICAgICBnb25lIGZyb20gRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRl
IGFuZCBmcmllbmRzIChpdCB3YXMgbmV2ZXIgc2V0CisgICAgICAgIHByZXZpb3VzbHkpLiBUaGUg
YnVsayBvZiB0aGUgZmlsZXMgbWVudGlvbmVkIGJlbG93IGFyZSBzaW1wbHkgdXBkYXRpbmcKKyAg
ICAgICAgY2FsbGVycyB0byB0aGVzZSBtZXRob2RzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
bm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4cGVjdGVkLgorCisgICAgICAgICogZG9tL0RhdGFzZXRE
T01TdHJpbmdNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6
ZGVsZXRlSXRlbSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnNldEJvb2xlYW5BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3Zl
QXR0cmlidXRlTlMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKToKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAg
KiBkb20vTmFtZWROb2RlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6
c2V0TmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFt
ZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRl
bUluZGV4U2xvd0Nhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpyZXBsYWNl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmli
dXRlKToKKyAgICAgICAgKiBkb20vTmFtZWROb2RlTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpO
YW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRO
b2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRO
b2RlTWFwOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3du
SW5saW5lU3R5bGVBcm91bmROb2RlKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFw
aFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZDo6Y2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrKToKKyAgICAgICAg
KiBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Bs
aXRFbGVtZW50Q29tbWFuZDo6ZXhlY3V0ZUFwcGx5KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFi
bGUpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRUeXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OnNldEF0dHJpYnV0ZXNBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6dHJhbnNmZXJVc2VBdHRyaWJ1dGVzVG9S
ZXBsYWNlZEVsZW1lbnQpOgorCisyMDExLTEyLTIwICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21p
dW0ub3JnPgorCiAgICAgICAgIFJlbW92ZSBuby1vcCBET01BdHRyKiBldmVudCBkaXNwYXRjaCBt
ZXRob2RzIGZyb20gRWxlbWVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQ5NDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAyOTI4YmNkZWE3YTUxNzEyZDRk
OWI1OWVjYjMwYzM5M2I2MmZlNGEyLi44NGI3YTIzMDBjNzI0NDJhOGIyZGY3ZmFkM2RmOTg5YTQ4
YjU1YzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTEyLTIwICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5
IHdvcmsgd2hlbiByZW1vdmluZyBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3Bw
OgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6IFVwZGF0ZWQgYSBjYWxs
ZXIgb2YKKyAgICAgICAgV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlIHRvIHJlbW92
ZSBFeGNlcHRpb25Db2RlIGFyZ3VtZW50LgorCiAyMDExLTEyLTIwICBSYWZhZWwgQnJhbmRhbyAg
PHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBFeHRlbmQgUVF1aWNr
V2Vidmlldzo6bmF2aWdhdGlvblJlcXVlc3RlZCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
c2V0RE9NU3RyaW5nTWFwLmNwcAppbmRleCBlNjhlOWQ5NTkyMWIzODY1MDk2MGEwMWEzY2QxNTJi
NmU0YmU3NzFmLi5lMGQ4NzVkY2JiMGQ3YmU2MDQ3ZjE3ZjNhMTExZWY1OTExZjBlOGI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCkBAIC0xOTksOCArMTk5
LDcgQEAgdm9pZCBEYXRhc2V0RE9NU3RyaW5nTWFwOjpkZWxldGVJdGVtKGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBF
eGNlcHRpb25Db2RlIGR1bW15OwotICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKGNvbnZl
cnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUobmFtZSksIGR1bW15KTsKKyAgICBtX2VsZW1l
bnQtPnJlbW92ZUF0dHJpYnV0ZShjb252ZXJ0UHJvcGVydHlOYW1lVG9BdHRyaWJ1dGVOYW1lKG5h
bWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IGIxNTAwM2NkMmFmMjQzNmQxOWM5MzlkYTFkZjU4MzRlZTg4ZDVmZjkuLjBmZGI1NzdjM2Mz
NDQ0YTUxZmQ1MDIwOTc3ZjM2OGZlZGI4MTQ5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTE4OCwyNCArMTg4LDI2IEBAIHZvaWQgRWxlbWVudDo6ZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlv
blJlY29yZElmUmVxdWVzdGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0CiB9CiAjZW5kaWYKIAot
dm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKQogewotICAgIGlmIChtX2F0dHJpYnV0ZU1hcCkgewotICAgICAg
ICBlYyA9IDA7Ci0gICAgICAgIFJlZlB0cjxOb2RlPiBhdHRyTm9kZSA9IG1fYXR0cmlidXRlTWFw
LT5yZW1vdmVOYW1lZEl0ZW0obmFtZSwgZWMpOwotICAgICAgICBpZiAoZWMgPT0gTk9UX0ZPVU5E
X0VSUikKLSAgICAgICAgICAgIGVjID0gMDsKLSAgICB9CisgICAgaWYgKCFtX2F0dHJpYnV0ZU1h
cCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IGluZGV4ID0gbV9hdHRyaWJ1dGVNYXAt
PmdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CisgICAgICAgIHJldHVybjsKKworICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUobmFtZSwgbV9hdHRy
aWJ1dGVNYXAtPmF0dHJpYnV0ZUl0ZW0oaW5kZXgpLT52YWx1ZSgpLCBudWxsQXRvbSk7CisKKyAg
ICBtX2F0dHJpYnV0ZU1hcC0+cmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKIH0KIAotdm9pZCBFbGVt
ZW50OjpzZXRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGJvb2wg
YikKK3ZvaWQgRWxlbWVudDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBib29sIHZhbHVlKQogewotICAgIGlmIChiKQorICAgIGlmICh2YWx1ZSkKICAgICAg
ICAgc2V0QXR0cmlidXRlKG5hbWUsIGVtcHR5QXRvbSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEV4
Y2VwdGlvbkNvZGUgZXg7Ci0gICAgICAgIHJlbW92ZUF0dHJpYnV0ZShuYW1lLCBleCk7Ci0gICAg
fQorICAgIGVsc2UKKyAgICAgICAgcmVtb3ZlQXR0cmlidXRlKG5hbWUpOwogfQogCiBOb2RlOjpO
b2RlVHlwZSBFbGVtZW50Ojpub2RlVHlwZSgpIGNvbnN0CkBAIC02MjcsMjAgKzYyOSwyMCBAQCB2
b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUsCiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFt
ZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBuYW1l
OwogCi0gICAgLy8gQWxsb2NhdGUgYXR0cmlidXRlIG1hcCBpZiBuZWNlc3NhcnkuCi0gICAgQXR0
cmlidXRlKiBvbGQgPSBhdHRyaWJ1dGVzKGZhbHNlKS0+Z2V0QXR0cmlidXRlSXRlbShsb2NhbE5h
bWUsIGZhbHNlKTsKLSAgICBzZXRBdHRyaWJ1dGVJbnRlcm5hbChvbGQsIG9sZCA/IG9sZC0+bmFt
ZSgpIDogUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBudWxsQXRvbSksIHZhbHVl
KTsKKyAgICBzaXplX3QgaW5kZXggPSBhdHRyaWJ1dGVzKGZhbHNlKS0+Z2V0QXR0cmlidXRlSXRl
bUluZGV4KGxvY2FsTmFtZSwgZmFsc2UpOworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1l
ID0gaW5kZXggIT0gbm90Rm91bmQgPyBtX2F0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpbmRl
eCktPm5hbWUoKSA6IFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgbnVsbEF0b20p
OworICAgIHNldEF0dHJpYnV0ZUludGVybmFsKGluZGV4LCBxTmFtZSwgdmFsdWUpOwogfQogCiB2
b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIC8vIEFsbG9jYXRlIGF0dHJpYnV0ZSBtYXAg
aWYgbmVjZXNzYXJ5LgotICAgIEF0dHJpYnV0ZSogb2xkID0gYXR0cmlidXRlcyhmYWxzZSktPmdl
dEF0dHJpYnV0ZUl0ZW0obmFtZSk7Ci0gICAgc2V0QXR0cmlidXRlSW50ZXJuYWwob2xkLCBuYW1l
LCB2YWx1ZSk7CisgICAgc2V0QXR0cmlidXRlSW50ZXJuYWwoYXR0cmlidXRlcyhmYWxzZSktPmdl
dEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lKSwgbmFtZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9p
ZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hbChBdHRyaWJ1dGUqIG9sZCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK2lubGluZSB2b2lk
IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKHNpemVfdCBpbmRleCwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKKyAgICBBdHRyaWJ1
dGUqIG9sZCA9IGluZGV4ICE9IG5vdEZvdW5kID8gbV9hdHRyaWJ1dGVNYXAtPmF0dHJpYnV0ZUl0
ZW0oaW5kZXgpIDogMDsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKCFpc1N5bmNo
cm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwpAQCAtNjUxLDcgKzY1Myw3
IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKEF0dHJpYnV0ZSog
b2xkLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuCiAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShuYW1l
LCBvbGQgPyBvbGQtPnZhbHVlKCkgOiBudWxsQXRvbSwgdmFsdWUpOwogCiAgICAgaWYgKG9sZCAm
JiB2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZUF0dHJpYnV0
ZShuYW1lKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZUF0dHJpYnV0ZShpbmRleCk7
CiAgICAgZWxzZSBpZiAoIW9sZCAmJiAhdmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIG1fYXR0cmli
dXRlTWFwLT5hZGRBdHRyaWJ1dGUoY3JlYXRlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7CiAgICAg
ZWxzZSBpZiAob2xkKSB7CkBAIC0xNDYxLDI1ICsxNDYzLDMxIEBAIHZvaWQgRWxlbWVudDo6c2V0
QXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21p
Y1N0cmluCiAgICAgc2V0QXR0cmlidXRlKHFOYW1lLCB2YWx1ZSk7CiB9CiAKLXZvaWQgRWxlbWVu
dDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0g
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgp
LCB0aGlzKTsKKyAgICBpZiAoIW1fYXR0cmlidXRlTWFwKQorICAgICAgICByZXR1cm47CiAKICAg
ICBTdHJpbmcgbG9jYWxOYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzKSA/IG5h
bWUubG93ZXIoKSA6IG5hbWU7CisgICAgc2l6ZV90IGluZGV4ID0gbV9hdHRyaWJ1dGVNYXAtPmdl
dEF0dHJpYnV0ZUl0ZW1JbmRleChsb2NhbE5hbWUsIGZhbHNlKTsKKyAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKworICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0g
bV9hdHRyaWJ1dGVNYXAtPmF0dHJpYnV0ZUl0ZW0oaW5kZXgpOworCisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKKworICAg
IGlmICghYXR0cmlidXRlLT5pc051bGwoKSkKKyAgICAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShh
dHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpLCBudWxsQXRvbSk7CisKKyAgICBt
X2F0dHJpYnV0ZU1hcC0+cmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKIAotICAgIGlmIChtX2F0dHJp
YnV0ZU1hcCkgewotICAgICAgICBlYyA9IDA7Ci0gICAgICAgIFJlZlB0cjxOb2RlPiBhdHRyTm9k
ZSA9IG1fYXR0cmlidXRlTWFwLT5yZW1vdmVOYW1lZEl0ZW0obG9jYWxOYW1lLCBlYyk7Ci0gICAg
ICAgIGlmIChlYyA9PSBOT1RfRk9VTkRfRVJSKQotICAgICAgICAgICAgZWMgPSAwOwotICAgIH0K
LSAgICAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTUF0dHIoZG9j
dW1lbnQoKSwgdGhpcywgbmFtZSk7CiB9CiAKLXZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRl
TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTlMoY29uc3Qg
U3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lKQogewotICAgIHJl
bW92ZUF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG5hbWVzcGFj
ZVVSSSksIGVjKTsKKyAgICByZW1vdmVBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwg
bG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpKTsKIH0KIAogUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50
OjpnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmlu
ZGV4IDYyMGEwYjM5ZDU4ZjlkZGVhMzhhY2E2OTQ5NTc0MDg5NDI0NWZhMDguLjkyZDU5YzkxMTIw
OTU1Njc4ZDQ3MTlhMzRlMjJlZTk2MTJkMzQ1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHJlbW92
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIC8vIFR5cGVk
IGdldHRlcnMgYW5kIHNldHRlcnMgZm9yIGxhbmd1YWdlIGJpbmRpbmdzLgogICAgIGludCBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25z
dDsKQEAgLTE3Niw4ICsxNzYsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgYWJzb2x1
dGUgYm91bmRpbmcgYm94IHRyYW5zbGF0ZWQgaW50byBzY3JlZW4gY29vcmRpbmF0ZXM6CiAgICAg
TGF5b3V0UmVjdCBzY3JlZW5SZWN0KCkgY29uc3Q7CiAKLSAgICB2b2lkIHJlbW92ZUF0dHJpYnV0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHJlbW92ZUF0
dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2Fs
TmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0
cmluZyYgbmFtZSk7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5h
bWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpOwogCiAgICAgUGFzc1JlZlB0cjxB
dHRyPiBnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgUGFzc1JlZlB0
cjxBdHRyPiBnZXRBdHRyaWJ1dGVOb2RlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IFN0cmluZyYgbG9jYWxOYW1lKTsKQEAgLTM5NSw3ICszOTUsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2hp
bGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEF0dHJpYnV0ZUlu
dGVybmFsKEF0dHJpYnV0ZSogb2xkLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSk7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGVJbnRlcm5hbChzaXplX3QgaW5k
ZXgsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjcmVhdGVBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIAogI2lmbmRlZiBO
REVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA4MTAzMmU2NmE0MjBjMmE3MzkyYjNjM2Vk
YWQzN2JlMTIxZDI1YTQ4Li44MWZiMjYwMzUxZTQzNTJmMTA1ZjQ3NGMyZDVjMzM4M2E5YmE5ZGZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0zMyw4ICszMyw3IEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgW09sZFN0eWxlT2JqQ10gdm9pZCBzZXRBdHRyaWJ1dGUoaW4gW09wdGlvbmFsPUNh
bGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBE
T01TdHJpbmcgdmFsdWUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAg
ICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVl
XSBET01TdHJpbmcgbmFtZSkKLSAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAg
ICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFs
dWVdIERPTVN0cmluZyBuYW1lKTsKICAgICAgICAgQXR0ciBnZXRBdHRyaWJ1dGVOb2RlKGluIFtP
cHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG5hbWUpOwogICAgICAgICBB
dHRyIHNldEF0dHJpYnV0ZU5vZGUoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBB
dHRyIG5ld0F0dHIpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKQEAgLTUxLDgg
KzUwLDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIHZh
bHVlKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtPbGRTdHls
ZU9iakNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpCi0gICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKTsKICAgICAgICAgW09sZFN0eWxlT2JqQ10g
Tm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJp
bmcsT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBuYW1lc3BhY2VVUkks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgbG9jYWxOYW1lKTsK
ICAgICAgICAgW09sZFN0eWxlT2JqQ10gQXR0ciBnZXRBdHRyaWJ1dGVOb2RlTlMoaW4gW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nLE9wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJp
bmcgbmFtZXNwYWNlVVJJLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9k
ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAppbmRleCA4NmI3
ZGUzOGQwZGZhZDc2MzVlMWQyZjNmYmM2NGYyM2Y2MzViNzIzLi4wMTQ5ZDU0NWE4ZGRmZTBlODhj
YzEzYzY5YzllNTViZjNlNjZjMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFt
ZWROb2RlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcApA
QCAtMTA4LDcgKzEwOCw4IEBAIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpzZXROYW1l
ZEl0ZW0oTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQXR0ciogYXR0ciA9IHN0
YXRpY19jYXN0PEF0dHIqPihub2RlKTsKIAogICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0
ci0+YXR0cigpOwotICAgIEF0dHJpYnV0ZSogb2xkQXR0cmlidXRlID0gZ2V0QXR0cmlidXRlSXRl
bShhdHRyaWJ1dGUtPm5hbWUoKSk7CisgICAgc2l6ZV90IGluZGV4ID0gZ2V0QXR0cmlidXRlSXRl
bUluZGV4KGF0dHJpYnV0ZS0+bmFtZSgpKTsKKyAgICBBdHRyaWJ1dGUqIG9sZEF0dHJpYnV0ZSA9
IGluZGV4ICE9IG5vdEZvdW5kID8gYXR0cmlidXRlSXRlbShpbmRleCkgOiAwOwogICAgIGlmIChv
bGRBdHRyaWJ1dGUgPT0gYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gbm9kZTsgLy8gd2Uga25v
dyBhYm91dCBpdCBhbHJlYWR5CiAKQEAgLTEyNSwxMCArMTI2LDkgQEAgUGFzc1JlZlB0cjxOb2Rl
PiBOYW1lZE5vZGVNYXA6OnNldE5hbWVkSXRlbShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICBSZWZQdHI8QXR0cj4gb2xkQXR0cjsKICAgICBpZiAob2xkQXR0cmlidXRlKSB7CiAg
ICAgICAgIG9sZEF0dHIgPSBvbGRBdHRyaWJ1dGUtPmNyZWF0ZUF0dHJJZk5lZWRlZChtX2VsZW1l
bnQpOwotICAgICAgICByZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCkpOwotICAgIH0K
LQotICAgIGFkZEF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICByZXBsYWNlQXR0cmlidXRl
KGluZGV4LCBhdHRyaWJ1dGUpOworICAgIH0gZWxzZQorICAgICAgICBhZGRBdHRyaWJ1dGUoYXR0
cmlidXRlKTsKICAgICByZXR1cm4gb2xkQXR0ci5yZWxlYXNlKCk7CiB9CiAKQEAgLTE0NCwxNyAr
MTQ0LDE4IEBAIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0o
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRXhjZXB0CiB7CiAgICAgQVNTRVJUKG1fZWxlbWVu
dCk7CiAKLSAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZUl0ZW0obmFtZSk7
Ci0gICAgaWYgKCFhdHRyaWJ1dGUpIHsKKyAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJ
dGVtSW5kZXgobmFtZSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CiAgICAgICAgIGVj
ID0gTk9UX0ZPVU5EX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgQXR0cmli
dXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVJdGVtKGluZGV4KTsKICAgICBSZWZQdHI8QXR0cj4g
YXR0ciA9IGF0dHJpYnV0ZS0+Y3JlYXRlQXR0cklmTmVlZGVkKG1fZWxlbWVudCk7CiAKICAgICBt
X2VsZW1lbnQtPndpbGxNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0
ZS0+dmFsdWUoKSwgbnVsbEF0b20pOwogCi0gICAgcmVtb3ZlQXR0cmlidXRlKG5hbWUpOworICAg
IHJlbW92ZUF0dHJpYnV0ZShpbmRleCk7CiAgICAgcmV0dXJuIGF0dHIucmVsZWFzZSgpOwogfQog
CkBAIC0xNzEsNyArMTcyLDcgQEAgdm9pZCBOYW1lZE5vZGVNYXA6OmNvcHlBdHRyaWJ1dGVzVG9W
ZWN0b3IoVmVjdG9yPFJlZlB0cjxBdHRyaWJ1dGU+ID4mIGNvcHkpCiAgICAgY29weSA9IG1fYXR0
cmlidXRlczsKIH0KIAotQXR0cmlidXRlKiBOYW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW1T
bG93Q2FzZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2Fz
ZSkgY29uc3QKK3NpemVfdCBOYW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleFNsb3dD
YXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBj
b25zdAogewogICAgIHVuc2lnbmVkIGxlbiA9IGxlbmd0aCgpOwogCkBAIC0xODAsMTYgKzE4MSwx
NiBAQCBBdHRyaWJ1dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbVNsb3dDYXNlKGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bAogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSA9IG1fYXR0cmlidXRlc1tpXS0+bmFtZSgpOwogICAgICAgICBpZiAoIWF0dHJO
YW1lLmhhc1ByZWZpeCgpKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCBhdHRyTmFtZS5sb2NhbE5hbWUoKSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpXS5nZXQoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gaTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
b3VsZCBiZSBmYXN0ZXIgdG8gZG8gdGhpcyBjb21wYXJpc29uIHdpdGhvdXQgY2FsbGluZyB0b1N0
cmluZywgd2hpY2gKICAgICAgICAgICAgIC8vIGdlbmVyYXRlcyBhIHRlbXBvcmFyeSBzdHJpbmcg
YnkgY29uY2F0ZW5hdGlvbi4gQnV0IHRoaXMgYnJhbmNoIGlzIG9ubHkgcmVhY2hlZAogICAgICAg
ICAgICAgLy8gaWYgdGhlIGF0dHJpYnV0ZSBuYW1lIGhhcyBhIHByZWZpeCwgd2hpY2ggaXMgcmFy
ZSBpbiBIVE1MLgogICAgICAgICAgICAgaWYgKGVxdWFsUG9zc2libHlJZ25vcmluZ0Nhc2UobmFt
ZSwgYXR0ck5hbWUudG9TdHJpbmcoKSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpXS5nZXQoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gaTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bm90Rm91bmQ7CiB9CiAKIHZvaWQgTmFtZWROb2RlTWFwOjpjbGVhckF0dHJpYnV0ZXMoKQpAQCAt
MjU5LDM5ICsyNjAsNDMgQEAgdm9pZCBOYW1lZE5vZGVNYXA6OmFkZEF0dHJpYnV0ZShQYXNzUmVm
UHRyPEF0dHJpYnV0ZT4gcHJwQXR0cmlidXRlKQogICAgIH0KIH0KIAotdm9pZCBOYW1lZE5vZGVN
YXA6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQordm9pZCBOYW1l
ZE5vZGVNYXA6OnJlbW92ZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgpCiB7Ci0gICAgdW5zaWduZWQg
bGVuID0gbGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBsZW47Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAgIGlmIChtX2F0dHJpYnV0ZXNbaV0t
Pm5hbWUoKS5tYXRjaGVzKG5hbWUpKSB7Ci0gICAgICAgICAgICBpbmRleCA9IGk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChpbmRleCA+PSBsZW4pCi0g
ICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoaW5kZXggPCBsZW5ndGgoKSk7CiAKLSAgICAvLyBS
ZW1vdmUgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSBsaXN0Ci0gICAgUmVmUHRyPEF0dHJpYnV0ZT4g
YXR0ciA9IG1fYXR0cmlidXRlc1tpbmRleF0uZ2V0KCk7Ci0gICAgaWYgKEF0dHIqIGEgPSBtX2F0
dHJpYnV0ZXNbaW5kZXhdLT5hdHRyKCkpCi0gICAgICAgIGEtPm1fZWxlbWVudCA9IDA7CisgICAg
UmVmUHRyPEF0dHJpYnV0ZT4gYXR0cmlidXRlID0gbV9hdHRyaWJ1dGVzW2luZGV4XTsKKyAgICBp
ZiAoQXR0ciogYXR0ciA9IGF0dHJpYnV0ZS0+YXR0cigpKQorICAgICAgICBhdHRyLT5tX2VsZW1l
bnQgPSAwOwogCiAgICAgbV9hdHRyaWJ1dGVzLnJlbW92ZShpbmRleCk7CiAKLSAgICAvLyBOb3Rp
ZnkgdGhlIGVsZW1lbnQgdGhhdCB0aGUgYXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQKLSAgICAv
LyBkaXNwYXRjaCBhcHByb3ByaWF0ZSBtdXRhdGlvbiBldmVudHMKLSAgICBpZiAobV9lbGVtZW50
ICYmICFhdHRyLT5tX3ZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIEF0b21pY1N0cmluZyB2YWx1
ZSA9IGF0dHItPm1fdmFsdWU7Ci0gICAgICAgIGF0dHItPm1fdmFsdWUgPSBudWxsQXRvbTsKLSAg
ICAgICAgbV9lbGVtZW50LT5hdHRyaWJ1dGVDaGFuZ2VkKGF0dHIuZ2V0KCkpOwotICAgICAgICBh
dHRyLT5tX3ZhbHVlID0gdmFsdWU7CisgICAgaWYgKG1fZWxlbWVudCAmJiAhYXR0cmlidXRlLT5t
X3ZhbHVlLmlzTnVsbCgpKSB7CisgICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZSA9IGF0dHJpYnV0
ZS0+bV92YWx1ZTsKKyAgICAgICAgYXR0cmlidXRlLT5tX3ZhbHVlID0gbnVsbEF0b207CisgICAg
ICAgIG1fZWxlbWVudC0+YXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUuZ2V0KCkpOworICAgICAg
ICBhdHRyaWJ1dGUtPm1fdmFsdWUgPSB2YWx1ZTsKICAgICB9CiAgICAgaWYgKG1fZWxlbWVudCkK
ICAgICAgICAgbV9lbGVtZW50LT5kaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CiB9CiAK
K3ZvaWQgTmFtZWROb2RlTWFwOjpyZXBsYWNlQXR0cmlidXRlKHNpemVfdCBpbmRleCwgUGFzc1Jl
ZlB0cjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZSkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBsZW5ndGgo
KSk7CisKKyAgICBpZiAoQXR0ciogYXR0ciA9IG1fYXR0cmlidXRlc1tpbmRleF0tPmF0dHIoKSkK
KyAgICAgICAgYXR0ci0+bV9lbGVtZW50ID0gMDsKKyAgICBtX2F0dHJpYnV0ZXNbaW5kZXhdID0g
YXR0cmlidXRlOworICAgIGlmIChBdHRyKiBhdHRyID0gbV9hdHRyaWJ1dGVzW2luZGV4XS0+YXR0
cigpKQorICAgICAgICBhdHRyLT5tX2VsZW1lbnQgPSBtX2VsZW1lbnQ7CisKKyAgICBpZiAobV9l
bGVtZW50KSB7CisgICAgICAgIG1fZWxlbWVudC0+YXR0cmlidXRlQ2hhbmdlZChtX2F0dHJpYnV0
ZXNbaW5kZXhdLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlc1tpbmRleF0tPm5hbWUo
KSAhPSBzdHlsZUF0dHIpCisgICAgICAgICAgICBtX2VsZW1lbnQtPmRpc3BhdGNoU3VidHJlZU1v
ZGlmaWVkRXZlbnQoKTsKKyAgICB9Cit9CisKIHZvaWQgTmFtZWROb2RlTWFwOjpzZXRDbGFzcyhj
b25zdCBTdHJpbmcmIGNsYXNzU3RyKSAKIHsgCiAgICAgaWYgKCFlbGVtZW50KCktPmhhc0NsYXNz
KCkpIHsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmgKaW5kZXggMzRmMzg2MDQ2N2NmZWNmNWM5
ZDJhZTBmODU5MDM1MWVhYWU4YWE2NC4uMzUzNDAxNDgzOTViNDNhNjk4NWNkNTNhNzQ3NzA5Mzg2
MTA1MDk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY1
LDYgKzY2LDcgQEAgcHVibGljOgogCiAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbaW5kZXhdLmdldCgpOyB9CiAg
ICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dDsKKyAgICBzaXplX3QgZ2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsKIAogICAgIHZvaWQgY29weUF0dHJpYnV0ZXNUb1ZlY3RvcihWZWN0b3I8UmVmUHRy
PEF0dHJpYnV0ZT4gPiYpOwogCkBAIC04OSw2ICs5MSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVz
ZSBmdW5jdGlvbnMgZG8gbm8gZXJyb3IgY2hlY2tpbmcuCiAgICAgdm9pZCBhZGRBdHRyaWJ1dGUo
UGFzc1JlZlB0cjxBdHRyaWJ1dGU+KTsKICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoc2l6ZV90IGluZGV4KTsK
IAogICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KIApA
QCAtMTEwLDkgKzExMywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGV0YWNoQXR0cmlidXRlc0Zy
b21FbGVtZW50KCk7CiAgICAgdm9pZCBkZXRhY2hGcm9tRWxlbWVudCgpOwogICAgIEF0dHJpYnV0
ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZSkgY29uc3Q7Ci0gICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtU2xv
d0Nhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Up
IGNvbnN0OworICAgIHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0OworICAgIHNpemVfdCBn
ZXRBdHRyaWJ1dGVJdGVtSW5kZXhTbG93Q2FzZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hv
dWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVzKGNv
bnN0IE5hbWVkTm9kZU1hcCYpOwogICAgIHZvaWQgY2xlYXJBdHRyaWJ1dGVzKCk7CisgICAgdm9p
ZCByZXBsYWNlQXR0cmlidXRlKHNpemVfdCBpbmRleCwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+KTsK
ICAgICBpbnQgZGVjbENvdW50KCkgY29uc3Q7CiAKICAgICBpbnQgbV9tYXBwZWRBdHRyaWJ1dGVD
b3VudDsKQEAgLTEyNCwzNCArMTI5LDU5IEBAIHByaXZhdGU6CiAKIGlubGluZSBBdHRyaWJ1dGUq
IE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KSBjb25zdAogewotICAgIHVuc2lnbmVkIGxlbiA9IGxlbmd0aCgpOworICAgIHNpemVfdCBpbmRl
eCA9IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91
bmQpCisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXNbaW5kZXhdLmdldCgpOworICAgIHJldHVy
biAwOworfQorCitpbmxpbmUgc2l6ZV90IE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbUlu
ZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0Cit7CisgICAgc2l6ZV90IGxlbiA9
IGxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAg
ICAgICBpZiAobV9hdHRyaWJ1dGVzW2ldLT5uYW1lKCkubWF0Y2hlcyhuYW1lKSkKLSAgICAgICAg
ICAgIHJldHVybiBtX2F0dHJpYnV0ZXNbaV0uZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gaTsK
ICAgICB9CisgICAgcmV0dXJuIG5vdEZvdW5kOworfQorCitpbmxpbmUgQXR0cmlidXRlKiBOYW1l
ZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0Cit7CisgICAgc2l6ZV90IGluZGV4ID0gZ2V0QXR0
cmlidXRlSXRlbUluZGV4KG5hbWUsIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpOworICAgIGlm
IChpbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpbmRleF0u
Z2V0KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIC8vIFdlIHVzZSBhIGJvb2xlYW4gcGFyYW1ldGVy
IGluc3RlYWQgb2YgY2FsbGluZyBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlIHNvIHRoYXQgdGhl
IGNhbGxlcgogLy8gY2FuIHR1bmUgdGhlIGJlaGF2aW9yIChoYXNBdHRyaWJ1dGUgaXMgY2FzZSBz
ZW5zaXRpdmUgd2hlcmVhcyBnZXRBdHRyaWJ1dGUgaXMgbm90KS4KLWlubGluZSBBdHRyaWJ1dGUq
IE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wg
c2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKK2lubGluZSBzaXplX3QgTmFtZWROb2Rl
TWFwOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbGVuID0gbGVuZ3Ro
KCk7CiAgICAgYm9vbCBkb1Nsb3dDaGVjayA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2U7Ci0g
ICAgCisKICAgICAvLyBPcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIGF0dHJpYnV0ZSBl
eGlzdHMgYW5kIGl0cyBuYW1lIGV4YWN0bHkgbWF0Y2hlcy4KICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUgPSBtX2F0dHJpYnV0ZXNbaV0tPm5hbWUoKTsKICAgICAgICAgaWYgKCFhdHRyTmFtZS5oYXNQ
cmVmaXgoKSkgewogICAgICAgICAgICAgaWYgKG5hbWUgPT0gYXR0ck5hbWUubG9jYWxOYW1lKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpXS5nZXQoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBkb1Nsb3dDaGVj
ayA9IHRydWU7CiAgICAgfQogCiAgICAgaWYgKGRvU2xvd0NoZWNrKQotICAgICAgICByZXR1cm4g
Z2V0QXR0cmlidXRlSXRlbVNsb3dDYXNlKG5hbWUsIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Up
OwotICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gZ2V0QXR0cmlidXRlSXRlbUluZGV4U2xv
d0Nhc2UobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSk7CisgICAgcmV0dXJuIG5vdEZv
dW5kOworfQorCitpbmxpbmUgdm9pZCBOYW1lZE5vZGVNYXA6OnJlbW92ZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lKQoreworICAgIHNpemVfdCBpbmRleCA9IGdldEF0dHJpYnV0
ZUl0ZW1JbmRleChuYW1lKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJl
dHVybjsKKworICAgIHJlbW92ZUF0dHJpYnV0ZShpbmRleCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAK
aW5kZXggYmZmZmEzYTNiZGE1NDk4N2E0MTFiYjhlNGZjNTBhYzk2NDZkYjAyYi4uNTRkMjE2MzFm
YjQzZDJjZGUzYzdlNTY4MjQ2NGY3MmQzMTEwM2MzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTk5MCw5ICs5OTAsNyBAQCB2b2lkIEFwcGx5
U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUq
IHN0eWxlLCBOb2RlKgogICAgICAgICAgICAgaWYgKCFjaGlsZC0+Y29udGFpbnModGFyZ2V0Tm9k
ZSkgJiYgZWxlbWVudHNUb1B1c2hEb3duLnNpemUoKSkgewogICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudHNUb1B1c2hEb3duLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiB3cmFwcGVyID0gZWxlbWVudHNUb1B1c2hE
b3duW2ldLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKLSAgICAgICAgICAgICAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHdyYXBwZXItPnJl
bW92ZUF0dHJpYnV0ZShzdHlsZUF0dHIsIGVjKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFlYyk7CisgICAgICAgICAgICAgICAgICAgIHdyYXBwZXItPnJlbW92ZUF0dHJpYnV0ZShzdHls
ZUF0dHIpOwogICAgICAgICAgICAgICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50
KGNoaWxkLCBjaGlsZCwgd3JhcHBlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZC5jcHAKaW5kZXggNjQ4NGM1OGE5NjQzNjIyYmQ3M2E3MjdmYmNiZWY0
MzU4YTU1OTVkOC4uZjQwYzE1Y2I0YjdhMjZjMjBlN2YyOTI2NjFiOWJlZDRkYjUwNDEzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQuY3BwCkBAIC0xMzcsOSArMTM3LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50
PiBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpjbG9uZUhpZXJhcmNoeVVuZGVyTmV3
QmxvY2sKICAgICBmb3IgKHNpemVfdCBpID0gYW5jZXN0b3JzLnNpemUoKTsgaSAhPSAwOyAtLWkp
IHsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGNoaWxkID0gYW5jZXN0b3JzW2kgLSAxXS0+Y2xv
bmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7CiAgICAgICAgIC8vIEl0IHNob3VsZCBhbHdheXMg
YmUgb2theSB0byByZW1vdmUgaWQgZnJvbSB0aGUgY2xvbmVkIGVsZW1lbnRzLCBzaW5jZSB0aGUg
b3JpZ2luYWxzIGFyZSBub3QgZGVsZXRlZC4KLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgICAgIGNoaWxkLT5yZW1vdmVBdHRyaWJ1dGUoaWRBdHRyLCBlYyk7Ci0gICAgICAgIEFT
U0VSVCghZWMpOworICAgICAgICBjaGlsZC0+cmVtb3ZlQXR0cmlidXRlKGlkQXR0cik7CiAgICAg
ICAgIGFwcGVuZE5vZGUoY2hpbGQsIHBhcmVudCk7CiAgICAgICAgIHBhcmVudCA9IGNoaWxkLnJl
bGVhc2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0
RWxlbWVudENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRD
b21tYW5kLmNwcAppbmRleCAxOWJiOGJmYmIyNWFlYzhhOWQ1ZGVkZGU0MDI1ODQ3ODVkYWIzNzgx
Li5hYzc3YmY5MTZmNTg0NDAxMWIzZmYyMGU4MmE3NjY2NzI2YTI0MDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKQEAgLTYxLDggKzYxLDcg
QEAgdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpleGVjdXRlQXBwbHkoKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBEZWxldGUgaWQgYXR0cmlidXRlIGZyb20gdGhlIHNlY29uZCBlbGVtZW50
IGJlY2F1c2UgdGhlIHNhbWUgaWQgY2Fubm90IGJlIHVzZWQgZm9yIG1vcmUgdGhhbiBvbmUgZWxl
bWVudAotICAgIG1fZWxlbWVudDItPnJlbW92ZUF0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0ciwg
ZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIG1fZWxlbWVudDItPnJlbW92ZUF0dHJpYnV0ZShI
VE1MTmFtZXM6OmlkQXR0cik7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKaW5kZXggNjU3M2NhNjE4ZmVlMjJmZjg5YTdlYjViNTFmMjQxZjI4YTQ2ZDBm
NC4uYzE5ZmU5NDNmYjI0MzI4ODI5MDhlODBmZGUzMmE1MTYyYTk0NmFkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTc1Miw3ICs3NTIsNyBAQCB2b2lkIEhUTUxFbGVtZW50
OjpzZXRDb250ZW50RWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbmFibGVkLCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAicGxhaW50ZXh0
LW9ubHkiKSkKICAgICAgICAgc2V0QXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0dHIsICJwbGFp
bnRleHQtb25seSIpOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVuYWJsZWQsICJp
bmhlcml0IikpCi0gICAgICAgIHJlbW92ZUF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCBl
Yyk7CisgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyKTsKICAgICBl
bHNlCiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCmluZGV4IDdlMDNlYzZmMWFjZGM1ODQ1OTY5MGFkOWQzNWY0NjA5MWE2
YzdhZGMuLjE1OTZkNjhiNmM4MDExMWZjNjc5YjZlYjliZmE0NWU1ZGU4MzQwOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNTMyLDEwICs1MzIsOSBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIC8v
IFdlIHNob3VsZCB3cml0ZSBhIHRlc3QgY2FzZSB0byBzaG93IHRoYXQgc2V0dGluZyB0byB0aGUg
ZW1wdHkgc3RyaW5nIGRvZXMgbm90IHJlbW92ZSB0aGUKICAgICAvLyBhdHRyaWJ1dGUgaW4gb3Ro
ZXIgYnJvd3NlcnMgYW5kIHRoZW4gZml4IHRoaXMuIE5vdGUgdGhhdCBzZXR0aW5nIHRvIG51bGwg
KmRvZXMqIHJlbW92ZQogICAgIC8vIHRoZSBhdHRyaWJ1dGUgYW5kIHNldEF0dHJpYnV0ZSBpbXBs
ZW1lbnRzIHRoYXQuCi0gICAgaWYgKHR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWM7Ci0gICAgICAgIHJlbW92ZUF0dHJpYnV0ZSh0eXBlQXR0ciwgZWMpOwotICAgIH0g
ZWxzZQorICAgIGlmICh0eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgcmVtb3ZlQXR0cmlidXRlKHR5
cGVBdHRyKTsKKyAgICBlbHNlCiAgICAgICAgIHNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgdHlwZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CmluZGV4IDdhOWYyNmRlOTgxODY5MzM4MTZhNTU4ZWU1NDY1Y2FiODQ2Mjk5ZmEuLjU0NmM3N2Q2
NTMwMGU4MDRhZTA0ZTgxNWNmOGUwOTEzYzFkODA5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNTI4LDkgKzUyOCw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgZWxlbWVuCiAKICAgICBjb25zdCBOYW1lZE5vZGVNYXAqIGF0dHJNYXAgPSB0
b0hUTUxFbGVtZW50KGNoaWxkKS0+YXR0cmlidXRlcyh0cnVlKTsKICAgICBpZiAoIWF0dHJNYXAg
JiYgbmFtZSkgewotICAgICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoKm5hbWUsIGVjKTsK
LSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBy
ZW1vdmUgYXR0cmlidXRlIjsKKyAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKCpuYW1l
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTQ0LDkgKzU0Miw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgZWxlbWVuCiAgICAgfQogCiAgICAgaWYgKCFmb3VuZE9yaWdpbmFsQXR0cmlidXRl
ICYmIG5hbWUpIHsKLSAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKCpuYW1lLCBlYyk7
Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJDb3VsZCBub3Qg
cmVtb3ZlIGF0dHJpYnV0ZSI7CisgICAgICAgIGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZSgqbmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CkBAIC01NTQsMTIgKzU1MCw4IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgZWxlbWVuCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVBdHRyaWJ1
dGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGFzc2VydEVsZW1lbnQoZXJyb3JTdHJp
bmcsIGVsZW1lbnRJZCk7Ci0gICAgaWYgKGVsZW1lbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgICAgIGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZShuYW1lLCBlYyk7Ci0g
ICAgICAgIGlmIChlYykKLSAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJFeGNlcHRpb24gd2hp
bGUgcmVtb3ZpbmcgYXR0cmlidXRlIjsKLSAgICB9CisgICAgaWYgKGVsZW1lbnQpCisgICAgICAg
IGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cmVtb3ZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggNWU2N2ZmNTJhNTIwNTI1ZGUzOTRj
NWIyYTA2ZjYxNGQ4YWFmMDM0MC4uNTVmNzBmNDUzMWQyYTg0YTA4NDJjNTBmNmZmNjg3ODYyZGNl
NDQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMTAzNSwxMSArMTAz
NSwxMSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyVXNlQXR0cmlidXRlc1RvUmVwbGFj
ZWRFbGVtZW50KFNWR0VsZW1lbnQqIGZyb20sIFNWRwogCiAgICAgdG8tPnNldEF0dHJpYnV0ZXNG
cm9tRWxlbWVudCgqZnJvbSk7CiAKLSAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFNWR05hbWVzOjp4
QXR0ciwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShTVkdO
YW1lczo6eUF0dHIsIEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIHRvLT5yZW1vdmVBdHRyaWJ1
dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgdG8tPnJl
bW92ZUF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQVNTRVJUX05PX0VYQ0VQVElPTik7
Ci0gICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0ciwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CisgICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShTVkdOYW1lczo6eEF0dHIpOwor
ICAgIHRvLT5yZW1vdmVBdHRyaWJ1dGUoU1ZHTmFtZXM6OnlBdHRyKTsKKyAgICB0by0+cmVtb3Zl
QXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIpOworICAgIHRvLT5yZW1vdmVBdHRyaWJ1dGUo
U1ZHTmFtZXM6OmhlaWdodEF0dHIpOworICAgIHRvLT5yZW1vdmVBdHRyaWJ1dGUoWExpbmtOYW1l
czo6aHJlZkF0dHIpOwogfQogCiBib29sIFNWR1VzZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxl
bmd0aHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCmluZGV4IDIxZTgw
MDRlYWMyNzgyNDhkZWU1ZDJiMzBiZGNjYzYxODQ1MWEwODQuLjMwMTNmN2Y2OWVjYjQ2YjExMTEz
MWNmN2NmZTk1NzA2Zjk1Zjc4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAK
QEAgLTQ2Myw4ICs0NjMsNyBAQCB2b2lkIFFXZWJFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29u
c3QgUVN0cmluZyAmbmFtZSkKIHsKICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJu
OwotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKLSAgICBtX2VsZW1lbnQtPnJlbW92
ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pOworICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmli
dXRlKG5hbWUpOwogfQogCiAvKiEKQEAgLTIxMzQsNCArMjEzMywzIEBAIHZvaWQgUXRXZWJFbGVt
ZW50UnVudGltZTo6aW5pdGlhbGl6ZSgpCiAgICAgSlNDOjpCaW5kaW5nczo6cmVnaXN0ZXJDdXN0
b21UeXBlKGlkLCBjb252ZXJ0SlNWYWx1ZVRvV2ViRWxlbWVudFZhcmlhbnQsIGNvbnZlcnRXZWJF
bGVtZW50VmFyaWFudFRvSlNWYWx1ZSk7CiAjZW5kaWYKIH0KLQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120106</attachid>
            <date>2011-12-20 16:02:49 -0800</date>
            <delta_ts>2011-12-20 17:33:09 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-74953-20111220160248.patch</filename>
            <type>text/plain</type>
            <size>30051</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYxODY2NGFhOTQ3NmFk
MmM1YjhkNjRiZTY3YmIxNzk1YTNkYmNiNy4uOTI5ZTA3NjM3Yzg0NGVkNGU5N2Y2Y2I1ZDE0ZWI5
NzcwNDIyODA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4IEBACiAyMDExLTEyLTIwICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5
IHdvcmsgd2hlbiByZW1vdmluZyBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgVmFyaW91cyBjb2RlcGF0aHMgaW4g
RWxlbWVudCBhbmQgTmFtZWROb2RlTWFwIHJlcGVhdGVkbHkgc2VhcmNoCisgICAgICAgIHRocm91
Z2ggdGhlIGxpc3Qgb2YgYXR0cmlidXRlcyBkdXJpbmcgYSBzaW5nbGUgb3BlcmF0aW9uLiBUbyBh
dm9pZAorICAgICAgICB0aGlzLCBJJ3ZlIGFkZGVkIG5ldyBnZXR0ZXJzIHRvIE5hbWVkTm9kZU1h
cCB0aGF0IHJldHVybiBpbmRpY2VzCisgICAgICAgIHJhdGhlciB0aGFuIEF0dHJpYnV0ZSpzICh0
aGV5IHJldHVybiBXVEY6Om5vdEZvdW5kIGlmIG5vIG1hdGNoIGlzCisgICAgICAgIGZvdW5kKS4g
VGhlc2UgbmV3IG1ldGhvZHMgYXJlIG5vdyB1c2VkIGR1cmluZyByZW1vdmVBdHRyaWJ1dGUKKyAg
ICAgICAgb3BlcmF0aW9ucywgYXMgd2VsbCBhcyBzZXRBdHRyaWJ1dGUgYW5kIE5hbWVkTm9kZU1h
cDo6c2V0TmFtZWRJdGVtCisgICAgICAgIChhbG9uZyB3aXRoIGEgbmV3IHJlcGxhY2VBdHRyaWJ1
dGUgaGVscGVyIG1ldGhvZCkuCisKKyAgICAgICAgVGhlIG90aGVyIG9wdGltaXphdGlvbiBoZXJl
IGludm9sdmVzIHRoZSBjcmVhdGlvbi9kZXN0cnVjdGlvbgorICAgICAgICBvZiBuZXZlci1yZWZl
cmVuY2VzIEF0dHIgbm9kZXMuIFRoaXMgaXMgbm93IGF2b2lkZWQgYnkgY2FsbGluZworICAgICAg
ICBOYW1lZE5vZGVNYXA6OnJlbW92ZUF0dHJpYnV0ZSBkaXJlY3RseSBpbnN0ZWFkIG9mIGdvaW5n
IHRocm91Z2gKKyAgICAgICAgTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0uCisKKyAgICAg
ICAgQXMgYSBjbGVhbnVwIGFmdGVyIHRoZSBhYm92ZSBjaGFuZ2VzLCB0aGUgRXhjZXB0aW9uQ29k
ZSBhcmd1bWVudCBpcworICAgICAgICBnb25lIGZyb20gRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRl
IGFuZCBmcmllbmRzIChpdCB3YXMgbmV2ZXIgc2V0CisgICAgICAgIHByZXZpb3VzbHkpLiBUaGUg
YnVsayBvZiB0aGUgZmlsZXMgbWVudGlvbmVkIGJlbG93IGFyZSBzaW1wbHkgdXBkYXRpbmcKKyAg
ICAgICAgY2FsbGVycyB0byB0aGVzZSBtZXRob2RzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
bm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4cGVjdGVkLgorCisgICAgICAgICogZG9tL0RhdGFzZXRE
T01TdHJpbmdNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6
ZGVsZXRlSXRlbSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnNldEJvb2xlYW5BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3Zl
QXR0cmlidXRlTlMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKToKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAg
KiBkb20vTmFtZWROb2RlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6
c2V0TmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFt
ZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRl
bUluZGV4U2xvd0Nhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpyZXBsYWNl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmli
dXRlKToKKyAgICAgICAgKiBkb20vTmFtZWROb2RlTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpO
YW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRO
b2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRO
b2RlTWFwOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3du
SW5saW5lU3R5bGVBcm91bmROb2RlKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFw
aFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZDo6Y2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrKToKKyAgICAgICAg
KiBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Bs
aXRFbGVtZW50Q29tbWFuZDo6ZXhlY3V0ZUFwcGx5KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFi
bGUpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRUeXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OnNldEF0dHJpYnV0ZXNBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6dHJhbnNmZXJVc2VBdHRyaWJ1dGVzVG9S
ZXBsYWNlZEVsZW1lbnQpOgorCisyMDExLTEyLTIwICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21p
dW0ub3JnPgorCiAgICAgICAgIFJlbW92ZSBuby1vcCBET01BdHRyKiBldmVudCBkaXNwYXRjaCBt
ZXRob2RzIGZyb20gRWxlbWVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQ5NDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAyOTI4YmNkZWE3YTUxNzEyZDRk
OWI1OWVjYjMwYzM5M2I2MmZlNGEyLi44NGI3YTIzMDBjNzI0NDJhOGIyZGY3ZmFkM2RmOTg5YTQ4
YjU1YzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTEyLTIwICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5
IHdvcmsgd2hlbiByZW1vdmluZyBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3Bw
OgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6IFVwZGF0ZWQgYSBjYWxs
ZXIgb2YKKyAgICAgICAgV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlIHRvIHJlbW92
ZSBFeGNlcHRpb25Db2RlIGFyZ3VtZW50LgorCiAyMDExLTEyLTIwICBSYWZhZWwgQnJhbmRhbyAg
PHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBFeHRlbmQgUVF1aWNr
V2Vidmlldzo6bmF2aWdhdGlvblJlcXVlc3RlZCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
c2V0RE9NU3RyaW5nTWFwLmNwcAppbmRleCBlNjhlOWQ5NTkyMWIzODY1MDk2MGEwMWEzY2QxNTJi
NmU0YmU3NzFmLi5lMGQ4NzVkY2JiMGQ3YmU2MDQ3ZjE3ZjNhMTExZWY1OTExZjBlOGI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCkBAIC0xOTksOCArMTk5
LDcgQEAgdm9pZCBEYXRhc2V0RE9NU3RyaW5nTWFwOjpkZWxldGVJdGVtKGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBF
eGNlcHRpb25Db2RlIGR1bW15OwotICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKGNvbnZl
cnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUobmFtZSksIGR1bW15KTsKKyAgICBtX2VsZW1l
bnQtPnJlbW92ZUF0dHJpYnV0ZShjb252ZXJ0UHJvcGVydHlOYW1lVG9BdHRyaWJ1dGVOYW1lKG5h
bWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IGIxNTAwM2NkMmFmMjQzNmQxOWM5MzlkYTFkZjU4MzRlZTg4ZDVmZjkuLjBmZGI1NzdjM2Mz
NDQ0YTUxZmQ1MDIwOTc3ZjM2OGZlZGI4MTQ5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTE4OCwyNCArMTg4LDI2IEBAIHZvaWQgRWxlbWVudDo6ZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlv
blJlY29yZElmUmVxdWVzdGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0CiB9CiAjZW5kaWYKIAot
dm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKQogewotICAgIGlmIChtX2F0dHJpYnV0ZU1hcCkgewotICAgICAg
ICBlYyA9IDA7Ci0gICAgICAgIFJlZlB0cjxOb2RlPiBhdHRyTm9kZSA9IG1fYXR0cmlidXRlTWFw
LT5yZW1vdmVOYW1lZEl0ZW0obmFtZSwgZWMpOwotICAgICAgICBpZiAoZWMgPT0gTk9UX0ZPVU5E
X0VSUikKLSAgICAgICAgICAgIGVjID0gMDsKLSAgICB9CisgICAgaWYgKCFtX2F0dHJpYnV0ZU1h
cCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IGluZGV4ID0gbV9hdHRyaWJ1dGVNYXAt
PmdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CisgICAgICAgIHJldHVybjsKKworICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUobmFtZSwgbV9hdHRy
aWJ1dGVNYXAtPmF0dHJpYnV0ZUl0ZW0oaW5kZXgpLT52YWx1ZSgpLCBudWxsQXRvbSk7CisKKyAg
ICBtX2F0dHJpYnV0ZU1hcC0+cmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKIH0KIAotdm9pZCBFbGVt
ZW50OjpzZXRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGJvb2wg
YikKK3ZvaWQgRWxlbWVudDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBib29sIHZhbHVlKQogewotICAgIGlmIChiKQorICAgIGlmICh2YWx1ZSkKICAgICAg
ICAgc2V0QXR0cmlidXRlKG5hbWUsIGVtcHR5QXRvbSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEV4
Y2VwdGlvbkNvZGUgZXg7Ci0gICAgICAgIHJlbW92ZUF0dHJpYnV0ZShuYW1lLCBleCk7Ci0gICAg
fQorICAgIGVsc2UKKyAgICAgICAgcmVtb3ZlQXR0cmlidXRlKG5hbWUpOwogfQogCiBOb2RlOjpO
b2RlVHlwZSBFbGVtZW50Ojpub2RlVHlwZSgpIGNvbnN0CkBAIC02MjcsMjAgKzYyOSwyMCBAQCB2
b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUsCiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFt
ZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBuYW1l
OwogCi0gICAgLy8gQWxsb2NhdGUgYXR0cmlidXRlIG1hcCBpZiBuZWNlc3NhcnkuCi0gICAgQXR0
cmlidXRlKiBvbGQgPSBhdHRyaWJ1dGVzKGZhbHNlKS0+Z2V0QXR0cmlidXRlSXRlbShsb2NhbE5h
bWUsIGZhbHNlKTsKLSAgICBzZXRBdHRyaWJ1dGVJbnRlcm5hbChvbGQsIG9sZCA/IG9sZC0+bmFt
ZSgpIDogUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBudWxsQXRvbSksIHZhbHVl
KTsKKyAgICBzaXplX3QgaW5kZXggPSBhdHRyaWJ1dGVzKGZhbHNlKS0+Z2V0QXR0cmlidXRlSXRl
bUluZGV4KGxvY2FsTmFtZSwgZmFsc2UpOworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1l
ID0gaW5kZXggIT0gbm90Rm91bmQgPyBtX2F0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpbmRl
eCktPm5hbWUoKSA6IFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgbnVsbEF0b20p
OworICAgIHNldEF0dHJpYnV0ZUludGVybmFsKGluZGV4LCBxTmFtZSwgdmFsdWUpOwogfQogCiB2
b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIC8vIEFsbG9jYXRlIGF0dHJpYnV0ZSBtYXAg
aWYgbmVjZXNzYXJ5LgotICAgIEF0dHJpYnV0ZSogb2xkID0gYXR0cmlidXRlcyhmYWxzZSktPmdl
dEF0dHJpYnV0ZUl0ZW0obmFtZSk7Ci0gICAgc2V0QXR0cmlidXRlSW50ZXJuYWwob2xkLCBuYW1l
LCB2YWx1ZSk7CisgICAgc2V0QXR0cmlidXRlSW50ZXJuYWwoYXR0cmlidXRlcyhmYWxzZSktPmdl
dEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lKSwgbmFtZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9p
ZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hbChBdHRyaWJ1dGUqIG9sZCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK2lubGluZSB2b2lk
IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKHNpemVfdCBpbmRleCwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKKyAgICBBdHRyaWJ1
dGUqIG9sZCA9IGluZGV4ICE9IG5vdEZvdW5kID8gbV9hdHRyaWJ1dGVNYXAtPmF0dHJpYnV0ZUl0
ZW0oaW5kZXgpIDogMDsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKCFpc1N5bmNo
cm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwpAQCAtNjUxLDcgKzY1Myw3
IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKEF0dHJpYnV0ZSog
b2xkLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuCiAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShuYW1l
LCBvbGQgPyBvbGQtPnZhbHVlKCkgOiBudWxsQXRvbSwgdmFsdWUpOwogCiAgICAgaWYgKG9sZCAm
JiB2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZUF0dHJpYnV0
ZShuYW1lKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZUF0dHJpYnV0ZShpbmRleCk7
CiAgICAgZWxzZSBpZiAoIW9sZCAmJiAhdmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIG1fYXR0cmli
dXRlTWFwLT5hZGRBdHRyaWJ1dGUoY3JlYXRlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7CiAgICAg
ZWxzZSBpZiAob2xkKSB7CkBAIC0xNDYxLDI1ICsxNDYzLDMxIEBAIHZvaWQgRWxlbWVudDo6c2V0
QXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21p
Y1N0cmluCiAgICAgc2V0QXR0cmlidXRlKHFOYW1lLCB2YWx1ZSk7CiB9CiAKLXZvaWQgRWxlbWVu
dDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0g
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgp
LCB0aGlzKTsKKyAgICBpZiAoIW1fYXR0cmlidXRlTWFwKQorICAgICAgICByZXR1cm47CiAKICAg
ICBTdHJpbmcgbG9jYWxOYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzKSA/IG5h
bWUubG93ZXIoKSA6IG5hbWU7CisgICAgc2l6ZV90IGluZGV4ID0gbV9hdHRyaWJ1dGVNYXAtPmdl
dEF0dHJpYnV0ZUl0ZW1JbmRleChsb2NhbE5hbWUsIGZhbHNlKTsKKyAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKworICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0g
bV9hdHRyaWJ1dGVNYXAtPmF0dHJpYnV0ZUl0ZW0oaW5kZXgpOworCisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKKworICAg
IGlmICghYXR0cmlidXRlLT5pc051bGwoKSkKKyAgICAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShh
dHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpLCBudWxsQXRvbSk7CisKKyAgICBt
X2F0dHJpYnV0ZU1hcC0+cmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKIAotICAgIGlmIChtX2F0dHJp
YnV0ZU1hcCkgewotICAgICAgICBlYyA9IDA7Ci0gICAgICAgIFJlZlB0cjxOb2RlPiBhdHRyTm9k
ZSA9IG1fYXR0cmlidXRlTWFwLT5yZW1vdmVOYW1lZEl0ZW0obG9jYWxOYW1lLCBlYyk7Ci0gICAg
ICAgIGlmIChlYyA9PSBOT1RfRk9VTkRfRVJSKQotICAgICAgICAgICAgZWMgPSAwOwotICAgIH0K
LSAgICAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTUF0dHIoZG9j
dW1lbnQoKSwgdGhpcywgbmFtZSk7CiB9CiAKLXZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRl
TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTlMoY29uc3Qg
U3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lKQogewotICAgIHJl
bW92ZUF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG5hbWVzcGFj
ZVVSSSksIGVjKTsKKyAgICByZW1vdmVBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwg
bG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpKTsKIH0KIAogUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50
OjpnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmlu
ZGV4IDYyMGEwYjM5ZDU4ZjlkZGVhMzhhY2E2OTQ5NTc0MDg5NDI0NWZhMDguLjkyZDU5YzkxMTIw
OTU1Njc4ZDQ3MTlhMzRlMjJlZTk2MTJkMzQ1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHJlbW92
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIC8vIFR5cGVk
IGdldHRlcnMgYW5kIHNldHRlcnMgZm9yIGxhbmd1YWdlIGJpbmRpbmdzLgogICAgIGludCBnZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25z
dDsKQEAgLTE3Niw4ICsxNzYsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgYWJzb2x1
dGUgYm91bmRpbmcgYm94IHRyYW5zbGF0ZWQgaW50byBzY3JlZW4gY29vcmRpbmF0ZXM6CiAgICAg
TGF5b3V0UmVjdCBzY3JlZW5SZWN0KCkgY29uc3Q7CiAKLSAgICB2b2lkIHJlbW92ZUF0dHJpYnV0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHJlbW92ZUF0
dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2Fs
TmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0
cmluZyYgbmFtZSk7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5h
bWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpOwogCiAgICAgUGFzc1JlZlB0cjxB
dHRyPiBnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgUGFzc1JlZlB0
cjxBdHRyPiBnZXRBdHRyaWJ1dGVOb2RlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IFN0cmluZyYgbG9jYWxOYW1lKTsKQEAgLTM5NSw3ICszOTUsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2hp
bGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEF0dHJpYnV0ZUlu
dGVybmFsKEF0dHJpYnV0ZSogb2xkLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSk7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGVJbnRlcm5hbChzaXplX3QgaW5k
ZXgsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjcmVhdGVBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIAogI2lmbmRlZiBO
REVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA4MTAzMmU2NmE0MjBjMmE3MzkyYjNjM2Vk
YWQzN2JlMTIxZDI1YTQ4Li44MWZiMjYwMzUxZTQzNTJmMTA1ZjQ3NGMyZDVjMzM4M2E5YmE5ZGZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0zMyw4ICszMyw3IEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgW09sZFN0eWxlT2JqQ10gdm9pZCBzZXRBdHRyaWJ1dGUoaW4gW09wdGlvbmFsPUNh
bGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBE
T01TdHJpbmcgdmFsdWUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAg
ICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVl
XSBET01TdHJpbmcgbmFtZSkKLSAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAg
ICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFs
dWVdIERPTVN0cmluZyBuYW1lKTsKICAgICAgICAgQXR0ciBnZXRBdHRyaWJ1dGVOb2RlKGluIFtP
cHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG5hbWUpOwogICAgICAgICBB
dHRyIHNldEF0dHJpYnV0ZU5vZGUoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBB
dHRyIG5ld0F0dHIpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKQEAgLTUxLDgg
KzUwLDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIHZh
bHVlKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtPbGRTdHls
ZU9iakNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpCi0gICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKTsKICAgICAgICAgW09sZFN0eWxlT2JqQ10g
Tm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJp
bmcsT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBuYW1lc3BhY2VVUkks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgbG9jYWxOYW1lKTsK
ICAgICAgICAgW09sZFN0eWxlT2JqQ10gQXR0ciBnZXRBdHRyaWJ1dGVOb2RlTlMoaW4gW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nLE9wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJp
bmcgbmFtZXNwYWNlVVJJLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9k
ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAppbmRleCA4NmI3
ZGUzOGQwZGZhZDc2MzVlMWQyZjNmYmM2NGYyM2Y2MzViNzIzLi4wMTQ5ZDU0NWE4ZGRmZTBlODhj
YzEzYzY5YzllNTViZjNlNjZjMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFt
ZWROb2RlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcApA
QCAtMTA4LDcgKzEwOCw4IEBAIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpzZXROYW1l
ZEl0ZW0oTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQXR0ciogYXR0ciA9IHN0
YXRpY19jYXN0PEF0dHIqPihub2RlKTsKIAogICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0
ci0+YXR0cigpOwotICAgIEF0dHJpYnV0ZSogb2xkQXR0cmlidXRlID0gZ2V0QXR0cmlidXRlSXRl
bShhdHRyaWJ1dGUtPm5hbWUoKSk7CisgICAgc2l6ZV90IGluZGV4ID0gZ2V0QXR0cmlidXRlSXRl
bUluZGV4KGF0dHJpYnV0ZS0+bmFtZSgpKTsKKyAgICBBdHRyaWJ1dGUqIG9sZEF0dHJpYnV0ZSA9
IGluZGV4ICE9IG5vdEZvdW5kID8gYXR0cmlidXRlSXRlbShpbmRleCkgOiAwOwogICAgIGlmIChv
bGRBdHRyaWJ1dGUgPT0gYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gbm9kZTsgLy8gd2Uga25v
dyBhYm91dCBpdCBhbHJlYWR5CiAKQEAgLTEyNSwxMCArMTI2LDkgQEAgUGFzc1JlZlB0cjxOb2Rl
PiBOYW1lZE5vZGVNYXA6OnNldE5hbWVkSXRlbShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICBSZWZQdHI8QXR0cj4gb2xkQXR0cjsKICAgICBpZiAob2xkQXR0cmlidXRlKSB7CiAg
ICAgICAgIG9sZEF0dHIgPSBvbGRBdHRyaWJ1dGUtPmNyZWF0ZUF0dHJJZk5lZWRlZChtX2VsZW1l
bnQpOwotICAgICAgICByZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCkpOwotICAgIH0K
LQotICAgIGFkZEF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICByZXBsYWNlQXR0cmlidXRl
KGluZGV4LCBhdHRyaWJ1dGUpOworICAgIH0gZWxzZQorICAgICAgICBhZGRBdHRyaWJ1dGUoYXR0
cmlidXRlKTsKICAgICByZXR1cm4gb2xkQXR0ci5yZWxlYXNlKCk7CiB9CiAKQEAgLTE0NCwxNyAr
MTQ0LDE4IEBAIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0o
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRXhjZXB0CiB7CiAgICAgQVNTRVJUKG1fZWxlbWVu
dCk7CiAKLSAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZUl0ZW0obmFtZSk7
Ci0gICAgaWYgKCFhdHRyaWJ1dGUpIHsKKyAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJ
dGVtSW5kZXgobmFtZSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CiAgICAgICAgIGVj
ID0gTk9UX0ZPVU5EX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgQXR0cmli
dXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVJdGVtKGluZGV4KTsKICAgICBSZWZQdHI8QXR0cj4g
YXR0ciA9IGF0dHJpYnV0ZS0+Y3JlYXRlQXR0cklmTmVlZGVkKG1fZWxlbWVudCk7CiAKICAgICBt
X2VsZW1lbnQtPndpbGxNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0
ZS0+dmFsdWUoKSwgbnVsbEF0b20pOwogCi0gICAgcmVtb3ZlQXR0cmlidXRlKG5hbWUpOworICAg
IHJlbW92ZUF0dHJpYnV0ZShpbmRleCk7CiAgICAgcmV0dXJuIGF0dHIucmVsZWFzZSgpOwogfQog
CkBAIC0xNzEsNyArMTcyLDcgQEAgdm9pZCBOYW1lZE5vZGVNYXA6OmNvcHlBdHRyaWJ1dGVzVG9W
ZWN0b3IoVmVjdG9yPFJlZlB0cjxBdHRyaWJ1dGU+ID4mIGNvcHkpCiAgICAgY29weSA9IG1fYXR0
cmlidXRlczsKIH0KIAotQXR0cmlidXRlKiBOYW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW1T
bG93Q2FzZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2Fz
ZSkgY29uc3QKK3NpemVfdCBOYW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleFNsb3dD
YXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBj
b25zdAogewogICAgIHVuc2lnbmVkIGxlbiA9IGxlbmd0aCgpOwogCkBAIC0xODAsMTYgKzE4MSwx
NiBAQCBBdHRyaWJ1dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbVNsb3dDYXNlKGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bAogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSA9IG1fYXR0cmlidXRlc1tpXS0+bmFtZSgpOwogICAgICAgICBpZiAoIWF0dHJO
YW1lLmhhc1ByZWZpeCgpKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCBhdHRyTmFtZS5sb2NhbE5hbWUoKSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpXS5nZXQoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gaTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
b3VsZCBiZSBmYXN0ZXIgdG8gZG8gdGhpcyBjb21wYXJpc29uIHdpdGhvdXQgY2FsbGluZyB0b1N0
cmluZywgd2hpY2gKICAgICAgICAgICAgIC8vIGdlbmVyYXRlcyBhIHRlbXBvcmFyeSBzdHJpbmcg
YnkgY29uY2F0ZW5hdGlvbi4gQnV0IHRoaXMgYnJhbmNoIGlzIG9ubHkgcmVhY2hlZAogICAgICAg
ICAgICAgLy8gaWYgdGhlIGF0dHJpYnV0ZSBuYW1lIGhhcyBhIHByZWZpeCwgd2hpY2ggaXMgcmFy
ZSBpbiBIVE1MLgogICAgICAgICAgICAgaWYgKGVxdWFsUG9zc2libHlJZ25vcmluZ0Nhc2UobmFt
ZSwgYXR0ck5hbWUudG9TdHJpbmcoKSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpXS5nZXQoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gaTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bm90Rm91bmQ7CiB9CiAKIHZvaWQgTmFtZWROb2RlTWFwOjpjbGVhckF0dHJpYnV0ZXMoKQpAQCAt
MjU5LDM5ICsyNjAsNDMgQEAgdm9pZCBOYW1lZE5vZGVNYXA6OmFkZEF0dHJpYnV0ZShQYXNzUmVm
UHRyPEF0dHJpYnV0ZT4gcHJwQXR0cmlidXRlKQogICAgIH0KIH0KIAotdm9pZCBOYW1lZE5vZGVN
YXA6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQordm9pZCBOYW1l
ZE5vZGVNYXA6OnJlbW92ZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgpCiB7Ci0gICAgdW5zaWduZWQg
bGVuID0gbGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBsZW47Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAgIGlmIChtX2F0dHJpYnV0ZXNbaV0t
Pm5hbWUoKS5tYXRjaGVzKG5hbWUpKSB7Ci0gICAgICAgICAgICBpbmRleCA9IGk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChpbmRleCA+PSBsZW4pCi0g
ICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoaW5kZXggPCBsZW5ndGgoKSk7CiAKLSAgICAvLyBS
ZW1vdmUgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSBsaXN0Ci0gICAgUmVmUHRyPEF0dHJpYnV0ZT4g
YXR0ciA9IG1fYXR0cmlidXRlc1tpbmRleF0uZ2V0KCk7Ci0gICAgaWYgKEF0dHIqIGEgPSBtX2F0
dHJpYnV0ZXNbaW5kZXhdLT5hdHRyKCkpCi0gICAgICAgIGEtPm1fZWxlbWVudCA9IDA7CisgICAg
UmVmUHRyPEF0dHJpYnV0ZT4gYXR0cmlidXRlID0gbV9hdHRyaWJ1dGVzW2luZGV4XTsKKyAgICBp
ZiAoQXR0ciogYXR0ciA9IGF0dHJpYnV0ZS0+YXR0cigpKQorICAgICAgICBhdHRyLT5tX2VsZW1l
bnQgPSAwOwogCiAgICAgbV9hdHRyaWJ1dGVzLnJlbW92ZShpbmRleCk7CiAKLSAgICAvLyBOb3Rp
ZnkgdGhlIGVsZW1lbnQgdGhhdCB0aGUgYXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQKLSAgICAv
LyBkaXNwYXRjaCBhcHByb3ByaWF0ZSBtdXRhdGlvbiBldmVudHMKLSAgICBpZiAobV9lbGVtZW50
ICYmICFhdHRyLT5tX3ZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIEF0b21pY1N0cmluZyB2YWx1
ZSA9IGF0dHItPm1fdmFsdWU7Ci0gICAgICAgIGF0dHItPm1fdmFsdWUgPSBudWxsQXRvbTsKLSAg
ICAgICAgbV9lbGVtZW50LT5hdHRyaWJ1dGVDaGFuZ2VkKGF0dHIuZ2V0KCkpOwotICAgICAgICBh
dHRyLT5tX3ZhbHVlID0gdmFsdWU7CisgICAgaWYgKG1fZWxlbWVudCAmJiAhYXR0cmlidXRlLT5t
X3ZhbHVlLmlzTnVsbCgpKSB7CisgICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZSA9IGF0dHJpYnV0
ZS0+bV92YWx1ZTsKKyAgICAgICAgYXR0cmlidXRlLT5tX3ZhbHVlID0gbnVsbEF0b207CisgICAg
ICAgIG1fZWxlbWVudC0+YXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUuZ2V0KCkpOworICAgICAg
ICBhdHRyaWJ1dGUtPm1fdmFsdWUgPSB2YWx1ZTsKICAgICB9CiAgICAgaWYgKG1fZWxlbWVudCkK
ICAgICAgICAgbV9lbGVtZW50LT5kaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CiB9CiAK
K3ZvaWQgTmFtZWROb2RlTWFwOjpyZXBsYWNlQXR0cmlidXRlKHNpemVfdCBpbmRleCwgUGFzc1Jl
ZlB0cjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZSkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBsZW5ndGgo
KSk7CisKKyAgICBpZiAoQXR0ciogYXR0ciA9IG1fYXR0cmlidXRlc1tpbmRleF0tPmF0dHIoKSkK
KyAgICAgICAgYXR0ci0+bV9lbGVtZW50ID0gMDsKKyAgICBtX2F0dHJpYnV0ZXNbaW5kZXhdID0g
YXR0cmlidXRlOworICAgIGlmIChBdHRyKiBhdHRyID0gbV9hdHRyaWJ1dGVzW2luZGV4XS0+YXR0
cigpKQorICAgICAgICBhdHRyLT5tX2VsZW1lbnQgPSBtX2VsZW1lbnQ7CisKKyAgICBpZiAobV9l
bGVtZW50KSB7CisgICAgICAgIG1fZWxlbWVudC0+YXR0cmlidXRlQ2hhbmdlZChtX2F0dHJpYnV0
ZXNbaW5kZXhdLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlc1tpbmRleF0tPm5hbWUo
KSAhPSBzdHlsZUF0dHIpCisgICAgICAgICAgICBtX2VsZW1lbnQtPmRpc3BhdGNoU3VidHJlZU1v
ZGlmaWVkRXZlbnQoKTsKKyAgICB9Cit9CisKIHZvaWQgTmFtZWROb2RlTWFwOjpzZXRDbGFzcyhj
b25zdCBTdHJpbmcmIGNsYXNzU3RyKSAKIHsgCiAgICAgaWYgKCFlbGVtZW50KCktPmhhc0NsYXNz
KCkpIHsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmgKaW5kZXggMzRmMzg2MDQ2N2NmZWNmNWM5
ZDJhZTBmODU5MDM1MWVhYWU4YWE2NC4uMzUzNDAxNDgzOTViNDNhNjk4NWNkNTNhNzQ3NzA5Mzg2
MTA1MDk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY1
LDYgKzY2LDcgQEAgcHVibGljOgogCiAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbaW5kZXhdLmdldCgpOyB9CiAg
ICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dDsKKyAgICBzaXplX3QgZ2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsKIAogICAgIHZvaWQgY29weUF0dHJpYnV0ZXNUb1ZlY3RvcihWZWN0b3I8UmVmUHRy
PEF0dHJpYnV0ZT4gPiYpOwogCkBAIC04OSw2ICs5MSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVz
ZSBmdW5jdGlvbnMgZG8gbm8gZXJyb3IgY2hlY2tpbmcuCiAgICAgdm9pZCBhZGRBdHRyaWJ1dGUo
UGFzc1JlZlB0cjxBdHRyaWJ1dGU+KTsKICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoc2l6ZV90IGluZGV4KTsK
IAogICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KIApA
QCAtMTEwLDkgKzExMywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGV0YWNoQXR0cmlidXRlc0Zy
b21FbGVtZW50KCk7CiAgICAgdm9pZCBkZXRhY2hGcm9tRWxlbWVudCgpOwogICAgIEF0dHJpYnV0
ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZSkgY29uc3Q7Ci0gICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtU2xv
d0Nhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Up
IGNvbnN0OworICAgIHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0OworICAgIHNpemVfdCBn
ZXRBdHRyaWJ1dGVJdGVtSW5kZXhTbG93Q2FzZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hv
dWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVzKGNv
bnN0IE5hbWVkTm9kZU1hcCYpOwogICAgIHZvaWQgY2xlYXJBdHRyaWJ1dGVzKCk7CisgICAgdm9p
ZCByZXBsYWNlQXR0cmlidXRlKHNpemVfdCBpbmRleCwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+KTsK
ICAgICBpbnQgZGVjbENvdW50KCkgY29uc3Q7CiAKICAgICBpbnQgbV9tYXBwZWRBdHRyaWJ1dGVD
b3VudDsKQEAgLTEyNCwzNCArMTI5LDU5IEBAIHByaXZhdGU6CiAKIGlubGluZSBBdHRyaWJ1dGUq
IE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KSBjb25zdAogewotICAgIHVuc2lnbmVkIGxlbiA9IGxlbmd0aCgpOworICAgIHNpemVfdCBpbmRl
eCA9IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91
bmQpCisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXNbaW5kZXhdLmdldCgpOworICAgIHJldHVy
biAwOworfQorCitpbmxpbmUgc2l6ZV90IE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbUlu
ZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0Cit7CisgICAgc2l6ZV90IGxlbiA9
IGxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAg
ICAgICBpZiAobV9hdHRyaWJ1dGVzW2ldLT5uYW1lKCkubWF0Y2hlcyhuYW1lKSkKLSAgICAgICAg
ICAgIHJldHVybiBtX2F0dHJpYnV0ZXNbaV0uZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gaTsK
ICAgICB9CisgICAgcmV0dXJuIG5vdEZvdW5kOworfQorCitpbmxpbmUgQXR0cmlidXRlKiBOYW1l
ZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0Cit7CisgICAgc2l6ZV90IGluZGV4ID0gZ2V0QXR0
cmlidXRlSXRlbUluZGV4KG5hbWUsIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpOworICAgIGlm
IChpbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpbmRleF0u
Z2V0KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIC8vIFdlIHVzZSBhIGJvb2xlYW4gcGFyYW1ldGVy
IGluc3RlYWQgb2YgY2FsbGluZyBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlIHNvIHRoYXQgdGhl
IGNhbGxlcgogLy8gY2FuIHR1bmUgdGhlIGJlaGF2aW9yIChoYXNBdHRyaWJ1dGUgaXMgY2FzZSBz
ZW5zaXRpdmUgd2hlcmVhcyBnZXRBdHRyaWJ1dGUgaXMgbm90KS4KLWlubGluZSBBdHRyaWJ1dGUq
IE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wg
c2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKK2lubGluZSBzaXplX3QgTmFtZWROb2Rl
TWFwOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbGVuID0gbGVuZ3Ro
KCk7CiAgICAgYm9vbCBkb1Nsb3dDaGVjayA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2U7Ci0g
ICAgCisKICAgICAvLyBPcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIGF0dHJpYnV0ZSBl
eGlzdHMgYW5kIGl0cyBuYW1lIGV4YWN0bHkgbWF0Y2hlcy4KICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUgPSBtX2F0dHJpYnV0ZXNbaV0tPm5hbWUoKTsKICAgICAgICAgaWYgKCFhdHRyTmFtZS5oYXNQ
cmVmaXgoKSkgewogICAgICAgICAgICAgaWYgKG5hbWUgPT0gYXR0ck5hbWUubG9jYWxOYW1lKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tpXS5nZXQoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBkb1Nsb3dDaGVj
ayA9IHRydWU7CiAgICAgfQogCiAgICAgaWYgKGRvU2xvd0NoZWNrKQotICAgICAgICByZXR1cm4g
Z2V0QXR0cmlidXRlSXRlbVNsb3dDYXNlKG5hbWUsIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Up
OwotICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gZ2V0QXR0cmlidXRlSXRlbUluZGV4U2xv
d0Nhc2UobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSk7CisgICAgcmV0dXJuIG5vdEZv
dW5kOworfQorCitpbmxpbmUgdm9pZCBOYW1lZE5vZGVNYXA6OnJlbW92ZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lKQoreworICAgIHNpemVfdCBpbmRleCA9IGdldEF0dHJpYnV0
ZUl0ZW1JbmRleChuYW1lKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJl
dHVybjsKKworICAgIHJlbW92ZUF0dHJpYnV0ZShpbmRleCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAK
aW5kZXggYmZmZmEzYTNiZGE1NDk4N2E0MTFiYjhlNGZjNTBhYzk2NDZkYjAyYi4uNTRkMjE2MzFm
YjQzZDJjZGUzYzdlNTY4MjQ2NGY3MmQzMTEwM2MzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTk5MCw5ICs5OTAsNyBAQCB2b2lkIEFwcGx5
U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUq
IHN0eWxlLCBOb2RlKgogICAgICAgICAgICAgaWYgKCFjaGlsZC0+Y29udGFpbnModGFyZ2V0Tm9k
ZSkgJiYgZWxlbWVudHNUb1B1c2hEb3duLnNpemUoKSkgewogICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudHNUb1B1c2hEb3duLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiB3cmFwcGVyID0gZWxlbWVudHNUb1B1c2hE
b3duW2ldLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKLSAgICAgICAgICAgICAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHdyYXBwZXItPnJl
bW92ZUF0dHJpYnV0ZShzdHlsZUF0dHIsIGVjKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFlYyk7CisgICAgICAgICAgICAgICAgICAgIHdyYXBwZXItPnJlbW92ZUF0dHJpYnV0ZShzdHls
ZUF0dHIpOwogICAgICAgICAgICAgICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50
KGNoaWxkLCBjaGlsZCwgd3JhcHBlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZC5jcHAKaW5kZXggNjQ4NGM1OGE5NjQzNjIyYmQ3M2E3MjdmYmNiZWY0
MzU4YTU1OTVkOC4uZjQwYzE1Y2I0YjdhMjZjMjBlN2YyOTI2NjFiOWJlZDRkYjUwNDEzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQuY3BwCkBAIC0xMzcsOSArMTM3LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50
PiBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpjbG9uZUhpZXJhcmNoeVVuZGVyTmV3
QmxvY2sKICAgICBmb3IgKHNpemVfdCBpID0gYW5jZXN0b3JzLnNpemUoKTsgaSAhPSAwOyAtLWkp
IHsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGNoaWxkID0gYW5jZXN0b3JzW2kgLSAxXS0+Y2xv
bmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7CiAgICAgICAgIC8vIEl0IHNob3VsZCBhbHdheXMg
YmUgb2theSB0byByZW1vdmUgaWQgZnJvbSB0aGUgY2xvbmVkIGVsZW1lbnRzLCBzaW5jZSB0aGUg
b3JpZ2luYWxzIGFyZSBub3QgZGVsZXRlZC4KLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgICAgIGNoaWxkLT5yZW1vdmVBdHRyaWJ1dGUoaWRBdHRyLCBlYyk7Ci0gICAgICAgIEFT
U0VSVCghZWMpOworICAgICAgICBjaGlsZC0+cmVtb3ZlQXR0cmlidXRlKGlkQXR0cik7CiAgICAg
ICAgIGFwcGVuZE5vZGUoY2hpbGQsIHBhcmVudCk7CiAgICAgICAgIHBhcmVudCA9IGNoaWxkLnJl
bGVhc2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0
RWxlbWVudENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRD
b21tYW5kLmNwcAppbmRleCAxOWJiOGJmYmIyNWFlYzhhOWQ1ZGVkZGU0MDI1ODQ3ODVkYWIzNzgx
Li5hYzc3YmY5MTZmNTg0NDAxMWIzZmYyMGU4MmE3NjY2NzI2YTI0MDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKQEAgLTYxLDggKzYxLDcg
QEAgdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpleGVjdXRlQXBwbHkoKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBEZWxldGUgaWQgYXR0cmlidXRlIGZyb20gdGhlIHNlY29uZCBlbGVtZW50
IGJlY2F1c2UgdGhlIHNhbWUgaWQgY2Fubm90IGJlIHVzZWQgZm9yIG1vcmUgdGhhbiBvbmUgZWxl
bWVudAotICAgIG1fZWxlbWVudDItPnJlbW92ZUF0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0ciwg
ZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIG1fZWxlbWVudDItPnJlbW92ZUF0dHJpYnV0ZShI
VE1MTmFtZXM6OmlkQXR0cik7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKaW5kZXggNjU3M2NhNjE4ZmVlMjJmZjg5YTdlYjViNTFmMjQxZjI4YTQ2ZDBm
NC4uYzE5ZmU5NDNmYjI0MzI4ODI5MDhlODBmZGUzMmE1MTYyYTk0NmFkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTc1Miw3ICs3NTIsNyBAQCB2b2lkIEhUTUxFbGVtZW50
OjpzZXRDb250ZW50RWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbmFibGVkLCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAicGxhaW50ZXh0
LW9ubHkiKSkKICAgICAgICAgc2V0QXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0dHIsICJwbGFp
bnRleHQtb25seSIpOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVuYWJsZWQsICJp
bmhlcml0IikpCi0gICAgICAgIHJlbW92ZUF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCBl
Yyk7CisgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyKTsKICAgICBl
bHNlCiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCmluZGV4IDdlMDNlYzZmMWFjZGM1ODQ1OTY5MGFkOWQzNWY0NjA5MWE2
YzdhZGMuLjE1OTZkNjhiNmM4MDExMWZjNjc5YjZlYjliZmE0NWU1ZGU4MzQwOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNTMyLDEwICs1MzIsOSBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIC8v
IFdlIHNob3VsZCB3cml0ZSBhIHRlc3QgY2FzZSB0byBzaG93IHRoYXQgc2V0dGluZyB0byB0aGUg
ZW1wdHkgc3RyaW5nIGRvZXMgbm90IHJlbW92ZSB0aGUKICAgICAvLyBhdHRyaWJ1dGUgaW4gb3Ro
ZXIgYnJvd3NlcnMgYW5kIHRoZW4gZml4IHRoaXMuIE5vdGUgdGhhdCBzZXR0aW5nIHRvIG51bGwg
KmRvZXMqIHJlbW92ZQogICAgIC8vIHRoZSBhdHRyaWJ1dGUgYW5kIHNldEF0dHJpYnV0ZSBpbXBs
ZW1lbnRzIHRoYXQuCi0gICAgaWYgKHR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWM7Ci0gICAgICAgIHJlbW92ZUF0dHJpYnV0ZSh0eXBlQXR0ciwgZWMpOwotICAgIH0g
ZWxzZQorICAgIGlmICh0eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgcmVtb3ZlQXR0cmlidXRlKHR5
cGVBdHRyKTsKKyAgICBlbHNlCiAgICAgICAgIHNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgdHlwZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CmluZGV4IDdhOWYyNmRlOTgxODY5MzM4MTZhNTU4ZWU1NDY1Y2FiODQ2Mjk5ZmEuLjU0NmM3N2Q2
NTMwMGU4MDRhZTA0ZTgxNWNmOGUwOTEzYzFkODA5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNTI4LDkgKzUyOCw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgZWxlbWVuCiAKICAgICBjb25zdCBOYW1lZE5vZGVNYXAqIGF0dHJNYXAgPSB0
b0hUTUxFbGVtZW50KGNoaWxkKS0+YXR0cmlidXRlcyh0cnVlKTsKICAgICBpZiAoIWF0dHJNYXAg
JiYgbmFtZSkgewotICAgICAgICBlbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoKm5hbWUsIGVjKTsK
LSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBy
ZW1vdmUgYXR0cmlidXRlIjsKKyAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKCpuYW1l
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTQ0LDkgKzU0Miw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgZWxlbWVuCiAgICAgfQogCiAgICAgaWYgKCFmb3VuZE9yaWdpbmFsQXR0cmlidXRl
ICYmIG5hbWUpIHsKLSAgICAgICAgZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKCpuYW1lLCBlYyk7
Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJDb3VsZCBub3Qg
cmVtb3ZlIGF0dHJpYnV0ZSI7CisgICAgICAgIGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZSgqbmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CkBAIC01NTQsMTIgKzU1MCw4IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgZWxlbWVuCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVBdHRyaWJ1
dGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGFzc2VydEVsZW1lbnQoZXJyb3JTdHJp
bmcsIGVsZW1lbnRJZCk7Ci0gICAgaWYgKGVsZW1lbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgICAgIGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZShuYW1lLCBlYyk7Ci0g
ICAgICAgIGlmIChlYykKLSAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJFeGNlcHRpb24gd2hp
bGUgcmVtb3ZpbmcgYXR0cmlidXRlIjsKLSAgICB9CisgICAgaWYgKGVsZW1lbnQpCisgICAgICAg
IGVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cmVtb3ZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggNWU2N2ZmNTJhNTIwNTI1ZGUzOTRj
NWIyYTA2ZjYxNGQ4YWFmMDM0MC4uNTVmNzBmNDUzMWQyYTg0YTA4NDJjNTBmNmZmNjg3ODYyZGNl
NDQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMTAzNSwxMSArMTAz
NSwxMSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyVXNlQXR0cmlidXRlc1RvUmVwbGFj
ZWRFbGVtZW50KFNWR0VsZW1lbnQqIGZyb20sIFNWRwogCiAgICAgdG8tPnNldEF0dHJpYnV0ZXNG
cm9tRWxlbWVudCgqZnJvbSk7CiAKLSAgICB0by0+cmVtb3ZlQXR0cmlidXRlKFNWR05hbWVzOjp4
QXR0ciwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShTVkdO
YW1lczo6eUF0dHIsIEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIHRvLT5yZW1vdmVBdHRyaWJ1
dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgdG8tPnJl
bW92ZUF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQVNTRVJUX05PX0VYQ0VQVElPTik7
Ci0gICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0ciwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CisgICAgdG8tPnJlbW92ZUF0dHJpYnV0ZShTVkdOYW1lczo6eEF0dHIpOwor
ICAgIHRvLT5yZW1vdmVBdHRyaWJ1dGUoU1ZHTmFtZXM6OnlBdHRyKTsKKyAgICB0by0+cmVtb3Zl
QXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIpOworICAgIHRvLT5yZW1vdmVBdHRyaWJ1dGUo
U1ZHTmFtZXM6OmhlaWdodEF0dHIpOworICAgIHRvLT5yZW1vdmVBdHRyaWJ1dGUoWExpbmtOYW1l
czo6aHJlZkF0dHIpOwogfQogCiBib29sIFNWR1VzZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxl
bmd0aHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCmluZGV4IDIxZTgw
MDRlYWMyNzgyNDhkZWU1ZDJiMzBiZGNjYzYxODQ1MWEwODQuLjA3NzE2ZWZiYTEyZGU4MGRkNzdh
ODAxYzRjOThmN2JjMTA3MDdiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAK
QEAgLTQ2Myw4ICs0NjMsNyBAQCB2b2lkIFFXZWJFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29u
c3QgUVN0cmluZyAmbmFtZSkKIHsKICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJu
OwotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKLSAgICBtX2VsZW1lbnQtPnJlbW92
ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pOworICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmli
dXRlKG5hbWUpOwogfQogCiAvKiEKQEAgLTQ3Nyw4ICs0NzYsNyBAQCB2b2lkIFFXZWJFbGVtZW50
OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBRU3RyaW5nICZuYW1lc3BhY2VVcmksIGNvbnN0IFFT
dHJpbmcgJgogewogICAgIGlmICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm47Ci0gICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBleGNlcHRpb24gPSAwOwotICAgIG1fZWxlbWVudC0+cmVtb3Zl
QXR0cmlidXRlTlMobmFtZXNwYWNlVXJpLCBuYW1lLCBleGNlcHRpb24pOworICAgIG1fZWxlbWVu
dC0+cmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlVXJpLCBuYW1lKTsKIH0KIAogLyohCkBAIC0y
MTM0LDQgKzIxMzIsMyBAQCB2b2lkIFF0V2ViRWxlbWVudFJ1bnRpbWU6OmluaXRpYWxpemUoKQog
ICAgIEpTQzo6QmluZGluZ3M6OnJlZ2lzdGVyQ3VzdG9tVHlwZShpZCwgY29udmVydEpTVmFsdWVU
b1dlYkVsZW1lbnRWYXJpYW50LCBjb252ZXJ0V2ViRWxlbWVudFZhcmlhbnRUb0pTVmFsdWUpOwog
I2VuZGlmCiB9Ci0K
</data>

          </attachment>
      

    </bug>

</bugzilla>