<?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>137899</bug_id>
          
          <creation_ts>2014-10-20 17:06:36 -0700</creation_ts>
          <short_desc>Avoid confusion between AccessibilityObject::isTable() / isAccessibilityTable()</short_desc>
          <delta_ts>2014-10-22 14:45:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1043015</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-20 17:06:36 -0700</bug_when>
    <thetext>Avoid confusion between AccessibilityObject::isTable() / isAccessibilityTable().

isTable() is equivalent to is&lt;AccessibilityTable&gt;(), while isAccessibilityTable() is an AccessibilityTable that is exposed as an AccessibilityTable to the platform.
We should likely rename isAccessibilityTable() to something else (maybe isExposedThroughAccessibility()?), have it on AccessibilityTable class only and make it non-virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043036</commentid>
    <comment_count>1</comment_count>
      <attachid>240165</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-20 17:48:36 -0700</bug_when>
    <thetext>Created attachment 240165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043038</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-20 17:49:58 -0700</bug_when>
    <thetext>Attachment 240165 did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityTable.cpp:585:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043041</commentid>
    <comment_count>3</comment_count>
      <attachid>240168</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-20 17:57:59 -0700</bug_when>
    <thetext>Created attachment 240168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043055</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-20 18:29:09 -0700</bug_when>
    <thetext>Attachment 240168 did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityTable.cpp:585:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043067</commentid>
    <comment_count>5</comment_count>
      <attachid>240173</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-20 18:58:19 -0700</bug_when>
    <thetext>Created attachment 240173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043069</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-20 19:05:25 -0700</bug_when>
    <thetext>Attachment 240173 did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityTable.cpp:585:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043072</commentid>
    <comment_count>7</comment_count>
      <attachid>240175</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-20 19:12:05 -0700</bug_when>
    <thetext>Created attachment 240175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043073</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-20 19:14:56 -0700</bug_when>
    <thetext>Attachment 240175 did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityTable.cpp:585:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043076</commentid>
    <comment_count>9</comment_count>
      <attachid>240177</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-20 19:28:06 -0700</bug_when>
    <thetext>Created attachment 240177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043077</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-20 19:29:07 -0700</bug_when>
    <thetext>Attachment 240177 did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityTable.cpp:585:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043289</commentid>
    <comment_count>11</comment_count>
      <attachid>240177</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-21 15:46:35 -0700</bug_when>
    <thetext>Comment on attachment 240177
Patch

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

While I do think we are getting more clarity here, the really verbose repeated is &amp;&amp; downcast dance is irritating. I wish there was a cleaner way to write all of those.

&gt; Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp:66
&gt; +    if (!is&lt;AccessibilityTable&gt;(parent) || !downcast&lt;AccessibilityTable&gt;(*parent).isExposableThroughAccessibility())
&gt;          return nullptr;

Maybe this would read better as !(a &amp;&amp; b) rather than !a || !b?

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1631
&gt; +    if (is&lt;AccessibilityList&gt;(*obj)
&gt; +        || (is&lt;AccessibilityTable&gt;(*obj) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*obj).isExposableThroughAccessibility())
&gt; +        || obj-&gt;isTree()
&gt; +        || obj-&gt;isCanvas())
&gt;          return false;

How about 3 or 4 separate if statements? I don’t see why we need to use one with || here.

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:54
&gt; +    , m_isExposableThroughAccessibility(true)

Seems a little strange to initialize this both here and in the init function. It seems like we’d have a problem if we looked at this before calling init.

&gt; Source/WebCore/accessibility/AccessibilityTable.h:63
&gt; +    virtual int tableLevel() const override final;

Glad you marked this final. I’d like to see more of these public virtual override functions made private, protected, or final.

&gt; Source/WebCore/accessibility/AccessibilityTable.h:96
&gt; +    virtual bool computeIsTableExposableThroughAccessibility() const;

Not sure why this is protected instead of private. Do derived classes call through to the base class?

&gt; Source/WebCore/accessibility/AccessibilityTableRow.cpp:79
&gt; -    if (!table || !table-&gt;isAccessibilityTable())
&gt; +    if (!is&lt;AccessibilityTable&gt;(table) || !downcast&lt;AccessibilityTable&gt;(*table).isExposableThroughAccessibility())
&gt;          return false;
&gt;      
&gt;      return true;

This should be:

    return is&lt;AccessibilityTable&gt;(table) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*table).isExposableThroughAccessibility();

&gt; Source/WebCore/accessibility/AccessibilityTableRow.cpp:110
&gt;          if (is&lt;AccessibilityTable&gt;(*parent))
&gt; -            return downcast&lt;AccessibilityTable&gt;(*parent).isAccessibilityTable() ? downcast&lt;AccessibilityTable&gt;(parent) : nullptr;
&gt; +            return downcast&lt;AccessibilityTable&gt;(*parent).isExposableThroughAccessibility() ? downcast&lt;AccessibilityTable&gt;(parent) : nullptr;

Seems like this goes out of its way to use ? : when it could just fall through to return nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043540</commentid>
    <comment_count>12</comment_count>
      <attachid>240293</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-22 13:37:55 -0700</bug_when>
    <thetext>Created attachment 240293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043541</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-22 13:38:51 -0700</bug_when>
    <thetext>Attachment 240293 did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityTable.cpp:585:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043558</commentid>
    <comment_count>14</comment_count>
      <attachid>240293</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-22 14:45:19 -0700</bug_when>
    <thetext>Comment on attachment 240293
Patch

Clearing flags on attachment: 240293

Committed r175068: &lt;http://trac.webkit.org/changeset/175068&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043559</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-22 14:45:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240165</attachid>
            <date>2014-10-20 17:48:36 -0700</date>
            <delta_ts>2014-10-20 17:57:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137899-20141020174842.patch</filename>
            <type>text/plain</type>
            <size>30122</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQwNWMyMTc0ODMwYTll
MzhlNjUyYzYyODU0MGEwMDkxZGNiMDE2MS4uNDQ3Y2I4M2ZhYTUzYzNiMGM5NjkzZjgwYjg0ZWNm
YWU1NjFiMTExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE0LTEwLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgY29uZnVzaW9uIGJl
dHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIC8gaXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZv
aWQgY29uZnVzaW9uIGJldHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIGFuZAor
ICAgICAgICBpc0FjY2Vzc2liaWxpdHlUYWJsZSgpLiBpc1RhYmxlKCkgaXMgZXF1aXZhbGVudCB0
bworICAgICAgICBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCksIHdoaWxlIGlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkgaXMgYW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlIHRoYXQgaXMgZXhwb3Nl
ZCBhcyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgdG8gdGhlCisgICAgICAgIHBsYXRmb3JtLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaXMgcmVuYW1pbmcgaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSB0bwor
ICAgICAgICBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCksIG1ha2VzIGl0IG5vbi12
aXJ0dWFsIGFuZCBkZWZpbmVzIGl0CisgICAgICAgIG9uIEFjY2Vzc2liaWxpdHlUYWJsZSBvbmx5
LCBmb3IgY2xhcml0eS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVuYW1lcyBpc1RhYmxl
RXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSB0bworICAgICAgICBjb21wdXRlSWlzVGFi
bGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGFzIGl0IGlzIGNhbGxlZCBvbmx5Cisg
ICAgICAgIG9uY2UgdG8gaW5pdGlhbGl6ZSB0aGUgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5IGRhdGEgbWVtYmVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJl
bik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50VGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5J
bmRleFJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRp
c2Nsb3NlZFJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
OjpkaXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZUFjY2Vzc2libGl0
eU9iamVjdElubmVyVGV4dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRDaGlsZHJlblRvQXJyYXkpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNB
Y2Nlc3NpYmlsaXR5VGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphcmlhU2VsZWN0ZWRSb3dzKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VGFibGU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Ojppc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVMZXZlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnJvbGVWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0FjY2Vzc2liaWxpdHlUYWJsZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUNlbGwpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aXNUYWJsZVJvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTpmb3JBdHRyaWJ1dGU6XSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpm
b3JQYXJhbWV0ZXI6XSk6CisKIDIwMTQtMTAtMjAgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAppbmRleCA2
MzZjZTM1YWZlNGE1ZGE0MDYxMzNkNWQ3ZGU2NDIwODRjMzdhYTBkLi45YWRiODFmZjgwNDQ0NmI5
ZjdmZGY2MTEzNDA0Y2Y4YWMzZjFhZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NF
UlQoIW1faGF2ZUNoaWxkcmVuKTsgCiAgICAgCi0gICAgaWYgKCFpc0FjY2Vzc2liaWxpdHlUYWJs
ZSgpKSB7CisgICAgaWYgKCFpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpIHsKICAg
ICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5oCmluZGV4IGQ4ZGM0Njc4YjVhMGM4ZmI1NGEyMTMzM2JiMmQ4
OGIxNjk1NTg0MTUuLjAzZmU0MDBkYzg0MTM2ZTU4Yzk3N2RjMGRjNzI4YjFjMTliM2E4MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIC8vIEFSSUEgdHJlZWdyaWRz
IGFuZCBncmlkcyBzdXBwb3J0IHNlbGVjdGVkIHJvd3MuCiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzU2VsZWN0ZWRSb3dzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjb21wdXRl
SXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHZvaWQgYWRkUm93RGVzY2VuZGFudChBY2Nlc3NpYmls
aXR5T2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywg
dW5zaWduZWQmIGNvbHVtbkNvdW50KTsKICAgICBib29sIGFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vz
c2liaWxpdHlPYmplY3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRS
b3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKaW5kZXggZDFk
YzkzOTcwZDU4YzlkMGRiMzY2NTgyM2VkYWZmOWQ2OWMxZDZhYy4uMmY3Y2E0M2MwODIxZTQ5NTA5
ZjE3ZDU5ZGVmODM4NTlhMTM4ZTkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCkBAIC01NSwxNCAr
NTUsMTQgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpw
YXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAotICAgIGlmIChwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAg
aWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJp
bGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHBhcmVudCk7CiAKICAg
ICAvLyBJdCBjb3VsZCBoYXBwZW4gdGhhdCB3ZSBoYWRuJ3QgcmVhY2hlZCB0aGUgcGFyZW50IHRh
YmxlIHlldCAoaW4KICAgICAvLyBjYXNlIG9iamVjdHMgZm9yIHJvd3Mgd2VyZSBub3QgaWdub3Jp
bmcgYWNjZXNzaWJpbGl0eSkgc28gZm9yCiAgICAgLy8gdGhhdCByZWFzb24gd2UgbmVlZCB0byBy
dW4gcGFyZW50T2JqZWN0VW5pZ25vcmVkIG9uY2UgYWdhaW4uCiAgICAgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5p
c0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPihw
YXJlbnQpIHx8ICFkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
CiAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4ocGFyZW50KTsKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdl
KHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiByb3cKICAgICBpZiAoaXM8QWNjZXNzaWJp
bGl0eVRhYmxlUm93PigqcGFyZW50KSkgewogICAgICAgICAvLyBXZSBhbHJlYWR5IGdvdCBhIHRh
YmxlIHJvdywgdXNlIGl0cyBBUEkuCiAgICAgICAgIHJvd1JhbmdlLmZpcnN0ID0gZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50KS5yb3dJbmRleCgpOwotICAgIH0gZWxzZSBp
ZiAocGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKSB7CisgICAgfSBlbHNlIGlmIChpczxB
Y2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZT4oKnBhcmVudCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKSB7CiAgICAgICAg
IC8vIFdlIHJlYWNoZWQgdGhlIHBhcmVudCB0YWJsZSwgc28gd2UgbmVlZCB0byBpbnNwZWN0IGl0
cwogICAgICAgICAvLyBjaGlsZHJlbiB0byBkZXRlcm1pbmUgdGhlIHJvdyBpbmRleCBmb3IgdGhl
IGNlbGwgaW4gaXQuCiAgICAgICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50ID0gZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5jb2x1bW5Db3VudCgpOwpAQCAtMTA0LDcgKzEwNCw4
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFwYXJlbnQtPmlzVGFibGVSb3coKSAmJiAhcGFyZW50LT5pc0FjY2Vz
c2liaWxpdHlUYWJsZSgpKQorICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFy
ZW50KQorICAgICAgICAmJiAhKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nl
c3NpYmlsaXR5KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImIHNpYmxpbmdzID0gcGFyZW50LT5jaGlsZHJlbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRS
b3cuY3BwCmluZGV4IDA5MmNhNDQ0NjJiM2Y5MWVjNjhhNTBiNTk1N2ViOWFlYzJjMjFkMjUuLmI3
MjVhMTczZDFhMjMyODI1OTE4MWI4OTEwMGFmY2M3ZjhhODc4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Ns
b3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBkaXNjbG8KICAgICAvLyBUaGUg
Y29udGlndW91cyBkaXNjbG9zZWQgcm93cyB3aWxsIGJlIHRoZSByb3dzIGluIHRoZSB0YWJsZSB0
aGF0IAogICAgIC8vIGhhdmUgYW4gYXJpYS1sZXZlbCBvZiBwbHVzIDEgZnJvbSB0aGlzIHJvdy4K
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQo
KTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQor
ICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSB8fCAhZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBTZWFyY2ggZm9yIHJvd3MgdGhhdCBt
YXRjaCB0aGUgY29ycmVjdCBsZXZlbC4gCkBAIC05MCw3ICs5MCw3IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBjb25zdAog
ICAgIC8vIFRoZSByb3cgdGhhdCBkaXNjbG9zZXMgdGhpcyBvbmUgaXMgdGhlIHJvdyBpbiB0aGUg
dGFibGUKICAgICAvLyB0aGF0IGlzIGFyaWEtbGV2ZWwgc3VidHJhY3QgMSBmcm9tIHRoaXMgcm93
LgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3Jl
ZCgpOwotICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkp
CisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpIHx8ICFkb3duY2FzdDxB
Y2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxp
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgLy8gSWYgdGhlIGxldmVs
IGlzIDEgb3IgbGVzcywgdGhhbiBub3RoaW5nIGRpc2Nsb3NlcyB0aGlzIHJvdy4KQEAgLTEyMCw4
ICsxMjAsMTEgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6
OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICAvLyBvbmx5IGhhdmUgInJvdyIgZWxlbWVudHMsIGJ1
dCBpZiBub3QsIHdlIHN0aWxsIHNob3VsZCBoYW5kbGUgaXQgZ3JhY2VmdWxseSBieSBmaW5kaW5n
IHRoZSByaWdodCB0YWJsZS4KICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9
IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkp
IHsKICAgICAgICAgLy8gVGhlIHBhcmVudCB0YWJsZSBmb3IgYW4gQVJJQSBncmlkIHJvdyBzaG91
bGQgYmUgYW4gQVJJQSB0YWJsZS4KLSAgICAgICAgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5
VGFibGUoKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzQXJpYVRh
YmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihw
YXJlbnQpOworICAgICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSkgewor
ICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlJiB0YWJsZVBhcmVudCA9IGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCk7CisgICAgICAgICAgICBpZiAodGFibGVQYXJlbnQu
aXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpICYmIHRhYmxlUGFyZW50LmlzQXJpYVRh
YmxlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICZ0YWJsZVBhcmVudDsKKyAgICAgICAgfQog
ICAgIH0KICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggMDc5
NjZjZjRlYTFhOGIxYjA2MzYxMDk4YzZmOWI3ZGE0NmZjNTIyMS4uNzMzNTQzMGViODYyZjMwZWFi
ZWRhMzhmOGU4OTE4MjFiYjVlZmM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTE2MjMsNyArMTYy
MywxMCBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VBY2Nlc3NpYmxpdHlPYmplY3RJbm5lclRleHQo
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBY2NlcwogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBTa2lwIGJpZyBjb250YWluZXIgZWxlbWVudHMgbGlrZSBsaXN0cywgdGFibGVzLCBl
dGMuCi0gICAgaWYgKG9iai0+aXNMaXN0KCkgfHwgb2JqLT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgp
IHx8IG9iai0+aXNUcmVlKCkgfHwgb2JqLT5pc0NhbnZhcygpKQorICAgIGlmIChpczxBY2Nlc3Np
YmlsaXR5TGlzdD4oKm9iaikKKyAgICAgICAgfHwgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9i
aikgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqKS5pc0V4cG9zYWJsZVRocm91
Z2hBY2Nlc3NpYmlsaXR5KCkpCisgICAgICAgIHx8IG9iai0+aXNUcmVlKCkKKyAgICAgICAgfHwg
b2JqLT5pc0NhbnZhcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCmluZGV4IDJiYWY0NGFhYjM3M2E0ZGNkZDhlMzIwMjk5YTc3NGM0NWZjZjFkN2Uu
LjYzYWY3ZGQyY2UxMDE5NWQzZDQ2MDJiMjk4NDMyODE2MzljNTQzNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAt
MjMxLDExICsyMzEsMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxp
dHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQWNjZXNzaWJpbGl0eU8KICAgICAgICAgCiAgICAg
Y2FzZSBUYWJsZVNhbWVMZXZlbFNlYXJjaEtleToKICAgICAgICAgcmV0dXJuIGNyaXRlcmlhLT5z
dGFydE9iamVjdAotICAgICAgICAgICAgJiYgYXhPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxl
KCkKLSAgICAgICAgICAgICYmIGF4T2JqZWN0LT50YWJsZUxldmVsKCkgPT0gY3JpdGVyaWEtPnN0
YXJ0T2JqZWN0LT50YWJsZUxldmVsKCk7CisgICAgICAgICAgICAmJiBpczxBY2Nlc3NpYmlsaXR5
VGFibGU+KCpheE9iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhPYmpl
Y3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKQorICAgICAgICAgICAgJiYgZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhPYmplY3QpLnRhYmxlTGV2ZWwoKSA9PSBjcml0
ZXJpYS0+c3RhcnRPYmplY3QtPnRhYmxlTGV2ZWwoKTsKICAgICAgICAgCiAgICAgY2FzZSBUYWJs
ZVNlYXJjaEtleToKLSAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJs
ZSgpOworICAgICAgICByZXR1cm4gaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhPYmplY3QpICYm
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKmF4T2JqZWN0KS5pc0V4cG9zYWJsZVRocm91
Z2hBY2Nlc3NpYmlsaXR5KCk7CiAgICAgICAgIAogICAgIGNhc2UgVGV4dEZpZWxkU2VhcmNoS2V5
OgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVGV4dENvbnRyb2woKTsKQEAgLTUwMiw3ICs1
MDIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0LCBib29sIGlzRm9yd2FyZCwgQQogewogICAgIC8vIEEgdGFibGUncyBjaGls
ZHJlbiBpbmNsdWRlcyBlbGVtZW50cyB3aG9zZSBvd24gY2hpbGRyZW4gYXJlIGFsc28gdGhlIHRh
YmxlJ3MgY2hpbGRyZW4gKGR1ZSB0byB0aGUgd2F5IHRoZSBNYWMgZXhwb3NlcyB0YWJsZXMpLgog
ICAgIC8vIFRoZSByb3dzIGZyb20gdGhlIHRhYmxlIHNob3VsZCBiZSBxdWVyaWVkLCBzaW5jZSB0
aG9zZSBhcmUgZGlyZWN0IGRlc2NlbmRhbnRzIG9mIHRoZSB0YWJsZSwgYW5kIHRoZXkgY29udGFp
biBjb250ZW50LgotICAgIGNvbnN0IGF1dG8mIHNlYXJjaENoaWxkcmVuID0gb2JqZWN0LT5pc0Fj
Y2Vzc2liaWxpdHlUYWJsZSgpID8gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqZWN0
KS5yb3dzKCkgOiBvYmplY3QtPmNoaWxkcmVuKCk7CisgICAgY29uc3QgYXV0byYgc2VhcmNoQ2hp
bGRyZW4gPSBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmplY3QpICYmIGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZT4oKm9iamVjdCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgp
ID8gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqZWN0KS5yb3dzKCkgOiBvYmplY3Qt
PmNoaWxkcmVuKCk7CiAKICAgICBzaXplX3QgY2hpbGRyZW5TaXplID0gc2VhcmNoQ2hpbGRyZW4u
c2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCmluZGV4IDAyMzRiYjNkZmQxZjE3N2M1ZTBkZmVmMmMzOTAzYzA3YjEyZjE1
NWIuLjg1ZmU0NjMwNWMxMjQ0YzgyMDRmZGNkNzI2Y2I2NjNlOGVhZDFmODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC00
NzUsNyArNDc1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0RhdGFUYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGFibGVSb3coKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDNlMzVkNWU4NTA0NGRhZWVi
NDU2NjdhMjM1MzE1NWJmMGZmZTdlZDUuLjllMTVlZDIyZWE4YTRkMjk3MzQ0YTllOTBmZmEwYWRi
ZjUzYjRiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMzEzNSw4ICszMTM1LDExIEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYVNlbGVjdGVkUm93cyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIHJlCiAgICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBhbGxSb3dzOwogICAgICAgICBhcmlhVHJlZVJvd3MoYWxsUm93cyk7CiAgICAgICAgIHJvd3NJ
dGVyYXRpb24oYWxsUm93cyk7Ci0gICAgfSBlbHNlIGlmIChpc0FjY2Vzc2liaWxpdHlUYWJsZSgp
ICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnRoaXMpLnN1cHBvcnRzU2VsZWN0ZWRS
b3dzKCkpCi0gICAgICAgIHJvd3NJdGVyYXRpb24oZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
PigqdGhpcykucm93cygpKTsKKyAgICB9IGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4o
KnRoaXMpKSB7CisgICAgICAgIGF1dG8mIHRoaXNUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZT4oKnRoaXMpOworICAgICAgICBpZiAodGhpc1RhYmxlLmlzRXhwb3NhYmxlVGhyb3Vn
aEFjY2Vzc2liaWxpdHkoKSAmJiB0aGlzVGFibGUuc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSkKKyAg
ICAgICAgICAgIHJvd3NJdGVyYXRpb24odGhpc1RhYmxlLnJvd3MoKSk7CisgICAgfQogfQogICAg
IAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhTGlzdGJveFNlbGVjdGVkQ2hp
bGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggMGI3
YmUzYWY1YTJlZDc2ZThmZTJiZjQ4Yjk2NDJiZGU0MmVjMTg0Mi4uMWQ1MzAwZWZhZWUwZWUxMjA5
MjIyOWZhNGQ0NGJiOGM1OTRmODU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtNTEsNyArNTEsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogQWNjZXNzaWJpbGl0eVRhYmxlOjpBY2Nlc3NpYmlsaXR5VGFi
bGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QocmVuZGVyZXIpCiAgICAgLCBtX2hlYWRlckNvbnRhaW5lcihudWxscHRyKQotICAgICwgbV9p
c0FjY2Vzc2liaWxpdHlUYWJsZSh0cnVlKQorICAgICwgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nl
c3NpYmlsaXR5KHRydWUpCiB7CiB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgQWNjZXNzaWJpbGl0eVRh
YmxlOjp+QWNjZXNzaWJpbGl0eVRhYmxlKCkKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjppbml0
KCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbml0KCk7Ci0gICAgbV9pc0Fj
Y2Vzc2liaWxpdHlUYWJsZSA9IGlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgp
OworICAgIG1faXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSA9IGNvbXB1dGVJc1RhYmxl
RXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsKIH0KIAogUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGFibGU+IEFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCkBAIC04MiwxMiArODIsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6Omhhc0FS
SUFSb2xlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlOjppc0FjY2Vzc2liaWxpdHlUYWJsZSgpIGNvbnN0Citib29sIEFjY2Vzc2liaWxpdHlU
YWJsZTo6aXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIG1f
aXNBY2Nlc3NpYmlsaXR5VGFibGU7CisgICAgcmV0dXJuIG1faXNFeHBvc2FibGVUaHJvdWdoQWNj
ZXNzaWJpbGl0eTsKIH0KIAogSFRNTFRhYmxlRWxlbWVudCogQWNjZXNzaWJpbGl0eVRhYmxlOjp0
YWJsZUVsZW1lbnQoKSBjb25zdApAQCAtMzA5LDcgKzMwOSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAot
Ym9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSgpIGNvbnN0Citib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFibGVFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGZvbGxvd2lu
ZyBpcyBhIGhldXJpc3RpYyB1c2VkIHRvIGRldGVybWluZSBpZiBhCiAgICAgLy8gPHRhYmxlPiBz
aG91bGQgYmUgZXhwb3NlZCBhcyBhbiBBWFRhYmxlLiBUaGUgZ29hbApAQCAtMzQ3LDcgKzM0Nyw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNoaWxkcmVuKCkKIAogdm9pZCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKIHsKLSAgICBpZiAoIWlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkpIHsKKyAgICBpZiAoIWlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkg
ewogICAgICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNTI1LDcgKzUyNSw3IEBAIGludCBBY2Nlc3NpYmlsaXR5
VGFibGU6OnRhYmxlTGV2ZWwoKSBjb25zdAogewogICAgIGludCBsZXZlbCA9IDA7CiAgICAgZm9y
IChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Kj4oY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPih0aGlzKSk7IG9iajsgb2JqID0g
b2JqLT5wYXJlbnRPYmplY3QoKSkgewotICAgICAgICBpZiAob2JqLT5pc0FjY2Vzc2liaWxpdHlU
YWJsZSgpKQorICAgICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqKSAmJiBkb3du
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmopLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSkKICAgICAgICAgICAgICsrbGV2ZWw7CiAgICAgfQogICAgIApAQCAtNTY4LDcgKzU2
OCw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZv
ckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sCiAKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vz
c2liaWxpdHlUYWJsZTo6cm9sZVZhbHVlKCkgY29uc3QKIHsKLSAgICBpZiAoIWlzQWNjZXNzaWJp
bGl0eVRhYmxlKCkpCisgICAgaWYgKCFpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkp
CiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpyb2xlVmFsdWUoKTsK
IAogICAgIHJldHVybiBUYWJsZVJvbGU7CkBAIC01ODIsNyArNTgyLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICBp
ZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAK
LSAgICBpZiAoIWlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgaWYgKCFpc0V4cG9zYWJsZVRo
cm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwogICAgICAgICAKICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6
OnRpdGxlRWxlbWVudFRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE9yZGVyKQog
CiBTdHJpbmcgQWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFp
c0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmICghaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSgpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGl0
bGUoKTsKICAgICAKICAgICBTdHJpbmcgdGl0bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAppbmRleCBiMDI2ZjUyZTZkYTNjNjE0Y2Q4
MTFjZjBiN2E2NjFiYzE5YzAwMDZmLi4xZTNmNTM1NTBjYjU3MDdiNGE4MTM1ZGVhZDBhYzY0NjYw
YTVjMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1NlbGVjdGVkUm93cygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdW5zaWduZWQgY29s
dW1uQ291bnQoKTsKICAgICB1bnNpZ25lZCByb3dDb3VudCgpOwotICAgIHZpcnR1YWwgaW50IHRh
YmxlTGV2ZWwoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGludCB0YWJsZUxldmVsKCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAgICAgCiAgICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICAKQEAgLTc1LDE1ICs3NSwxNSBAQCBwdWJsaWM6CiAgICAgLy8g
YW4gb2JqZWN0IHRoYXQgY29udGFpbnMsIGFzIGNoaWxkcmVuLCBhbGwgdGhlIG9iamVjdHMgdGhh
dCBhY3QgYXMgaGVhZGVycwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlckNvbnRhaW5l
cigpOwogCi0gICAgLy8gaXNBY2Nlc3NpYmlsaXR5VGFibGUgaXMgd2hldGhlciBpdCBpcyBleHBv
c2VkIGFzIGFuIEFjY2Vzc2liaWxpdHlUYWJsZSB0byB0aGUgcGxhdGZvcm0uCi0gICAgdmlydHVh
bCBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAg
Ly8gaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGlzIHdoZXRoZXIgaXQgaXMgZXhw
b3NlZCBhcyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgdG8gdGhlIHBsYXRmb3JtLgorICAgIGJvb2wg
aXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG1fcm93czsKICAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgbV9jb2x1bW5zOwogCiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IG1faGVhZGVyQ29udGFpbmVyOwotICAgIGJvb2wgbV9pc0FjY2Vzc2liaWxpdHlUYWJsZTsK
KyAgICBib29sIG1faXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eTsKIAogICAgIGJvb2wg
aGFzQVJJQVJvbGUoKSBjb25zdDsKIApAQCAtOTMsNyArOTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ly8gdGhpbmsgdGhpcyAibG9va3MiIGxpa2UgYSBkYXRhLWJhc2VkIHRhYmxlIChpbnN0ZWFkIG9m
IGEgdGFibGUgdXNlZCBmb3IgbGF5b3V0KS4KICAgICB2aXJ0dWFsIGJvb2wgaXNEYXRhVGFibGUo
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlRXhwb3NhYmxlVGhy
b3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUlzVGFi
bGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHAKaW5kZXggNjgzN2JlMDI4MjFiM2EzODY0NzFiMDFmZTM5YzM5MDgw
ODM4ODM2ZS4uZjVkMjcyZmNlYzkyYWE5OWI1ZjU5ZGQ2NjY1YmY1ZDgzMjBmMzk3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
Ojppc1RhYmxlQ2VsbCgpIGNvbnN0CiAgICAgLy8gVGhpcyB1c2VkIHRvIGNoZWNrIGlmIHRoZSB1
bmlnbm9yZWRQYXJlbnQgd2FzIGEgcm93LCBidXQgdGhhdCBleHBsb2RlZCBwZXJmb3JtYW5jZSBp
ZgogICAgIC8vIHRoaXMgd2FzIGluIG5lc3RlZCB0YWJsZXMuIFRoaXMgY2hlY2sgc2hvdWxkIGJl
IGp1c3QgYXMgZ29vZC4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRUYWJsZSA9IHRo
aXMtPnBhcmVudFRhYmxlKCk7Ci0gICAgcmV0dXJuIHBhcmVudFRhYmxlICYmIHBhcmVudFRhYmxl
LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpOworICAgIHJldHVybiBpczxBY2Nlc3NpYmlsaXR5VGFi
bGU+KHBhcmVudFRhYmxlKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnRU
YWJsZSkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpOwogfQogICAgIAogQWNjZXNz
aWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0
eVJvbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCmluZGV4IGIwMmY5ZWZkNWM1OWQ3YjNmMGQ0NGE5MzFk
MGQ3ZjM5MzEyZjVlOGQuLmI1MWViNzVjMzU3NjkxNjMzNzRmNmU2NGFlZGU0MzdjNDk5Y2Q5Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbi5jcHAKQEAgLTc1LDExICs3NSwxMyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdCgpCiAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG1fcGFyZW50LT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVy
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIGlmICghbV9wYXJlbnQtPmlz
QWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpt
X3BhcmVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgYXV0byYgcGFy
ZW50VGFibGUgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX3BhcmVudCk7CisgICAg
aWYgKCFwYXJlbnRUYWJsZS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIAogICAgIGlmIChwYXJlbnRUYWJsZS5pc0FyaWFUYWJs
ZSgpKSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2VsbCA6IGNoaWxkcmVuKCkpIHsKICAg
ICAgICAgICAgIGlmIChjZWxsLT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IENvbHVtbkhlYWRlclJv
bGUpCkBAIC0xNzAsMTAgKzE3MiwxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6
YWRkQ2hpbGRyZW4oKQogICAgIEFTU0VSVCghbV9oYXZlQ2hpbGRyZW4pOyAKICAgICAKICAgICBt
X2hhdmVDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKCFtX3BhcmVudCB8fCAhbV9wYXJlbnQtPmlz
QWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGU+KG1f
cGFyZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGFyZW50VGFibGUgPSBkb3du
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX3BhcmVudCk7CisgICAgaWYgKCFwYXJlbnRUYWJs
ZS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBBY2Nlc3NpYmlsaXR5VGFibGUmIHBhcmVudFRhYmxlID0gZG93bmNhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlPigqbV9wYXJlbnQpOwogICAgIGludCBudW1Sb3dzID0gcGFyZW50VGFibGUu
cm93Q291bnQoKTsKICAgICAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVJvd3M7ICsraSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVIZWFkZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCmluZGV4IDA4M2JkOThjYjgwNzdk
NTM0YzJjZmMxZTQ1ZjJjMWZmNjQyYzI4OGIuLjNkMDMwN2ZjODJkZDFmMjEwOTI4NjY5MzdkYjRi
ZTQ0NjFlODZkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKQEAgLTcw
LDEwICs3MCwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6YWRk
Q2hpbGRyZW4oKQogICAgIEFTU0VSVCghbV9oYXZlQ2hpbGRyZW4pOyAKICAgICAKICAgICBtX2hh
dmVDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKCFtX3BhcmVudCB8fCAhbV9wYXJlbnQtPmlzQWNj
ZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGU+KG1fcGFy
ZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGFyZW50VGFibGUgPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX3BhcmVudCk7CisgICAgaWYgKCFwYXJlbnRUYWJsZS5p
c0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX3BhcmVudCkuY29sdW1uSGVhZGVy
cyhtX2NoaWxkcmVuKTsKKyAgICBwYXJlbnRUYWJsZS5jb2x1bW5IZWFkZXJzKG1fY2hpbGRyZW4p
OwogICAgIAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQogICAgICAg
ICBtX2hlYWRlclJlY3QudW5pdGUoY2hpbGQtPmVsZW1lbnRSZWN0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCmlu
ZGV4IGIxMjQxZDE0MTMzZDljMTViYTI2YTQyZDM1ZGY1NzMxZjI2NzQyM2QuLjlmZmY5ZjQ2NTlh
ZDRmNjNhMWIyNTVmZDhlZjUzZjhjMTgwODNkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKQEAgLTczLDcgKzcz
LDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpkZXRlcm1pbmVB
Y2Nlc3NpYmlsaXR5Um9sZSgpCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aXNUYWJsZVJv
dygpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGFibGUgPSBwYXJlbnRUYWJs
ZSgpOwotICAgIGlmICghdGFibGUgfHwgIXRhYmxlLT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQor
ICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPih0YWJsZSkgfHwgIWRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZT4oKnRhYmxlKS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNyw3
ICsxMDcsNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6cGFy
ZW50VGFibGUoKSBjb25zdAogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgdGFibGUgb2JqZWN0LCBi
dXQgbm90IGFuIGFjY2Vzc2liaWxpdHkgdGFibGUsIHdlIHNob3VsZCBzdG9wIGJlY2F1c2Ugd2Ug
ZG9uJ3Qgd2FudCB0bwogICAgICAgICAvLyBjaG9vc2UgYW5vdGhlciBhbmNlc3RvciB0YWJsZSBh
cyB0aGlzIHJvdydzIHRhYmxlLgogICAgICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigq
cGFyZW50KSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+
KCpwYXJlbnQpLmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgPyBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGU+KHBhcmVudCkgOiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0
eSgpID8gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJlbnQpIDogbnVsbHB0cjsKICAg
ICB9CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCBkYWMxYjVjZTVhZWIw
MTFkMjI0NjFjOTdjMTRkODRiNWIzOWIwOGU1Li4yYzc0NDMwYTkzMTRlNTNkMjJjZjFkZmIyYWEz
ZmRhYjFjNWY2MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBIQVZFKEFDQ0VT
U0lCSUxJVFkpCiAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlUYWJsZS5oIgogI2ltcG9ydCAiUmVuZGVyT2JqZWN0LmgiCiAjaW1wb3J0ICJX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5oIgpAQCAtOTYsNyArOTcsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpYwog
ICAgICAgICAgICAgbWFjTm90aWZpY2F0aW9uID0gQCJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFYU2VsZWN0ZWRDaGlsZHJlbkNoYW5n
ZWQ6Ci0gICAgICAgICAgICBpZiAob2JqLT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgICAg
ICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iaikgJiYgZG93bmNhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlPigqb2JqKS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAg
ICAgICAgICAgICAgICAgbWFjTm90aWZpY2F0aW9uID0gTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRS
b3dzQ2hhbmdlZE5vdGlmaWNhdGlvbjsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBtYWNOb3RpZmljYXRpb24gPSBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQ2hhbmdl
ZE5vdGlmaWNhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5k
ZXggM2Y5ZGJkNmUwMGRjOTRlMTU0NzUyNzIxMjBmYjI2MzdiYWZjYzY3OS4uMzIxMGI3YzI5ZGIz
NzY3NjJhNmU0MDZmMzkxZjAxNTJmNzVkMDllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KQEAgLTExOTksNyArMTE5OSw3IEBAIC0gKE5TQXJyYXkqKWFkZGl0aW9u
YWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMKICAgICBpZiAobV9vYmplY3QtPnN1cHBvcnRz
QVJJQURyb3BwaW5nKCkpCiAgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0ZV07CiAgICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc0Fj
Y2Vzc2liaWxpdHlUYWJsZSgpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2Jq
ZWN0KS5zdXBwb3J0c1NlbGVjdGVkUm93cygpKQorICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFi
bGU+KCptX29iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3Qp
LmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGU+KCptX29iamVjdCkuc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSkKICAgICAgICAgW2Fk
ZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV07
CiAgICAgCiAgICAgaWYgKG1fb2JqZWN0LT5zdXBwb3J0c0FSSUFMaXZlUmVnaW9uKCkpIHsKQEAg
LTE1OTAsNyArMTU5MCw3IEBAIC0gKE5TQXJyYXkqKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1l
cwogICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0FuY2hvcigpIHx8IG1fb2JqZWN0LT5pc0ltYWdl
KCkgfHwgbV9vYmplY3QtPmlzTGluaygpKQogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gYW5j
aG9yQXR0cnM7CiAgICAgCi0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRh
YmxlKCkpCisgICAgZWxzZSBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYm
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91
Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZUF0dHJz
OwogICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc1RhYmxlQ29sdW1uKCkpCiAgICAgICAgIG9iamVj
dEF0dHJpYnV0ZXMgPSB0YWJsZUNvbEF0dHJzOwpAQCAtMjU1NCw3ICsyNTU0LDcgQEAgLSAoaWQp
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZQogICAg
ICAgICB9CiAgICAgfQogICAgIAotICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKSkgeworICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkgJiYgZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFj
Y2Vzc2liaWxpdHkoKSkgewogICAgICAgICBhdXRvJiB0YWJsZSA9IGRvd25jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZT4oKm1fb2JqZWN0KTsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXSkKICAgICAgICAgICAgIHJl
dHVybiBjb252ZXJ0VG9OU0FycmF5KHRhYmxlLnJvd3MoKSk7CkBAIC0zMTI4LDcgKzMxMjgsNyBA
QCAtIChOU0FycmF5KiApYWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcwog
ICAgIGlmIChtX29iamVjdC0+aXNUZXh0Q29udHJvbCgpKQogICAgICAgICByZXR1cm4gdGV4dFBh
cmFtQXR0cnM7CiAgICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgp
KQorICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkgJiYgZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSkKICAgICAgICAgcmV0dXJuIHRhYmxlUGFyYW1BdHRyczsKICAgICAKICAgICBpZiAo
bV9vYmplY3QtPmlzTWVudVJlbGF0ZWQoKSkKQEAgLTMzMTQsNyArMzMxNCw3IEBAIC0gKHZvaWQp
YWNjZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1ZSBmb3JBdHRyaWJ1dGU6KE5TU3RyaW5nKilh
dHRyaWJ1dGVOYW1lCiAgICAgZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV0pIHsKICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkUm93czsK
ICAgICAgICAgY29udmVydFRvVmVjdG9yKGFycmF5LCBzZWxlY3RlZFJvd3MpOwotICAgICAgICBp
ZiAobV9vYmplY3QtPmlzVHJlZSgpIHx8IG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgp
KQorICAgICAgICBpZiAobV9vYmplY3QtPmlzVHJlZSgpIHx8IChpczxBY2Nlc3NpYmlsaXR5VGFi
bGU+KCptX29iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3Qp
LmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkpCiAgICAgICAgICAgICBtX29iamVj
dC0+c2V0U2VsZWN0ZWRSb3dzKHNlbGVjdGVkUm93cyk7CiAgICAgfSBlbHNlIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV0p
CiAgICAgICAgIG1fb2JqZWN0LT5zZXRBUklBR3JhYmJlZChbbnVtYmVyIGJvb2xWYWx1ZV0pOwpA
QCAtMzcwMyw3ICszNzAzLDcgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihO
U1N0cmluZyopYXR0cmlidXRlIGZvclBhcmFtZXRlcjooaWQpcGFyYW1ldGUKICAgICAgICAgcmV0
dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246dmlzaWJsZVBvc1JhbmdlLmVu
ZF07CiAgICAgfQogICAgIAotICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUo
KSkgeworICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkgJiYgZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vz
c2liaWxpdHkoKSkgewogICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5Q2VsbEZvckNvbHVtbkFuZFJvd1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7
CiAgICAgICAgICAgICBpZiAoYXJyYXkgPT0gbmlsIHx8IFthcnJheSBjb3VudF0gIT0gMikKICAg
ICAgICAgICAgICAgICByZXR1cm4gbmlsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240168</attachid>
            <date>2014-10-20 17:57:59 -0700</date>
            <delta_ts>2014-10-20 18:58:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137899-20141020175805.patch</filename>
            <type>text/plain</type>
            <size>30348</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQwNWMyMTc0ODMwYTll
MzhlNjUyYzYyODU0MGEwMDkxZGNiMDE2MS4uNDQ3Y2I4M2ZhYTUzYzNiMGM5NjkzZjgwYjg0ZWNm
YWU1NjFiMTExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE0LTEwLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgY29uZnVzaW9uIGJl
dHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIC8gaXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZv
aWQgY29uZnVzaW9uIGJldHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIGFuZAor
ICAgICAgICBpc0FjY2Vzc2liaWxpdHlUYWJsZSgpLiBpc1RhYmxlKCkgaXMgZXF1aXZhbGVudCB0
bworICAgICAgICBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCksIHdoaWxlIGlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkgaXMgYW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlIHRoYXQgaXMgZXhwb3Nl
ZCBhcyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgdG8gdGhlCisgICAgICAgIHBsYXRmb3JtLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaXMgcmVuYW1pbmcgaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSB0bwor
ICAgICAgICBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCksIG1ha2VzIGl0IG5vbi12
aXJ0dWFsIGFuZCBkZWZpbmVzIGl0CisgICAgICAgIG9uIEFjY2Vzc2liaWxpdHlUYWJsZSBvbmx5
LCBmb3IgY2xhcml0eS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVuYW1lcyBpc1RhYmxl
RXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSB0bworICAgICAgICBjb21wdXRlSWlzVGFi
bGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGFzIGl0IGlzIGNhbGxlZCBvbmx5Cisg
ICAgICAgIG9uY2UgdG8gaW5pdGlhbGl6ZSB0aGUgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5IGRhdGEgbWVtYmVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJl
bik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50VGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5J
bmRleFJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRp
c2Nsb3NlZFJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
OjpkaXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZUFjY2Vzc2libGl0
eU9iamVjdElubmVyVGV4dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRDaGlsZHJlblRvQXJyYXkpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNB
Y2Nlc3NpYmlsaXR5VGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphcmlhU2VsZWN0ZWRSb3dzKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VGFibGU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Ojppc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVMZXZlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnJvbGVWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0FjY2Vzc2liaWxpdHlUYWJsZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUNlbGwpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aXNUYWJsZVJvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTpmb3JBdHRyaWJ1dGU6XSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpm
b3JQYXJhbWV0ZXI6XSk6CisKIDIwMTQtMTAtMjAgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAppbmRleCA2
MzZjZTM1YWZlNGE1ZGE0MDYxMzNkNWQ3ZGU2NDIwODRjMzdhYTBkLi45YWRiODFmZjgwNDQ0NmI5
ZjdmZGY2MTEzNDA0Y2Y4YWMzZjFhZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NF
UlQoIW1faGF2ZUNoaWxkcmVuKTsgCiAgICAgCi0gICAgaWYgKCFpc0FjY2Vzc2liaWxpdHlUYWJs
ZSgpKSB7CisgICAgaWYgKCFpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpIHsKICAg
ICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5oCmluZGV4IGQ4ZGM0Njc4YjVhMGM4ZmI1NGEyMTMzM2JiMmQ4
OGIxNjk1NTg0MTUuLjAzZmU0MDBkYzg0MTM2ZTU4Yzk3N2RjMGRjNzI4YjFjMTliM2E4MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIC8vIEFSSUEgdHJlZWdyaWRz
IGFuZCBncmlkcyBzdXBwb3J0IHNlbGVjdGVkIHJvd3MuCiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzU2VsZWN0ZWRSb3dzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjb21wdXRl
SXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHZvaWQgYWRkUm93RGVzY2VuZGFudChBY2Nlc3NpYmls
aXR5T2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywg
dW5zaWduZWQmIGNvbHVtbkNvdW50KTsKICAgICBib29sIGFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vz
c2liaWxpdHlPYmplY3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRS
b3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKaW5kZXggZDFk
YzkzOTcwZDU4YzlkMGRiMzY2NTgyM2VkYWZmOWQ2OWMxZDZhYy4uMmY3Y2E0M2MwODIxZTQ5NTA5
ZjE3ZDU5ZGVmODM4NTlhMTM4ZTkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCkBAIC01NSwxNCAr
NTUsMTQgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpw
YXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAotICAgIGlmIChwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAg
aWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJp
bGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHBhcmVudCk7CiAKICAg
ICAvLyBJdCBjb3VsZCBoYXBwZW4gdGhhdCB3ZSBoYWRuJ3QgcmVhY2hlZCB0aGUgcGFyZW50IHRh
YmxlIHlldCAoaW4KICAgICAvLyBjYXNlIG9iamVjdHMgZm9yIHJvd3Mgd2VyZSBub3QgaWdub3Jp
bmcgYWNjZXNzaWJpbGl0eSkgc28gZm9yCiAgICAgLy8gdGhhdCByZWFzb24gd2UgbmVlZCB0byBy
dW4gcGFyZW50T2JqZWN0VW5pZ25vcmVkIG9uY2UgYWdhaW4uCiAgICAgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5p
c0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPihw
YXJlbnQpIHx8ICFkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
CiAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4ocGFyZW50KTsKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdl
KHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiByb3cKICAgICBpZiAoaXM8QWNjZXNzaWJp
bGl0eVRhYmxlUm93PigqcGFyZW50KSkgewogICAgICAgICAvLyBXZSBhbHJlYWR5IGdvdCBhIHRh
YmxlIHJvdywgdXNlIGl0cyBBUEkuCiAgICAgICAgIHJvd1JhbmdlLmZpcnN0ID0gZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50KS5yb3dJbmRleCgpOwotICAgIH0gZWxzZSBp
ZiAocGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKSB7CisgICAgfSBlbHNlIGlmIChpczxB
Y2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZT4oKnBhcmVudCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKSB7CiAgICAgICAg
IC8vIFdlIHJlYWNoZWQgdGhlIHBhcmVudCB0YWJsZSwgc28gd2UgbmVlZCB0byBpbnNwZWN0IGl0
cwogICAgICAgICAvLyBjaGlsZHJlbiB0byBkZXRlcm1pbmUgdGhlIHJvdyBpbmRleCBmb3IgdGhl
IGNlbGwgaW4gaXQuCiAgICAgICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50ID0gZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5jb2x1bW5Db3VudCgpOwpAQCAtMTA0LDcgKzEwNCw4
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFwYXJlbnQtPmlzVGFibGVSb3coKSAmJiAhcGFyZW50LT5pc0FjY2Vz
c2liaWxpdHlUYWJsZSgpKQorICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFy
ZW50KQorICAgICAgICAmJiAhKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nl
c3NpYmlsaXR5KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImIHNpYmxpbmdzID0gcGFyZW50LT5jaGlsZHJlbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRS
b3cuY3BwCmluZGV4IDA5MmNhNDQ0NjJiM2Y5MWVjNjhhNTBiNTk1N2ViOWFlYzJjMjFkMjUuLmI3
MjVhMTczZDFhMjMyODI1OTE4MWI4OTEwMGFmY2M3ZjhhODc4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Ns
b3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBkaXNjbG8KICAgICAvLyBUaGUg
Y29udGlndW91cyBkaXNjbG9zZWQgcm93cyB3aWxsIGJlIHRoZSByb3dzIGluIHRoZSB0YWJsZSB0
aGF0IAogICAgIC8vIGhhdmUgYW4gYXJpYS1sZXZlbCBvZiBwbHVzIDEgZnJvbSB0aGlzIHJvdy4K
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQo
KTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQor
ICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSB8fCAhZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBTZWFyY2ggZm9yIHJvd3MgdGhhdCBt
YXRjaCB0aGUgY29ycmVjdCBsZXZlbC4gCkBAIC05MCw3ICs5MCw3IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBjb25zdAog
ICAgIC8vIFRoZSByb3cgdGhhdCBkaXNjbG9zZXMgdGhpcyBvbmUgaXMgdGhlIHJvdyBpbiB0aGUg
dGFibGUKICAgICAvLyB0aGF0IGlzIGFyaWEtbGV2ZWwgc3VidHJhY3QgMSBmcm9tIHRoaXMgcm93
LgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3Jl
ZCgpOwotICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkp
CisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpIHx8ICFkb3duY2FzdDxB
Y2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxp
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgLy8gSWYgdGhlIGxldmVs
IGlzIDEgb3IgbGVzcywgdGhhbiBub3RoaW5nIGRpc2Nsb3NlcyB0aGlzIHJvdy4KQEAgLTEyMCw4
ICsxMjAsMTEgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6
OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICAvLyBvbmx5IGhhdmUgInJvdyIgZWxlbWVudHMsIGJ1
dCBpZiBub3QsIHdlIHN0aWxsIHNob3VsZCBoYW5kbGUgaXQgZ3JhY2VmdWxseSBieSBmaW5kaW5n
IHRoZSByaWdodCB0YWJsZS4KICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9
IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkp
IHsKICAgICAgICAgLy8gVGhlIHBhcmVudCB0YWJsZSBmb3IgYW4gQVJJQSBncmlkIHJvdyBzaG91
bGQgYmUgYW4gQVJJQSB0YWJsZS4KLSAgICAgICAgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5
VGFibGUoKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzQXJpYVRh
YmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihw
YXJlbnQpOworICAgICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSkgewor
ICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlJiB0YWJsZVBhcmVudCA9IGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCk7CisgICAgICAgICAgICBpZiAodGFibGVQYXJlbnQu
aXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpICYmIHRhYmxlUGFyZW50LmlzQXJpYVRh
YmxlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICZ0YWJsZVBhcmVudDsKKyAgICAgICAgfQog
ICAgIH0KICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggMDc5
NjZjZjRlYTFhOGIxYjA2MzYxMDk4YzZmOWI3ZGE0NmZjNTIyMS4uZjA5YjUzZmRmYzhlODJmMmU3
OWZmN2M0MTZiNDdhMzMwYmIzODE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTcGluQnV0
dG9uLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCkBAIC0xNjIzLDcgKzE2MjQs
MTAgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlQWNjZXNzaWJsaXR5T2JqZWN0SW5uZXJUZXh0KEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgQWNjZXMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gU2tpcCBiaWcgY29udGFpbmVyIGVsZW1lbnRzIGxpa2UgbGlzdHMsIHRhYmxlcywgZXRj
LgotICAgIGlmIChvYmotPmlzTGlzdCgpIHx8IG9iai0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSB8
fCBvYmotPmlzVHJlZSgpIHx8IG9iai0+aXNDYW52YXMoKSkKKyAgICBpZiAoaXM8QWNjZXNzaWJp
bGl0eUxpc3Q+KCpvYmopCisgICAgICAgIHx8IChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmop
ICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iaikuaXNFeHBvc2FibGVUaHJvdWdo
QWNjZXNzaWJpbGl0eSgpKQorICAgICAgICB8fCBvYmotPmlzVHJlZSgpCisgICAgICAgIHx8IG9i
ai0+aXNDYW52YXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAppbmRleCAyYmFmNDRhYWIzNzNhNGRjZGQ4ZTMyMDI5OWE3NzRjNDVmY2YxZDdlLi42
M2FmN2RkMmNlMTAxOTVkM2Q0NjAyYjI5ODQzMjgxNjM5YzU0MzRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTIz
MSwxMSArMjMxLDExIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5
T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KEFjY2Vzc2liaWxpdHlPCiAgICAgICAgIAogICAgIGNh
c2UgVGFibGVTYW1lTGV2ZWxTZWFyY2hLZXk6CiAgICAgICAgIHJldHVybiBjcml0ZXJpYS0+c3Rh
cnRPYmplY3QKLSAgICAgICAgICAgICYmIGF4T2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgp
Ci0gICAgICAgICAgICAmJiBheE9iamVjdC0+dGFibGVMZXZlbCgpID09IGNyaXRlcmlhLT5zdGFy
dE9iamVjdC0+dGFibGVMZXZlbCgpOworICAgICAgICAgICAgJiYgaXM8QWNjZXNzaWJpbGl0eVRh
YmxlPigqYXhPYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKmF4T2JqZWN0
KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkKKyAgICAgICAgICAgICYmIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKmF4T2JqZWN0KS50YWJsZUxldmVsKCkgPT0gY3JpdGVy
aWEtPnN0YXJ0T2JqZWN0LT50YWJsZUxldmVsKCk7CiAgICAgICAgIAogICAgIGNhc2UgVGFibGVT
ZWFyY2hLZXk6Ci0gICAgICAgIHJldHVybiBheE9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUo
KTsKKyAgICAgICAgcmV0dXJuIGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKmF4T2JqZWN0KSAmJiBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpheE9iamVjdCkuaXNFeHBvc2FibGVUaHJvdWdo
QWNjZXNzaWJpbGl0eSgpOwogICAgICAgICAKICAgICBjYXNlIFRleHRGaWVsZFNlYXJjaEtleToK
ICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc1RleHRDb250cm9sKCk7CkBAIC01MDIsNyArNTAy
LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRyZW5Ub0FycmF5KEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEEKIHsKICAgICAvLyBBIHRhYmxlJ3MgY2hpbGRy
ZW4gaW5jbHVkZXMgZWxlbWVudHMgd2hvc2Ugb3duIGNoaWxkcmVuIGFyZSBhbHNvIHRoZSB0YWJs
ZSdzIGNoaWxkcmVuIChkdWUgdG8gdGhlIHdheSB0aGUgTWFjIGV4cG9zZXMgdGFibGVzKS4KICAg
ICAvLyBUaGUgcm93cyBmcm9tIHRoZSB0YWJsZSBzaG91bGQgYmUgcXVlcmllZCwgc2luY2UgdGhv
c2UgYXJlIGRpcmVjdCBkZXNjZW5kYW50cyBvZiB0aGUgdGFibGUsIGFuZCB0aGV5IGNvbnRhaW4g
Y29udGVudC4KLSAgICBjb25zdCBhdXRvJiBzZWFyY2hDaGlsZHJlbiA9IG9iamVjdC0+aXNBY2Nl
c3NpYmlsaXR5VGFibGUoKSA/IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iamVjdCku
cm93cygpIDogb2JqZWN0LT5jaGlsZHJlbigpOworICAgIGNvbnN0IGF1dG8mIHNlYXJjaENoaWxk
cmVuID0gaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGU+KCpvYmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSA/
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iamVjdCkucm93cygpIDogb2JqZWN0LT5j
aGlsZHJlbigpOwogCiAgICAgc2l6ZV90IGNoaWxkcmVuU2l6ZSA9IHNlYXJjaENoaWxkcmVuLnNp
emUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAppbmRleCAwMjM0YmIzZGZkMWYxNzdjNWUwZGZlZjJjMzkwM2MwN2IxMmYxNTVi
Li44NWZlNDYzMDVjMTI0NGM4MjA0ZmRjZDcyNmNiNjYzZThlYWQxZjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtNDc1
LDcgKzQ3NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNEYXRhVGFibGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAzZTM1ZDVlODUwNDRkYWVlYjQ1
NjY3YTIzNTMxNTViZjBmZmU3ZWQ1Li45ZTE1ZWQyMmVhOGE0ZDI5NzM0NGE5ZTkwZmZhMGFkYmY1
M2I0Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTMxMzUsOCArMzEzNSwxMSBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiByZQogICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
YWxsUm93czsKICAgICAgICAgYXJpYVRyZWVSb3dzKGFsbFJvd3MpOwogICAgICAgICByb3dzSXRl
cmF0aW9uKGFsbFJvd3MpOwotICAgIH0gZWxzZSBpZiAoaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSAm
JiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCp0aGlzKS5zdXBwb3J0c1NlbGVjdGVkUm93
cygpKQotICAgICAgICByb3dzSXRlcmF0aW9uKGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
KnRoaXMpLnJvd3MoKSk7CisgICAgfSBlbHNlIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCp0
aGlzKSkgeworICAgICAgICBhdXRvJiB0aGlzVGFibGUgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGU+KCp0aGlzKTsKKyAgICAgICAgaWYgKHRoaXNUYWJsZS5pc0V4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkgJiYgdGhpc1RhYmxlLnN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkpCisgICAg
ICAgICAgICByb3dzSXRlcmF0aW9uKHRoaXNUYWJsZS5yb3dzKCkpOworICAgIH0KIH0KICAgICAK
IHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYUxpc3Rib3hTZWxlY3RlZENoaWxk
cmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDBiN2Jl
M2FmNWEyZWQ3NmU4ZmUyYmY0OGI5NjQyYmRlNDJlYzE4NDIuLjFkNTMwMGVmYWVlMGVlMTIwOTIy
MjlmYTRkNDRiYjhjNTk0Zjg1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIEFjY2Vzc2liaWxpdHlUYWJsZTo6QWNjZXNzaWJpbGl0eVRhYmxl
KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
KHJlbmRlcmVyKQogICAgICwgbV9oZWFkZXJDb250YWluZXIobnVsbHB0cikKLSAgICAsIG1faXNB
Y2Nlc3NpYmlsaXR5VGFibGUodHJ1ZSkKKyAgICAsIG1faXNFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSh0cnVlKQogewogfQogCkBAIC02Miw3ICs2Miw3IEBAIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6fkFjY2Vzc2liaWxpdHlUYWJsZSgpCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6aW5pdCgp
CiB7CiAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5pdCgpOwotICAgIG1faXNBY2Nl
c3NpYmlsaXR5VGFibGUgPSBpc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsK
KyAgICBtX2lzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkgPSBjb21wdXRlSXNUYWJsZUV4
cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7CiB9CiAKIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRhYmxlPiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKQpAQCAtODIsMTIgKzgyLDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpoYXNBUklB
Um9sZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlU
YWJsZTo6aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdAogewogICAgIGlmICgh
bV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBtX2lz
QWNjZXNzaWJpbGl0eVRhYmxlOworICAgIHJldHVybiBtX2lzRXhwb3NhYmxlVGhyb3VnaEFjY2Vz
c2liaWxpdHk7CiB9CiAKIEhUTUxUYWJsZUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFi
bGVFbGVtZW50KCkgY29uc3QKQEAgLTMwOSw3ICszMDksNyBAQCBib29sIEFjY2Vzc2liaWxpdHlU
YWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLWJv
b2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxp
dHkoKSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVJc1RhYmxlRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdAogewogICAgIC8vIFRoZSBmb2xsb3dpbmcg
aXMgYSBoZXVyaXN0aWMgdXNlZCB0byBkZXRlcm1pbmUgaWYgYQogICAgIC8vIDx0YWJsZT4gc2hv
dWxkIGJlIGV4cG9zZWQgYXMgYW4gQVhUYWJsZS4gVGhlIGdvYWwKQEAgLTM0Nyw3ICszNDcsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2xlYXJDaGlsZHJlbigpCiAKIHZvaWQgQWNjZXNz
aWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiB7Ci0gICAgaWYgKCFpc0FjY2Vzc2liaWxpdHlU
YWJsZSgpKSB7CisgICAgaWYgKCFpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpIHsK
ICAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTUyNSw3ICs1MjUsNyBAQCBpbnQgQWNjZXNzaWJpbGl0eVRh
YmxlOjp0YWJsZUxldmVsKCkgY29uc3QKIHsKICAgICBpbnQgbGV2ZWwgPSAwOwogICAgIGZvciAo
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVj
dCo+KGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4odGhpcykpOyBvYmo7IG9iaiA9IG9i
ai0+cGFyZW50T2JqZWN0KCkpIHsKLSAgICAgICAgaWYgKG9iai0+aXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKSkKKyAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iaikgJiYgZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqKS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmls
aXR5KCkpCiAgICAgICAgICAgICArK2xldmVsOwogICAgIH0KICAgICAKQEAgLTU2OCw3ICs1Njgs
NyBAQCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JD
b2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLAogCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3Np
YmlsaXR5VGFibGU6OnJvbGVWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc0FjY2Vzc2liaWxp
dHlUYWJsZSgpKQorICAgIGlmICghaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKQog
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cm9sZVZhbHVlKCk7CiAK
ICAgICByZXR1cm4gVGFibGVSb2xlOwpAQCAtNTgyLDcgKzU4Miw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVRhYmxlOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgaWYg
KGRlY2lzaW9uID09IElnbm9yZU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0g
ICAgaWYgKCFpc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmICghaXNFeHBvc2FibGVUaHJv
dWdoQWNjZXNzaWJpbGl0eSgpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKICAgICAgICAgCiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjp0
aXRsZUVsZW1lbnRUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmRlcikKIAog
U3RyaW5nIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGUoKSBjb25zdAogewotICAgIGlmICghaXNB
Y2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRpdGxl
KCk7CiAgICAgCiAgICAgU3RyaW5nIHRpdGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKaW5kZXggYjAyNmY1MmU2ZGEzYzYxNGNkODEx
Y2YwYjdhNjYxYmMxOWMwMDA2Zi4uMWUzZjUzNTUwY2I1NzA3YjRhODEzNWRlYWQwYWM2NDY2MGE1
YzJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNTZWxlY3RlZFJvd3MoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHVuc2lnbmVkIGNvbHVt
bkNvdW50KCk7CiAgICAgdW5zaWduZWQgcm93Q291bnQoKTsKLSAgICB2aXJ0dWFsIGludCB0YWJs
ZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBpbnQgdGFibGVMZXZlbCgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOwogICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgCkBAIC03NSwxNSArNzUsMTUgQEAgcHVibGljOgogICAgIC8vIGFu
IG9iamVjdCB0aGF0IGNvbnRhaW5zLCBhcyBjaGlsZHJlbiwgYWxsIHRoZSBvYmplY3RzIHRoYXQg
YWN0IGFzIGhlYWRlcnMKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJDb250YWluZXIo
KTsKIAotICAgIC8vIGlzQWNjZXNzaWJpbGl0eVRhYmxlIGlzIHdoZXRoZXIgaXQgaXMgZXhwb3Nl
ZCBhcyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgdG8gdGhlIHBsYXRmb3JtLgotICAgIHZpcnR1YWwg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIC8v
IGlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBpcyB3aGV0aGVyIGl0IGlzIGV4cG9z
ZWQgYXMgYW4gQWNjZXNzaWJpbGl0eVRhYmxlIHRvIHRoZSBwbGF0Zm9ybS4KKyAgICBib29sIGlz
RXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBtX3Jvd3M7CiAgICAgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIG1fY29sdW1uczsKIAogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PiBtX2hlYWRlckNvbnRhaW5lcjsKLSAgICBib29sIG1faXNBY2Nlc3NpYmlsaXR5VGFibGU7Cisg
ICAgYm9vbCBtX2lzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHk7CiAKICAgICBib29sIGhh
c0FSSUFSb2xlKCkgY29uc3Q7CiAKQEAgLTkzLDcgKzkzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8v
IHRoaW5rIHRoaXMgImxvb2tzIiBsaWtlIGEgZGF0YS1iYXNlZCB0YWJsZSAoaW5zdGVhZCBvZiBh
IHRhYmxlIHVzZWQgZm9yIGxheW91dCkuCiAgICAgdmlydHVhbCBib29sIGlzRGF0YVRhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUV4cG9zYWJsZVRocm91
Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNvbXB1dGVJc1RhYmxl
RXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNlbGwuY3BwCmluZGV4IDY4MzdiZTAyODIxYjNhMzg2NDcxYjAxZmUzOWMzOTA4MDgz
ODgzNmUuLmY1ZDI3MmZjZWM5MmFhOTliNWY1OWRkNjY2NWJmNWQ4MzIwZjM5NzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6
aXNUYWJsZUNlbGwoKSBjb25zdAogICAgIC8vIFRoaXMgdXNlZCB0byBjaGVjayBpZiB0aGUgdW5p
Z25vcmVkUGFyZW50IHdhcyBhIHJvdywgYnV0IHRoYXQgZXhwbG9kZWQgcGVyZm9ybWFuY2UgaWYK
ICAgICAvLyB0aGlzIHdhcyBpbiBuZXN0ZWQgdGFibGVzLiBUaGlzIGNoZWNrIHNob3VsZCBiZSBq
dXN0IGFzIGdvb2QuCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VGFibGUgPSB0aGlz
LT5wYXJlbnRUYWJsZSgpOwotICAgIHJldHVybiBwYXJlbnRUYWJsZSAmJiBwYXJlbnRUYWJsZS0+
aXNBY2Nlc3NpYmlsaXR5VGFibGUoKTsKKyAgICByZXR1cm4gaXM8QWNjZXNzaWJpbGl0eVRhYmxl
PihwYXJlbnRUYWJsZSkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50VGFi
bGUpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsKIH0KICAgICAKIEFjY2Vzc2li
aWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmRldGVybWluZUFjY2Vzc2liaWxpdHlS
b2xlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uLmNwcAppbmRleCBiMDJmOWVmZDVjNTlkN2IzZjBkNDRhOTMxZDBk
N2YzOTMxMmY1ZThkLi5iNTFlYjc1YzM1NzY5MTYzMzc0ZjZlNjRhZWRlNDM3YzQ5OWNkOTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVDb2x1bW4uY3BwCkBAIC03NSwxMSArNzUsMTMgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QoKQogICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBtX3BhcmVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBpZiAoIW1fcGFyZW50LT5pc0Fj
Y2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9w
YXJlbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIGF1dG8mIHBhcmVu
dFRhYmxlID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9wYXJlbnQpOworICAgIGlm
ICghcGFyZW50VGFibGUuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAKICAgICBpZiAocGFyZW50VGFibGUuaXNBcmlhVGFibGUo
KSkgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNlbGwgOiBjaGlsZHJlbigpKSB7CiAgICAg
ICAgICAgICBpZiAoY2VsbC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBDb2x1bW5IZWFkZXJSb2xl
KQpAQCAtMTcwLDEwICsxNzIsMTMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmFk
ZENoaWxkcmVuKCkKICAgICBBU1NFUlQoIW1faGF2ZUNoaWxkcmVuKTsgCiAgICAgCiAgICAgbV9o
YXZlQ2hpbGRyZW4gPSB0cnVlOwotICAgIGlmICghbV9wYXJlbnQgfHwgIW1fcGFyZW50LT5pc0Fj
Y2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPihtX3Bh
cmVudCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBhcmVudFRhYmxlID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9wYXJlbnQpOworICAgIGlmICghcGFyZW50VGFibGUu
aXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgQWNjZXNzaWJpbGl0eVRhYmxlJiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZT4oKm1fcGFyZW50KTsKICAgICBpbnQgbnVtUm93cyA9IHBhcmVudFRhYmxlLnJv
d0NvdW50KCk7CiAgICAgCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Sb3dzOyArK2kpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlSGVhZGVyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcAppbmRleCAwODNiZDk4Y2I4MDc3ZDUz
NGMyY2ZjMWU0NWYyYzFmZjY0MmMyODhiLi4zZDAzMDdmYzgyZGQxZjIxMDkyODY2OTM3ZGI0YmU0
NDYxZTg2ZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCkBAIC03MCwx
MCArNzAsMTQgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OmFkZENo
aWxkcmVuKCkKICAgICBBU1NFUlQoIW1faGF2ZUNoaWxkcmVuKTsgCiAgICAgCiAgICAgbV9oYXZl
Q2hpbGRyZW4gPSB0cnVlOwotICAgIGlmICghbV9wYXJlbnQgfHwgIW1fcGFyZW50LT5pc0FjY2Vz
c2liaWxpdHlUYWJsZSgpKQorICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPihtX3BhcmVu
dCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBhcmVudFRhYmxlID0gZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9wYXJlbnQpOworICAgIGlmICghcGFyZW50VGFibGUuaXNF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9wYXJlbnQpLmNvbHVtbkhlYWRlcnMo
bV9jaGlsZHJlbik7CisgICAgcGFyZW50VGFibGUuY29sdW1uSGVhZGVycyhtX2NoaWxkcmVuKTsK
ICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKICAgICAgICAg
bV9oZWFkZXJSZWN0LnVuaXRlKGNoaWxkLT5lbGVtZW50UmVjdCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAppbmRl
eCBiMTI0MWQxNDEzM2Q5YzE1YmEyNmE0MmQzNWRmNTczMWYyNjc0MjNkLi45ZmZmOWY0NjU5YWQ0
ZjYzYTFiMjU1ZmQ4ZWY1M2Y4YzE4MDgzZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCkBAIC03Myw3ICs3Myw3
IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6ZGV0ZXJtaW5lQWNj
ZXNzaWJpbGl0eVJvbGUoKQogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmlzVGFibGVSb3co
KSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhYmxlID0gcGFyZW50VGFibGUo
KTsKLSAgICBpZiAoIXRhYmxlIHx8ICF0YWJsZS0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAg
ICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZT4odGFibGUpIHx8ICFkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGU+KCp0YWJsZSkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDcsNyAr
MTA3LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OnBhcmVu
dFRhYmxlKCkgY29uc3QKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHRhYmxlIG9iamVjdCwgYnV0
IG5vdCBhbiBhY2Nlc3NpYmlsaXR5IHRhYmxlLCB3ZSBzaG91bGQgc3RvcCBiZWNhdXNlIHdlIGRv
bid0IHdhbnQgdG8KICAgICAgICAgLy8gY2hvb3NlIGFub3RoZXIgYW5jZXN0b3IgdGFibGUgYXMg
dGhpcyByb3cncyB0YWJsZS4KICAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBh
cmVudCkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigq
cGFyZW50KS5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpID8gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlPihwYXJlbnQpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nl
c3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHko
KSA/IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4ocGFyZW50KSA6IG51bGxwdHI7CiAgICAg
fQogICAgIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggZGFjMWI1Y2U1YWViMDEx
ZDIyNDYxYzk3YzE0ZDg0YjViMzliMDhlNS4uMmM3NDQzMGE5MzE0ZTUzZDIyY2YxZGZiMmFhM2Zk
YWIxYzVmNjM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
QVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgSEFWRShBQ0NFU1NJ
QklMSVRZKQogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5VGFibGUuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgogI2ltcG9ydCAiV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCIKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxh
dGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlmaWMKICAg
ICAgICAgICAgIG1hY05vdGlmaWNhdGlvbiA9IEAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCI7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2Vk
OgotICAgICAgICAgICAgaWYgKG9iai0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICAgICAg
ICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmopICYmIGRvd25jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZT4oKm9iaikuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKQogICAg
ICAgICAgICAgICAgIG1hY05vdGlmaWNhdGlvbiA9IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93
c0NoYW5nZWROb3RpZmljYXRpb247CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
bWFjTm90aWZpY2F0aW9uID0gTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWRO
b3RpZmljYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4
IDNmOWRiZDZlMDBkYzk0ZTE1NDc1MjcyMTIwZmIyNjM3YmFmY2M2NzkuLjMyMTBiN2MyOWRiMzc2
NzYyYTZlNDA2ZjM5MWYwMTUyZjc1ZDA5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCkBAIC0xMTk5LDcgKzExOTksNyBAQCAtIChOU0FycmF5KilhZGRpdGlvbmFs
QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzCiAgICAgaWYgKG1fb2JqZWN0LT5zdXBwb3J0c0FS
SUFEcm9wcGluZygpKQogICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdOwogICAgIAotICAgIGlmIChtX29iamVjdC0+aXNBY2Nl
c3NpYmlsaXR5VGFibGUoKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVj
dCkuc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSkKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxl
PigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5p
c0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlPigqbV9vYmplY3QpLnN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkpCiAgICAgICAgIFthZGRp
dGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdOwog
ICAgIAogICAgIGlmIChtX29iamVjdC0+c3VwcG9ydHNBUklBTGl2ZVJlZ2lvbigpKSB7CkBAIC0x
NTkwLDcgKzE1OTAsNyBAQCAtIChOU0FycmF5KilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMK
ICAgICBlbHNlIGlmIChtX29iamVjdC0+aXNBbmNob3IoKSB8fCBtX29iamVjdC0+aXNJbWFnZSgp
IHx8IG1fb2JqZWN0LT5pc0xpbmsoKSkKICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGFuY2hv
ckF0dHJzOwogICAgIAotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJs
ZSgpKQorICAgIGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KSAmJiBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkuaXNFeHBvc2FibGVUaHJvdWdo
QWNjZXNzaWJpbGl0eSgpKQogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFibGVBdHRyczsK
ICAgICBlbHNlIGlmIChtX29iamVjdC0+aXNUYWJsZUNvbHVtbigpKQogICAgICAgICBvYmplY3RB
dHRyaWJ1dGVzID0gdGFibGVDb2xBdHRyczsKQEAgLTI1NTQsNyArMjU1NCw3IEBAIC0gKGlkKWFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcqKWF0dHJpYnV0ZU5hbWUKICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxl
KCkpIHsKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYmIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nl
c3NpYmlsaXR5KCkpIHsKICAgICAgICAgYXV0byYgdGFibGUgPSBkb3duY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGU+KCptX29iamVjdCk7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0pCiAgICAgICAgICAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheSh0YWJsZS5yb3dzKCkpOwpAQCAtMzEyOCw3ICszMTI4LDcgQEAg
LSAoTlNBcnJheSogKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMKICAg
ICBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIHRleHRQYXJh
bUF0dHJzOwogICAgIAotICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkK
KyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmls
aXR5KCkpCiAgICAgICAgIHJldHVybiB0YWJsZVBhcmFtQXR0cnM7CiAgICAgCiAgICAgaWYgKG1f
b2JqZWN0LT5pc01lbnVSZWxhdGVkKCkpCkBAIC0zMzE0LDcgKzMzMTQsNyBAQCAtICh2b2lkKWFj
Y2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRlOihOU1N0cmluZyopYXR0
cmlidXRlTmFtZQogICAgIGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKSB7CiAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZFJvd3M7CiAg
ICAgICAgIGNvbnZlcnRUb1ZlY3RvcihhcnJheSwgc2VsZWN0ZWRSb3dzKTsKLSAgICAgICAgaWYg
KG1fb2JqZWN0LT5pc1RyZWUoKSB8fCBtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkK
KyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSB8fCAoaXM8QWNjZXNzaWJpbGl0eVRhYmxl
PigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5p
c0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpKQogICAgICAgICAgICAgbV9vYmplY3Qt
PnNldFNlbGVjdGVkUm93cyhzZWxlY3RlZFJvd3MpOwogICAgIH0gZWxzZSBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQog
ICAgICAgICBtX29iamVjdC0+c2V0QVJJQUdyYWJiZWQoW251bWJlciBib29sVmFsdWVdKTsKQEAg
LTM3MDMsNyArMzcwMyw3IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNT
dHJpbmcqKWF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXRlCiAgICAgICAgIHJldHVy
biBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnZpc2libGVQb3NSYW5nZS5lbmRd
OwogICAgIH0KICAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkp
IHsKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYmIGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5KCkpIHsKICAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRSb3dQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewog
ICAgICAgICAgICAgaWYgKGFycmF5ID09IG5pbCB8fCBbYXJyYXkgY291bnRdICE9IDIpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5pbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240173</attachid>
            <date>2014-10-20 18:58:19 -0700</date>
            <delta_ts>2014-10-20 19:11:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137899-20141020185823.patch</filename>
            <type>text/plain</type>
            <size>32529</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQwNWMyMTc0ODMwYTll
MzhlNjUyYzYyODU0MGEwMDkxZGNiMDE2MS4uNThlYzgzMmVhZmViMTA2Yjg5M2MxNmJlZjI0MjQx
NmUzYjAzMjA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE0LTEwLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgY29uZnVzaW9uIGJl
dHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIC8gaXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZv
aWQgY29uZnVzaW9uIGJldHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIGFuZAor
ICAgICAgICBpc0FjY2Vzc2liaWxpdHlUYWJsZSgpLiBpc1RhYmxlKCkgaXMgZXF1aXZhbGVudCB0
bworICAgICAgICBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCksIHdoaWxlIGlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkgaXMgYW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlIHRoYXQgaXMgZXhwb3Nl
ZCBhcyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgdG8gdGhlCisgICAgICAgIHBsYXRmb3JtLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaXMgcmVuYW1pbmcgaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSB0bwor
ICAgICAgICBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCksIG1ha2VzIGl0IG5vbi12
aXJ0dWFsIGFuZCBkZWZpbmVzIGl0CisgICAgICAgIG9uIEFjY2Vzc2liaWxpdHlUYWJsZSBvbmx5
LCBmb3IgY2xhcml0eS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVuYW1lcyBpc1RhYmxl
RXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSB0bworICAgICAgICBjb21wdXRlSWlzVGFi
bGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGFzIGl0IGlzIGNhbGxlZCBvbmx5Cisg
ICAgICAgIG9uY2UgdG8gaW5pdGlhbGl6ZSB0aGUgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5IGRhdGEgbWVtYmVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJl
bik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50VGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5J
bmRleFJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRp
c2Nsb3NlZFJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
OjpkaXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZUFjY2Vzc2libGl0
eU9iamVjdElubmVyVGV4dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRDaGlsZHJlblRvQXJyYXkpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNB
Y2Nlc3NpYmlsaXR5VGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphcmlhU2VsZWN0ZWRSb3dzKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VGFibGU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Ojppc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVMZXZlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnJvbGVWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0FjY2Vzc2liaWxpdHlUYWJsZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUNlbGwpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aXNUYWJsZVJvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6CisgICAgICAgICh3ZWJr
aXRBY2Nlc3NpYmxlR2V0TkNoaWxkcmVuKToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVSZWZD
aGlsZCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nlc3Np
YmlsaXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6Zm9yQXR0cmlidXRlOl0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgorCiAyMDE0LTEwLTIwICBCZXRoIERha2luICA8YmRh
a2luQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZSBidWlsZCBmaXguCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5j
cHAKaW5kZXggNjM2Y2UzNWFmZTRhNWRhNDA2MTMzZDVkN2RlNjQyMDg0YzM3YWEwZC4uOWFkYjgx
ZmY4MDQ0NDZiOWY3ZmRmNjExMzQwNGNmOGFjM2YxYWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApAQCAtMTAw
LDcgKzEwMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbigpCiB7
CiAgICAgQVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAogICAgIAotICAgIGlmICghaXNBY2Nlc3Np
YmlsaXR5VGFibGUoKSkgeworICAgIGlmICghaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0
eSgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaAppbmRleCBkOGRjNDY3OGI1YTBjOGZiNTRh
MjEzMzNiYjJkODhiMTY5NTU4NDE1Li4wM2ZlNDAwZGM4NDEzNmU1OGM5NzdkYzBkYzcyOGIxYzE5
YjNhODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBBUklB
IHRyZWVncmlkcyBhbmQgZ3JpZHMgc3VwcG9ydCBzZWxlY3RlZCByb3dzLgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1NlbGVjdGVkUm93cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgY29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQo
QWNjZXNzaWJpbGl0eU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBl
bmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CiAgICAgYm9vbCBhZGRUYWJsZUNlbGxD
aGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4m
IGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3Bw
CmluZGV4IGQxZGM5Mzk3MGQ1OGM5ZDBkYjM2NjU4MjNlZGFmZjlkNjljMWQ2YWMuLjJmN2NhNDNj
MDgyMWU0OTUwOWYxN2Q1OWRlZjgzODU5YTEzOGU5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApA
QCAtNTUsMTQgKzU1LDE0IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIGlmICghcGFyZW50KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBpZiAocGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJs
ZSgpKQorICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpICYmIGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSgpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJl
bnQpOwogCiAgICAgLy8gSXQgY291bGQgaGFwcGVuIHRoYXQgd2UgaGFkbid0IHJlYWNoZWQgdGhl
IHBhcmVudCB0YWJsZSB5ZXQgKGluCiAgICAgLy8gY2FzZSBvYmplY3RzIGZvciByb3dzIHdlcmUg
bm90IGlnbm9yaW5nIGFjY2Vzc2liaWxpdHkpIHNvIGZvcgogICAgIC8vIHRoYXQgcmVhc29uIHdl
IG5lZWQgdG8gcnVuIHBhcmVudE9iamVjdFVuaWdub3JlZCBvbmNlIGFnYWluLgogICAgIHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJlbnQgfHwg
IXBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxp
dHlUYWJsZT4ocGFyZW50KSB8fCAhZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50
KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAogICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHBhcmVu
dCk7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93
SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93CiAgICAgaWYgKGlz
PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkpIHsKICAgICAgICAgLy8gV2UgYWxyZWFk
eSBnb3QgYSB0YWJsZSByb3csIHVzZSBpdHMgQVBJLgogICAgICAgICByb3dSYW5nZS5maXJzdCA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkucm93SW5kZXgoKTsKLSAg
ICB9IGVsc2UgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkgeworICAgIH0gZWxz
ZSBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSAmJiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkg
ewogICAgICAgICAvLyBXZSByZWFjaGVkIHRoZSBwYXJlbnQgdGFibGUsIHNvIHdlIG5lZWQgdG8g
aW5zcGVjdCBpdHMKICAgICAgICAgLy8gY2hpbGRyZW4gdG8gZGV0ZXJtaW5lIHRoZSByb3cgaW5k
ZXggZm9yIHRoZSBjZWxsIGluIGl0LgogICAgICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuY29sdW1uQ291bnQoKTsKQEAgLTEw
NCw3ICsxMDQsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4
UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mCiAgICAgaWYgKCFwYXJlbnQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGFyZW50LT5pc1RhYmxlUm93KCkgJiYgIXBhcmVu
dC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJs
ZVJvdz4oKnBhcmVudCkKKyAgICAgICAgJiYgIShpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJl
bnQpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVU
aHJvdWdoQWNjZXNzaWJpbGl0eSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBzaWJsaW5ncyA9IHBhcmVudC0+Y2hpbGRyZW4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmNwcAppbmRleCAwOTJjYTQ0NDYyYjNmOTFlYzY4YTUwYjU5NTdlYjlhZWMy
YzIxZDI1Li5iNzI1YTE3M2QxYTIzMjgyNTkxODFiODkxMDBhZmNjN2Y4YTg3OGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRSb3cuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Um93OjpkaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZGlzY2xvCiAg
ICAgLy8gVGhlIGNvbnRpZ3VvdXMgZGlzY2xvc2VkIHJvd3Mgd2lsbCBiZSB0aGUgcm93cyBpbiB0
aGUgdGFibGUgdGhhdCAKICAgICAvLyBoYXZlIGFuIGFyaWEtbGV2ZWwgb2YgcGx1cyAxIGZyb20g
dGhpcyByb3cuCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0
VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5
VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgfHwgIWRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVUaHJvdWdoQWNj
ZXNzaWJpbGl0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gU2VhcmNoIGZvciBy
b3dzIHRoYXQgbWF0Y2ggdGhlIGNvcnJlY3QgbGV2ZWwuIApAQCAtOTAsNyArOTAsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93
KCkgY29uc3QKICAgICAvLyBUaGUgcm93IHRoYXQgZGlzY2xvc2VzIHRoaXMgb25lIGlzIHRoZSBy
b3cgaW4gdGhlIHRhYmxlCiAgICAgLy8gdGhhdCBpcyBhcmlhLWxldmVsIHN1YnRyYWN0IDEgZnJv
bSB0aGlzIHJvdy4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmpl
Y3RVbmlnbm9yZWQoKTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5pc0FjY2Vzc2liaWxp
dHlUYWJsZSgpKQorICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSB8fCAh
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIC8vIElm
IHRoZSBsZXZlbCBpcyAxIG9yIGxlc3MsIHRoYW4gbm90aGluZyBkaXNjbG9zZXMgdGhpcyByb3cu
CkBAIC0xMjAsOCArMTIwLDExIEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgLy8gb25seSBoYXZlICJyb3ciIGVs
ZW1lbnRzLCBidXQgaWYgbm90LCB3ZSBzdGlsbCBzaG91bGQgaGFuZGxlIGl0IGdyYWNlZnVsbHkg
YnkgZmluZGluZyB0aGUgcmlnaHQgdGFibGUuCiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVu
dE9iamVjdCgpKSB7CiAgICAgICAgIC8vIFRoZSBwYXJlbnQgdGFibGUgZm9yIGFuIEFSSUEgZ3Jp
ZCByb3cgc2hvdWxkIGJlIGFuIEFSSUEgdGFibGUuCi0gICAgICAgIGlmIChwYXJlbnQtPmlzQWNj
ZXNzaWJpbGl0eVRhYmxlKCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50
KS5pc0FyaWFUYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZT4ocGFyZW50KTsKKyAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBh
cmVudCkpIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZSYgdGFibGVQYXJlbnQgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpOworICAgICAgICAgICAgaWYgKHRh
YmxlUGFyZW50LmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSAmJiB0YWJsZVBhcmVu
dC5pc0FyaWFUYWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiAmdGFibGVQYXJlbnQ7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3Bw
CmluZGV4IDA3OTY2Y2Y0ZWExYThiMWIwNjM2MTA5OGM2ZjliN2RhNDZmYzUyMjEuLmYwOWI1M2Zk
ZmM4ZTgyZjJlNzlmZjdjNDE2YjQ3YTMzMGJiMzgxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Lmgi
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbi5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgpAQCAtMTYy
Myw3ICsxNjI0LDEwIEBAIHN0YXRpYyBib29sIHNob3VsZFVzZUFjY2Vzc2libGl0eU9iamVjdElu
bmVyVGV4dChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFjY2VzCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIFNraXAgYmlnIGNvbnRhaW5lciBlbGVtZW50cyBsaWtlIGxpc3RzLCB0
YWJsZXMsIGV0Yy4KLSAgICBpZiAob2JqLT5pc0xpc3QoKSB8fCBvYmotPmlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkgfHwgb2JqLT5pc1RyZWUoKSB8fCBvYmotPmlzQ2FudmFzKCkpCisgICAgaWYgKGlz
PEFjY2Vzc2liaWxpdHlMaXN0Pigqb2JqKQorICAgICAgICB8fCAoaXM8QWNjZXNzaWJpbGl0eVRh
YmxlPigqb2JqKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmopLmlzRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKKyAgICAgICAgfHwgb2JqLT5pc1RyZWUoKQorICAg
ICAgICB8fCBvYmotPmlzQ2FudmFzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMmJhZjQ0YWFiMzczYTRkY2RkOGUzMjAyOTlhNzc0YzQ1
ZmNmMWQ3ZS4uNjNhZjdkZDJjZTEwMTk1ZDNkNDYwMmIyOTg0MzI4MTYzOWM1NDM0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCkBAIC0yMzEsMTEgKzIzMSwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nlc3NpYmlsaXR5TwogICAgICAg
ICAKICAgICBjYXNlIFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5OgogICAgICAgICByZXR1cm4gY3Jp
dGVyaWEtPnN0YXJ0T2JqZWN0Ci0gICAgICAgICAgICAmJiBheE9iamVjdC0+aXNBY2Nlc3NpYmls
aXR5VGFibGUoKQotICAgICAgICAgICAgJiYgYXhPYmplY3QtPnRhYmxlTGV2ZWwoKSA9PSBjcml0
ZXJpYS0+c3RhcnRPYmplY3QtPnRhYmxlTGV2ZWwoKTsKKyAgICAgICAgICAgICYmIGlzPEFjY2Vz
c2liaWxpdHlUYWJsZT4oKmF4T2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+
KCpheE9iamVjdCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpCisgICAgICAgICAg
ICAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpheE9iamVjdCkudGFibGVMZXZlbCgp
ID09IGNyaXRlcmlhLT5zdGFydE9iamVjdC0+dGFibGVMZXZlbCgpOwogICAgICAgICAKICAgICBj
YXNlIFRhYmxlU2VhcmNoS2V5OgotICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzQWNjZXNzaWJp
bGl0eVRhYmxlKCk7CisgICAgICAgIHJldHVybiBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpheE9i
amVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhPYmplY3QpLmlzRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsKICAgICAgICAgCiAgICAgY2FzZSBUZXh0RmllbGRT
ZWFyY2hLZXk6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNUZXh0Q29udHJvbCgpOwpAQCAt
NTAyLDcgKzUwMiw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJheShBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBCiB7CiAgICAgLy8gQSB0YWJs
ZSdzIGNoaWxkcmVuIGluY2x1ZGVzIGVsZW1lbnRzIHdob3NlIG93biBjaGlsZHJlbiBhcmUgYWxz
byB0aGUgdGFibGUncyBjaGlsZHJlbiAoZHVlIHRvIHRoZSB3YXkgdGhlIE1hYyBleHBvc2VzIHRh
YmxlcykuCiAgICAgLy8gVGhlIHJvd3MgZnJvbSB0aGUgdGFibGUgc2hvdWxkIGJlIHF1ZXJpZWQs
IHNpbmNlIHRob3NlIGFyZSBkaXJlY3QgZGVzY2VuZGFudHMgb2YgdGhlIHRhYmxlLCBhbmQgdGhl
eSBjb250YWluIGNvbnRlbnQuCi0gICAgY29uc3QgYXV0byYgc2VhcmNoQ2hpbGRyZW4gPSBvYmpl
Y3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgPyBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+
KCpvYmplY3QpLnJvd3MoKSA6IG9iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBjb25zdCBhdXRvJiBz
ZWFyY2hDaGlsZHJlbiA9IGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iamVjdCkgJiYgZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5KCkgPyBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmplY3QpLnJvd3MoKSA6
IG9iamVjdC0+Y2hpbGRyZW4oKTsKIAogICAgIHNpemVfdCBjaGlsZHJlblNpemUgPSBzZWFyY2hD
aGlsZHJlbi5zaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMDIzNGJiM2RmZDFmMTc3YzVlMGRmZWYyYzM5MDNj
MDdiMTJmMTU1Yi4uODVmZTQ2MzA1YzEyNDRjODIwNGZkY2Q3MjZjYjY2M2U4ZWFkMWY4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKQEAgLTQ3NSw3ICs0NzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTGlzdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGFibGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlUYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRGF0YVRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZVJvdygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGFibGVDb2x1bW4oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggM2UzNWQ1ZTg1
MDQ0ZGFlZWI0NTY2N2EyMzUzMTU1YmYwZmZlN2VkNS4uOWUxNWVkMjJlYThhNGQyOTczNDRhOWU5
MGZmYTBhZGJmNTNiNGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zMTM1LDggKzMxMzUs
MTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhU2VsZWN0ZWRSb3dzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmUKICAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGFsbFJvd3M7CiAgICAgICAgIGFyaWFUcmVlUm93cyhhbGxSb3dzKTsKICAgICAg
ICAgcm93c0l0ZXJhdGlvbihhbGxSb3dzKTsKLSAgICB9IGVsc2UgaWYgKGlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqdGhpcykuc3VwcG9ydHNT
ZWxlY3RlZFJvd3MoKSkKLSAgICAgICAgcm93c0l0ZXJhdGlvbihkb3duY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGU+KCp0aGlzKS5yb3dzKCkpOworICAgIH0gZWxzZSBpZiAoaXM8QWNjZXNzaWJpbGl0
eVRhYmxlPigqdGhpcykpIHsKKyAgICAgICAgYXV0byYgdGhpc1RhYmxlID0gZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqdGhpcyk7CisgICAgICAgIGlmICh0aGlzVGFibGUuaXNFeHBvc2Fi
bGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpICYmIHRoaXNUYWJsZS5zdXBwb3J0c1NlbGVjdGVkUm93
cygpKQorICAgICAgICAgICAgcm93c0l0ZXJhdGlvbih0aGlzVGFibGUucm93cygpKTsKKyAgICB9
CiB9CiAgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXN0Ym94U2Vs
ZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApp
bmRleCAwYjdiZTNhZjVhMmVkNzZlOGZlMmJmNDhiOTY0MmJkZTQyZWMxODQyLi4xZDUzMDBlZmFl
ZTBlZTEyMDkyMjI5ZmE0ZDQ0YmI4YzU5NGY4NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC01MSw3ICs1MSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2li
aWxpdHlUYWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIDogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdChyZW5kZXJlcikKICAgICAsIG1faGVhZGVyQ29udGFpbmVyKG51bGxwdHIpCi0g
ICAgLCBtX2lzQWNjZXNzaWJpbGl0eVRhYmxlKHRydWUpCisgICAgLCBtX2lzRXhwb3NhYmxlVGhy
b3VnaEFjY2Vzc2liaWxpdHkodHJ1ZSkKIHsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCBBY2Nlc3Np
YmlsaXR5VGFibGU6On5BY2Nlc3NpYmlsaXR5VGFibGUoKQogdm9pZCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmluaXQoKQogewogICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluaXQoKTsKLSAg
ICBtX2lzQWNjZXNzaWJpbGl0eVRhYmxlID0gaXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5KCk7CisgICAgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5ID0gY29tcHV0
ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpOwogfQogCiBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUYWJsZT4gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKQEAgLTgyLDEyICs4MiwxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6aGFzQVJJQVJvbGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgY29uc3QKK2Jvb2wgQWNjZXNz
aWJpbGl0eVRhYmxlOjppc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBy
ZXR1cm4gbV9pc0FjY2Vzc2liaWxpdHlUYWJsZTsKKyAgICByZXR1cm4gbV9pc0V4cG9zYWJsZVRo
cm91Z2hBY2Nlc3NpYmlsaXR5OwogfQogCiBIVE1MVGFibGVFbGVtZW50KiBBY2Nlc3NpYmlsaXR5
VGFibGU6OnRhYmxlRWxlbWVudCgpIGNvbnN0CkBAIC0zMDksNyArMzA5LDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAgICAgCi1ib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNUYWJsZUV4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRlSXNU
YWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3QKIHsKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGlzIGEgaGV1cmlzdGljIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEKICAgICAvLyA8
dGFibGU+IHNob3VsZCBiZSBleHBvc2VkIGFzIGFuIEFYVGFibGUuIFRoZSBnb2FsCkBAIC0zNDcs
NyArMzQ3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNsZWFyQ2hpbGRyZW4oKQogCiB2
b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogewotICAgIGlmICghaXNBY2Nl
c3NpYmlsaXR5VGFibGUoKSkgeworICAgIGlmICghaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVu
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MjUsNyArNTI1LDcgQEAgaW50IEFjY2Vz
c2liaWxpdHlUYWJsZTo6dGFibGVMZXZlbCgpIGNvbnN0CiB7CiAgICAgaW50IGxldmVsID0gMDsK
ICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IHN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlPYmplY3QqPihjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KHRoaXMpKTsgb2Jq
OyBvYmogPSBvYmotPnBhcmVudE9iamVjdCgpKSB7Ci0gICAgICAgIGlmIChvYmotPmlzQWNjZXNz
aWJpbGl0eVRhYmxlKCkpCisgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmop
ICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iaikuaXNFeHBvc2FibGVUaHJvdWdo
QWNjZXNzaWJpbGl0eSgpKQogICAgICAgICAgICAgKytsZXZlbDsKICAgICB9CiAgICAgCkBAIC01
NjgsNyArNTY4LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxl
OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwKIAogQWNjZXNzaWJpbGl0eVJv
bGUgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb2xlVmFsdWUoKSBjb25zdAogewotICAgIGlmICghaXNB
Y2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJvbGVW
YWx1ZSgpOwogCiAgICAgcmV0dXJuIFRhYmxlUm9sZTsKQEAgLTU4Miw3ICs1ODIsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dAogICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAotICAgIGlmICghaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzRXhw
b3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiAgICAgICAg
IAogICAgIHJldHVybiBmYWxzZTsKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZTo6dGl0bGVFbGVtZW50VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0
T3JkZXIpCiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKCkgY29uc3QKIHsKLSAg
ICBpZiAoIWlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgaWYgKCFpc0V4cG9zYWJsZVRocm91
Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojp0aXRsZSgpOwogICAgIAogICAgIFN0cmluZyB0aXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCmluZGV4IGIwMjZmNTJlNmRh
M2M2MTRjZDgxMWNmMGI3YTY2MWJjMTljMDAwNmYuLjFlM2Y1MzU1MGNiNTcwN2I0YTgxMzVkZWFk
MGFjNjQ2NjBhNWMyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB1bnNp
Z25lZCBjb2x1bW5Db3VudCgpOwogICAgIHVuc2lnbmVkIHJvd0NvdW50KCk7Ci0gICAgdmlydHVh
bCBpbnQgdGFibGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgaW50IHRhYmxl
TGV2ZWwoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICAKICAgICB2aXJ0dWFsIFN0cmluZyB0
aXRsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIApAQCAtNzUsMTUgKzc1LDE1IEBAIHB1YmxpYzoK
ICAgICAvLyBhbiBvYmplY3QgdGhhdCBjb250YWlucywgYXMgY2hpbGRyZW4sIGFsbCB0aGUgb2Jq
ZWN0cyB0aGF0IGFjdCBhcyBoZWFkZXJzCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVy
Q29udGFpbmVyKCk7CiAKLSAgICAvLyBpc0FjY2Vzc2liaWxpdHlUYWJsZSBpcyB3aGV0aGVyIGl0
IGlzIGV4cG9zZWQgYXMgYW4gQWNjZXNzaWJpbGl0eVRhYmxlIHRvIHRoZSBwbGF0Zm9ybS4KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKKyAgICAvLyBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgaXMgd2hldGhlciBp
dCBpcyBleHBvc2VkIGFzIGFuIEFjY2Vzc2liaWxpdHlUYWJsZSB0byB0aGUgcGxhdGZvcm0uCisg
ICAgYm9vbCBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Q7CiAKIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9yb3dzOwogICAgIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBtX2NvbHVtbnM7CiAKICAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4gbV9oZWFkZXJDb250YWluZXI7Ci0gICAgYm9vbCBtX2lzQWNjZXNzaWJpbGl0
eVRhYmxlOworICAgIGJvb2wgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5OwogCiAg
ICAgYm9vbCBoYXNBUklBUm9sZSgpIGNvbnN0OwogCkBAIC05Myw3ICs5Myw3IEBAIHByb3RlY3Rl
ZDoKICAgICAvLyB0aGluayB0aGlzICJsb29rcyIgbGlrZSBhIGRhdGEtYmFzZWQgdGFibGUgKGlu
c3RlYWQgb2YgYSB0YWJsZSB1c2VkIGZvciBsYXlvdXQpLgogICAgIHZpcnR1YWwgYm9vbCBpc0Rh
dGFUYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzVGFibGVFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb21w
dXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAppbmRleCA2ODM3YmUwMjgyMWIzYTM4NjQ3MWIwMWZl
MzljMzkwODA4Mzg4MzZlLi5mNWQyNzJmY2VjOTJhYTk5YjVmNTlkZDY2NjViZjVkODMyMGYzOTc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmlzVGFibGVDZWxsKCkgY29uc3QKICAgICAvLyBUaGlzIHVzZWQgdG8gY2hlY2sg
aWYgdGhlIHVuaWdub3JlZFBhcmVudCB3YXMgYSByb3csIGJ1dCB0aGF0IGV4cGxvZGVkIHBlcmZv
cm1hbmNlIGlmCiAgICAgLy8gdGhpcyB3YXMgaW4gbmVzdGVkIHRhYmxlcy4gVGhpcyBjaGVjayBz
aG91bGQgYmUganVzdCBhcyBnb29kLgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFRh
YmxlID0gdGhpcy0+cGFyZW50VGFibGUoKTsKLSAgICByZXR1cm4gcGFyZW50VGFibGUgJiYgcGFy
ZW50VGFibGUtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCk7CisgICAgcmV0dXJuIGlzPEFjY2Vzc2li
aWxpdHlUYWJsZT4ocGFyZW50VGFibGUpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
KnBhcmVudFRhYmxlKS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7CiB9CiAgICAg
CiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggYjAyZjllZmQ1YzU5ZDdiM2Yw
ZDQ0YTkzMWQwZDdmMzkzMTJmNWU4ZC4uYjUxZWI3NWMzNTc2OTE2MzM3NGY2ZTY0YWVkZTQzN2M0
OTljZDk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtNzUsMTEgKzc1LDEzIEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KCkKICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9wYXJlbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKCFtX3Bh
cmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlU
YWJsZT4oKm1fcGFyZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBh
dXRvJiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50
KTsKKyAgICBpZiAoIXBhcmVudFRhYmxlLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHko
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCiAgICAgaWYgKHBhcmVudFRhYmxlLmlz
QXJpYVRhYmxlKCkpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjZWxsIDogY2hpbGRyZW4o
KSkgewogICAgICAgICAgICAgaWYgKGNlbGwtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQ29sdW1u
SGVhZGVyUm9sZSkKQEAgLTE3MCwxMCArMTcyLDEzIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uOjphZGRDaGlsZHJlbigpCiAgICAgQVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAogICAg
IAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAoIW1fcGFyZW50IHx8ICFtX3Bh
cmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlU
YWJsZT4obV9wYXJlbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYXJlbnRUYWJs
ZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KTsKKyAgICBpZiAoIXBh
cmVudFRhYmxlLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlUYWJsZSYgcGFyZW50VGFibGUgPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX3BhcmVudCk7CiAgICAgaW50IG51bVJvd3MgPSBwYXJl
bnRUYWJsZS5yb3dDb3VudCgpOwogICAgIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUm93
czsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKaW5kZXggMDgzYmQ5
OGNiODA3N2Q1MzRjMmNmYzFlNDVmMmMxZmY2NDJjMjg4Yi4uM2QwMzA3ZmM4MmRkMWYyMTA5Mjg2
NjkzN2RiNGJlNDQ2MWU4NmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNw
cApAQCAtNzAsMTAgKzcwLDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFp
bmVyOjphZGRDaGlsZHJlbigpCiAgICAgQVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAogICAgIAog
ICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAoIW1fcGFyZW50IHx8ICFtX3BhcmVu
dC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJs
ZT4obV9wYXJlbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYXJlbnRUYWJsZSA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KTsKKyAgICBpZiAoIXBhcmVu
dFRhYmxlLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KS5jb2x1
bW5IZWFkZXJzKG1fY2hpbGRyZW4pOworICAgIHBhcmVudFRhYmxlLmNvbHVtbkhlYWRlcnMobV9j
aGlsZHJlbik7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4p
CiAgICAgICAgIG1faGVhZGVyUmVjdC51bml0ZShjaGlsZC0+ZWxlbWVudFJlY3QoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAKaW5kZXggYjEyNDFkMTQxMzNkOWMxNWJhMjZhNDJkMzVkZjU3MzFmMjY3NDIzZC4uOWZm
ZjlmNDY1OWFkNGY2M2ExYjI1NWZkOGVmNTNmOGMxODA4M2Q0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcApAQCAt
NzMsNyArNzMsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlUm93Ojpp
c1RhYmxlUm93KCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJsZSA9IHBh
cmVudFRhYmxlKCk7Ci0gICAgaWYgKCF0YWJsZSB8fCAhdGFibGUtPmlzQWNjZXNzaWJpbGl0eVRh
YmxlKCkpCisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGU+KHRhYmxlKSB8fCAhZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqdGFibGUpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHJldHVybiB0cnVlOwpA
QCAtMTA3LDcgKzEwNyw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eVRhYmxl
Um93OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSB0YWJsZSBv
YmplY3QsIGJ1dCBub3QgYW4gYWNjZXNzaWJpbGl0eSB0YWJsZSwgd2Ugc2hvdWxkIHN0b3AgYmVj
YXVzZSB3ZSBkb24ndCB3YW50IHRvCiAgICAgICAgIC8vIGNob29zZSBhbm90aGVyIGFuY2VzdG9y
IHRhYmxlIGFzIHRoaXMgcm93J3MgdGFibGUuCiAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5
VGFibGU+KCpwYXJlbnQpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZT4oKnBhcmVudCkuaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSA/IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZT4ocGFyZW50KSA6IG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nl
c3NpYmlsaXR5KCkgPyBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHBhcmVudCkgOiBudWxs
cHRyOwogICAgIH0KICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFw
cGVyQXRrLmNwcAppbmRleCAwODQ2Mjg5ZTQ5MWQyNGIxODdjMzI4YjQyMDM1NTI4ZDZjZDM0ODZm
Li4wNTJjNGI4NDlkMGUyNmEwYmRkZmY2MmFmNjAxMzYxNGEwZTlmNGNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVdyYXBwZXJBdGsuY3BwCkBAIC0zNTUsNyArMzU1LDcgQEAgc3RhdGljIGdpbnQgd2Via2l0
QWNjZXNzaWJsZUdldE5DaGlsZHJlbihBdGtPYmplY3QqIG9iamVjdCkKIAogICAgIC8vIFRhYmxl
cyBzaG91bGQgYmUgdHJlYXRlZCBpbiBhIGRpZmZlcmVudCB3YXkgYmVjYXVzZSByb3dzIHNob3Vs
ZAogICAgIC8vIGJlIGJ5cGFzc2VkIHdoZW4gZXhwb3NpbmcgdGhlIGFjY2Vzc2libGUgaGllcmFy
Y2h5LgotICAgIGlmIChjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlm
IChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpjb3JlT2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGU+KCpjb3JlT2JqZWN0KS5pc0V4cG9zZWRUaHJvdWdoQWNjZXNzaWJpbGl0eSgp
KQogICAgICAgICByZXR1cm4gZ2V0TkNoaWxkcmVuRm9yVGFibGUoY29yZU9iamVjdCk7CiAKICAg
ICByZXR1cm4gY29yZU9iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7CkBAIC0zOTgsNyArMzk4LDcg
QEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZVJlZkNoaWxkKEF0a09iamVjdCog
b2JqZWN0LCBnaW50IGluZGV4KQogCiAgICAgLy8gVGFibGVzIGFyZSBzcGVjaWFsIGNhc2VzIGJl
Y2F1c2Ugcm93cyBzaG91bGQgYmUgYnlwYXNzZWQsIGJ1dAogICAgIC8vIHN0aWxsIHRha2luZyB0
aGVpciBjZWxscyBpbnRvIGFjY291bnQuCi0gICAgaWYgKGNvcmVPYmplY3QtPmlzQWNjZXNzaWJp
bGl0eVRhYmxlKCkpCisgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKmNvcmVPYmplY3Qp
ICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKmNvcmVPYmplY3QpLmlzRXhwb3NlZFRo
cm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIGNvcmVDaGlsZCA9IGdldENoaWxkRm9yVGFi
bGUoY29yZU9iamVjdCwgaW5kZXgpOwogICAgIGVsc2UgewogICAgICAgICBjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuID0gY29y
ZU9iamVjdC0+Y2hpbGRyZW4oKTsKQEAgLTUyMCw3ICs1MjAsNyBAQCBzdGF0aWMgQXRrQXR0cmli
dXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyhBdGtPYmplY3QqIG9iamVjdCkK
IAogICAgIC8vIFNldCB0aGUgJ2xheW91dC1ndWVzcycgYXR0cmlidXRlIHRvIGhlbHAgQXNzaXN0
aXZlCiAgICAgLy8gVGVjaG5vbG9naWVzIGtub3cgd2hlbiBhbiBleHBvc2VkIHRhYmxlIGlzIG5v
dCBkYXRhIHRhYmxlLgotICAgIGlmIChjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgp
ICYmICFjb3JlT2JqZWN0LT5pc0RhdGFUYWJsZSgpKQorICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5
VGFibGU+KCpjb3JlT2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpjb3Jl
T2JqZWN0KS5pc0V4cG9zZWRUaHJvdWdoQWNjZXNzaWJpbGl0eSgpICYmICFjb3JlT2JqZWN0LT5p
c0RhdGFUYWJsZSgpKQogICAgICAgICBhdHRyaWJ1dGVTZXQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNl
dChhdHRyaWJ1dGVTZXQsICJsYXlvdXQtZ3Vlc3MiLCAidHJ1ZSIpOwogCiAgICAgU3RyaW5nIHBs
YWNlaG9sZGVyID0gY29yZU9iamVjdC0+cGxhY2Vob2xkZXJWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXgg
ZGFjMWI1Y2U1YWViMDExZDIyNDYxYzk3YzE0ZDg0YjViMzliMDhlNS4uMmM3NDQzMGE5MzE0ZTUz
ZDIyY2YxZGZiMmFhM2ZkYWIxYzVmNjM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgSEFWRShBQ0NFU1NJQklMSVRZKQogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmgi
CisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5o
IgogI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKICNpbXBvcnQg
IldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBBWE9iamVj
dENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
LCBBWE5vdGlmaWMKICAgICAgICAgICAgIG1hY05vdGlmaWNhdGlvbiA9IEAiQVhJbnZhbGlkU3Rh
dHVzQ2hhbmdlZCI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFNlbGVjdGVk
Q2hpbGRyZW5DaGFuZ2VkOgotICAgICAgICAgICAgaWYgKG9iai0+aXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKSkKKyAgICAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmopICYmIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iaikuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSgpKQogICAgICAgICAgICAgICAgIG1hY05vdGlmaWNhdGlvbiA9IE5TQWNjZXNzaWJp
bGl0eVNlbGVjdGVkUm93c0NoYW5nZWROb3RpZmljYXRpb247CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgbWFjTm90aWZpY2F0aW9uID0gTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRD
aGlsZHJlbkNoYW5nZWROb3RpZmljYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCmluZGV4IDNmOWRiZDZlMDBkYzk0ZTE1NDc1MjcyMTIwZmIyNjM3YmFmY2M2Nzku
LjMyMTBiN2MyOWRiMzc2NzYyYTZlNDA2ZjM5MWYwMTUyZjc1ZDA5ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMTk5LDcgKzExOTksNyBAQCAtIChOU0Fy
cmF5KilhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzCiAgICAgaWYgKG1fb2Jq
ZWN0LT5zdXBwb3J0c0FSSUFEcm9wcGluZygpKQogICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdOwogICAgIAotICAgIGlmICht
X29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGU+KCptX29iamVjdCkuc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSkKKyAgICBpZiAoaXM8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgJiYgZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpLnN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkp
CiAgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJv
d3NBdHRyaWJ1dGVdOwogICAgIAogICAgIGlmIChtX29iamVjdC0+c3VwcG9ydHNBUklBTGl2ZVJl
Z2lvbigpKSB7CkBAIC0xNTkwLDcgKzE1OTAsNyBAQCAtIChOU0FycmF5KilhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlTmFtZXMKICAgICBlbHNlIGlmIChtX29iamVjdC0+aXNBbmNob3IoKSB8fCBtX29i
amVjdC0+aXNJbWFnZSgpIHx8IG1fb2JqZWN0LT5pc0xpbmsoKSkKICAgICAgICAgb2JqZWN0QXR0
cmlidXRlcyA9IGFuY2hvckF0dHJzOwogICAgIAotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0Fj
Y2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4o
Km1fb2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkuaXNF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKQogICAgICAgICBvYmplY3RBdHRyaWJ1dGVz
ID0gdGFibGVBdHRyczsKICAgICBlbHNlIGlmIChtX29iamVjdC0+aXNUYWJsZUNvbHVtbigpKQog
ICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFibGVDb2xBdHRyczsKQEAgLTI1NTQsNyArMjU1
NCw3IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcqKWF0dHJp
YnV0ZU5hbWUKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQWNj
ZXNzaWJpbGl0eVRhYmxlKCkpIHsKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9v
YmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9z
YWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpIHsKICAgICAgICAgYXV0byYgdGFibGUgPSBkb3du
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCk7CiAgICAgICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0pCiAg
ICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheSh0YWJsZS5yb3dzKCkpOwpAQCAtMzEy
OCw3ICszMTI4LDcgQEAgLSAoTlNBcnJheSogKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0
cmlidXRlTmFtZXMKICAgICBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkKICAgICAgICAg
cmV0dXJuIHRleHRQYXJhbUF0dHJzOwogICAgIAotICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3Np
YmlsaXR5VGFibGUoKSkKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3Qp
ICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRo
cm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiB0YWJsZVBhcmFtQXR0cnM7CiAg
ICAgCiAgICAgaWYgKG1fb2JqZWN0LT5pc01lbnVSZWxhdGVkKCkpCkBAIC0zMzE0LDcgKzMzMTQs
NyBAQCAtICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRl
OihOU1N0cmluZyopYXR0cmlidXRlTmFtZQogICAgIGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKSB7CiAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBz
ZWxlY3RlZFJvd3M7CiAgICAgICAgIGNvbnZlcnRUb1ZlY3RvcihhcnJheSwgc2VsZWN0ZWRSb3dz
KTsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSB8fCBtX29iamVjdC0+aXNBY2Nlc3Np
YmlsaXR5VGFibGUoKSkKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSB8fCAoaXM8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpKQogICAgICAg
ICAgICAgbV9vYmplY3QtPnNldFNlbGVjdGVkUm93cyhzZWxlY3RlZFJvd3MpOwogICAgIH0gZWxz
ZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJi
ZWRBdHRyaWJ1dGVdKQogICAgICAgICBtX29iamVjdC0+c2V0QVJJQUdyYWJiZWQoW251bWJlciBi
b29sVmFsdWVdKTsKQEAgLTM3MDMsNyArMzcwMyw3IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTooTlNTdHJpbmcqKWF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXRl
CiAgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnZpc2li
bGVQb3NSYW5nZS5lbmRdOwogICAgIH0KICAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNz
aWJpbGl0eVRhYmxlKCkpIHsKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmpl
Y3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJs
ZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpIHsKICAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRSb3dQYXJhbWV0ZXJpemVk
QXR0cmlidXRlXSkgewogICAgICAgICAgICAgaWYgKGFycmF5ID09IG5pbCB8fCBbYXJyYXkgY291
bnRdICE9IDIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240175</attachid>
            <date>2014-10-20 19:12:05 -0700</date>
            <delta_ts>2014-10-20 19:27:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137899-20141020191210.patch</filename>
            <type>text/plain</type>
            <size>32748</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQwNWMyMTc0ODMwYTll
MzhlNjUyYzYyODU0MGEwMDkxZGNiMDE2MS4uNThlYzgzMmVhZmViMTA2Yjg5M2MxNmJlZjI0MjQx
NmUzYjAzMjA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE0LTEwLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgY29uZnVzaW9uIGJl
dHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIC8gaXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZv
aWQgY29uZnVzaW9uIGJldHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIGFuZAor
ICAgICAgICBpc0FjY2Vzc2liaWxpdHlUYWJsZSgpLiBpc1RhYmxlKCkgaXMgZXF1aXZhbGVudCB0
bworICAgICAgICBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCksIHdoaWxlIGlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkgaXMgYW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlIHRoYXQgaXMgZXhwb3Nl
ZCBhcyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgdG8gdGhlCisgICAgICAgIHBsYXRmb3JtLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaXMgcmVuYW1pbmcgaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSB0bwor
ICAgICAgICBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCksIG1ha2VzIGl0IG5vbi12
aXJ0dWFsIGFuZCBkZWZpbmVzIGl0CisgICAgICAgIG9uIEFjY2Vzc2liaWxpdHlUYWJsZSBvbmx5
LCBmb3IgY2xhcml0eS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVuYW1lcyBpc1RhYmxl
RXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSB0bworICAgICAgICBjb21wdXRlSWlzVGFi
bGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGFzIGl0IGlzIGNhbGxlZCBvbmx5Cisg
ICAgICAgIG9uY2UgdG8gaW5pdGlhbGl6ZSB0aGUgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5IGRhdGEgbWVtYmVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJl
bik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50VGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5J
bmRleFJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRp
c2Nsb3NlZFJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
OjpkaXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZUFjY2Vzc2libGl0
eU9iamVjdElubmVyVGV4dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRDaGlsZHJlblRvQXJyYXkpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNB
Y2Nlc3NpYmlsaXR5VGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphcmlhU2VsZWN0ZWRSb3dzKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VGFibGU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Ojppc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVMZXZlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnJvbGVWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0FjY2Vzc2liaWxpdHlUYWJsZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUNlbGwpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aXNUYWJsZVJvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6CisgICAgICAgICh3ZWJr
aXRBY2Nlc3NpYmxlR2V0TkNoaWxkcmVuKToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVSZWZD
aGlsZCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nlc3Np
YmlsaXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6Zm9yQXR0cmlidXRlOl0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgorCiAyMDE0LTEwLTIwICBCZXRoIERha2luICA8YmRh
a2luQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZSBidWlsZCBmaXguCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5j
cHAKaW5kZXggNjM2Y2UzNWFmZTRhNWRhNDA2MTMzZDVkN2RlNjQyMDg0YzM3YWEwZC4uOWFkYjgx
ZmY4MDQ0NDZiOWY3ZmRmNjExMzQwNGNmOGFjM2YxYWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApAQCAtMTAw
LDcgKzEwMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbigpCiB7
CiAgICAgQVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAogICAgIAotICAgIGlmICghaXNBY2Nlc3Np
YmlsaXR5VGFibGUoKSkgeworICAgIGlmICghaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0
eSgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaAppbmRleCBkOGRjNDY3OGI1YTBjOGZiNTRh
MjEzMzNiYjJkODhiMTY5NTU4NDE1Li4wM2ZlNDAwZGM4NDEzNmU1OGM5NzdkYzBkYzcyOGIxYzE5
YjNhODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBBUklB
IHRyZWVncmlkcyBhbmQgZ3JpZHMgc3VwcG9ydCBzZWxlY3RlZCByb3dzLgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1NlbGVjdGVkUm93cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgY29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQo
QWNjZXNzaWJpbGl0eU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBl
bmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CiAgICAgYm9vbCBhZGRUYWJsZUNlbGxD
aGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4m
IGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3Bw
CmluZGV4IGQxZGM5Mzk3MGQ1OGM5ZDBkYjM2NjU4MjNlZGFmZjlkNjljMWQ2YWMuLjJmN2NhNDNj
MDgyMWU0OTUwOWYxN2Q1OWRlZjgzODU5YTEzOGU5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApA
QCAtNTUsMTQgKzU1LDE0IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIGlmICghcGFyZW50KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBpZiAocGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJs
ZSgpKQorICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpICYmIGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSgpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJl
bnQpOwogCiAgICAgLy8gSXQgY291bGQgaGFwcGVuIHRoYXQgd2UgaGFkbid0IHJlYWNoZWQgdGhl
IHBhcmVudCB0YWJsZSB5ZXQgKGluCiAgICAgLy8gY2FzZSBvYmplY3RzIGZvciByb3dzIHdlcmUg
bm90IGlnbm9yaW5nIGFjY2Vzc2liaWxpdHkpIHNvIGZvcgogICAgIC8vIHRoYXQgcmVhc29uIHdl
IG5lZWQgdG8gcnVuIHBhcmVudE9iamVjdFVuaWdub3JlZCBvbmNlIGFnYWluLgogICAgIHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJlbnQgfHwg
IXBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxp
dHlUYWJsZT4ocGFyZW50KSB8fCAhZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50
KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAogICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHBhcmVu
dCk7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93
SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93CiAgICAgaWYgKGlz
PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkpIHsKICAgICAgICAgLy8gV2UgYWxyZWFk
eSBnb3QgYSB0YWJsZSByb3csIHVzZSBpdHMgQVBJLgogICAgICAgICByb3dSYW5nZS5maXJzdCA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkucm93SW5kZXgoKTsKLSAg
ICB9IGVsc2UgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkgeworICAgIH0gZWxz
ZSBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSAmJiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkg
ewogICAgICAgICAvLyBXZSByZWFjaGVkIHRoZSBwYXJlbnQgdGFibGUsIHNvIHdlIG5lZWQgdG8g
aW5zcGVjdCBpdHMKICAgICAgICAgLy8gY2hpbGRyZW4gdG8gZGV0ZXJtaW5lIHRoZSByb3cgaW5k
ZXggZm9yIHRoZSBjZWxsIGluIGl0LgogICAgICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuY29sdW1uQ291bnQoKTsKQEAgLTEw
NCw3ICsxMDQsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4
UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mCiAgICAgaWYgKCFwYXJlbnQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGFyZW50LT5pc1RhYmxlUm93KCkgJiYgIXBhcmVu
dC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJs
ZVJvdz4oKnBhcmVudCkKKyAgICAgICAgJiYgIShpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJl
bnQpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVU
aHJvdWdoQWNjZXNzaWJpbGl0eSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBzaWJsaW5ncyA9IHBhcmVudC0+Y2hpbGRyZW4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmNwcAppbmRleCAwOTJjYTQ0NDYyYjNmOTFlYzY4YTUwYjU5NTdlYjlhZWMy
YzIxZDI1Li5iNzI1YTE3M2QxYTIzMjgyNTkxODFiODkxMDBhZmNjN2Y4YTg3OGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRSb3cuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Um93OjpkaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZGlzY2xvCiAg
ICAgLy8gVGhlIGNvbnRpZ3VvdXMgZGlzY2xvc2VkIHJvd3Mgd2lsbCBiZSB0aGUgcm93cyBpbiB0
aGUgdGFibGUgdGhhdCAKICAgICAvLyBoYXZlIGFuIGFyaWEtbGV2ZWwgb2YgcGx1cyAxIGZyb20g
dGhpcyByb3cuCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0
VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5
VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgfHwgIWRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVUaHJvdWdoQWNj
ZXNzaWJpbGl0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gU2VhcmNoIGZvciBy
b3dzIHRoYXQgbWF0Y2ggdGhlIGNvcnJlY3QgbGV2ZWwuIApAQCAtOTAsNyArOTAsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93
KCkgY29uc3QKICAgICAvLyBUaGUgcm93IHRoYXQgZGlzY2xvc2VzIHRoaXMgb25lIGlzIHRoZSBy
b3cgaW4gdGhlIHRhYmxlCiAgICAgLy8gdGhhdCBpcyBhcmlhLWxldmVsIHN1YnRyYWN0IDEgZnJv
bSB0aGlzIHJvdy4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmpl
Y3RVbmlnbm9yZWQoKTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5pc0FjY2Vzc2liaWxp
dHlUYWJsZSgpKQorICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSB8fCAh
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIC8vIElm
IHRoZSBsZXZlbCBpcyAxIG9yIGxlc3MsIHRoYW4gbm90aGluZyBkaXNjbG9zZXMgdGhpcyByb3cu
CkBAIC0xMjAsOCArMTIwLDExIEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgLy8gb25seSBoYXZlICJyb3ciIGVs
ZW1lbnRzLCBidXQgaWYgbm90LCB3ZSBzdGlsbCBzaG91bGQgaGFuZGxlIGl0IGdyYWNlZnVsbHkg
YnkgZmluZGluZyB0aGUgcmlnaHQgdGFibGUuCiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVu
dE9iamVjdCgpKSB7CiAgICAgICAgIC8vIFRoZSBwYXJlbnQgdGFibGUgZm9yIGFuIEFSSUEgZ3Jp
ZCByb3cgc2hvdWxkIGJlIGFuIEFSSUEgdGFibGUuCi0gICAgICAgIGlmIChwYXJlbnQtPmlzQWNj
ZXNzaWJpbGl0eVRhYmxlKCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50
KS5pc0FyaWFUYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZT4ocGFyZW50KTsKKyAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBh
cmVudCkpIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZSYgdGFibGVQYXJlbnQgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpOworICAgICAgICAgICAgaWYgKHRh
YmxlUGFyZW50LmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSAmJiB0YWJsZVBhcmVu
dC5pc0FyaWFUYWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiAmdGFibGVQYXJlbnQ7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3Bw
CmluZGV4IDA3OTY2Y2Y0ZWExYThiMWIwNjM2MTA5OGM2ZjliN2RhNDZmYzUyMjEuLmYwOWI1M2Zk
ZmM4ZTgyZjJlNzlmZjdjNDE2YjQ3YTMzMGJiMzgxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Lmgi
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbi5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgpAQCAtMTYy
Myw3ICsxNjI0LDEwIEBAIHN0YXRpYyBib29sIHNob3VsZFVzZUFjY2Vzc2libGl0eU9iamVjdElu
bmVyVGV4dChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFjY2VzCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIFNraXAgYmlnIGNvbnRhaW5lciBlbGVtZW50cyBsaWtlIGxpc3RzLCB0
YWJsZXMsIGV0Yy4KLSAgICBpZiAob2JqLT5pc0xpc3QoKSB8fCBvYmotPmlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkgfHwgb2JqLT5pc1RyZWUoKSB8fCBvYmotPmlzQ2FudmFzKCkpCisgICAgaWYgKGlz
PEFjY2Vzc2liaWxpdHlMaXN0Pigqb2JqKQorICAgICAgICB8fCAoaXM8QWNjZXNzaWJpbGl0eVRh
YmxlPigqb2JqKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmopLmlzRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKKyAgICAgICAgfHwgb2JqLT5pc1RyZWUoKQorICAg
ICAgICB8fCBvYmotPmlzQ2FudmFzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMmJhZjQ0YWFiMzczYTRkY2RkOGUzMjAyOTlhNzc0YzQ1
ZmNmMWQ3ZS4uNjNhZjdkZDJjZTEwMTk1ZDNkNDYwMmIyOTg0MzI4MTYzOWM1NDM0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCkBAIC0yMzEsMTEgKzIzMSwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nlc3NpYmlsaXR5TwogICAgICAg
ICAKICAgICBjYXNlIFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5OgogICAgICAgICByZXR1cm4gY3Jp
dGVyaWEtPnN0YXJ0T2JqZWN0Ci0gICAgICAgICAgICAmJiBheE9iamVjdC0+aXNBY2Nlc3NpYmls
aXR5VGFibGUoKQotICAgICAgICAgICAgJiYgYXhPYmplY3QtPnRhYmxlTGV2ZWwoKSA9PSBjcml0
ZXJpYS0+c3RhcnRPYmplY3QtPnRhYmxlTGV2ZWwoKTsKKyAgICAgICAgICAgICYmIGlzPEFjY2Vz
c2liaWxpdHlUYWJsZT4oKmF4T2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+
KCpheE9iamVjdCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpCisgICAgICAgICAg
ICAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpheE9iamVjdCkudGFibGVMZXZlbCgp
ID09IGNyaXRlcmlhLT5zdGFydE9iamVjdC0+dGFibGVMZXZlbCgpOwogICAgICAgICAKICAgICBj
YXNlIFRhYmxlU2VhcmNoS2V5OgotICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzQWNjZXNzaWJp
bGl0eVRhYmxlKCk7CisgICAgICAgIHJldHVybiBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpheE9i
amVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhPYmplY3QpLmlzRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsKICAgICAgICAgCiAgICAgY2FzZSBUZXh0RmllbGRT
ZWFyY2hLZXk6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNUZXh0Q29udHJvbCgpOwpAQCAt
NTAyLDcgKzUwMiw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJheShBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBCiB7CiAgICAgLy8gQSB0YWJs
ZSdzIGNoaWxkcmVuIGluY2x1ZGVzIGVsZW1lbnRzIHdob3NlIG93biBjaGlsZHJlbiBhcmUgYWxz
byB0aGUgdGFibGUncyBjaGlsZHJlbiAoZHVlIHRvIHRoZSB3YXkgdGhlIE1hYyBleHBvc2VzIHRh
YmxlcykuCiAgICAgLy8gVGhlIHJvd3MgZnJvbSB0aGUgdGFibGUgc2hvdWxkIGJlIHF1ZXJpZWQs
IHNpbmNlIHRob3NlIGFyZSBkaXJlY3QgZGVzY2VuZGFudHMgb2YgdGhlIHRhYmxlLCBhbmQgdGhl
eSBjb250YWluIGNvbnRlbnQuCi0gICAgY29uc3QgYXV0byYgc2VhcmNoQ2hpbGRyZW4gPSBvYmpl
Y3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgPyBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+
KCpvYmplY3QpLnJvd3MoKSA6IG9iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBjb25zdCBhdXRvJiBz
ZWFyY2hDaGlsZHJlbiA9IGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iamVjdCkgJiYgZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5KCkgPyBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmplY3QpLnJvd3MoKSA6
IG9iamVjdC0+Y2hpbGRyZW4oKTsKIAogICAgIHNpemVfdCBjaGlsZHJlblNpemUgPSBzZWFyY2hD
aGlsZHJlbi5zaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMDIzNGJiM2RmZDFmMTc3YzVlMGRmZWYyYzM5MDNj
MDdiMTJmMTU1Yi4uODVmZTQ2MzA1YzEyNDRjODIwNGZkY2Q3MjZjYjY2M2U4ZWFkMWY4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKQEAgLTQ3NSw3ICs0NzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTGlzdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGFibGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlUYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRGF0YVRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZVJvdygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGFibGVDb2x1bW4oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggM2UzNWQ1ZTg1
MDQ0ZGFlZWI0NTY2N2EyMzUzMTU1YmYwZmZlN2VkNS4uOWUxNWVkMjJlYThhNGQyOTczNDRhOWU5
MGZmYTBhZGJmNTNiNGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zMTM1LDggKzMxMzUs
MTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhU2VsZWN0ZWRSb3dzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmUKICAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGFsbFJvd3M7CiAgICAgICAgIGFyaWFUcmVlUm93cyhhbGxSb3dzKTsKICAgICAg
ICAgcm93c0l0ZXJhdGlvbihhbGxSb3dzKTsKLSAgICB9IGVsc2UgaWYgKGlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqdGhpcykuc3VwcG9ydHNT
ZWxlY3RlZFJvd3MoKSkKLSAgICAgICAgcm93c0l0ZXJhdGlvbihkb3duY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGU+KCp0aGlzKS5yb3dzKCkpOworICAgIH0gZWxzZSBpZiAoaXM8QWNjZXNzaWJpbGl0
eVRhYmxlPigqdGhpcykpIHsKKyAgICAgICAgYXV0byYgdGhpc1RhYmxlID0gZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqdGhpcyk7CisgICAgICAgIGlmICh0aGlzVGFibGUuaXNFeHBvc2Fi
bGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpICYmIHRoaXNUYWJsZS5zdXBwb3J0c1NlbGVjdGVkUm93
cygpKQorICAgICAgICAgICAgcm93c0l0ZXJhdGlvbih0aGlzVGFibGUucm93cygpKTsKKyAgICB9
CiB9CiAgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXN0Ym94U2Vs
ZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApp
bmRleCAwYjdiZTNhZjVhMmVkNzZlOGZlMmJmNDhiOTY0MmJkZTQyZWMxODQyLi4xZDUzMDBlZmFl
ZTBlZTEyMDkyMjI5ZmE0ZDQ0YmI4YzU5NGY4NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC01MSw3ICs1MSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2li
aWxpdHlUYWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIDogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdChyZW5kZXJlcikKICAgICAsIG1faGVhZGVyQ29udGFpbmVyKG51bGxwdHIpCi0g
ICAgLCBtX2lzQWNjZXNzaWJpbGl0eVRhYmxlKHRydWUpCisgICAgLCBtX2lzRXhwb3NhYmxlVGhy
b3VnaEFjY2Vzc2liaWxpdHkodHJ1ZSkKIHsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCBBY2Nlc3Np
YmlsaXR5VGFibGU6On5BY2Nlc3NpYmlsaXR5VGFibGUoKQogdm9pZCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmluaXQoKQogewogICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluaXQoKTsKLSAg
ICBtX2lzQWNjZXNzaWJpbGl0eVRhYmxlID0gaXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5KCk7CisgICAgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5ID0gY29tcHV0
ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpOwogfQogCiBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUYWJsZT4gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKQEAgLTgyLDEyICs4MiwxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6aGFzQVJJQVJvbGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgY29uc3QKK2Jvb2wgQWNjZXNz
aWJpbGl0eVRhYmxlOjppc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBy
ZXR1cm4gbV9pc0FjY2Vzc2liaWxpdHlUYWJsZTsKKyAgICByZXR1cm4gbV9pc0V4cG9zYWJsZVRo
cm91Z2hBY2Nlc3NpYmlsaXR5OwogfQogCiBIVE1MVGFibGVFbGVtZW50KiBBY2Nlc3NpYmlsaXR5
VGFibGU6OnRhYmxlRWxlbWVudCgpIGNvbnN0CkBAIC0zMDksNyArMzA5LDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAgICAgCi1ib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNUYWJsZUV4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRlSXNU
YWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3QKIHsKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGlzIGEgaGV1cmlzdGljIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEKICAgICAvLyA8
dGFibGU+IHNob3VsZCBiZSBleHBvc2VkIGFzIGFuIEFYVGFibGUuIFRoZSBnb2FsCkBAIC0zNDcs
NyArMzQ3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNsZWFyQ2hpbGRyZW4oKQogCiB2
b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogewotICAgIGlmICghaXNBY2Nl
c3NpYmlsaXR5VGFibGUoKSkgeworICAgIGlmICghaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVu
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MjUsNyArNTI1LDcgQEAgaW50IEFjY2Vz
c2liaWxpdHlUYWJsZTo6dGFibGVMZXZlbCgpIGNvbnN0CiB7CiAgICAgaW50IGxldmVsID0gMDsK
ICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IHN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlPYmplY3QqPihjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KHRoaXMpKTsgb2Jq
OyBvYmogPSBvYmotPnBhcmVudE9iamVjdCgpKSB7Ci0gICAgICAgIGlmIChvYmotPmlzQWNjZXNz
aWJpbGl0eVRhYmxlKCkpCisgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmop
ICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iaikuaXNFeHBvc2FibGVUaHJvdWdo
QWNjZXNzaWJpbGl0eSgpKQogICAgICAgICAgICAgKytsZXZlbDsKICAgICB9CiAgICAgCkBAIC01
NjgsNyArNTY4LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxl
OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwKIAogQWNjZXNzaWJpbGl0eVJv
bGUgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb2xlVmFsdWUoKSBjb25zdAogewotICAgIGlmICghaXNB
Y2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJvbGVW
YWx1ZSgpOwogCiAgICAgcmV0dXJuIFRhYmxlUm9sZTsKQEAgLTU4Miw3ICs1ODIsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dAogICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAotICAgIGlmICghaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzRXhw
b3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiAgICAgICAg
IAogICAgIHJldHVybiBmYWxzZTsKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZTo6dGl0bGVFbGVtZW50VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0
T3JkZXIpCiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKCkgY29uc3QKIHsKLSAg
ICBpZiAoIWlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgaWYgKCFpc0V4cG9zYWJsZVRocm91
Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojp0aXRsZSgpOwogICAgIAogICAgIFN0cmluZyB0aXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCmluZGV4IGIwMjZmNTJlNmRh
M2M2MTRjZDgxMWNmMGI3YTY2MWJjMTljMDAwNmYuLjFlM2Y1MzU1MGNiNTcwN2I0YTgxMzVkZWFk
MGFjNjQ2NjBhNWMyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB1bnNp
Z25lZCBjb2x1bW5Db3VudCgpOwogICAgIHVuc2lnbmVkIHJvd0NvdW50KCk7Ci0gICAgdmlydHVh
bCBpbnQgdGFibGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgaW50IHRhYmxl
TGV2ZWwoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICAKICAgICB2aXJ0dWFsIFN0cmluZyB0
aXRsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIApAQCAtNzUsMTUgKzc1LDE1IEBAIHB1YmxpYzoK
ICAgICAvLyBhbiBvYmplY3QgdGhhdCBjb250YWlucywgYXMgY2hpbGRyZW4sIGFsbCB0aGUgb2Jq
ZWN0cyB0aGF0IGFjdCBhcyBoZWFkZXJzCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVy
Q29udGFpbmVyKCk7CiAKLSAgICAvLyBpc0FjY2Vzc2liaWxpdHlUYWJsZSBpcyB3aGV0aGVyIGl0
IGlzIGV4cG9zZWQgYXMgYW4gQWNjZXNzaWJpbGl0eVRhYmxlIHRvIHRoZSBwbGF0Zm9ybS4KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKKyAgICAvLyBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgaXMgd2hldGhlciBp
dCBpcyBleHBvc2VkIGFzIGFuIEFjY2Vzc2liaWxpdHlUYWJsZSB0byB0aGUgcGxhdGZvcm0uCisg
ICAgYm9vbCBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Q7CiAKIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9yb3dzOwogICAgIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBtX2NvbHVtbnM7CiAKICAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4gbV9oZWFkZXJDb250YWluZXI7Ci0gICAgYm9vbCBtX2lzQWNjZXNzaWJpbGl0
eVRhYmxlOworICAgIGJvb2wgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5OwogCiAg
ICAgYm9vbCBoYXNBUklBUm9sZSgpIGNvbnN0OwogCkBAIC05Myw3ICs5Myw3IEBAIHByb3RlY3Rl
ZDoKICAgICAvLyB0aGluayB0aGlzICJsb29rcyIgbGlrZSBhIGRhdGEtYmFzZWQgdGFibGUgKGlu
c3RlYWQgb2YgYSB0YWJsZSB1c2VkIGZvciBsYXlvdXQpLgogICAgIHZpcnR1YWwgYm9vbCBpc0Rh
dGFUYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzVGFibGVFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb21w
dXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAppbmRleCA2ODM3YmUwMjgyMWIzYTM4NjQ3MWIwMWZl
MzljMzkwODA4Mzg4MzZlLi5mNWQyNzJmY2VjOTJhYTk5YjVmNTlkZDY2NjViZjVkODMyMGYzOTc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmlzVGFibGVDZWxsKCkgY29uc3QKICAgICAvLyBUaGlzIHVzZWQgdG8gY2hlY2sg
aWYgdGhlIHVuaWdub3JlZFBhcmVudCB3YXMgYSByb3csIGJ1dCB0aGF0IGV4cGxvZGVkIHBlcmZv
cm1hbmNlIGlmCiAgICAgLy8gdGhpcyB3YXMgaW4gbmVzdGVkIHRhYmxlcy4gVGhpcyBjaGVjayBz
aG91bGQgYmUganVzdCBhcyBnb29kLgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFRh
YmxlID0gdGhpcy0+cGFyZW50VGFibGUoKTsKLSAgICByZXR1cm4gcGFyZW50VGFibGUgJiYgcGFy
ZW50VGFibGUtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCk7CisgICAgcmV0dXJuIGlzPEFjY2Vzc2li
aWxpdHlUYWJsZT4ocGFyZW50VGFibGUpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
KnBhcmVudFRhYmxlKS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7CiB9CiAgICAg
CiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggYjAyZjllZmQ1YzU5ZDdiM2Yw
ZDQ0YTkzMWQwZDdmMzkzMTJmNWU4ZC4uYjUxZWI3NWMzNTc2OTE2MzM3NGY2ZTY0YWVkZTQzN2M0
OTljZDk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtNzUsMTEgKzc1LDEzIEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KCkKICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9wYXJlbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKCFtX3Bh
cmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlU
YWJsZT4oKm1fcGFyZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBh
dXRvJiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50
KTsKKyAgICBpZiAoIXBhcmVudFRhYmxlLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHko
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCiAgICAgaWYgKHBhcmVudFRhYmxlLmlz
QXJpYVRhYmxlKCkpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjZWxsIDogY2hpbGRyZW4o
KSkgewogICAgICAgICAgICAgaWYgKGNlbGwtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQ29sdW1u
SGVhZGVyUm9sZSkKQEAgLTE3MCwxMCArMTcyLDEzIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uOjphZGRDaGlsZHJlbigpCiAgICAgQVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAogICAg
IAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAoIW1fcGFyZW50IHx8ICFtX3Bh
cmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlU
YWJsZT4obV9wYXJlbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYXJlbnRUYWJs
ZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KTsKKyAgICBpZiAoIXBh
cmVudFRhYmxlLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlUYWJsZSYgcGFyZW50VGFibGUgPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX3BhcmVudCk7CiAgICAgaW50IG51bVJvd3MgPSBwYXJl
bnRUYWJsZS5yb3dDb3VudCgpOwogICAgIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUm93
czsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKaW5kZXggMDgzYmQ5
OGNiODA3N2Q1MzRjMmNmYzFlNDVmMmMxZmY2NDJjMjg4Yi4uM2QwMzA3ZmM4MmRkMWYyMTA5Mjg2
NjkzN2RiNGJlNDQ2MWU4NmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNw
cApAQCAtNzAsMTAgKzcwLDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFp
bmVyOjphZGRDaGlsZHJlbigpCiAgICAgQVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAogICAgIAog
ICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAoIW1fcGFyZW50IHx8ICFtX3BhcmVu
dC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJs
ZT4obV9wYXJlbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYXJlbnRUYWJsZSA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KTsKKyAgICBpZiAoIXBhcmVu
dFRhYmxlLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KS5jb2x1
bW5IZWFkZXJzKG1fY2hpbGRyZW4pOworICAgIHBhcmVudFRhYmxlLmNvbHVtbkhlYWRlcnMobV9j
aGlsZHJlbik7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4p
CiAgICAgICAgIG1faGVhZGVyUmVjdC51bml0ZShjaGlsZC0+ZWxlbWVudFJlY3QoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAKaW5kZXggYjEyNDFkMTQxMzNkOWMxNWJhMjZhNDJkMzVkZjU3MzFmMjY3NDIzZC4uOWZm
ZjlmNDY1OWFkNGY2M2ExYjI1NWZkOGVmNTNmOGMxODA4M2Q0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcApAQCAt
NzMsNyArNzMsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlUm93Ojpp
c1RhYmxlUm93KCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJsZSA9IHBh
cmVudFRhYmxlKCk7Ci0gICAgaWYgKCF0YWJsZSB8fCAhdGFibGUtPmlzQWNjZXNzaWJpbGl0eVRh
YmxlKCkpCisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGU+KHRhYmxlKSB8fCAhZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqdGFibGUpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHJldHVybiB0cnVlOwpA
QCAtMTA3LDcgKzEwNyw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eVRhYmxl
Um93OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSB0YWJsZSBv
YmplY3QsIGJ1dCBub3QgYW4gYWNjZXNzaWJpbGl0eSB0YWJsZSwgd2Ugc2hvdWxkIHN0b3AgYmVj
YXVzZSB3ZSBkb24ndCB3YW50IHRvCiAgICAgICAgIC8vIGNob29zZSBhbm90aGVyIGFuY2VzdG9y
IHRhYmxlIGFzIHRoaXMgcm93J3MgdGFibGUuCiAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5
VGFibGU+KCpwYXJlbnQpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZT4oKnBhcmVudCkuaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSA/IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZT4ocGFyZW50KSA6IG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nl
c3NpYmlsaXR5KCkgPyBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHBhcmVudCkgOiBudWxs
cHRyOwogICAgIH0KICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFw
cGVyQXRrLmNwcAppbmRleCAwODQ2Mjg5ZTQ5MWQyNGIxODdjMzI4YjQyMDM1NTI4ZDZjZDM0ODZm
Li5kMzJlOTU0ZjA3NDY3YTZmODMzZDllN2U2ODc2Yzc3ZmJlMmUxMDQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVdyYXBwZXJBdGsuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQVhPYmplY3RD
YWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24uaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCkBAIC0zNTUsNyArMzU2LDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJs
ZUdldE5DaGlsZHJlbihBdGtPYmplY3QqIG9iamVjdCkKIAogICAgIC8vIFRhYmxlcyBzaG91bGQg
YmUgdHJlYXRlZCBpbiBhIGRpZmZlcmVudCB3YXkgYmVjYXVzZSByb3dzIHNob3VsZAogICAgIC8v
IGJlIGJ5cGFzc2VkIHdoZW4gZXhwb3NpbmcgdGhlIGFjY2Vzc2libGUgaGllcmFyY2h5LgotICAg
IGlmIChjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmIChpczxBY2Nl
c3NpYmlsaXR5VGFibGU+KCpjb3JlT2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFi
bGU+KCpjb3JlT2JqZWN0KS5pc0V4cG9zZWRUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKQogICAgICAg
ICByZXR1cm4gZ2V0TkNoaWxkcmVuRm9yVGFibGUoY29yZU9iamVjdCk7CiAKICAgICByZXR1cm4g
Y29yZU9iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7CkBAIC0zOTgsNyArMzk5LDcgQEAgc3RhdGlj
IEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZVJlZkNoaWxkKEF0a09iamVjdCogb2JqZWN0LCBn
aW50IGluZGV4KQogCiAgICAgLy8gVGFibGVzIGFyZSBzcGVjaWFsIGNhc2VzIGJlY2F1c2Ugcm93
cyBzaG91bGQgYmUgYnlwYXNzZWQsIGJ1dAogICAgIC8vIHN0aWxsIHRha2luZyB0aGVpciBjZWxs
cyBpbnRvIGFjY291bnQuCi0gICAgaWYgKGNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxl
KCkpCisgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKmNvcmVPYmplY3QpICYmIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKmNvcmVPYmplY3QpLmlzRXhwb3NlZFRocm91Z2hBY2Nl
c3NpYmlsaXR5KCkpCiAgICAgICAgIGNvcmVDaGlsZCA9IGdldENoaWxkRm9yVGFibGUoY29yZU9i
amVjdCwgaW5kZXgpOwogICAgIGVsc2UgewogICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuID0gY29yZU9iamVjdC0+
Y2hpbGRyZW4oKTsKQEAgLTUyMCw3ICs1MjEsNyBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3
ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyhBdGtPYmplY3QqIG9iamVjdCkKIAogICAgIC8v
IFNldCB0aGUgJ2xheW91dC1ndWVzcycgYXR0cmlidXRlIHRvIGhlbHAgQXNzaXN0aXZlCiAgICAg
Ly8gVGVjaG5vbG9naWVzIGtub3cgd2hlbiBhbiBleHBvc2VkIHRhYmxlIGlzIG5vdCBkYXRhIHRh
YmxlLgotICAgIGlmIChjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpICYmICFjb3Jl
T2JqZWN0LT5pc0RhdGFUYWJsZSgpKQorICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpj
b3JlT2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpjb3JlT2JqZWN0KS5p
c0V4cG9zZWRUaHJvdWdoQWNjZXNzaWJpbGl0eSgpICYmICFjb3JlT2JqZWN0LT5pc0RhdGFUYWJs
ZSgpKQogICAgICAgICBhdHRyaWJ1dGVTZXQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChhdHRyaWJ1
dGVTZXQsICJsYXlvdXQtZ3Vlc3MiLCAidHJ1ZSIpOwogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVy
ID0gY29yZU9iamVjdC0+cGxhY2Vob2xkZXJWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggZGFjMWI1Y2U1
YWViMDExZDIyNDYxYzk3YzE0ZDg0YjViMzliMDhlNS4uMmM3NDQzMGE5MzE0ZTUzZDIyY2YxZGZi
MmFhM2ZkYWIxYzVmNjM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgSEFWRShB
Q0NFU1NJQklMSVRZKQogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW1wb3J0
ICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgogI2ltcG9y
dCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKICNpbXBvcnQgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpw
b3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlm
aWMKICAgICAgICAgICAgIG1hY05vdGlmaWNhdGlvbiA9IEAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZCI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFNlbGVjdGVkQ2hpbGRyZW5D
aGFuZ2VkOgotICAgICAgICAgICAgaWYgKG9iai0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAg
ICAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmopICYmIGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4oKm9iaikuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgp
KQogICAgICAgICAgICAgICAgIG1hY05vdGlmaWNhdGlvbiA9IE5TQWNjZXNzaWJpbGl0eVNlbGVj
dGVkUm93c0NoYW5nZWROb3RpZmljYXRpb247CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgbWFjTm90aWZpY2F0aW9uID0gTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkNo
YW5nZWROb3RpZmljYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CmluZGV4IDNmOWRiZDZlMDBkYzk0ZTE1NDc1MjcyMTIwZmIyNjM3YmFmY2M2NzkuLjMyMTBiN2My
OWRiMzc2NzYyYTZlNDA2ZjM5MWYwMTUyZjc1ZDA5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMTk5LDcgKzExOTksNyBAQCAtIChOU0FycmF5KilhZGRp
dGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzCiAgICAgaWYgKG1fb2JqZWN0LT5zdXBw
b3J0c0FSSUFEcm9wcGluZygpKQogICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdOwogICAgIAotICAgIGlmIChtX29iamVjdC0+
aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpt
X29iamVjdCkuc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSkKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0
eVRhYmxlPigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2Jq
ZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgJiYgZG93bmNhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlPigqbV9vYmplY3QpLnN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkpCiAgICAgICAg
IFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1
dGVdOwogICAgIAogICAgIGlmIChtX29iamVjdC0+c3VwcG9ydHNBUklBTGl2ZVJlZ2lvbigpKSB7
CkBAIC0xNTkwLDcgKzE1OTAsNyBAQCAtIChOU0FycmF5KilhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
TmFtZXMKICAgICBlbHNlIGlmIChtX29iamVjdC0+aXNBbmNob3IoKSB8fCBtX29iamVjdC0+aXNJ
bWFnZSgpIHx8IG1fb2JqZWN0LT5pc0xpbmsoKSkKICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9
IGFuY2hvckF0dHJzOwogICAgIAotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxp
dHlUYWJsZSgpKQorICAgIGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0
KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkuaXNFeHBvc2FibGVU
aHJvdWdoQWNjZXNzaWJpbGl0eSgpKQogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFibGVB
dHRyczsKICAgICBlbHNlIGlmIChtX29iamVjdC0+aXNUYWJsZUNvbHVtbigpKQogICAgICAgICBv
YmplY3RBdHRyaWJ1dGVzID0gdGFibGVDb2xBdHRyczsKQEAgLTI1NTQsNyArMjU1NCw3IEBAIC0g
KGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcqKWF0dHJpYnV0ZU5hbWUK
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkpIHsKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYm
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91
Z2hBY2Nlc3NpYmlsaXR5KCkpIHsKICAgICAgICAgYXV0byYgdGFibGUgPSBkb3duY2FzdDxBY2Nl
c3NpYmlsaXR5VGFibGU+KCptX29iamVjdCk7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0pCiAgICAgICAgICAg
ICByZXR1cm4gY29udmVydFRvTlNBcnJheSh0YWJsZS5yb3dzKCkpOwpAQCAtMzEyOCw3ICszMTI4
LDcgQEAgLSAoTlNBcnJheSogKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFt
ZXMKICAgICBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIHRl
eHRQYXJhbUF0dHJzOwogICAgIAotICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKSkKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYmIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nl
c3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiB0YWJsZVBhcmFtQXR0cnM7CiAgICAgCiAgICAg
aWYgKG1fb2JqZWN0LT5pc01lbnVSZWxhdGVkKCkpCkBAIC0zMzE0LDcgKzMzMTQsNyBAQCAtICh2
b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRlOihOU1N0cmlu
ZyopYXR0cmlidXRlTmFtZQogICAgIGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKSB7CiAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZFJv
d3M7CiAgICAgICAgIGNvbnZlcnRUb1ZlY3RvcihhcnJheSwgc2VsZWN0ZWRSb3dzKTsKLSAgICAg
ICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSB8fCBtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKSkKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSB8fCAoaXM8QWNjZXNzaWJpbGl0
eVRhYmxlPigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2Jq
ZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpKQogICAgICAgICAgICAgbV9v
YmplY3QtPnNldFNlbGVjdGVkUm93cyhzZWxlY3RlZFJvd3MpOwogICAgIH0gZWxzZSBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1
dGVdKQogICAgICAgICBtX29iamVjdC0+c2V0QVJJQUdyYWJiZWQoW251bWJlciBib29sVmFsdWVd
KTsKQEAgLTM3MDMsNyArMzcwMyw3IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTooTlNTdHJpbmcqKWF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXRlCiAgICAgICAg
IHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnZpc2libGVQb3NSYW5n
ZS5lbmRdOwogICAgIH0KICAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRh
YmxlKCkpIHsKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYmIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkpIHsKICAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRSb3dQYXJhbWV0ZXJpemVkQXR0cmlidXRl
XSkgewogICAgICAgICAgICAgaWYgKGFycmF5ID09IG5pbCB8fCBbYXJyYXkgY291bnRdICE9IDIp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240177</attachid>
            <date>2014-10-20 19:28:06 -0700</date>
            <delta_ts>2014-10-22 13:37:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137899-20141020192811.patch</filename>
            <type>text/plain</type>
            <size>32754</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQwNWMyMTc0ODMwYTll
MzhlNjUyYzYyODU0MGEwMDkxZGNiMDE2MS4uNThlYzgzMmVhZmViMTA2Yjg5M2MxNmJlZjI0MjQx
NmUzYjAzMjA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE0LTEwLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgY29uZnVzaW9uIGJl
dHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIC8gaXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZv
aWQgY29uZnVzaW9uIGJldHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIGFuZAor
ICAgICAgICBpc0FjY2Vzc2liaWxpdHlUYWJsZSgpLiBpc1RhYmxlKCkgaXMgZXF1aXZhbGVudCB0
bworICAgICAgICBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCksIHdoaWxlIGlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkgaXMgYW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlIHRoYXQgaXMgZXhwb3Nl
ZCBhcyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgdG8gdGhlCisgICAgICAgIHBsYXRmb3JtLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaXMgcmVuYW1pbmcgaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSB0bwor
ICAgICAgICBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCksIG1ha2VzIGl0IG5vbi12
aXJ0dWFsIGFuZCBkZWZpbmVzIGl0CisgICAgICAgIG9uIEFjY2Vzc2liaWxpdHlUYWJsZSBvbmx5
LCBmb3IgY2xhcml0eS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVuYW1lcyBpc1RhYmxl
RXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSB0bworICAgICAgICBjb21wdXRlSWlzVGFi
bGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGFzIGl0IGlzIGNhbGxlZCBvbmx5Cisg
ICAgICAgIG9uY2UgdG8gaW5pdGlhbGl6ZSB0aGUgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5IGRhdGEgbWVtYmVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJl
bik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50VGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5J
bmRleFJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRp
c2Nsb3NlZFJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
OjpkaXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZUFjY2Vzc2libGl0
eU9iamVjdElubmVyVGV4dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRDaGlsZHJlblRvQXJyYXkpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNB
Y2Nlc3NpYmlsaXR5VGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphcmlhU2VsZWN0ZWRSb3dzKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VGFibGU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Ojppc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVMZXZlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnJvbGVWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0FjY2Vzc2liaWxpdHlUYWJsZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUNlbGwpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aXNUYWJsZVJvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6CisgICAgICAgICh3ZWJr
aXRBY2Nlc3NpYmxlR2V0TkNoaWxkcmVuKToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVSZWZD
aGlsZCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nlc3Np
YmlsaXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6Zm9yQXR0cmlidXRlOl0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgorCiAyMDE0LTEwLTIwICBCZXRoIERha2luICA8YmRh
a2luQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZSBidWlsZCBmaXguCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5j
cHAKaW5kZXggNjM2Y2UzNWFmZTRhNWRhNDA2MTMzZDVkN2RlNjQyMDg0YzM3YWEwZC4uOWFkYjgx
ZmY4MDQ0NDZiOWY3ZmRmNjExMzQwNGNmOGFjM2YxYWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApAQCAtMTAw
LDcgKzEwMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbigpCiB7
CiAgICAgQVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAogICAgIAotICAgIGlmICghaXNBY2Nlc3Np
YmlsaXR5VGFibGUoKSkgeworICAgIGlmICghaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0
eSgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaAppbmRleCBkOGRjNDY3OGI1YTBjOGZiNTRh
MjEzMzNiYjJkODhiMTY5NTU4NDE1Li4wM2ZlNDAwZGM4NDEzNmU1OGM5NzdkYzBkYzcyOGIxYzE5
YjNhODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBBUklB
IHRyZWVncmlkcyBhbmQgZ3JpZHMgc3VwcG9ydCBzZWxlY3RlZCByb3dzLgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1NlbGVjdGVkUm93cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgY29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQo
QWNjZXNzaWJpbGl0eU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBl
bmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CiAgICAgYm9vbCBhZGRUYWJsZUNlbGxD
aGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4m
IGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3Bw
CmluZGV4IGQxZGM5Mzk3MGQ1OGM5ZDBkYjM2NjU4MjNlZGFmZjlkNjljMWQ2YWMuLjJmN2NhNDNj
MDgyMWU0OTUwOWYxN2Q1OWRlZjgzODU5YTEzOGU5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApA
QCAtNTUsMTQgKzU1LDE0IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIGlmICghcGFyZW50KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBpZiAocGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJs
ZSgpKQorICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpICYmIGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSgpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJl
bnQpOwogCiAgICAgLy8gSXQgY291bGQgaGFwcGVuIHRoYXQgd2UgaGFkbid0IHJlYWNoZWQgdGhl
IHBhcmVudCB0YWJsZSB5ZXQgKGluCiAgICAgLy8gY2FzZSBvYmplY3RzIGZvciByb3dzIHdlcmUg
bm90IGlnbm9yaW5nIGFjY2Vzc2liaWxpdHkpIHNvIGZvcgogICAgIC8vIHRoYXQgcmVhc29uIHdl
IG5lZWQgdG8gcnVuIHBhcmVudE9iamVjdFVuaWdub3JlZCBvbmNlIGFnYWluLgogICAgIHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJlbnQgfHwg
IXBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxp
dHlUYWJsZT4ocGFyZW50KSB8fCAhZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50
KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAogICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHBhcmVu
dCk7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93
SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93CiAgICAgaWYgKGlz
PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkpIHsKICAgICAgICAgLy8gV2UgYWxyZWFk
eSBnb3QgYSB0YWJsZSByb3csIHVzZSBpdHMgQVBJLgogICAgICAgICByb3dSYW5nZS5maXJzdCA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkucm93SW5kZXgoKTsKLSAg
ICB9IGVsc2UgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkgeworICAgIH0gZWxz
ZSBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSAmJiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkg
ewogICAgICAgICAvLyBXZSByZWFjaGVkIHRoZSBwYXJlbnQgdGFibGUsIHNvIHdlIG5lZWQgdG8g
aW5zcGVjdCBpdHMKICAgICAgICAgLy8gY2hpbGRyZW4gdG8gZGV0ZXJtaW5lIHRoZSByb3cgaW5k
ZXggZm9yIHRoZSBjZWxsIGluIGl0LgogICAgICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuY29sdW1uQ291bnQoKTsKQEAgLTEw
NCw3ICsxMDQsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4
UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mCiAgICAgaWYgKCFwYXJlbnQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGFyZW50LT5pc1RhYmxlUm93KCkgJiYgIXBhcmVu
dC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJs
ZVJvdz4oKnBhcmVudCkKKyAgICAgICAgJiYgIShpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJl
bnQpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVU
aHJvdWdoQWNjZXNzaWJpbGl0eSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBzaWJsaW5ncyA9IHBhcmVudC0+Y2hpbGRyZW4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmNwcAppbmRleCAwOTJjYTQ0NDYyYjNmOTFlYzY4YTUwYjU5NTdlYjlhZWMy
YzIxZDI1Li5iNzI1YTE3M2QxYTIzMjgyNTkxODFiODkxMDBhZmNjN2Y4YTg3OGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRSb3cuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Um93OjpkaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZGlzY2xvCiAg
ICAgLy8gVGhlIGNvbnRpZ3VvdXMgZGlzY2xvc2VkIHJvd3Mgd2lsbCBiZSB0aGUgcm93cyBpbiB0
aGUgdGFibGUgdGhhdCAKICAgICAvLyBoYXZlIGFuIGFyaWEtbGV2ZWwgb2YgcGx1cyAxIGZyb20g
dGhpcyByb3cuCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0
VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5
VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgfHwgIWRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVUaHJvdWdoQWNj
ZXNzaWJpbGl0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gU2VhcmNoIGZvciBy
b3dzIHRoYXQgbWF0Y2ggdGhlIGNvcnJlY3QgbGV2ZWwuIApAQCAtOTAsNyArOTAsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93
KCkgY29uc3QKICAgICAvLyBUaGUgcm93IHRoYXQgZGlzY2xvc2VzIHRoaXMgb25lIGlzIHRoZSBy
b3cgaW4gdGhlIHRhYmxlCiAgICAgLy8gdGhhdCBpcyBhcmlhLWxldmVsIHN1YnRyYWN0IDEgZnJv
bSB0aGlzIHJvdy4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmpl
Y3RVbmlnbm9yZWQoKTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5pc0FjY2Vzc2liaWxp
dHlUYWJsZSgpKQorICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSB8fCAh
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIC8vIElm
IHRoZSBsZXZlbCBpcyAxIG9yIGxlc3MsIHRoYW4gbm90aGluZyBkaXNjbG9zZXMgdGhpcyByb3cu
CkBAIC0xMjAsOCArMTIwLDExIEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgLy8gb25seSBoYXZlICJyb3ciIGVs
ZW1lbnRzLCBidXQgaWYgbm90LCB3ZSBzdGlsbCBzaG91bGQgaGFuZGxlIGl0IGdyYWNlZnVsbHkg
YnkgZmluZGluZyB0aGUgcmlnaHQgdGFibGUuCiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVu
dE9iamVjdCgpKSB7CiAgICAgICAgIC8vIFRoZSBwYXJlbnQgdGFibGUgZm9yIGFuIEFSSUEgZ3Jp
ZCByb3cgc2hvdWxkIGJlIGFuIEFSSUEgdGFibGUuCi0gICAgICAgIGlmIChwYXJlbnQtPmlzQWNj
ZXNzaWJpbGl0eVRhYmxlKCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50
KS5pc0FyaWFUYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZT4ocGFyZW50KTsKKyAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBh
cmVudCkpIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZSYgdGFibGVQYXJlbnQgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpOworICAgICAgICAgICAgaWYgKHRh
YmxlUGFyZW50LmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSAmJiB0YWJsZVBhcmVu
dC5pc0FyaWFUYWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiAmdGFibGVQYXJlbnQ7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3Bw
CmluZGV4IDA3OTY2Y2Y0ZWExYThiMWIwNjM2MTA5OGM2ZjliN2RhNDZmYzUyMjEuLmYwOWI1M2Zk
ZmM4ZTgyZjJlNzlmZjdjNDE2YjQ3YTMzMGJiMzgxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Lmgi
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbi5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgpAQCAtMTYy
Myw3ICsxNjI0LDEwIEBAIHN0YXRpYyBib29sIHNob3VsZFVzZUFjY2Vzc2libGl0eU9iamVjdElu
bmVyVGV4dChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFjY2VzCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIFNraXAgYmlnIGNvbnRhaW5lciBlbGVtZW50cyBsaWtlIGxpc3RzLCB0
YWJsZXMsIGV0Yy4KLSAgICBpZiAob2JqLT5pc0xpc3QoKSB8fCBvYmotPmlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkgfHwgb2JqLT5pc1RyZWUoKSB8fCBvYmotPmlzQ2FudmFzKCkpCisgICAgaWYgKGlz
PEFjY2Vzc2liaWxpdHlMaXN0Pigqb2JqKQorICAgICAgICB8fCAoaXM8QWNjZXNzaWJpbGl0eVRh
YmxlPigqb2JqKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmopLmlzRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKKyAgICAgICAgfHwgb2JqLT5pc1RyZWUoKQorICAg
ICAgICB8fCBvYmotPmlzQ2FudmFzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMmJhZjQ0YWFiMzczYTRkY2RkOGUzMjAyOTlhNzc0YzQ1
ZmNmMWQ3ZS4uNjNhZjdkZDJjZTEwMTk1ZDNkNDYwMmIyOTg0MzI4MTYzOWM1NDM0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCkBAIC0yMzEsMTEgKzIzMSwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nlc3NpYmlsaXR5TwogICAgICAg
ICAKICAgICBjYXNlIFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5OgogICAgICAgICByZXR1cm4gY3Jp
dGVyaWEtPnN0YXJ0T2JqZWN0Ci0gICAgICAgICAgICAmJiBheE9iamVjdC0+aXNBY2Nlc3NpYmls
aXR5VGFibGUoKQotICAgICAgICAgICAgJiYgYXhPYmplY3QtPnRhYmxlTGV2ZWwoKSA9PSBjcml0
ZXJpYS0+c3RhcnRPYmplY3QtPnRhYmxlTGV2ZWwoKTsKKyAgICAgICAgICAgICYmIGlzPEFjY2Vz
c2liaWxpdHlUYWJsZT4oKmF4T2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+
KCpheE9iamVjdCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpCisgICAgICAgICAg
ICAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpheE9iamVjdCkudGFibGVMZXZlbCgp
ID09IGNyaXRlcmlhLT5zdGFydE9iamVjdC0+dGFibGVMZXZlbCgpOwogICAgICAgICAKICAgICBj
YXNlIFRhYmxlU2VhcmNoS2V5OgotICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzQWNjZXNzaWJp
bGl0eVRhYmxlKCk7CisgICAgICAgIHJldHVybiBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpheE9i
amVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhPYmplY3QpLmlzRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsKICAgICAgICAgCiAgICAgY2FzZSBUZXh0RmllbGRT
ZWFyY2hLZXk6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNUZXh0Q29udHJvbCgpOwpAQCAt
NTAyLDcgKzUwMiw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJheShBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBCiB7CiAgICAgLy8gQSB0YWJs
ZSdzIGNoaWxkcmVuIGluY2x1ZGVzIGVsZW1lbnRzIHdob3NlIG93biBjaGlsZHJlbiBhcmUgYWxz
byB0aGUgdGFibGUncyBjaGlsZHJlbiAoZHVlIHRvIHRoZSB3YXkgdGhlIE1hYyBleHBvc2VzIHRh
YmxlcykuCiAgICAgLy8gVGhlIHJvd3MgZnJvbSB0aGUgdGFibGUgc2hvdWxkIGJlIHF1ZXJpZWQs
IHNpbmNlIHRob3NlIGFyZSBkaXJlY3QgZGVzY2VuZGFudHMgb2YgdGhlIHRhYmxlLCBhbmQgdGhl
eSBjb250YWluIGNvbnRlbnQuCi0gICAgY29uc3QgYXV0byYgc2VhcmNoQ2hpbGRyZW4gPSBvYmpl
Y3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgPyBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+
KCpvYmplY3QpLnJvd3MoKSA6IG9iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBjb25zdCBhdXRvJiBz
ZWFyY2hDaGlsZHJlbiA9IGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iamVjdCkgJiYgZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5KCkgPyBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmplY3QpLnJvd3MoKSA6
IG9iamVjdC0+Y2hpbGRyZW4oKTsKIAogICAgIHNpemVfdCBjaGlsZHJlblNpemUgPSBzZWFyY2hD
aGlsZHJlbi5zaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMDIzNGJiM2RmZDFmMTc3YzVlMGRmZWYyYzM5MDNj
MDdiMTJmMTU1Yi4uODVmZTQ2MzA1YzEyNDRjODIwNGZkY2Q3MjZjYjY2M2U4ZWFkMWY4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKQEAgLTQ3NSw3ICs0NzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTGlzdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGFibGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlUYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRGF0YVRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZVJvdygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGFibGVDb2x1bW4oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggM2UzNWQ1ZTg1
MDQ0ZGFlZWI0NTY2N2EyMzUzMTU1YmYwZmZlN2VkNS4uOWUxNWVkMjJlYThhNGQyOTczNDRhOWU5
MGZmYTBhZGJmNTNiNGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zMTM1LDggKzMxMzUs
MTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhU2VsZWN0ZWRSb3dzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmUKICAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGFsbFJvd3M7CiAgICAgICAgIGFyaWFUcmVlUm93cyhhbGxSb3dzKTsKICAgICAg
ICAgcm93c0l0ZXJhdGlvbihhbGxSb3dzKTsKLSAgICB9IGVsc2UgaWYgKGlzQWNjZXNzaWJpbGl0
eVRhYmxlKCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqdGhpcykuc3VwcG9ydHNT
ZWxlY3RlZFJvd3MoKSkKLSAgICAgICAgcm93c0l0ZXJhdGlvbihkb3duY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGU+KCp0aGlzKS5yb3dzKCkpOworICAgIH0gZWxzZSBpZiAoaXM8QWNjZXNzaWJpbGl0
eVRhYmxlPigqdGhpcykpIHsKKyAgICAgICAgYXV0byYgdGhpc1RhYmxlID0gZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqdGhpcyk7CisgICAgICAgIGlmICh0aGlzVGFibGUuaXNFeHBvc2Fi
bGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpICYmIHRoaXNUYWJsZS5zdXBwb3J0c1NlbGVjdGVkUm93
cygpKQorICAgICAgICAgICAgcm93c0l0ZXJhdGlvbih0aGlzVGFibGUucm93cygpKTsKKyAgICB9
CiB9CiAgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXN0Ym94U2Vs
ZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApp
bmRleCAwYjdiZTNhZjVhMmVkNzZlOGZlMmJmNDhiOTY0MmJkZTQyZWMxODQyLi4xZDUzMDBlZmFl
ZTBlZTEyMDkyMjI5ZmE0ZDQ0YmI4YzU5NGY4NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC01MSw3ICs1MSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2li
aWxpdHlUYWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIDogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdChyZW5kZXJlcikKICAgICAsIG1faGVhZGVyQ29udGFpbmVyKG51bGxwdHIpCi0g
ICAgLCBtX2lzQWNjZXNzaWJpbGl0eVRhYmxlKHRydWUpCisgICAgLCBtX2lzRXhwb3NhYmxlVGhy
b3VnaEFjY2Vzc2liaWxpdHkodHJ1ZSkKIHsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCBBY2Nlc3Np
YmlsaXR5VGFibGU6On5BY2Nlc3NpYmlsaXR5VGFibGUoKQogdm9pZCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmluaXQoKQogewogICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluaXQoKTsKLSAg
ICBtX2lzQWNjZXNzaWJpbGl0eVRhYmxlID0gaXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5KCk7CisgICAgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5ID0gY29tcHV0
ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpOwogfQogCiBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUYWJsZT4gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKQEAgLTgyLDEyICs4MiwxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6aGFzQVJJQVJvbGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgY29uc3QKK2Jvb2wgQWNjZXNz
aWJpbGl0eVRhYmxlOjppc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBy
ZXR1cm4gbV9pc0FjY2Vzc2liaWxpdHlUYWJsZTsKKyAgICByZXR1cm4gbV9pc0V4cG9zYWJsZVRo
cm91Z2hBY2Nlc3NpYmlsaXR5OwogfQogCiBIVE1MVGFibGVFbGVtZW50KiBBY2Nlc3NpYmlsaXR5
VGFibGU6OnRhYmxlRWxlbWVudCgpIGNvbnN0CkBAIC0zMDksNyArMzA5LDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAgICAgCi1ib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNUYWJsZUV4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRlSXNU
YWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3QKIHsKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGlzIGEgaGV1cmlzdGljIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEKICAgICAvLyA8
dGFibGU+IHNob3VsZCBiZSBleHBvc2VkIGFzIGFuIEFYVGFibGUuIFRoZSBnb2FsCkBAIC0zNDcs
NyArMzQ3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNsZWFyQ2hpbGRyZW4oKQogCiB2
b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogewotICAgIGlmICghaXNBY2Nl
c3NpYmlsaXR5VGFibGUoKSkgeworICAgIGlmICghaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVu
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MjUsNyArNTI1LDcgQEAgaW50IEFjY2Vz
c2liaWxpdHlUYWJsZTo6dGFibGVMZXZlbCgpIGNvbnN0CiB7CiAgICAgaW50IGxldmVsID0gMDsK
ICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IHN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlPYmplY3QqPihjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KHRoaXMpKTsgb2Jq
OyBvYmogPSBvYmotPnBhcmVudE9iamVjdCgpKSB7Ci0gICAgICAgIGlmIChvYmotPmlzQWNjZXNz
aWJpbGl0eVRhYmxlKCkpCisgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmop
ICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iaikuaXNFeHBvc2FibGVUaHJvdWdo
QWNjZXNzaWJpbGl0eSgpKQogICAgICAgICAgICAgKytsZXZlbDsKICAgICB9CiAgICAgCkBAIC01
NjgsNyArNTY4LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxl
OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwKIAogQWNjZXNzaWJpbGl0eVJv
bGUgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb2xlVmFsdWUoKSBjb25zdAogewotICAgIGlmICghaXNB
Y2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJvbGVW
YWx1ZSgpOwogCiAgICAgcmV0dXJuIFRhYmxlUm9sZTsKQEAgLTU4Miw3ICs1ODIsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dAogICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAotICAgIGlmICghaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzRXhw
b3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiAgICAgICAg
IAogICAgIHJldHVybiBmYWxzZTsKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZTo6dGl0bGVFbGVtZW50VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0
T3JkZXIpCiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKCkgY29uc3QKIHsKLSAg
ICBpZiAoIWlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgaWYgKCFpc0V4cG9zYWJsZVRocm91
Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojp0aXRsZSgpOwogICAgIAogICAgIFN0cmluZyB0aXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCmluZGV4IGIwMjZmNTJlNmRh
M2M2MTRjZDgxMWNmMGI3YTY2MWJjMTljMDAwNmYuLjFlM2Y1MzU1MGNiNTcwN2I0YTgxMzVkZWFk
MGFjNjQ2NjBhNWMyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB1bnNp
Z25lZCBjb2x1bW5Db3VudCgpOwogICAgIHVuc2lnbmVkIHJvd0NvdW50KCk7Ci0gICAgdmlydHVh
bCBpbnQgdGFibGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgaW50IHRhYmxl
TGV2ZWwoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICAKICAgICB2aXJ0dWFsIFN0cmluZyB0
aXRsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIApAQCAtNzUsMTUgKzc1LDE1IEBAIHB1YmxpYzoK
ICAgICAvLyBhbiBvYmplY3QgdGhhdCBjb250YWlucywgYXMgY2hpbGRyZW4sIGFsbCB0aGUgb2Jq
ZWN0cyB0aGF0IGFjdCBhcyBoZWFkZXJzCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVy
Q29udGFpbmVyKCk7CiAKLSAgICAvLyBpc0FjY2Vzc2liaWxpdHlUYWJsZSBpcyB3aGV0aGVyIGl0
IGlzIGV4cG9zZWQgYXMgYW4gQWNjZXNzaWJpbGl0eVRhYmxlIHRvIHRoZSBwbGF0Zm9ybS4KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKKyAgICAvLyBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgaXMgd2hldGhlciBp
dCBpcyBleHBvc2VkIGFzIGFuIEFjY2Vzc2liaWxpdHlUYWJsZSB0byB0aGUgcGxhdGZvcm0uCisg
ICAgYm9vbCBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Q7CiAKIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9yb3dzOwogICAgIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBtX2NvbHVtbnM7CiAKICAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4gbV9oZWFkZXJDb250YWluZXI7Ci0gICAgYm9vbCBtX2lzQWNjZXNzaWJpbGl0
eVRhYmxlOworICAgIGJvb2wgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5OwogCiAg
ICAgYm9vbCBoYXNBUklBUm9sZSgpIGNvbnN0OwogCkBAIC05Myw3ICs5Myw3IEBAIHByb3RlY3Rl
ZDoKICAgICAvLyB0aGluayB0aGlzICJsb29rcyIgbGlrZSBhIGRhdGEtYmFzZWQgdGFibGUgKGlu
c3RlYWQgb2YgYSB0YWJsZSB1c2VkIGZvciBsYXlvdXQpLgogICAgIHZpcnR1YWwgYm9vbCBpc0Rh
dGFUYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzVGFibGVFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb21w
dXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAppbmRleCA2ODM3YmUwMjgyMWIzYTM4NjQ3MWIwMWZl
MzljMzkwODA4Mzg4MzZlLi5mNWQyNzJmY2VjOTJhYTk5YjVmNTlkZDY2NjViZjVkODMyMGYzOTc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmlzVGFibGVDZWxsKCkgY29uc3QKICAgICAvLyBUaGlzIHVzZWQgdG8gY2hlY2sg
aWYgdGhlIHVuaWdub3JlZFBhcmVudCB3YXMgYSByb3csIGJ1dCB0aGF0IGV4cGxvZGVkIHBlcmZv
cm1hbmNlIGlmCiAgICAgLy8gdGhpcyB3YXMgaW4gbmVzdGVkIHRhYmxlcy4gVGhpcyBjaGVjayBz
aG91bGQgYmUganVzdCBhcyBnb29kLgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFRh
YmxlID0gdGhpcy0+cGFyZW50VGFibGUoKTsKLSAgICByZXR1cm4gcGFyZW50VGFibGUgJiYgcGFy
ZW50VGFibGUtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCk7CisgICAgcmV0dXJuIGlzPEFjY2Vzc2li
aWxpdHlUYWJsZT4ocGFyZW50VGFibGUpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
KnBhcmVudFRhYmxlKS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7CiB9CiAgICAg
CiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggYjAyZjllZmQ1YzU5ZDdiM2Yw
ZDQ0YTkzMWQwZDdmMzkzMTJmNWU4ZC4uYjUxZWI3NWMzNTc2OTE2MzM3NGY2ZTY0YWVkZTQzN2M0
OTljZDk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtNzUsMTEgKzc1LDEzIEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KCkKICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9wYXJlbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKCFtX3Bh
cmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlU
YWJsZT4oKm1fcGFyZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBh
dXRvJiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50
KTsKKyAgICBpZiAoIXBhcmVudFRhYmxlLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHko
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCiAgICAgaWYgKHBhcmVudFRhYmxlLmlz
QXJpYVRhYmxlKCkpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjZWxsIDogY2hpbGRyZW4o
KSkgewogICAgICAgICAgICAgaWYgKGNlbGwtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQ29sdW1u
SGVhZGVyUm9sZSkKQEAgLTE3MCwxMCArMTcyLDEzIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uOjphZGRDaGlsZHJlbigpCiAgICAgQVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAogICAg
IAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAoIW1fcGFyZW50IHx8ICFtX3Bh
cmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlU
YWJsZT4obV9wYXJlbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYXJlbnRUYWJs
ZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KTsKKyAgICBpZiAoIXBh
cmVudFRhYmxlLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlUYWJsZSYgcGFyZW50VGFibGUgPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX3BhcmVudCk7CiAgICAgaW50IG51bVJvd3MgPSBwYXJl
bnRUYWJsZS5yb3dDb3VudCgpOwogICAgIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUm93
czsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKaW5kZXggMDgzYmQ5
OGNiODA3N2Q1MzRjMmNmYzFlNDVmMmMxZmY2NDJjMjg4Yi4uM2QwMzA3ZmM4MmRkMWYyMTA5Mjg2
NjkzN2RiNGJlNDQ2MWU4NmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNw
cApAQCAtNzAsMTAgKzcwLDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFp
bmVyOjphZGRDaGlsZHJlbigpCiAgICAgQVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAogICAgIAog
ICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAoIW1fcGFyZW50IHx8ICFtX3BhcmVu
dC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJs
ZT4obV9wYXJlbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYXJlbnRUYWJsZSA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KTsKKyAgICBpZiAoIXBhcmVu
dFRhYmxlLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KS5jb2x1
bW5IZWFkZXJzKG1fY2hpbGRyZW4pOworICAgIHBhcmVudFRhYmxlLmNvbHVtbkhlYWRlcnMobV9j
aGlsZHJlbik7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4p
CiAgICAgICAgIG1faGVhZGVyUmVjdC51bml0ZShjaGlsZC0+ZWxlbWVudFJlY3QoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAKaW5kZXggYjEyNDFkMTQxMzNkOWMxNWJhMjZhNDJkMzVkZjU3MzFmMjY3NDIzZC4uOWZm
ZjlmNDY1OWFkNGY2M2ExYjI1NWZkOGVmNTNmOGMxODA4M2Q0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcApAQCAt
NzMsNyArNzMsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlUm93Ojpp
c1RhYmxlUm93KCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJsZSA9IHBh
cmVudFRhYmxlKCk7Ci0gICAgaWYgKCF0YWJsZSB8fCAhdGFibGUtPmlzQWNjZXNzaWJpbGl0eVRh
YmxlKCkpCisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGU+KHRhYmxlKSB8fCAhZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqdGFibGUpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHJldHVybiB0cnVlOwpA
QCAtMTA3LDcgKzEwNyw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eVRhYmxl
Um93OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSB0YWJsZSBv
YmplY3QsIGJ1dCBub3QgYW4gYWNjZXNzaWJpbGl0eSB0YWJsZSwgd2Ugc2hvdWxkIHN0b3AgYmVj
YXVzZSB3ZSBkb24ndCB3YW50IHRvCiAgICAgICAgIC8vIGNob29zZSBhbm90aGVyIGFuY2VzdG9y
IHRhYmxlIGFzIHRoaXMgcm93J3MgdGFibGUuCiAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5
VGFibGU+KCpwYXJlbnQpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZT4oKnBhcmVudCkuaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSA/IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZT4ocGFyZW50KSA6IG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nl
c3NpYmlsaXR5KCkgPyBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHBhcmVudCkgOiBudWxs
cHRyOwogICAgIH0KICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFw
cGVyQXRrLmNwcAppbmRleCAwODQ2Mjg5ZTQ5MWQyNGIxODdjMzI4YjQyMDM1NTI4ZDZjZDM0ODZm
Li4wNDMzY2UyMWQwNGJkZTdjNDhkYWI5NzM1N2E3MjVkYzE3NDcyNGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVdyYXBwZXJBdGsuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQVhPYmplY3RD
YWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24uaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCkBAIC0zNTUsNyArMzU2LDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJs
ZUdldE5DaGlsZHJlbihBdGtPYmplY3QqIG9iamVjdCkKIAogICAgIC8vIFRhYmxlcyBzaG91bGQg
YmUgdHJlYXRlZCBpbiBhIGRpZmZlcmVudCB3YXkgYmVjYXVzZSByb3dzIHNob3VsZAogICAgIC8v
IGJlIGJ5cGFzc2VkIHdoZW4gZXhwb3NpbmcgdGhlIGFjY2Vzc2libGUgaGllcmFyY2h5LgotICAg
IGlmIChjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmIChpczxBY2Nl
c3NpYmlsaXR5VGFibGU+KCpjb3JlT2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFi
bGU+KCpjb3JlT2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAg
ICAgIHJldHVybiBnZXROQ2hpbGRyZW5Gb3JUYWJsZShjb3JlT2JqZWN0KTsKIAogICAgIHJldHVy
biBjb3JlT2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsKQEAgLTM5OCw3ICszOTksNyBAQCBzdGF0
aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlUmVmQ2hpbGQoQXRrT2JqZWN0KiBvYmplY3Qs
IGdpbnQgaW5kZXgpCiAKICAgICAvLyBUYWJsZXMgYXJlIHNwZWNpYWwgY2FzZXMgYmVjYXVzZSBy
b3dzIHNob3VsZCBiZSBieXBhc3NlZCwgYnV0CiAgICAgLy8gc3RpbGwgdGFraW5nIHRoZWlyIGNl
bGxzIGludG8gYWNjb3VudC4KLSAgICBpZiAoY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKSkKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqY29yZU9iamVjdCkgJiYgZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqY29yZU9iamVjdCkuaXNFeHBvc2FibGVUaHJvdWdo
QWNjZXNzaWJpbGl0eSgpKQogICAgICAgICBjb3JlQ2hpbGQgPSBnZXRDaGlsZEZvclRhYmxlKGNv
cmVPYmplY3QsIGluZGV4KTsKICAgICBlbHNlIHsKICAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbiA9IGNvcmVPYmpl
Y3QtPmNoaWxkcmVuKCk7CkBAIC01MjAsNyArNTIxLDcgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNl
dCogd2Via2l0QWNjZXNzaWJsZUdldEF0dHJpYnV0ZXMoQXRrT2JqZWN0KiBvYmplY3QpCiAKICAg
ICAvLyBTZXQgdGhlICdsYXlvdXQtZ3Vlc3MnIGF0dHJpYnV0ZSB0byBoZWxwIEFzc2lzdGl2ZQog
ICAgIC8vIFRlY2hub2xvZ2llcyBrbm93IHdoZW4gYW4gZXhwb3NlZCB0YWJsZSBpcyBub3QgZGF0
YSB0YWJsZS4KLSAgICBpZiAoY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSAmJiAh
Y29yZU9iamVjdC0+aXNEYXRhVGFibGUoKSkKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxl
PigqY29yZU9iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqY29yZU9iamVj
dCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpICYmICFjb3JlT2JqZWN0LT5pc0Rh
dGFUYWJsZSgpKQogICAgICAgICBhdHRyaWJ1dGVTZXQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChh
dHRyaWJ1dGVTZXQsICJsYXlvdXQtZ3Vlc3MiLCAidHJ1ZSIpOwogCiAgICAgU3RyaW5nIHBsYWNl
aG9sZGVyID0gY29yZU9iamVjdC0+cGxhY2Vob2xkZXJWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggZGFj
MWI1Y2U1YWViMDExZDIyNDYxYzk3YzE0ZDg0YjViMzliMDhlNS4uMmM3NDQzMGE5MzE0ZTUzZDIy
Y2YxZGZiMmFhM2ZkYWIxYzVmNjM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYg
SEFWRShBQ0NFU1NJQklMSVRZKQogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisj
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgog
I2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKICNpbXBvcnQgIldl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBB
WE5vdGlmaWMKICAgICAgICAgICAgIG1hY05vdGlmaWNhdGlvbiA9IEAiQVhJbnZhbGlkU3RhdHVz
Q2hhbmdlZCI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFNlbGVjdGVkQ2hp
bGRyZW5DaGFuZ2VkOgotICAgICAgICAgICAgaWYgKG9iai0+aXNBY2Nlc3NpYmlsaXR5VGFibGUo
KSkKKyAgICAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmopICYmIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iaikuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSgpKQogICAgICAgICAgICAgICAgIG1hY05vdGlmaWNhdGlvbiA9IE5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkUm93c0NoYW5nZWROb3RpZmljYXRpb247CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgbWFjTm90aWZpY2F0aW9uID0gTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGls
ZHJlbkNoYW5nZWROb3RpZmljYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCmluZGV4IDNmOWRiZDZlMDBkYzk0ZTE1NDc1MjcyMTIwZmIyNjM3YmFmY2M2NzkuLjMy
MTBiN2MyOWRiMzc2NzYyYTZlNDA2ZjM5MWYwMTUyZjc1ZDA5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMTk5LDcgKzExOTksNyBAQCAtIChOU0FycmF5
KilhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzCiAgICAgaWYgKG1fb2JqZWN0
LT5zdXBwb3J0c0FSSUFEcm9wcGluZygpKQogICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdOwogICAgIAotICAgIGlmIChtX29i
amVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFi
bGU+KCptX29iamVjdCkuc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSkKKyAgICBpZiAoaXM8QWNjZXNz
aWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
Km1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgJiYgZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpLnN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkpCiAg
ICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NB
dHRyaWJ1dGVdOwogICAgIAogICAgIGlmIChtX29iamVjdC0+c3VwcG9ydHNBUklBTGl2ZVJlZ2lv
bigpKSB7CkBAIC0xNTkwLDcgKzE1OTAsNyBAQCAtIChOU0FycmF5KilhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlTmFtZXMKICAgICBlbHNlIGlmIChtX29iamVjdC0+aXNBbmNob3IoKSB8fCBtX29iamVj
dC0+aXNJbWFnZSgpIHx8IG1fb2JqZWN0LT5pc0xpbmsoKSkKICAgICAgICAgb2JqZWN0QXR0cmli
dXRlcyA9IGFuY2hvckF0dHJzOwogICAgIAotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0FjY2Vz
c2liaWxpdHlUYWJsZSgpKQorICAgIGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1f
b2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkuaXNFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKQogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0g
dGFibGVBdHRyczsKICAgICBlbHNlIGlmIChtX29iamVjdC0+aXNUYWJsZUNvbHVtbigpKQogICAg
ICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFibGVDb2xBdHRyczsKQEAgLTI1NTQsNyArMjU1NCw3
IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcqKWF0dHJpYnV0
ZU5hbWUKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNz
aWJpbGl0eVRhYmxlKCkpIHsKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmpl
Y3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJs
ZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpIHsKICAgICAgICAgYXV0byYgdGFibGUgPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCk7CiAgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0pCiAgICAg
ICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheSh0YWJsZS5yb3dzKCkpOwpAQCAtMzEyOCw3
ICszMTI4LDcgQEAgLSAoTlNBcnJheSogKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0cmli
dXRlTmFtZXMKICAgICBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkKICAgICAgICAgcmV0
dXJuIHRleHRQYXJhbUF0dHJzOwogICAgIAotICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3NpYmls
aXR5VGFibGUoKSkKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYm
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91
Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiB0YWJsZVBhcmFtQXR0cnM7CiAgICAg
CiAgICAgaWYgKG1fb2JqZWN0LT5pc01lbnVSZWxhdGVkKCkpCkBAIC0zMzE0LDcgKzMzMTQsNyBA
QCAtICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRlOihO
U1N0cmluZyopYXR0cmlidXRlTmFtZQogICAgIGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKSB7CiAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxl
Y3RlZFJvd3M7CiAgICAgICAgIGNvbnZlcnRUb1ZlY3RvcihhcnJheSwgc2VsZWN0ZWRSb3dzKTsK
LSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSB8fCBtX29iamVjdC0+aXNBY2Nlc3NpYmls
aXR5VGFibGUoKSkKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSB8fCAoaXM8QWNjZXNz
aWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
Km1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpKQogICAgICAgICAg
ICAgbV9vYmplY3QtPnNldFNlbGVjdGVkUm93cyhzZWxlY3RlZFJvd3MpOwogICAgIH0gZWxzZSBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRB
dHRyaWJ1dGVdKQogICAgICAgICBtX29iamVjdC0+c2V0QVJJQUdyYWJiZWQoW251bWJlciBib29s
VmFsdWVdKTsKQEAgLTM3MDMsNyArMzcwMyw3IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTooTlNTdHJpbmcqKWF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXRlCiAg
ICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnZpc2libGVQ
b3NSYW5nZS5lbmRdOwogICAgIH0KICAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNzaWJp
bGl0eVRhYmxlKCkpIHsKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3Qp
ICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRo
cm91Z2hBY2Nlc3NpYmlsaXR5KCkpIHsKICAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRSb3dQYXJhbWV0ZXJpemVkQXR0
cmlidXRlXSkgewogICAgICAgICAgICAgaWYgKGFycmF5ID09IG5pbCB8fCBbYXJyYXkgY291bnRd
ICE9IDIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240293</attachid>
            <date>2014-10-22 13:37:55 -0700</date>
            <delta_ts>2014-10-22 14:45:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137899-20141022133801.patch</filename>
            <type>text/plain</type>
            <size>33404</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJhYjlhZWUwMTIzYmM1
NmMxNmJhYjU3MDY1NDc0NTk2NmQyNmNhYi4uYzRlMDA4MTI1NWJkOTkyZGY0YmZlNjQxNmYwYmIw
NDU0NDBiMjdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE0LTEwLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgY29uZnVzaW9uIGJl
dHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIC8gaXNBY2Nlc3NpYmlsaXR5VGFi
bGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQXZvaWQg
Y29uZnVzaW9uIGJldHdlZW4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZSgpIGFuZAorICAg
ICAgICBpc0FjY2Vzc2liaWxpdHlUYWJsZSgpLiBpc1RhYmxlKCkgaXMgZXF1aXZhbGVudCB0bwor
ICAgICAgICBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCksIHdoaWxlIGlzQWNjZXNzaWJpbGl0eVRh
YmxlKCkgaXMgYW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlIHRoYXQgaXMgZXhwb3NlZCBh
cyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgdG8gdGhlCisgICAgICAgIHBsYXRmb3JtLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgcmVuYW1pbmcgaXNBY2Nlc3NpYmlsaXR5VGFibGUoKSB0bworICAg
ICAgICBpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCksIG1ha2VzIGl0IG5vbi12aXJ0
dWFsIGFuZCBkZWZpbmVzIGl0CisgICAgICAgIG9uIEFjY2Vzc2liaWxpdHlUYWJsZSBvbmx5LCBm
b3IgY2xhcml0eS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVuYW1lcyBpc1RhYmxlRXhw
b3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSB0bworICAgICAgICBjb21wdXRlSWlzVGFibGVF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGFzIGl0IGlzIGNhbGxlZCBvbmx5CisgICAg
ICAgIG9uY2UgdG8gaW5pdGlhbGl6ZSB0aGUgbV9pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmls
aXR5IGRhdGEgbWVtYmVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbik6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50VGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRl
eFJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Ns
b3NlZFJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93Ojpk
aXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRS
b3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZUFjY2Vzc2libGl0eU9i
amVjdElubmVyVGV4dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNz
aWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjphcHBl
bmRDaGlsZHJlblRvQXJyYXkpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nl
c3NpYmlsaXR5VGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphcmlhU2VsZWN0ZWRSb3dzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpp
c0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0
eSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVMZXZlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnJvbGVWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0FjY2Vzc2liaWxpdHlUYWJsZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6aXNUYWJsZUNlbGwpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbjo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aXNUYWJsZVJvdyk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6CisgICAgICAgICh3ZWJraXRB
Y2Nlc3NpYmxlR2V0TkNoaWxkcmVuKToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVSZWZDaGls
ZCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nlc3NpYmls
aXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAg
ICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6Zm9yQXR0cmlidXRlOl0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgorCiAyMDE0LTEwLTIyICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY11bV0syXSBGaXggYXBwbGljYXRpb25Jc1NhZmFy
aSgpIGRldGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IDYzNmNlMzVhZmU0YTVkYTQwNjEzM2Q1ZDdk
ZTY0MjA4NGMzN2FhMGQuLjlhZGI4MWZmODA0NDQ2YjlmN2ZkZjYxMTM0MDRjZjhhYzNmMWFlN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBUklBR3JpZC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklB
R3JpZDo6YWRkQ2hpbGRyZW4oKQogewogICAgIEFTU0VSVCghbV9oYXZlQ2hpbGRyZW4pOyAKICAg
ICAKLSAgICBpZiAoIWlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpIHsKKyAgICBpZiAoIWlzRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRDaGlsZHJlbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKaW5k
ZXggZDhkYzQ2NzhiNWEwYzhmYjU0YTIxMzMzYmIyZDg4YjE2OTU1ODQxNS4uMDNmZTQwMGRjODQx
MzZlNThjOTc3ZGMwZGM3MjhiMWMxOWIzYTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCkBAIC01Myw3ICs1Myw3IEBA
IHByaXZhdGU6CiAgICAgLy8gQVJJQSB0cmVlZ3JpZHMgYW5kIGdyaWRzIHN1cHBvcnQgc2VsZWN0
ZWQgcm93cy4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxl
RXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFj
Y2Vzc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAg
dm9pZCBhZGRSb3dEZXNjZW5kYW50KEFjY2Vzc2liaWxpdHlPYmplY3QqLCBIYXNoU2V0PEFjY2Vz
c2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpOwog
ICAgIGJvb2wgYWRkVGFibGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEhhc2hTZXQ8
QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3Vu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBUklBR3JpZENlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsLmNwcAppbmRleCBkMWRjOTM5NzBkNThjOWQwZGIzNjY1ODIzZWRh
ZmY5ZDY5YzFkNmFjLi5hNTJkZDI0ODMxODZlYTk1NGMyZGY2NzJiYThhNjllMzI1NTRjYjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZENlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5jcHAKQEAgLTU1LDE0ICs1NSwxNCBAQCBBY2Nlc3NpYmlsaXR5VGFi
bGUqIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICBp
ZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgaWYgKHBhcmVu
dC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxl
PigqcGFyZW50KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzRXhw
b3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4ocGFyZW50KTsKIAogICAgIC8vIEl0IGNvdWxkIGhhcHBlbiB0aGF0
IHdlIGhhZG4ndCByZWFjaGVkIHRoZSBwYXJlbnQgdGFibGUgeWV0IChpbgogICAgIC8vIGNhc2Ug
b2JqZWN0cyBmb3Igcm93cyB3ZXJlIG5vdCBpZ25vcmluZyBhY2Nlc3NpYmlsaXR5KSBzbyBmb3IK
ICAgICAvLyB0aGF0IHJlYXNvbiB3ZSBuZWVkIHRvIHJ1biBwYXJlbnRPYmplY3RVbmlnbm9yZWQg
b25jZSBhZ2Fpbi4KICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdFVuaWdub3JlZCgp
OwotICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisg
ICAgaWYgKCEoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJlbnQpICYmIGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgcmV0dXJuIGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4ocGFyZW50KTsKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+JiByb3cKICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50KSkg
ewogICAgICAgICAvLyBXZSBhbHJlYWR5IGdvdCBhIHRhYmxlIHJvdywgdXNlIGl0cyBBUEkuCiAg
ICAgICAgIHJvd1JhbmdlLmZpcnN0ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigq
cGFyZW50KS5yb3dJbmRleCgpOwotICAgIH0gZWxzZSBpZiAocGFyZW50LT5pc0FjY2Vzc2liaWxp
dHlUYWJsZSgpKSB7CisgICAgfSBlbHNlIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJl
bnQpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGVU
aHJvdWdoQWNjZXNzaWJpbGl0eSgpKSB7CiAgICAgICAgIC8vIFdlIHJlYWNoZWQgdGhlIHBhcmVu
dCB0YWJsZSwgc28gd2UgbmVlZCB0byBpbnNwZWN0IGl0cwogICAgICAgICAvLyBjaGlsZHJlbiB0
byBkZXRlcm1pbmUgdGhlIHJvdyBpbmRleCBmb3IgdGhlIGNlbGwgaW4gaXQuCiAgICAgICAgIHVu
c2lnbmVkIGNvbHVtbkNvdW50ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50
KS5jb2x1bW5Db3VudCgpOwpAQCAtMTA0LDcgKzEwNCw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiYKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFwYXJlbnQt
PmlzVGFibGVSb3coKSAmJiAhcGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlm
ICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50KQorICAgICAgICAmJiAhKGlzPEFj
Y2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
PigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHNpYmxpbmdz
ID0gcGFyZW50LT5jaGlsZHJlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCmluZGV4IDA5MmNhNDQ0NjJi
M2Y5MWVjNjhhNTBiNTk1N2ViOWFlYzJjMjFkMjUuLmI3MjVhMTczZDFhMjMyODI1OTE4MWI4OTEw
MGFmY2M3ZjhhODc4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBkaXNjbG8KICAgICAvLyBUaGUgY29udGlndW91cyBkaXNjbG9zZWQgcm93
cyB3aWxsIGJlIHRoZSByb3dzIGluIHRoZSB0YWJsZSB0aGF0IAogICAgIC8vIGhhdmUgYW4gYXJp
YS1sZXZlbCBvZiBwbHVzIDEgZnJvbSB0aGlzIHJvdy4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKLSAgICBpZiAoIXBhcmVudCB8fCAh
cGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmICghaXM8QWNjZXNzaWJpbGl0
eVRhYmxlPigqcGFyZW50KSB8fCAhZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50
KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICAvLyBTZWFyY2ggZm9yIHJvd3MgdGhhdCBtYXRjaCB0aGUgY29ycmVjdCBsZXZlbC4g
CkBAIC05MCw3ICs5MCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklB
R3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBjb25zdAogICAgIC8vIFRoZSByb3cgdGhhdCBkaXNj
bG9zZXMgdGhpcyBvbmUgaXMgdGhlIHJvdyBpbiB0aGUgdGFibGUKICAgICAvLyB0aGF0IGlzIGFy
aWEtbGV2ZWwgc3VidHJhY3QgMSBmcm9tIHRoaXMgcm93LgogICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlmICghcGFyZW50IHx8
ICFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgaWYgKCFpczxBY2Nlc3NpYmls
aXR5VGFibGU+KCpwYXJlbnQpIHx8ICFkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJl
bnQpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCiAgICAgLy8gSWYgdGhlIGxldmVsIGlzIDEgb3IgbGVzcywgdGhhbiBub3Ro
aW5nIGRpc2Nsb3NlcyB0aGlzIHJvdy4KQEAgLTEyMCw4ICsxMjAsMTEgQEAgQWNjZXNzaWJpbGl0
eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OnBhcmVudFRhYmxlKCkgY29uc3QKICAg
ICAvLyBvbmx5IGhhdmUgInJvdyIgZWxlbWVudHMsIGJ1dCBpZiBub3QsIHdlIHN0aWxsIHNob3Vs
ZCBoYW5kbGUgaXQgZ3JhY2VmdWxseSBieSBmaW5kaW5nIHRoZSByaWdodCB0YWJsZS4KICAgICBm
b3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7
IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKICAgICAgICAgLy8gVGhlIHBhcmVu
dCB0YWJsZSBmb3IgYW4gQVJJQSBncmlkIHJvdyBzaG91bGQgYmUgYW4gQVJJQSB0YWJsZS4KLSAg
ICAgICAgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSAmJiBkb3duY2FzdDxBY2Nl
c3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzQXJpYVRhYmxlKCkpCi0gICAgICAgICAgICByZXR1
cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJlbnQpOworICAgICAgICBpZiAoaXM8
QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSkgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0
eVRhYmxlJiB0YWJsZVBhcmVudCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVu
dCk7CisgICAgICAgICAgICBpZiAodGFibGVQYXJlbnQuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSgpICYmIHRhYmxlUGFyZW50LmlzQXJpYVRhYmxlKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuICZ0YWJsZVBhcmVudDsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggMDc5NjZjZjRlYTFhOGIxYjA2MzYxMDk4YzZm
OWI3ZGE0NmZjNTIyMS4uMGQ2MWMzMTAwNGVmZjkyYmEwZWVjY2FjNThlY2EwMjYwZDRmOTcwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0
Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgiCisjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveC5o
IgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgiCiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eVRhYmxlLmgiCkBAIC0xNjIzLDcgKzE2MjQsMTMgQEAgc3RhdGljIGJvb2wgc2hvdWxk
VXNlQWNjZXNzaWJsaXR5T2JqZWN0SW5uZXJUZXh0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwg
QWNjZXMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gU2tpcCBiaWcgY29udGFpbmVy
IGVsZW1lbnRzIGxpa2UgbGlzdHMsIHRhYmxlcywgZXRjLgotICAgIGlmIChvYmotPmlzTGlzdCgp
IHx8IG9iai0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSB8fCBvYmotPmlzVHJlZSgpIHx8IG9iai0+
aXNDYW52YXMoKSkKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eUxpc3Q+KCpvYmopKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqKSAm
JiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmopLmlzRXhwb3NhYmxlVGhyb3VnaEFj
Y2Vzc2liaWxpdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG9iai0+aXNU
cmVlKCkgfHwgb2JqLT5pc0NhbnZhcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDJiYWY0NGFhYjM3M2E0ZGNkZDhlMzIwMjk5YTc3NGM0
NWZjZjFkN2UuLjYzYWY3ZGQyY2UxMDE5NWQzZDQ2MDJiMjk4NDMyODE2MzljNTQzNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcApAQCAtMjMxLDExICsyMzEsMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQWNjZXNzaWJpbGl0eU8KICAgICAg
ICAgCiAgICAgY2FzZSBUYWJsZVNhbWVMZXZlbFNlYXJjaEtleToKICAgICAgICAgcmV0dXJuIGNy
aXRlcmlhLT5zdGFydE9iamVjdAotICAgICAgICAgICAgJiYgYXhPYmplY3QtPmlzQWNjZXNzaWJp
bGl0eVRhYmxlKCkKLSAgICAgICAgICAgICYmIGF4T2JqZWN0LT50YWJsZUxldmVsKCkgPT0gY3Jp
dGVyaWEtPnN0YXJ0T2JqZWN0LT50YWJsZUxldmVsKCk7CisgICAgICAgICAgICAmJiBpczxBY2Nl
c3NpYmlsaXR5VGFibGU+KCpheE9iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
PigqYXhPYmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKQorICAgICAgICAg
ICAgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhPYmplY3QpLnRhYmxlTGV2ZWwo
KSA9PSBjcml0ZXJpYS0+c3RhcnRPYmplY3QtPnRhYmxlTGV2ZWwoKTsKICAgICAgICAgCiAgICAg
Y2FzZSBUYWJsZVNlYXJjaEtleToKLSAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0FjY2Vzc2li
aWxpdHlUYWJsZSgpOworICAgICAgICByZXR1cm4gaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhP
YmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKmF4T2JqZWN0KS5pc0V4cG9z
YWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7CiAgICAgICAgIAogICAgIGNhc2UgVGV4dEZpZWxk
U2VhcmNoS2V5OgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVGV4dENvbnRyb2woKTsKQEAg
LTUwMiw3ICs1MDIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQWNjZXNz
aWJpbGl0eU9iamVjdCogb2JqZWN0LCBib29sIGlzRm9yd2FyZCwgQQogewogICAgIC8vIEEgdGFi
bGUncyBjaGlsZHJlbiBpbmNsdWRlcyBlbGVtZW50cyB3aG9zZSBvd24gY2hpbGRyZW4gYXJlIGFs
c28gdGhlIHRhYmxlJ3MgY2hpbGRyZW4gKGR1ZSB0byB0aGUgd2F5IHRoZSBNYWMgZXhwb3NlcyB0
YWJsZXMpLgogICAgIC8vIFRoZSByb3dzIGZyb20gdGhlIHRhYmxlIHNob3VsZCBiZSBxdWVyaWVk
LCBzaW5jZSB0aG9zZSBhcmUgZGlyZWN0IGRlc2NlbmRhbnRzIG9mIHRoZSB0YWJsZSwgYW5kIHRo
ZXkgY29udGFpbiBjb250ZW50LgotICAgIGNvbnN0IGF1dG8mIHNlYXJjaENoaWxkcmVuID0gb2Jq
ZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpID8gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
Pigqb2JqZWN0KS5yb3dzKCkgOiBvYmplY3QtPmNoaWxkcmVuKCk7CisgICAgY29uc3QgYXV0byYg
c2VhcmNoQ2hpbGRyZW4gPSBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmplY3QpICYmIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm9iamVjdCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSgpID8gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqZWN0KS5yb3dzKCkg
OiBvYmplY3QtPmNoaWxkcmVuKCk7CiAKICAgICBzaXplX3QgY2hpbGRyZW5TaXplID0gc2VhcmNo
Q2hpbGRyZW4uc2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDAyMzRiYjNkZmQxZjE3N2M1ZTBkZmVmMmMzOTAz
YzA3YjEyZjE1NWIuLjg1ZmU0NjMwNWMxMjQ0YzgyMDRmZGNkNzI2Y2I2NjNlOGVhZDFmODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCkBAIC00NzUsNyArNDc1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRy
b2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFibGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0RhdGFUYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGFibGVSb3coKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ29sdW1uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGFhYzFkMmQ5
ZjU0YTM0MTFkMThiNjIxODRhOGY2MzRiMGY4OTQ2NzEuLmFiZWVjYWJmZjgwYTdlMmViOGVlMTc0
MTRjY2IxOTcwYTA1M2IzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMzE0NCw4ICszMTQ0
LDExIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYVNlbGVjdGVkUm93cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlCiAgICAgICAgIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBhbGxSb3dzOwogICAgICAgICBhcmlhVHJlZVJvd3MoYWxsUm93cyk7CiAgICAg
ICAgIHJvd3NJdGVyYXRpb24oYWxsUm93cyk7Ci0gICAgfSBlbHNlIGlmIChpc0FjY2Vzc2liaWxp
dHlUYWJsZSgpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnRoaXMpLnN1cHBvcnRz
U2VsZWN0ZWRSb3dzKCkpCi0gICAgICAgIHJvd3NJdGVyYXRpb24oZG93bmNhc3Q8QWNjZXNzaWJp
bGl0eVRhYmxlPigqdGhpcykucm93cygpKTsKKyAgICB9IGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxp
dHlUYWJsZT4oKnRoaXMpKSB7CisgICAgICAgIGF1dG8mIHRoaXNUYWJsZSA9IGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4oKnRoaXMpOworICAgICAgICBpZiAodGhpc1RhYmxlLmlzRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSAmJiB0aGlzVGFibGUuc3VwcG9ydHNTZWxlY3RlZFJv
d3MoKSkKKyAgICAgICAgICAgIHJvd3NJdGVyYXRpb24odGhpc1RhYmxlLnJvd3MoKSk7CisgICAg
fQogfQogICAgIAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhTGlzdGJveFNl
bGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAK
aW5kZXggMGI3YmUzYWY1YTJlZDc2ZThmZTJiZjQ4Yjk2NDJiZGU0MmVjMTg0Mi4uMWQ1MzAwZWZh
ZWUwZWUxMjA5MjIyOWZhNGQ0NGJiOGM1OTRmODU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtNTEsNyArNTEsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogQWNjZXNzaWJpbGl0eVRhYmxlOjpBY2Nlc3Np
YmlsaXR5VGFibGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICA6IEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QocmVuZGVyZXIpCiAgICAgLCBtX2hlYWRlckNvbnRhaW5lcihudWxscHRyKQot
ICAgICwgbV9pc0FjY2Vzc2liaWxpdHlUYWJsZSh0cnVlKQorICAgICwgbV9pc0V4cG9zYWJsZVRo
cm91Z2hBY2Nlc3NpYmlsaXR5KHRydWUpCiB7CiB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgQWNjZXNz
aWJpbGl0eVRhYmxlOjp+QWNjZXNzaWJpbGl0eVRhYmxlKCkKIHZvaWQgQWNjZXNzaWJpbGl0eVRh
YmxlOjppbml0KCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbml0KCk7Ci0g
ICAgbV9pc0FjY2Vzc2liaWxpdHlUYWJsZSA9IGlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSgpOworICAgIG1faXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSA9IGNvbXB1
dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsKIH0KIAogUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGFibGU+IEFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCkBAIC04MiwxMiArODIsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFi
bGU6Omhhc0FSSUFSb2xlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQWNj
ZXNzaWJpbGl0eVRhYmxlOjppc0FjY2Vzc2liaWxpdHlUYWJsZSgpIGNvbnN0Citib29sIEFjY2Vz
c2liaWxpdHlUYWJsZTo6aXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAg
cmV0dXJuIG1faXNBY2Nlc3NpYmlsaXR5VGFibGU7CisgICAgcmV0dXJuIG1faXNFeHBvc2FibGVU
aHJvdWdoQWNjZXNzaWJpbGl0eTsKIH0KIAogSFRNTFRhYmxlRWxlbWVudCogQWNjZXNzaWJpbGl0
eVRhYmxlOjp0YWJsZUVsZW1lbnQoKSBjb25zdApAQCAtMzA5LDcgKzMwOSw3IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogICAgIAotYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVFeHBvc2FibGVUaHJvdWdo
QWNjZXNzaWJpbGl0eSgpIGNvbnN0Citib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlz
VGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0CiB7CiAgICAgLy8gVGhl
IGZvbGxvd2luZyBpcyBhIGhldXJpc3RpYyB1c2VkIHRvIGRldGVybWluZSBpZiBhCiAgICAgLy8g
PHRhYmxlPiBzaG91bGQgYmUgZXhwb3NlZCBhcyBhbiBBWFRhYmxlLiBUaGUgZ29hbApAQCAtMzQ3
LDcgKzM0Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNoaWxkcmVuKCkKIAog
dm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKIHsKLSAgICBpZiAoIWlzQWNj
ZXNzaWJpbGl0eVRhYmxlKCkpIHsKKyAgICBpZiAoIWlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJl
bigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTI1LDcgKzUyNSw3IEBAIGludCBBY2Nl
c3NpYmlsaXR5VGFibGU6OnRhYmxlTGV2ZWwoKSBjb25zdAogewogICAgIGludCBsZXZlbCA9IDA7
CiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBzdGF0aWNfY2FzdDxBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4oY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPih0aGlzKSk7IG9i
ajsgb2JqID0gb2JqLT5wYXJlbnRPYmplY3QoKSkgewotICAgICAgICBpZiAob2JqLT5pc0FjY2Vz
c2liaWxpdHlUYWJsZSgpKQorICAgICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2Jq
KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpvYmopLmlzRXhwb3NhYmxlVGhyb3Vn
aEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgICAgICsrbGV2ZWw7CiAgICAgfQogICAgIApAQCAt
NTY4LDcgKzU2OCw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sCiAKIEFjY2Vzc2liaWxpdHlS
b2xlIEFjY2Vzc2liaWxpdHlUYWJsZTo6cm9sZVZhbHVlKCkgY29uc3QKIHsKLSAgICBpZiAoIWlz
QWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgaWYgKCFpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpyb2xl
VmFsdWUoKTsKIAogICAgIHJldHVybiBUYWJsZVJvbGU7CkBAIC01ODIsNyArNTgyLDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKICAgICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKLSAgICBpZiAoIWlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgaWYgKCFpc0V4
cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwogICAgICAg
ICAKICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VGFibGU6OnRpdGxlRWxlbWVudFRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4
dE9yZGVyKQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFpc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmICghaXNFeHBvc2FibGVUaHJv
dWdoQWNjZXNzaWJpbGl0eSgpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6dGl0bGUoKTsKICAgICAKICAgICBTdHJpbmcgdGl0bGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAppbmRleCBiMDI2ZjUyZTZk
YTNjNjE0Y2Q4MTFjZjBiN2E2NjFiYzE5YzAwMDZmLi4zM2Y2NGJhZWRhMWJiZTI4NTBhYTk0NDkz
OGJlMTFlNWQ1YzE4MWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c1NlbGVjdGVkUm93cygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdW5z
aWduZWQgY29sdW1uQ291bnQoKTsKICAgICB1bnNpZ25lZCByb3dDb3VudCgpOwotICAgIHZpcnR1
YWwgaW50IHRhYmxlTGV2ZWwoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGludCB0YWJs
ZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAgICAgCiAgICAgdmlydHVhbCBTdHJpbmcg
dGl0bGUoKSBjb25zdCBvdmVycmlkZTsKICAgICAKQEAgLTc1LDE1ICs3NSwxNSBAQCBwdWJsaWM6
CiAgICAgLy8gYW4gb2JqZWN0IHRoYXQgY29udGFpbnMsIGFzIGNoaWxkcmVuLCBhbGwgdGhlIG9i
amVjdHMgdGhhdCBhY3QgYXMgaGVhZGVycwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRl
ckNvbnRhaW5lcigpOwogCi0gICAgLy8gaXNBY2Nlc3NpYmlsaXR5VGFibGUgaXMgd2hldGhlciBp
dCBpcyBleHBvc2VkIGFzIGFuIEFjY2Vzc2liaWxpdHlUYWJsZSB0byB0aGUgcGxhdGZvcm0uCi0g
ICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWw7CisgICAgLy8gaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGlzIHdoZXRoZXIg
aXQgaXMgZXhwb3NlZCBhcyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgdG8gdGhlIHBsYXRmb3JtLgor
ICAgIGJvb2wgaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0OwogCiBwcm90
ZWN0ZWQ6CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG1fcm93czsKICAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jb2x1bW5zOwogCiAgICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3Q+IG1faGVhZGVyQ29udGFpbmVyOwotICAgIGJvb2wgbV9pc0FjY2Vzc2liaWxp
dHlUYWJsZTsKKyAgICBib29sIG1faXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eTsKIAog
ICAgIGJvb2wgaGFzQVJJQVJvbGUoKSBjb25zdDsKIApAQCAtOTIsMTEgKzkyLDEwIEBAIHByb3Rl
Y3RlZDoKICAgICAvLyBpc0RhdGFUYWJsZSBpcyB3aGV0aGVyIGl0IGlzIGV4cG9zZWQgYXMgYW4g
QWNjZXNzaWJpbGl0eVRhYmxlIGJlY2F1c2UgdGhlIGhldXJpc3RpYwogICAgIC8vIHRoaW5rIHRo
aXMgImxvb2tzIiBsaWtlIGEgZGF0YS1iYXNlZCB0YWJsZSAoaW5zdGVhZCBvZiBhIHRhYmxlIHVz
ZWQgZm9yIGxheW91dCkuCiAgICAgdmlydHVhbCBib29sIGlzRGF0YVRhYmxlKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGNv
bXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgdGl0bGVFbGVtZW50VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgSFRNTFRhYmxlRWxlbWVudCogdGFibGVFbGVtZW50KCkgY29u
c3Q7CiAgICAgdm9pZCBhZGRDaGlsZHJlbkZyb21TZWN0aW9uKFJlbmRlclRhYmxlU2VjdGlvbios
IHVuc2lnbmVkJiBtYXhDb2x1bW5Db3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAppbmRleCA2ODM3YmUwMjgy
MWIzYTM4NjQ3MWIwMWZlMzljMzkwODA4Mzg4MzZlLi5mNWQyNzJmY2VjOTJhYTk5YjVmNTlkZDY2
NjViZjVkODMyMGYzOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzVGFibGVDZWxsKCkgY29uc3QKICAgICAvLyBUaGlz
IHVzZWQgdG8gY2hlY2sgaWYgdGhlIHVuaWdub3JlZFBhcmVudCB3YXMgYSByb3csIGJ1dCB0aGF0
IGV4cGxvZGVkIHBlcmZvcm1hbmNlIGlmCiAgICAgLy8gdGhpcyB3YXMgaW4gbmVzdGVkIHRhYmxl
cy4gVGhpcyBjaGVjayBzaG91bGQgYmUganVzdCBhcyBnb29kLgogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHBhcmVudFRhYmxlID0gdGhpcy0+cGFyZW50VGFibGUoKTsKLSAgICByZXR1cm4gcGFy
ZW50VGFibGUgJiYgcGFyZW50VGFibGUtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCk7CisgICAgcmV0
dXJuIGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4ocGFyZW50VGFibGUpICYmIGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZT4oKnBhcmVudFRhYmxlKS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmls
aXR5KCk7CiB9CiAgICAgCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggYjAy
ZjllZmQ1YzU5ZDdiM2YwZDQ0YTkzMWQwZDdmMzkzMTJmNWU4ZC4uYjUxZWI3NWMzNTc2OTE2MzM3
NGY2ZTY0YWVkZTQzN2M0OTljZDk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtNzUsMTEgKzc1
LDEzIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVh
ZGVyT2JqZWN0KCkKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9wYXJlbnQtPnJlbmRl
cmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
Ci0gICAgaWYgKCFtX3BhcmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlz
PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgCisKICAgICBhdXRvJiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZT4oKm1fcGFyZW50KTsKKyAgICBpZiAoIXBhcmVudFRhYmxlLmlzRXhwb3NhYmxlVGhyb3Vn
aEFjY2Vzc2liaWxpdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCiAgICAgaWYg
KHBhcmVudFRhYmxlLmlzQXJpYVRhYmxlKCkpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBj
ZWxsIDogY2hpbGRyZW4oKSkgewogICAgICAgICAgICAgaWYgKGNlbGwtPmFyaWFSb2xlQXR0cmli
dXRlKCkgPT0gQ29sdW1uSGVhZGVyUm9sZSkKQEAgLTE3MCwxMCArMTcyLDEzIEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJlbigpCiAgICAgQVNTRVJUKCFtX2hhdmVD
aGlsZHJlbik7IAogICAgIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAoIW1f
cGFyZW50IHx8ICFtX3BhcmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlz
PEFjY2Vzc2liaWxpdHlUYWJsZT4obV9wYXJlbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50
KTsKKyAgICBpZiAoIXBhcmVudFRhYmxlLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHko
KSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlUYWJsZSYgcGFyZW50
VGFibGUgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX3BhcmVudCk7CiAgICAgaW50
IG51bVJvd3MgPSBwYXJlbnRUYWJsZS5yb3dDb3VudCgpOwogICAgIAogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtUm93czsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5j
cHAKaW5kZXggMDgzYmQ5OGNiODA3N2Q1MzRjMmNmYzFlNDVmMmMxZmY2NDJjMjg4Yi4uM2QwMzA3
ZmM4MmRkMWYyMTA5Mjg2NjkzN2RiNGJlNDQ2MWU4NmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVh
ZGVyQ29udGFpbmVyLmNwcApAQCAtNzAsMTAgKzcwLDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRh
YmxlSGVhZGVyQ29udGFpbmVyOjphZGRDaGlsZHJlbigpCiAgICAgQVNTRVJUKCFtX2hhdmVDaGls
ZHJlbik7IAogICAgIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAoIW1fcGFy
ZW50IHx8ICFtX3BhcmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIWlzPEFj
Y2Vzc2liaWxpdHlUYWJsZT4obV9wYXJlbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
JiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KTsK
KyAgICBpZiAoIXBhcmVudFRhYmxlLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
Km1fcGFyZW50KS5jb2x1bW5IZWFkZXJzKG1fY2hpbGRyZW4pOworICAgIHBhcmVudFRhYmxlLmNv
bHVtbkhlYWRlcnMobV9jaGlsZHJlbik7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGls
ZCA6IG1fY2hpbGRyZW4pCiAgICAgICAgIG1faGVhZGVyUmVjdC51bml0ZShjaGlsZC0+ZWxlbWVu
dFJlY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZVJvdy5jcHAKaW5kZXggYjEyNDFkMTQxMzNkOWMxNWJhMjZhNDJkMzVkZjU3
MzFmMjY3NDIzZC4uNjQxYTAxNDJlMmFiZTU4OThkNzA5MTVkZWNkODg0ZDAxOGNhNTJkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVS
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlUm93LmNwcApAQCAtNzMsMTAgKzczLDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJp
bGl0eVRhYmxlUm93OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiBib29sIEFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6aXNUYWJsZVJvdygpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogdGFibGUgPSBwYXJlbnRUYWJsZSgpOwotICAgIGlmICghdGFibGUgfHwgIXRhYmxlLT5p
c0FjY2Vzc2liaWxpdHlUYWJsZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4odGFibGUpICAm
JiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCp0YWJsZSkuaXNFeHBvc2FibGVUaHJvdWdo
QWNjZXNzaWJpbGl0eSgpOwogfQogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eVRhYmxlUm93OjpvYnNlcnZhYmxlT2JqZWN0KCkgY29uc3QKQEAgLTEwNiw4ICsxMDMsMTIg
QEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OnBhcmVudFRhYmxl
KCkgY29uc3QKICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9i
amVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKICAgICAg
ICAgLy8gSWYgdGhpcyBpcyBhIHRhYmxlIG9iamVjdCwgYnV0IG5vdCBhbiBhY2Nlc3NpYmlsaXR5
IHRhYmxlLCB3ZSBzaG91bGQgc3RvcCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8KICAgICAgICAg
Ly8gY2hvb3NlIGFub3RoZXIgYW5jZXN0b3IgdGFibGUgYXMgdGhpcyByb3cncyB0YWJsZS4KLSAg
ICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0FjY2Vzc2liaWxp
dHlUYWJsZSgpID8gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJlbnQpIDogbnVsbHB0
cjsKKyAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkpIHsKKyAgICAg
ICAgICAgIGF1dG8mIHBhcmVudFRhYmxlID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigq
cGFyZW50KTsKKyAgICAgICAgICAgIGlmIChwYXJlbnRUYWJsZS5pc0V4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICZwYXJlbnRUYWJsZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCmluZGV4IDA4NDYyODllNDkxZDI0YjE4
N2MzMjhiNDIwMzU1MjhkNmNkMzQ4NmYuLjA0MzNjZTIxZDA0YmRlN2M0OGRhYjk3MzU3YTcyNWRj
MTc0NzI0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxp
c3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oIgorI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTM1NSw3ICszNTYsNyBAQCBzdGF0
aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlR2V0TkNoaWxkcmVuKEF0a09iamVjdCogb2JqZWN0KQog
CiAgICAgLy8gVGFibGVzIHNob3VsZCBiZSB0cmVhdGVkIGluIGEgZGlmZmVyZW50IHdheSBiZWNh
dXNlIHJvd3Mgc2hvdWxkCiAgICAgLy8gYmUgYnlwYXNzZWQgd2hlbiBleHBvc2luZyB0aGUgYWNj
ZXNzaWJsZSBoaWVyYXJjaHkuCi0gICAgaWYgKGNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRh
YmxlKCkpCisgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKmNvcmVPYmplY3QpICYmIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKmNvcmVPYmplY3QpLmlzRXhwb3NhYmxlVGhyb3Vn
aEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJuIGdldE5DaGlsZHJlbkZvclRhYmxlKGNv
cmVPYmplY3QpOwogCiAgICAgcmV0dXJuIGNvcmVPYmplY3QtPmNoaWxkcmVuKCkuc2l6ZSgpOwpA
QCAtMzk4LDcgKzM5OSw3IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVSZWZD
aGlsZChBdGtPYmplY3QqIG9iamVjdCwgZ2ludCBpbmRleCkKIAogICAgIC8vIFRhYmxlcyBhcmUg
c3BlY2lhbCBjYXNlcyBiZWNhdXNlIHJvd3Mgc2hvdWxkIGJlIGJ5cGFzc2VkLCBidXQKICAgICAv
LyBzdGlsbCB0YWtpbmcgdGhlaXIgY2VsbHMgaW50byBhY2NvdW50LgotICAgIGlmIChjb3JlT2Jq
ZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFi
bGU+KCpjb3JlT2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpjb3JlT2Jq
ZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIGNvcmVDaGls
ZCA9IGdldENoaWxkRm9yVGFibGUoY29yZU9iamVjdCwgaW5kZXgpOwogICAgIGVsc2UgewogICAg
ICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIGNoaWxkcmVuID0gY29yZU9iamVjdC0+Y2hpbGRyZW4oKTsKQEAgLTUyMCw3ICs1MjEsNyBA
QCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyhB
dGtPYmplY3QqIG9iamVjdCkKIAogICAgIC8vIFNldCB0aGUgJ2xheW91dC1ndWVzcycgYXR0cmli
dXRlIHRvIGhlbHAgQXNzaXN0aXZlCiAgICAgLy8gVGVjaG5vbG9naWVzIGtub3cgd2hlbiBhbiBl
eHBvc2VkIHRhYmxlIGlzIG5vdCBkYXRhIHRhYmxlLgotICAgIGlmIChjb3JlT2JqZWN0LT5pc0Fj
Y2Vzc2liaWxpdHlUYWJsZSgpICYmICFjb3JlT2JqZWN0LT5pc0RhdGFUYWJsZSgpKQorICAgIGlm
IChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpjb3JlT2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGU+KCpjb3JlT2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5
KCkgJiYgIWNvcmVPYmplY3QtPmlzRGF0YVRhYmxlKCkpCiAgICAgICAgIGF0dHJpYnV0ZVNldCA9
IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgImxheW91dC1ndWVzcyIsICJ0cnVl
Iik7CiAKICAgICBTdHJpbmcgcGxhY2Vob2xkZXIgPSBjb3JlT2JqZWN0LT5wbGFjZWhvbGRlclZh
bHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9i
amVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbQppbmRleCBkYWMxYjVjZTVhZWIwMTFkMjI0NjFjOTdjMTRkODRiNWIzOWIw
OGU1Li4yYzc0NDMwYTkzMTRlNTNkMjJjZjFkZmIyYWEzZmRhYjFjNWY2MzY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0K
QEAgLTI5LDYgKzI5LDcgQEAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAKICNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2lt
cG9ydCAiUmVuZGVyT2JqZWN0LmgiCiAjaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgpAQCAtOTYsNyAr
OTcsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpYwogICAgICAgICAgICAgbWFjTm90aWZpY2F0
aW9uID0gQCJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEFYU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQ6Ci0gICAgICAgICAgICBpZiAob2Jq
LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgICAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxp
dHlUYWJsZT4oKm9iaikgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqb2JqKS5pc0V4
cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgICAgICAgICAgbWFjTm90aWZp
Y2F0aW9uID0gTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQ2hhbmdlZE5vdGlmaWNhdGlvbjsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBtYWNOb3RpZmljYXRpb24gPSBOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZE5vdGlmaWNhdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggM2Y5ZGJkNmUwMGRjOTRlMTU0NzUy
NzIxMjBmYjI2MzdiYWZjYzY3OS4uMzIxMGI3YzI5ZGIzNzY3NjJhNmU0MDZmMzkxZjAxNTJmNzVk
MDllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTExOTks
NyArMTE5OSw3IEBAIC0gKE5TQXJyYXkqKWFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRl
TmFtZXMKICAgICBpZiAobV9vYmplY3QtPnN1cHBvcnRzQVJJQURyb3BwaW5nKCkpCiAgICAgICAg
IFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0
ZV07CiAgICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpICYmIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KS5zdXBwb3J0c1NlbGVjdGVkUm93
cygpKQorICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkgJiYgZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vz
c2liaWxpdHkoKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkuc3Vw
cG9ydHNTZWxlY3RlZFJvd3MoKSkKICAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV07CiAgICAgCiAgICAgaWYgKG1fb2JqZWN0
LT5zdXBwb3J0c0FSSUFMaXZlUmVnaW9uKCkpIHsKQEAgLTE1OTAsNyArMTU5MCw3IEBAIC0gKE5T
QXJyYXkqKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lcwogICAgIGVsc2UgaWYgKG1fb2JqZWN0
LT5pc0FuY2hvcigpIHx8IG1fb2JqZWN0LT5pc0ltYWdlKCkgfHwgbV9vYmplY3QtPmlzTGluaygp
KQogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gYW5jaG9yQXR0cnM7CiAgICAgCi0gICAgZWxz
ZSBpZiAobV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgZWxzZSBpZiAoaXM8
QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZT4oKm1fb2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAg
ICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZUF0dHJzOwogICAgIGVsc2UgaWYgKG1fb2JqZWN0
LT5pc1RhYmxlQ29sdW1uKCkpCiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZUNvbEF0
dHJzOwpAQCAtMjU1NCw3ICsyNTU0LDcgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZQogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IGlmIChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkgeworICAgIGlmIChpczxBY2Nl
c3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
PigqbV9vYmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkgewogICAgICAg
ICBhdXRvJiB0YWJsZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fb2JqZWN0KTsK
ICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlSb3dzQXR0cmlidXRlXSkKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHRh
YmxlLnJvd3MoKSk7CkBAIC0zMTI4LDcgKzMxMjgsNyBAQCAtIChOU0FycmF5KiApYWNjZXNzaWJp
bGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcwogICAgIGlmIChtX29iamVjdC0+aXNUZXh0
Q29udHJvbCgpKQogICAgICAgICByZXR1cm4gdGV4dFBhcmFtQXR0cnM7CiAgICAgCi0gICAgaWYg
KG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgIGlmIChpczxBY2Nlc3NpYmls
aXR5VGFibGU+KCptX29iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9v
YmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJu
IHRhYmxlUGFyYW1BdHRyczsKICAgICAKICAgICBpZiAobV9vYmplY3QtPmlzTWVudVJlbGF0ZWQo
KSkKQEAgLTMzMTQsNyArMzMxNCw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVNldFZhbHVlOihp
ZCl2YWx1ZSBmb3JBdHRyaWJ1dGU6KE5TU3RyaW5nKilhdHRyaWJ1dGVOYW1lCiAgICAgZWxzZSBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
Um93c0F0dHJpYnV0ZV0pIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkUm93czsKICAgICAgICAgY29udmVydFRvVmVjdG9y
KGFycmF5LCBzZWxlY3RlZFJvd3MpOwotICAgICAgICBpZiAobV9vYmplY3QtPmlzVHJlZSgpIHx8
IG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQorICAgICAgICBpZiAobV9vYmplY3Qt
PmlzVHJlZSgpIHx8IChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkgJiYgZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9vYmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vz
c2liaWxpdHkoKSkpCiAgICAgICAgICAgICBtX29iamVjdC0+c2V0U2VsZWN0ZWRSb3dzKHNlbGVj
dGVkUm93cyk7CiAgICAgfSBlbHNlIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV0pCiAgICAgICAgIG1fb2JqZWN0LT5zZXRB
UklBR3JhYmJlZChbbnVtYmVyIGJvb2xWYWx1ZV0pOwpAQCAtMzcwMyw3ICszNzAzLDcgQEAgLSAo
aWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cmluZyopYXR0cmlidXRlIGZvclBh
cmFtZXRlcjooaWQpcGFyYW1ldGUKICAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JW
aXNpYmxlUG9zaXRpb246dmlzaWJsZVBvc1JhbmdlLmVuZF07CiAgICAgfQogICAgIAotICAgIGlm
IChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkgeworICAgIGlmIChpczxBY2Nlc3Np
YmlsaXR5VGFibGU+KCptX29iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigq
bV9vYmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkgewogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2VsbEZvckNvbHVt
bkFuZFJvd1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CiAgICAgICAgICAgICBpZiAoYXJyYXkg
PT0gbmlsIHx8IFthcnJheSBjb3VudF0gIT0gMikKICAgICAgICAgICAgICAgICByZXR1cm4gbmls
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>