<?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>164214</bug_id>
          
          <creation_ts>2016-10-30 23:51:04 -0700</creation_ts>
          <short_desc>Move ChildNode and ParentNode from ExceptionCode to Exception, add support for ExceptionOr&lt;T&amp;&gt;</short_desc>
          <delta_ts>2016-10-31 08:57:52 -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>Bindings</component>
          <version>WebKit 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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246355</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-30 23:51:04 -0700</bug_when>
    <thetext>Move ChildNode and ParentNode from ExceptionCode to Exception, add support for ExceptionOr&lt;T&amp;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246356</commentid>
    <comment_count>1</comment_count>
      <attachid>293396</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-31 00:04:51 -0700</bug_when>
    <thetext>Created attachment 293396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246357</commentid>
    <comment_count>2</comment_count>
      <attachid>293396</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-31 00:06:38 -0700</bug_when>
    <thetext>Comment on attachment 293396
Patch

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

&gt; Source/WebCore/dom/ExceptionOr.h:56
&gt; +    ReturnReferenceType&amp; releaseReturnValue();

At a later date I would like to explore a synonym just named returnValue() or even value() or possibly operator*() either for all cases or for the cases where the return type is a scalar. This could clean up some of the code using ExceptionOr. But for now, I am sticking with the releaseReturnValue() name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246358</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 00:06:51 -0700</bug_when>
    <thetext>Attachment 293396 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMBinding.h:288:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp&quot;
Total errors found: 1 in 41 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>1246368</commentid>
    <comment_count>4</comment_count>
      <attachid>293401</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-31 01:03:22 -0700</bug_when>
    <thetext>Created attachment 293401
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246371</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 01:05:36 -0700</bug_when>
    <thetext>Attachment 293401 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMBinding.h:288:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp&quot;
Total errors found: 1 in 41 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>1246440</commentid>
    <comment_count>6</comment_count>
      <attachid>293401</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 08:57:47 -0700</bug_when>
    <thetext>Comment on attachment 293401
Patch

Clearing flags on attachment: 293401

Committed r208145: &lt;http://trac.webkit.org/changeset/208145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246441</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 08:57:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293396</attachid>
            <date>2016-10-31 00:04:51 -0700</date>
            <delta_ts>2016-10-31 01:03:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164214-20161031000056.patch</filename>
            <type>text/plain</type>
            <size>72454</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ExMWNjOGMzOGQ4Yzk4
MGI2ZDhmZjc4MTkwMzc2Mzk3MTU4NTNiNS4uNjFmNGFiYzFhM2ZjOWViZDQ0MzIzNzVhMGYyZjg0
MzhlYzQ5YTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxNi0xMC0zMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDaGlsZE5vZGUgYW5k
IFBhcmVudE5vZGUgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbiwgYWRkIHN1cHBvcnQg
Zm9yIEV4Y2VwdGlvbk9yPFQmPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVPcHRpb25zKTogVXNlIEZldGNoSGVhZGVy
cyYgaW5zdGVhZCBvZgorICAgICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBmb3IgcmV0dXJuIHZhbHVl
LgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aCk6IERpdHRv
LgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0Lmg6IFVwZGF0ZWQgZm9yIGFi
b3ZlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKTogVXNlIFNvdXJj
ZUJ1ZmZlciYgaW5zdGVhZCBvZgorICAgICAgICBTb3VyY2VCdWZmZXIqIGZvciByZXR1cm4gdmFs
dWUuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oOiBVcGRhdGVk
IGZvciBhYm92ZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOiBBZGRl
ZCBvdmVybG9hZHMgb2YgY2hlY2tTZWN1cml0eUZvck5vZGUgc28KKyAgICAgICAgaXQgd29ya3Mg
d2l0aCBhIGZ1bmN0aW9uIHJldHVybmluZyBhIHJlZmVyZW5jZS4KKworICAgICAgICAqIGNzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Z2V0Q291bnRlclZhbHVlKTogVXNlIENvdW50ZXImIGluc3RlYWQgb2YKKyAgICAgICAgQ291
bnRlciogZm9yIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpnZXRSZWN0VmFsdWUpOiBVc2UgUmVjdCYgaW5zdGVhZCBvZgorICAgICAgICBSZWN0KiBm
b3IgcmV0dXJuIHZhbHVlLgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOiBVcGRh
dGVkIGZvciBhYm92ZS4KKworICAgICAgICAqIGRvbS9DaGlsZE5vZGUuaWRsOiBVc2Ugbm9uLWxl
Z2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cXVlcnlTZWxlY3Rvcik6IFVzZSBFeGNlcHRp
b25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cHJlcGVuZCk6IERpdHRvLgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZWxlY3Rv
clF1ZXJ5Rm9yU3RyaW5nKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dGFjaFNoYWRvdyk6IFJldHVybiBTaGFkb3dSb290
JiBpbnN0ZWFkIG9mCisgICAgICAgIFJlZjxTaGFkb3dSb290PiBzaW5jZSB0aGUgc2hhZG93IHJv
b3QgaXMgb3duZWQgYnkgdGhlIGVsZW1lbnQsIG5vdAorICAgICAgICB0aGUgY2FsbGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6bWF0Y2hlcyk6IFVwZGF0ZWQgZm9yIGNoYW5nZSB0byBt
YWtlIHRoZQorICAgICAgICBzZWxlY3RvclF1ZXJ5Rm9yU3RyaW5nIGZ1bmN0aW9uIHVzZSBFeGNl
cHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsb3Nlc3QpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHROb2RlRm9ySW5zZXJ0aW9uKTogUmV0dXJuIENvbnRhaW5l
ck5vZGUmIGluc3RlYWQgb2YKKyAgICAgICAgQ29udGFpbmVyTm9kZSouCisgICAgICAgIChXZWJD
b3JlOjpjb250ZXh0RWxlbWVudEZvckluc2VydGlvbik6IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAg
ICAgICAqIGRvbS9FbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAgICAgICAqIGRvbS9F
bGVtZW50LmlkbDogQ2hhbmdlZCByZXR1cm4gdHlwZSBmb3IgY2xvc2VzdCBhbmQgZm9yCisgICAg
ICAgIGluc2VydEFkamFjZW50RWxlbWVudCB0byBiZSBudWxsYWJsZSBzaW5jZSBib3RoIGNhbiBy
ZXR1cm4gbnVsbC4KKworICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOiBBZGRlZCBhIHNwZWNp
YWxpemF0aW9uIGZvciBFeGNlcHRpb25PcjxUJj4uCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSk6
IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmJlZm9yZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YWZ0ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnJlcGxhY2VXaXRoKTogRGl0dG8uCisgICAgICAgICogZG9tL05vZGUuaDogVXBk
YXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKworICAgICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDog
VXNlIG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OnF1ZXJ5QWxsKTogQ2hh
bmdlZCByZXR1cm4gdHlwZSB0byBSZWYuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1ZXJ5
Q2FjaGU6OmFkZCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVy
eS5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50OjpnZXRTVkdEb2N1bWVudCk6IFJldHVybgorICAgICAgICBEb2N1bWVudCYgaW5zdGVhZCBv
ZiBEb2N1bWVudCouCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaDogVXBk
YXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6
IFJldHVybiBUZXh0VHJhY2smCisgICAgICAgIGluc3RlYWQgb2YgUmVmPFRleHRUcmFjaz4uCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorCisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnRPZlNuYXBzaG90T3ZlcmxheSk6CisgICAg
ICAgIFVwZGF0ZWQgZm9yIG5ldyBleGNlcHRpb25zLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
cXVlcnlTZWxlY3Rvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnF1ZXJ5U2VsZWN0b3JBbGwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IpOiBEaXR0by4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5vZGVGaW5kZXI6OnBlcmZvcm1TZWFyY2gpOiBQdXQgYSBudWxsIGNoZWNrCisgICAgICAg
IGhlcmUgc28gY2FsbGVycyBkb24ndCBoYXZlIHRvIGRvIGl0LiBQYXNzIHJlZmVyZW5jZXMgdG8g
dGhlCisgICAgICAgIGluZGl2aWR1YWwgZnVuY3Rpb25zIHNpbmNlIHRoZSBwb2ludGVyIGNhbid0
IGJlIG51bGwuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFyY2hV
c2luZ0RPTVRyZWVUcmF2ZXJzYWwpOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSByZWZlcmVuY2Ug
YW5kIHN0cmVhbWxpbmVkIGNvZGUgYSBiaXQsIHVzaW5nCisgICAgICAgIGNvbnRhaW5zSWdub3Jp
bmdBU0NJSUNhc2UgaW5zdGVhZCBvZiBmaW5kSWdub3JpbmdDYXNlLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hlc0F0dHJpYnV0ZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hlc0VsZW1lbnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5vZGVGaW5kZXI6OnNlYXJjaFVzaW5nWFBhdGgp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5vZGVGaW5kZXI6OnNlYXJjaFVz
aW5nQ1NTU2VsZWN0b3JzKTogRGl0dG8uCisgICAgICAgIEFsc28gdXBkYXRlZCAgZm9yIG5ldyBl
eGNlcHRpb25zIGluIHF1ZXJ5U2VsZWN0b3JBbGwuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvck5vZGVGaW5kZXIuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisKKyAgICAgICAgKiBwYWdlL0Ny
eXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG86OndlYmtpdFN1YnRsZSk6IFJldHVy
biBXZWJLaXRTdWJ0bGVDcnlwdG8mCisgICAgICAgIGluc2V0YWQgb2YgV2ViS2l0U3VidGxlQ3J5
cHRvKi4KKyAgICAgICAgKiBwYWdlL0NyeXB0by5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKworICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6IFJlbW92ZWQgZGVjbGFyYXRpb25zIGZvciBmdW5j
dGlvbnMgYWxyZWFkeQorICAgICAgICByZW1vdmVkOiBlbnN1cmVTaGFkb3dSb290IGFuZCBjcmVh
dGVTaGFkb3dSb290LgorCiAyMDE2LTEwLTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZml4OiBDb3JyZWN0IENoYW5nZUxvZyBhZnRl
ciBteSBiYWQgbWVyZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggY2Y2YWU2MWQ5OTQ1NGJjMGI5OTAx
ODFlYjQ0YjJiMzMzNDI1ZGMzNS4uZWZkNmUxNDBlNmFjZjM2ZTFkYjI3YzgwNmM2ZTMxYzhkNTJj
ODJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEwLTMxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIENoaWxkTm9kZSBhbmQg
UGFyZW50Tm9kZSBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uLCBhZGQgc3VwcG9ydCBm
b3IgRXhjZXB0aW9uT3I8VCY+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIERPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbToKKyAgICAgICAgKC1bRE9N
Q1NTUHJpbWl0aXZlVmFsdWUgZ2V0Q291bnRlclZhbHVlXSk6IFVwZGF0ZWQgc2luY2UgcmV0dXJu
IHZhbHVlCisgICAgICAgIGlzIGEgcmVmZXJlbmNlIG5vdy4KKyAgICAgICAgKC1bRE9NQ1NTUHJp
bWl0aXZlVmFsdWUgZ2V0UmVjdFZhbHVlXSk6IERpdHRvLgorCisgICAgICAgICogRE9NL0RPTURv
Y3VtZW50Lm1tOgorICAgICAgICAoLVtET01Eb2N1bWVudCBxdWVyeVNlbGVjdG9yOl0pOiBVcGRh
dGVkIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgcXVlcnlTZWxl
Y3RvckFsbDpdKTogRGl0dG8uCisgICAgICAgICogRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW06
CisgICAgICAgICgtW0RPTURvY3VtZW50RnJhZ21lbnQgcXVlcnlTZWxlY3RvcjpdKTogRGl0dG8u
CisgICAgICAgICgtW0RPTURvY3VtZW50RnJhZ21lbnQgcXVlcnlTZWxlY3RvckFsbDpdKTogRGl0
dG8uCisgICAgICAgICogRE9NL0RPTUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUVsZW1lbnQg
cXVlcnlTZWxlY3RvcjpdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUVsZW1lbnQgcXVlcnlTZWxl
Y3RvckFsbDpdKTogRGl0dG8uCisKIDIwMTYtMTAtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFtZWROb2RlTWFwLCBhbmQgRE9NU3Ry
aW5nTWFwIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxNjc2
ZWE5NDE1MjE5YTU2NTA4YjAxNDcwZThiZTk1NjBkZmRkYTFmLi4xMWQ1ZDM0OTk3ZDRiMzYxMzYy
ZmUzZjgzNDgzY2Y2OGNiYzkxYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYt
MTAtMzEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgQ2hp
bGROb2RlIGFuZCBQYXJlbnROb2RlIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRpb24sIGFk
ZCBzdXBwb3J0IGZvciBFeGNlcHRpb25PcjxUJj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01Eb2N1bWVudC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2RvY3VtZW50
X3F1ZXJ5X3NlbGVjdG9yKTogVXBkYXRlZCBleGNlcHRpb24gaGFuZGxpbmcuCisgICAgICAgICh3
ZWJraXRfZG9tX2RvY3VtZW50X3F1ZXJ5X3NlbGVjdG9yX2FsbCk6IERpdHRvLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRG
cmFnbWVudC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2RvY3VtZW50X2ZyYWdtZW50X3F1ZXJ5
X3NlbGVjdG9yKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfZG9tX2RvY3VtZW50X2ZyYWdtZW50
X3F1ZXJ5X3NlbGVjdG9yX2FsbCk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudC5jcHA6CisgICAgICAgICh3ZWJr
aXRfZG9tX2VsZW1lbnRfcXVlcnlfc2VsZWN0b3IpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9k
b21fZWxlbWVudF9xdWVyeV9zZWxlY3Rvcl9hbGwpOiBEaXR0by4KKwogMjAxNi0xMC0zMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBFbGVtZW50LCBOYW1l
ZE5vZGVNYXAsIGFuZCBET01TdHJpbmdNYXAgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4
IDlhZmNjYjg3ZjdhNmQzNmYzNGE5OWEwZDRjNjBjOTU0MDcyYzQ3NmUuLjU1OTJiZDc1YjM1NWNl
MmUwOTdiZTk1YzcxYWM3Mjg3YjI4YjY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBt
ZXRob2RDYW5IYXZlQm9keShjb25zdCBGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCYgaW50
ZXJuYWxSZXF1ZQogICAgIHJldHVybiBpbnRlcm5hbFJlcXVlc3QucmVxdWVzdC5odHRwTWV0aG9k
KCkgIT0gIkdFVCIgJiYgaW50ZXJuYWxSZXF1ZXN0LnJlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJI
RUFEIjsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEZldGNoSGVhZGVycz4+IEZldGNoUmVxdWVzdDo6
aW5pdGlhbGl6ZU9wdGlvbnMoY29uc3QgRGljdGlvbmFyeSYgaW5pdCkKK0V4Y2VwdGlvbk9yPEZl
dGNoSGVhZGVycyY+IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZU9wdGlvbnMoY29uc3QgRGljdGlv
bmFyeSYgaW5pdCkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIApA
QCAtMjM3LDEwICsyMzcsMTAgQEAgRXhjZXB0aW9uT3I8UmVmPEZldGNoSGVhZGVycz4+IEZldGNo
UmVxdWVzdDo6aW5pdGlhbGl6ZU9wdGlvbnMoY29uc3QgRGljdGlvbmFyeSYKICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVGhlcmUgY2Fubm90
IGJlIGFuIGludGVncml0eSBpbiBuby1jb3JzIG1vZGUuIikgfTsKICAgICAgICAgbV9oZWFkZXJz
LT5zZXRHdWFyZChGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXF1ZXN0Tm9Db3JzKTsKICAgICB9Ci0g
ICAgcmV0dXJuIG1faGVhZGVycy5jb3B5UmVmKCk7CisgICAgcmV0dXJuIG1faGVhZGVycy5nZXQo
KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEZldGNoSGVhZGVycz4+IEZldGNoUmVxdWVzdDo6aW5p
dGlhbGl6ZVdpdGgoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IERpY3Rpb25hcnkmIGluaXQpCitF
eGNlcHRpb25PcjxGZXRjaEhlYWRlcnMmPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBEaWN0aW9uYXJ5JiBpbml0KQogewogICAgIEFTU0VSVChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIC8vIEZJWE1FOiBUaWdodGVuIHRoZSBVUkwg
cGFyc2luZyBhbGdvcml0aG0gYWNjb3JkaW5nIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8j
Y29uY2VwdC11cmwtcGFyc2VyLgpAQCAtMjU2LDcgKzI1Niw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxG
ZXRjaEhlYWRlcnM+PiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKGNvbnN0IFN0cmluZyYg
dXJsLCBjCiAgICAgcmV0dXJuIGluaXRpYWxpemVPcHRpb25zKGluaXQpOwogfQogCi1FeGNlcHRp
b25PcjxSZWY8RmV0Y2hIZWFkZXJzPj4gRmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aChGZXRj
aFJlcXVlc3QmIGlucHV0LCBjb25zdCBEaWN0aW9uYXJ5JiBpbml0KQorRXhjZXB0aW9uT3I8RmV0
Y2hIZWFkZXJzJj4gRmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aChGZXRjaFJlcXVlc3QmIGlu
cHV0LCBjb25zdCBEaWN0aW9uYXJ5JiBpbml0KQogewogICAgIGlmIChpbnB1dC5pc0Rpc3R1cmJl
ZE9yTG9ja2VkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24ge1R5cGVFcnJvciwgQVNDSUlM
aXRlcmFsKCJSZXF1ZXN0IGlucHV0IGlzIGRpc3R1cmJlZCBvciBsb2NrZWQuIikgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCmluZGV4IDBiNmNiNjhmYzBh
OWQyM2ZlMzFiNjAyY2QwYjhiM2NlNzc4OTgwMjAuLmI3NjI2NWE2NDFmMzEwZjQ3NTM0ODQ3Mzdm
MjQ0YTg2MWQxZWQ2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuaApAQCAtNDUsOCArNDUsOCBAQCBjbGFzcyBGZXRjaFJlcXVlc3QgZmluYWwgOiBwdWJs
aWMgRmV0Y2hCb2R5T3duZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXF1ZXN0
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwgTnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVh
dGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVxdWVzdCksIHsgfSkpOyB9CiAKLSAgICBFeGNlcHRp
b25PcjxSZWY8RmV0Y2hIZWFkZXJzPj4gaW5pdGlhbGl6ZVdpdGgoRmV0Y2hSZXF1ZXN0JiwgY29u
c3QgRGljdGlvbmFyeSYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaEhlYWRlcnM+PiBpbml0
aWFsaXplV2l0aChjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgRXhjZXB0
aW9uT3I8RmV0Y2hIZWFkZXJzJj4gaW5pdGlhbGl6ZVdpdGgoRmV0Y2hSZXF1ZXN0JiwgY29uc3Qg
RGljdGlvbmFyeSYpOworICAgIEV4Y2VwdGlvbk9yPEZldGNoSGVhZGVycyY+IGluaXRpYWxpemVX
aXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IERpY3Rpb25hcnkmKTsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRCb2R5KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBGZXRjaFJlcXVlc3Qq
KTsKIAogICAgIGNvbnN0IFN0cmluZyYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5h
bFJlcXVlc3QucmVxdWVzdC5odHRwTWV0aG9kKCk7IH0KQEAgLTk1LDcgKzk1LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBGZXRjaFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE9w
dGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgSW50ZXJuYWxSZXF1ZXN0
JiYpOwogCi0gICAgRXhjZXB0aW9uT3I8UmVmPEZldGNoSGVhZGVycz4+IGluaXRpYWxpemVPcHRp
b25zKGNvbnN0IERpY3Rpb25hcnkmKTsKKyAgICBFeGNlcHRpb25PcjxGZXRjaEhlYWRlcnMmPiBp
bml0aWFsaXplT3B0aW9ucyhjb25zdCBEaWN0aW9uYXJ5Jik7CiAKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDgwZTcyODRiMzA4MWQ5
ODljNzkxMzgxMWIyZjA0N2JhMzkzM2QxMWMuLmFmMTNlNDJhOGJkMDg4MTU2YTg2Y2M4NGY5N2E0
OWEzMDJmZjUzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwCkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6
c3RyZWFtRW5kZWRXaXRoRXJyb3IoT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3IpCiAg
ICAgfQogfQogCi1FeGNlcHRpb25PcjxTb3VyY2VCdWZmZXIqPiBNZWRpYVNvdXJjZTo6YWRkU291
cmNlQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkKK0V4Y2VwdGlvbk9yPFNvdXJjZUJ1ZmZlciY+
IE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAg
IExPRyhNZWRpYVNvdXJjZSwgIk1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoJXMpICVwIiwg
dHlwZS5hc2NpaSgpLmRhdGEoKSwgdGhpcyk7CiAKQEAgLTY2OCwxNCArNjY4LDE0IEBAIEV4Y2Vw
dGlvbk9yPFNvdXJjZUJ1ZmZlcio+IE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoY29uc3Qg
U3RyaW5nJiB0eXBlKQogICAgIC8vIOKGsyBTZXQgdGhlIG1vZGUgYXR0cmlidXRlIG9uIHRoZSBu
ZXcgb2JqZWN0IHRvICJzZWdtZW50cyIuCiAgICAgYnVmZmVyLT5zZXRNb2RlKHNob3VsZEdlbmVy
YXRlVGltZXN0YW1wcyA/IFNvdXJjZUJ1ZmZlcjo6QXBwZW5kTW9kZTo6U2VxdWVuY2UgOiBTb3Vy
Y2VCdWZmZXI6OkFwcGVuZE1vZGU6OlNlZ21lbnRzKTsKIAotICAgIFNvdXJjZUJ1ZmZlciogcmVz
dWx0ID0gYnVmZmVyLnB0cigpOworICAgIGF1dG8mIHJlc3VsdCA9IGJ1ZmZlci5nZXQoKTsKIAog
ICAgIC8vIDguIEFkZCB0aGUgbmV3IG9iamVjdCB0byBzb3VyY2VCdWZmZXJzIGFuZCBmaXJlIGEg
YWRkc291cmNlYnVmZmVyIG9uIHRoYXQgb2JqZWN0LgogICAgIG1fc291cmNlQnVmZmVycy0+YWRk
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgcmVnZW5lcmF0ZUFjdGl2ZVNvdXJjZUJ1ZmZlcnMoKTsK
IAogICAgIC8vIDkuIFJldHVybiB0aGUgbmV3IG9iamVjdCB0byB0aGUgY2FsbGVyLgotICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXImIGJ1
ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuaAppbmRleCAzN2YxMTNjZTA4OTBkZTNlYjVhNjU2YWIxZjllMjgwM2VhNDczOTEyLi41YTUz
MjBiMzVmNWFhMjYwODYxODc3MjUwNTM0NWViODBlN2Q0YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC04OSw3ICs4OSw3IEBA
IHB1YmxpYzoKIAogICAgIFNvdXJjZUJ1ZmZlckxpc3QqIHNvdXJjZUJ1ZmZlcnMoKSB7IHJldHVy
biBtX3NvdXJjZUJ1ZmZlcnMuZ2V0KCk7IH0KICAgICBTb3VyY2VCdWZmZXJMaXN0KiBhY3RpdmVT
b3VyY2VCdWZmZXJzKCkgeyByZXR1cm4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzLmdldCgpOyB9Ci0g
ICAgRXhjZXB0aW9uT3I8U291cmNlQnVmZmVyKj4gYWRkU291cmNlQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CisgICAgRXhjZXB0aW9uT3I8U291cmNlQnVmZmVyJj4gYWRkU291cmNlQnVmZmVy
KGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlU291cmNl
QnVmZmVyKFNvdXJjZUJ1ZmZlciYpOwogICAgIHN0YXRpYyBib29sIGlzVHlwZVN1cHBvcnRlZChj
b25zdCBTdHJpbmcmIHR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCmluZGV4IGExNWU4NjQ4YmQwYTMyYTM5NTJmYTIwMjViYmU2MzQzOTcwMjQ0YzkuLjE4
YWIzYzEwZjE3YzY2OTg5Yzg5ZDg1MWYyZjIxODllZjJhZTQzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0yODUsOCArMjg1LDEwIEBAIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGFzSXRlcmF0b3JNZXRob2QoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpOwogCiBlbnVtIFNlY3VyaXR5UmVwb3J0aW5nT3B0aW9uIHsgRG9Ob3RSZXBvcnRTZWN1cml0
eUVycm9yLCBMb2dTZWN1cml0eUVycm9yLCBUaHJvd1NlY3VyaXR5RXJyb3IgfTsKIG5hbWVzcGFj
ZSBCaW5kaW5nU2VjdXJpdHkgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQqIGNoZWNrU2Vj
dXJpdHlGb3JOb2RlKEpTQzo6RXhlY1N0YXRlJiwgVCYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQqIGNoZWNrU2VjdXJpdHlGb3JOb2RlKEpTQzo6RXhlY1N0YXRlJiwgVCopOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IEV4Y2VwdGlvbk9yPFQqPiBjaGVja1NlY3VyaXR5Rm9yTm9kZShK
U0M6OkV4ZWNTdGF0ZSYsIEV4Y2VwdGlvbk9yPFQqPiYmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBFeGNlcHRpb25PcjxUKj4gY2hlY2tTZWN1cml0eUZvck5vZGUoSlNDOjpFeGVjU3RhdGUm
LCBFeGNlcHRpb25PcjxUJj4mJik7CiAgICAgYm9vbCBzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2lu
ZG93KEpTQzo6RXhlY1N0YXRlKiwgRE9NV2luZG93JiwgU2VjdXJpdHlSZXBvcnRpbmdPcHRpb24g
PSBMb2dTZWN1cml0eUVycm9yKTsKICAgICBib29sIHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5k
b3coSlNDOjpFeGVjU3RhdGUmLCBET01XaW5kb3cmLCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIGJv
b2wgc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqLCBTZWN1
cml0eVJlcG9ydGluZ09wdGlvbiA9IExvZ1NlY3VyaXR5RXJyb3IpOwpAQCAtNzc0LDYgKzc3Niwx
MSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNy
ZWF0ZWQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVk
KCZzdGF0ZSwgJmdsb2JhbE9iamVjdCwgdmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOwogfQog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogQmluZGluZ1NlY3VyaXR5OjpjaGVja1Nl
Y3VyaXR5Rm9yTm9kZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFQmIG5vZGUpCit7CisgICAgcmV0
dXJuIHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCAmbm9kZSkgPyAmbm9kZSA6IG51bGxw
dHI7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBCaW5kaW5nU2VjdXJpdHk6
OmNoZWNrU2VjdXJpdHlGb3JOb2RlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVCogbm9kZSkKIHsK
ICAgICByZXR1cm4gc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIG5vZGUpID8gbm9kZSA6
IG51bGxwdHI7CkBAIC03ODIsNyArNzg5LDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBUKiBCaW5kaW5nU2VjdXJpdHk6OmNoZWNrU2VjdXJpdHlGb3JOb2RlKEpTQzo6RXhlY1N0CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgRXhjZXB0aW9uT3I8VCo+IEJpbmRpbmdTZWN1cml0
eTo6Y2hlY2tTZWN1cml0eUZvck5vZGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBFeGNlcHRpb25P
cjxUKj4mJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAg
IHJldHVybiBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLnJlbGVhc2VFeGNl
cHRpb24oKTsKKyAgICByZXR1cm4gY2hlY2tTZWN1cml0eUZvck5vZGUoc3RhdGUsIHZhbHVlLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEV4
Y2VwdGlvbk9yPFQqPiBCaW5kaW5nU2VjdXJpdHk6OmNoZWNrU2VjdXJpdHlGb3JOb2RlKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgRXhjZXB0aW9uT3I8VCY+JiYgdmFsdWUpCit7CisgICAgaWYgKHZh
bHVlLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZUV4Y2VwdGlv
bigpOwogICAgIHJldHVybiBjaGVja1NlY3VyaXR5Rm9yTm9kZShzdGF0ZSwgdmFsdWUucmVsZWFz
ZVJldHVyblZhbHVlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcAppbmRleCA0OTJjNzU0N2U4ODI5MmFkNGQ5MWE4MGQ2MmM5MGVlOWI5M2ExYmQzLi42MjFm
Y2U4MmU1YmU2M2U1MjBjZmNhMTE0NmZmYWVlY2EwYjA1MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTk2MiwxOCArOTYyLDE4IEBAIFN0cmluZyBDU1NQ
cmltaXRpdmVWYWx1ZTo6c3RyaW5nVmFsdWUoKSBjb25zdAogICAgIH0KIH0KIAotRXhjZXB0aW9u
T3I8Q291bnRlcio+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUoKSBjb25zdAor
RXhjZXB0aW9uT3I8Q291bnRlciY+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUo
KSBjb25zdAogewogICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19DT1VOVEVSKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NFU1NfRVJSIH07Ci0gICAgcmV0
dXJuIG1fdmFsdWUuY291bnRlcjsKKyAgICByZXR1cm4gKm1fdmFsdWUuY291bnRlcjsKIH0KIAot
RXhjZXB0aW9uT3I8UmVjdCo+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSZWN0VmFsdWUoKSBjb25z
dAorRXhjZXB0aW9uT3I8UmVjdCY+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSZWN0VmFsdWUoKSBj
b25zdAogewogICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SRUNUKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NFU1NfRVJSIH07Ci0gICAgcmV0dXJuIG1f
dmFsdWUucmVjdDsKKyAgICByZXR1cm4gKm1fdmFsdWUucmVjdDsKIH0KIAogRXhjZXB0aW9uT3I8
UmVmPFJHQkNvbG9yPj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBlNjU1YTFiNWRmNGQ0
ZDE5OGRlODAwMDcyNmUwYWUwNzZhOWQ0ZTkzLi5mMWM4YWVhMDAyZWMyNzcyMDhmNmQ4NjQ4ZGU0
ODUzYjY3MjZjNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAt
MjUxLDggKzI1MSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjxm
bG9hdD4gZ2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U3RyaW5nVmFsdWUodW5zaWduZWQg
c2hvcnQgc3RyaW5nVHlwZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5nPiBnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPENvdW50ZXIqPiBnZXRDb3VudGVyVmFsdWUoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWN0Kj4gZ2V0UmVjdFZhbHVl
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8Q291bnRlciY+IGdldENv
dW50ZXJWYWx1ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlY3Qm
PiBnZXRSZWN0VmFsdWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxS
ZWY8UkdCQ29sb3I+PiBnZXRSR0JDb2xvclZhbHVlKCkgY29uc3Q7CiAKICAgICBkb3VibGUgY29t
cHV0ZURlZ3JlZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGls
ZE5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKaW5kZXggZmM1ZDg1
ZTMzNTMzZTE1YmMxOTI2MjIzNDUxZGFhZjc5OThiNTc0YS4uNTRmNzBhMzQxM2I3NzI2OGJlYzg5
M2JlNWNlMTZkYmQzNTBjYTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxk
Tm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKQEAgLTIyLDgg
KzIyLDggQEAKIFsKICAgICBOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIENoaWxkTm9k
ZSB7Ci0gICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlv
bl0gdm9pZCBiZWZvcmUoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgW0NFUmVh
Y3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBhZnRlcigo
Tm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFi
bGUsIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHJlcGxhY2VXaXRoKChOb2RlIG9yIERP
TVN0cmluZykuLi4gbm9kZXMpOworICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwor
ICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWZ0
ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBVbnNj
b3BhYmxlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01T
dHJpbmcpLi4uIG5vZGVzKTsKICAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93
RXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcAppbmRleCA4NWYwYWYyYmUwMmUxYjdhMWMyNzhkMjkyN2ZlZTlmNmUxNGMxOWE0Li44NzYw
YmFlMzBiZDk2ZGYxYTI0ODdlNjcwMjg0ZjMzZDgxODQzYWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCkBAIC04MDksMTggKzgwOSwyMCBAQCB2b2lkIENvbnRhaW5lck5vZGU6
OnVwZGF0ZVRyZWVBZnRlckluc2VydGlvbihOb2RlJiBjaGlsZCkKICAgICBkaXNwYXRjaENoaWxk
SW5zZXJ0aW9uRXZlbnRzKGNoaWxkKTsKIH0KIAotRWxlbWVudCogQ29udGFpbmVyTm9kZTo6cXVl
cnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYgZWMpCitF
eGNlcHRpb25PcjxFbGVtZW50Kj4gQ29udGFpbmVyTm9kZTo6cXVlcnlTZWxlY3Rvcihjb25zdCBT
dHJpbmcmIHNlbGVjdG9ycykKIHsKLSAgICBpZiAoU2VsZWN0b3JRdWVyeSogc2VsZWN0b3JRdWVy
eSA9IGRvY3VtZW50KCkuc2VsZWN0b3JRdWVyeUZvclN0cmluZyhzZWxlY3RvcnMsIGVjKSkKLSAg
ICAgICAgcmV0dXJuIHNlbGVjdG9yUXVlcnktPnF1ZXJ5Rmlyc3QoKnRoaXMpOwotICAgIHJldHVy
biBudWxscHRyOworICAgIGF1dG8gcXVlcnkgPSBkb2N1bWVudCgpLnNlbGVjdG9yUXVlcnlGb3JT
dHJpbmcoc2VsZWN0b3JzKTsKKyAgICBpZiAocXVlcnkuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBxdWVyeS5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgcmV0dXJuIHF1ZXJ5LnJlbGVh
c2VSZXR1cm5WYWx1ZSgpLnF1ZXJ5Rmlyc3QoKnRoaXMpOwogfQogCi1SZWZQdHI8Tm9kZUxpc3Q+
IENvbnRhaW5lck5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPE5vZGVMaXN0Pj4gQ29udGFpbmVy
Tm9kZTo6cXVlcnlTZWxlY3RvckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycykKIHsKLSAgICBp
ZiAoU2VsZWN0b3JRdWVyeSogc2VsZWN0b3JRdWVyeSA9IGRvY3VtZW50KCkuc2VsZWN0b3JRdWVy
eUZvclN0cmluZyhzZWxlY3RvcnMsIGVjKSkKLSAgICAgICAgcmV0dXJuIHNlbGVjdG9yUXVlcnkt
PnF1ZXJ5QWxsKCp0aGlzKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHF1ZXJ5ID0g
ZG9jdW1lbnQoKS5zZWxlY3RvclF1ZXJ5Rm9yU3RyaW5nKHNlbGVjdG9ycyk7CisgICAgaWYgKHF1
ZXJ5Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcXVlcnkucmVsZWFzZUV4Y2VwdGlv
bigpOworICAgIHJldHVybiBxdWVyeS5yZWxlYXNlUmV0dXJuVmFsdWUoKS5xdWVyeUFsbCgqdGhp
cyk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6Z2V0RWxlbWVudHNC
eVRhZ05hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBxdWFsaWZpZWROYW1lKQpAQCAtODc4LDIyICs4
ODAsMzggQEAgdW5zaWduZWQgQ29udGFpbmVyTm9kZTo6Y2hpbGRFbGVtZW50Q291bnQoKSBjb25z
dAogICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKGNoaWxkcmVuLmJlZ2luKCksIGNoaWxkcmVuLmVu
ZCgpKTsKIH0KIAotdm9pZCBDb250YWluZXJOb2RlOjphcHBlbmQoVmVjdG9yPE5vZGVPclN0cmlu
Zz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8
dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgdmVjdG9y
KQogewotICAgIFJlZlB0cjxOb2RlPiBub2RlID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05v
ZGUoV1RGTW92ZShub2RlT3JTdHJpbmdWZWN0b3IpLCBlYyk7Ci0gICAgaWYgKGVjIHx8ICFub2Rl
KQotICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSBjb252ZXJ0Tm9kZXNPclN0cmlu
Z3NJbnRvTm9kZShXVEZNb3ZlKHZlY3RvcikpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0
byBub2RlID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKIAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGFwcGVu
ZENoaWxkKCpub2RlLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgZWMgfTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIENvbnRhaW5lck5vZGU6OnByZXBl
bmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6cHJlcGVuZChWZWN0b3I8
Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKIHsKLSAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGNvbnZl
cnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFdURk1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSwgZWMp
OwotICAgIGlmIChlYyB8fCAhbm9kZSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0
ID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKTsKKworICAgIGF1dG8gbm9kZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiB7IH07CiAKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBpbnNlcnRCZWZvcmUoKm5vZGUsIGZpcnN0Q2hpbGQoKSwgZWMpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IGVjIH07CisgICAgcmV0dXJu
IHsgfTsKIH0KIAogSFRNTENvbGxlY3Rpb24qIENvbnRhaW5lck5vZGU6OmNhY2hlZEhUTUxDb2xs
ZWN0aW9uKENvbGxlY3Rpb25UeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApp
bmRleCBhNjVmNjRhYzIyMmY2NDYzMmEyMDVlOTY0NGRlYjY0ZmUyOTAwNGQwLi41NWVlZWNiNTM4
NTgyYWMxYTljOThkNzU1M2I3NWEzMTZkZjRjMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgKQEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogICAgIC8vIFRoaXMgZ2l2ZXMgdGhlIGFy
ZWEgd2l0aGluIHdoaWNoIGV2ZW50cyBtYXkgZ2V0IGhhbmRsZWQgYnkgYSBoYW5kZXIgcmVnaXN0
ZXJlZCBvbiB0aGlzIG5vZGUuCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGFic29sdXRlRXZlbnRI
YW5kbGVyQm91bmRzKGJvb2wmIC8qIGluY2x1ZGVzRml4ZWRQb3NpdGlvbkVsZW1lbnRzICovKSB7
IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIHF1
ZXJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Tm9kZUxpc3Q+IHF1ZXJ5U2VsZWN0b3JBbGwoY29uc3Qg
U3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBF
eGNlcHRpb25PcjxFbGVtZW50Kj4gcXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9y
cyk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPE5vZGVMaXN0Pj4gcXVlcnlT
ZWxlY3RvckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycyk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8SFRNTENvbGxlY3Rpb24+IGdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0b21pY1N0
cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxIVE1MQ29sbGVjdGlvbj4gZ2V0RWxlbWVu
dHNCeVRhZ05hbWVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUpOwpAQCAtMTAwLDggKzEwMCw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBFbGVtZW50KiBmaXJzdEVsZW1lbnRDaGlsZCgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIEVsZW1lbnQqIGxhc3RFbGVtZW50Q2hpbGQoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB1bnNpZ25lZCBjaGlsZEVsZW1lbnRDb3VudCgpIGNvbnN0OwotICAgIHZvaWQg
YXBwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHByZXBlbmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBwcmVwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOwogCiAgICAgYm9v
bCBlbnN1cmVQcmVJbnNlcnRpb25WYWxpZGl0eShOb2RlJiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hp
bGQsIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWYzODI5
MGFlM2E1N2M0NDViNzYzYTBhZTU3YWNiMzM3OTFkZDFmNC4uOGE2ZmY1YjMxNGYxNmU0MGM3M2Yx
NWMwYjdkMGM3M2ZkNTRmMGU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03NjIsMTYg
Kzc2MiwxMyBAQCBIVE1MSW1hZ2VFbGVtZW50KiBEb2N1bWVudDo6aW1hZ2VFbGVtZW50QnlDYXNl
Rm9sZGVkVXNlbWFwKGNvbnN0IEF0b21pY1N0cmluZ0ltcAogICAgIHJldHVybiBtX2ltYWdlc0J5
VXNlbWFwLmdldEVsZW1lbnRCeUNhc2VGb2xkZWRVc2VtYXAobmFtZSwgKnRoaXMpOwogfQogCi1T
ZWxlY3RvclF1ZXJ5KiBEb2N1bWVudDo6c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJp
bmcmIHNlbGVjdG9yU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFNlbGVj
dG9yUXVlcnkmPiBEb2N1bWVudDo6c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJpbmcm
IHNlbGVjdG9yU3RyaW5nKQogewotICAgIGlmIChzZWxlY3RvclN0cmluZy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KKyAgICBpZiAoc2VsZWN0b3JTdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogICAgIGlmICghbV9zZWxlY3RvclF1ZXJ5Q2FjaGUpCiAg
ICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTZWxlY3RvclF1
ZXJ5Q2FjaGU+KCk7Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3JRdWVyeUNhY2hlLT5hZGQoc2VsZWN0
b3JTdHJpbmcsICp0aGlzLCBlYyk7CisgICAgcmV0dXJuIG1fc2VsZWN0b3JRdWVyeUNhY2hlLT5h
ZGQoc2VsZWN0b3JTdHJpbmcsICp0aGlzKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6Y2xlYXJTZWxl
Y3RvclF1ZXJ5Q2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAwN2MxMmRiYjE1ZjYwMTRh
ZDc5YmY4N2ZjODNlZDg2NTkyMDVjYWVlLi44OTg4ZTMzMjViZDc0YWQzMTg0ODNkZGYzZDBiNDZk
ZjAwM2M4MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZUltYWdlRWxlbWVudEJ5Q2FzZUZvbGRlZFVzZW1hcChjb25zdCBB
dG9taWNTdHJpbmdJbXBsJiwgSFRNTEltYWdlRWxlbWVudCYpOwogICAgIEhUTUxJbWFnZUVsZW1l
bnQqIGltYWdlRWxlbWVudEJ5Q2FzZUZvbGRlZFVzZW1hcChjb25zdCBBdG9taWNTdHJpbmdJbXBs
JikgY29uc3Q7CiAKLSAgICBTZWxlY3RvclF1ZXJ5KiBzZWxlY3RvclF1ZXJ5Rm9yU3RyaW5nKGNv
bnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25PcjxTZWxlY3RvclF1
ZXJ5Jj4gc2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNs
ZWFyU2VsZWN0b3JRdWVyeUNhY2hlKCk7CiAKICAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0
ZXMgZm9yIERvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggM2M3YzhkMTViNGQxM2Q1
MThjYjM4ZGZiOWNlYjQxNTJjZTY2ZTc2YS4uOWFjYjFmNDBjNTc5MTBmODlkODRmZWE1NTk5MGEz
MTdmZGRmMjA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTgzMiw3ICsxODMyLDcgQEAg
c3RhdGljIGJvb2wgY2FuQXR0YWNoQXV0aG9yU2hhZG93Um9vdChjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogICAgIHJldHVybiB0YWdOYW1lcy5nZXQoKS5jb250YWlucyhsb2NhbE5hbWUpIHx8IERv
Y3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGxvY2FsTmFtZSkgPT0gQ3VzdG9tRWxl
bWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZDsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFNo
YWRvd1Jvb3Q+PiBFbGVtZW50OjphdHRhY2hTaGFkb3coY29uc3QgU2hhZG93Um9vdEluaXQmIGlu
aXQpCitFeGNlcHRpb25PcjxTaGFkb3dSb290Jj4gRWxlbWVudDo6YXR0YWNoU2hhZG93KGNvbnN0
IFNoYWRvd1Jvb3RJbml0JiBpbml0KQogewogICAgIGlmICghY2FuQXR0YWNoQXV0aG9yU2hhZG93
Um9vdCgqdGhpcykpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VS
UiB9OwpAQCAtMTg0MSw4ICsxODQxLDkgQEAgRXhjZXB0aW9uT3I8UmVmPFNoYWRvd1Jvb3Q+PiBF
bGVtZW50OjphdHRhY2hTaGFkb3coY29uc3QgU2hhZG93Um9vdEluaXQmIGluaXQpCiAgICAgaWYg
KGluaXQubW9kZSA9PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAgICAgYXV0byBzaGFkb3cgPSBTaGFkb3dSb290Ojpj
cmVhdGUoZG9jdW1lbnQoKSwgaW5pdC5tb2RlKTsKLSAgICBhZGRTaGFkb3dSb290KHNoYWRvdy5j
b3B5UmVmKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKHNoYWRvdyk7CisgICAgYXV0byYgcmVzdWx0
ID0gc2hhZG93LmdldCgpOworICAgIGFkZFNoYWRvd1Jvb3QoV1RGTW92ZShzaGFkb3cpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBTaGFkb3dSb290KiBFbGVtZW50OjpzaGFkb3dSb290Rm9y
QmluZGluZ3MoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKSBjb25zdApAQCAtMjk1NywyMiArMjk1OCwx
OCBAQCBib29sIEVsZW1lbnQ6Om1hdGNoZXNEZWZhdWx0UHNldWRvQ2xhc3MoKSBjb25zdAogCiBF
eGNlcHRpb25Pcjxib29sPiBFbGVtZW50OjptYXRjaGVzKGNvbnN0IFN0cmluZyYgc2VsZWN0b3Ip
CiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byogcXVlcnkgPSBkb2N1bWVu
dCgpLnNlbGVjdG9yUXVlcnlGb3JTdHJpbmcoc2VsZWN0b3IsIGVjKTsKLSAgICBpZiAoZWMpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBlYyB9OwotICAgIHJldHVybiBxdWVyeSAmJiBxdWVy
eS0+bWF0Y2hlcygqdGhpcyk7CisgICAgYXV0byBxdWVyeSA9IGRvY3VtZW50KCkuc2VsZWN0b3JR
dWVyeUZvclN0cmluZyhzZWxlY3Rvcik7CisgICAgaWYgKHF1ZXJ5Lmhhc0V4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gcXVlcnkucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIHJldHVybiBxdWVy
eS5yZWxlYXNlUmV0dXJuVmFsdWUoKS5tYXRjaGVzKCp0aGlzKTsKIH0KIAogRXhjZXB0aW9uT3I8
RWxlbWVudCo+IEVsZW1lbnQ6OmNsb3Nlc3QoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKIHsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvKiBxdWVyeSA9IGRvY3VtZW50KCkuc2Vs
ZWN0b3JRdWVyeUZvclN0cmluZyhzZWxlY3RvciwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IGVjIH07Ci0gICAgaWYgKCFxdWVyeSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHF1ZXJ5LT5jbG9zZXN0KCp0aGlzKTsKKyAgICBhdXRvIHF1
ZXJ5ID0gZG9jdW1lbnQoKS5zZWxlY3RvclF1ZXJ5Rm9yU3RyaW5nKHNlbGVjdG9yKTsKKyAgICBp
ZiAocXVlcnkuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBxdWVyeS5yZWxlYXNlRXhj
ZXB0aW9uKCk7CisgICAgcmV0dXJuIHF1ZXJ5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLmNsb3Nlc3Qo
KnRoaXMpOwogfQogCiBib29sIEVsZW1lbnQ6OnNob3VsZEFwcGVhckluZGV0ZXJtaW5hdGUoKSBj
b25zdApAQCAtMzcxMiwxNiArMzcwOSwxNiBAQCBFeGNlcHRpb25PcjxFbGVtZW50Kj4gRWxlbWVu
dDo6aW5zZXJ0QWRqYWNlbnRFbGVtZW50KGNvbnN0IFN0cmluZyYgd2hlcmUsIEVsZW1lbgogfQog
CiAvLyBTdGVwIDEgb2YgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5nLyNkb20tZWxl
bWVudC1pbnNlcnRhZGphY2VudGh0bWwuCi1zdGF0aWMgRXhjZXB0aW9uT3I8Q29udGFpbmVyTm9k
ZSo+IGNvbnRleHROb2RlRm9ySW5zZXJ0aW9uKGNvbnN0IFN0cmluZyYgd2hlcmUsIEVsZW1lbnQm
IGVsZW1lbnQpCitzdGF0aWMgRXhjZXB0aW9uT3I8Q29udGFpbmVyTm9kZSY+IGNvbnRleHROb2Rl
Rm9ySW5zZXJ0aW9uKGNvbnN0IFN0cmluZyYgd2hlcmUsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHdoZXJlLCAiYmVmb3JlYmVnaW4i
KSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh3aGVyZSwgImFmdGVyZW5kIikpIHsK
ICAgICAgICAgYXV0byogcGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKCk7CiAgICAgICAgIGlm
ICghcGFyZW50IHx8IGlzPERvY3VtZW50PigqcGFyZW50KSkKICAgICAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgfTsKLSAgICAgICAgcmV0dXJu
IHBhcmVudDsKKyAgICAgICAgcmV0dXJuICpwYXJlbnQ7CiAgICAgfQogICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh3aGVyZSwgImFmdGVyYmVnaW4iKSB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh3aGVyZSwgImJlZm9yZWVuZCIpKQotICAgICAgICByZXR1cm4g
JmVsZW1lbnQ7CisgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgIHJldHVybiBFeGNlcHRpb24g
eyBTWU5UQVhfRVJSIH07CiB9CiAKQEAgLTM3MzEsNyArMzcyOCw3IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8RWxlbWVudD4+IGNvbnRleHRFbGVtZW50Rm9ySW5zZXJ0aW9uKGNvbnN0IFN0cmlu
ZyYgd2hlcmUsCiAgICAgYXV0byBjb250ZXh0Tm9kZVJlc3VsdCA9IGNvbnRleHROb2RlRm9ySW5z
ZXJ0aW9uKHdoZXJlLCBlbGVtZW50KTsKICAgICBpZiAoY29udGV4dE5vZGVSZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjb250ZXh0Tm9kZVJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCk7Ci0gICAgYXV0byYgY29udGV4dE5vZGUgPSAqY29udGV4dE5vZGVSZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCk7CisgICAgYXV0byYgY29udGV4dE5vZGUgPSBjb250ZXh0Tm9kZVJlc3Vs
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICBpZiAoIWlzPEVsZW1lbnQ+KGNvbnRleHROb2Rl
KSB8fCAoY29udGV4dE5vZGUuZG9jdW1lbnQoKS5pc0hUTUxEb2N1bWVudCgpICYmIGlzPEhUTUxI
dG1sRWxlbWVudD4oY29udGV4dE5vZGUpKSkKICAgICAgICAgcmV0dXJuIFJlZjxFbGVtZW50PiB7
IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKGNvbnRleHROb2RlLmRvY3VtZW50KCkpIH07CiAgICAg
cmV0dXJuIFJlZjxFbGVtZW50PiB7IGRvd25jYXN0PEVsZW1lbnQ+KGNvbnRleHROb2RlKSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggN2RjYjJmODcxMWI4ZTVmNzZlNjJlZmRhZWYzOTdkODBmMDQ4
M2Y2NC4uZGRhOGJkYTQyOGEzMDdkZWEyOGM2ZTA4YzU5MTVmY2ZlNGExODQyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCkBAIC0yNzMsNyArMjczLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBTaGFkb3dS
b290SW5pdCB7CiAgICAgICAgIFNoYWRvd1Jvb3RNb2RlIG1vZGU7CiAgICAgfTsKLSAgICBFeGNl
cHRpb25PcjxSZWY8U2hhZG93Um9vdD4+IGF0dGFjaFNoYWRvdyhjb25zdCBTaGFkb3dSb290SW5p
dCYpOworICAgIEV4Y2VwdGlvbk9yPFNoYWRvd1Jvb3QmPiBhdHRhY2hTaGFkb3coY29uc3QgU2hh
ZG93Um9vdEluaXQmKTsKIAogICAgIFNoYWRvd1Jvb3QqIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFkb3dSb290JiBlbnN1cmVVc2VyQWdlbnRTaGFk
b3dSb290KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggZTQyZDJkNGQ4MWYyY2JjMjViYjYx
N2E4ZjZkMzAyNmFmNWJjODRlOC4uNzA1NjE3MzhiOTc0OWE4ZDc0YTBmMTdjYTYzYTdmOGZmMTk1
ZTFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMTA0LDcgKzEwNCw3IEBACiAgICAgW1B1
dEZvcndhcmRzPXZhbHVlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NVG9rZW5MaXN0IGNsYXNzTGlz
dDsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBtYXRjaGVzKERPTVN0cmluZyBz
ZWxlY3RvcnMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRWxlbWVudCBjbG9zZXN0KERPTVN0
cmluZyBzZWxlY3RvcnMpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRWxlbWVudD8gY2xvc2Vz
dChET01TdHJpbmcgc2VsZWN0b3JzKTsKICAgICBbSW1wbGVtZW50ZWRBcz1tYXRjaGVzLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiB3ZWJraXRNYXRjaGVzU2VsZWN0b3IoRE9NU3RyaW5nIHNl
bGVjdG9ycyk7CiAKICAgICAvLyBDU1NPTSBWaWV3IE1vZHVsZSBBUEkKQEAgLTEyNCw3ICsxMjQs
NyBAQAogICAgIFtDRVJlYWN0aW9ucywgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB1aWFj
dGlvbnM7CiAjZW5kaWYKIAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEVs
ZW1lbnQgaW5zZXJ0QWRqYWNlbnRFbGVtZW50KERPTVN0cmluZyB3aGVyZSwgRWxlbWVudCBlbGVt
ZW50KTsKKyAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBFbGVtZW50PyBpbnNl
cnRBZGphY2VudEVsZW1lbnQoRE9NU3RyaW5nIHdoZXJlLCBFbGVtZW50IGVsZW1lbnQpOwogICAg
IFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0QWRqYWNlbnRIVE1M
KERPTVN0cmluZyB3aGVyZSwgRE9NU3RyaW5nIGh0bWwpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBpbnNlcnRBZGphY2VudFRleHQoRE9NU3RyaW5nIHdoZXJlLCBET01TdHJpbmcgdGV4
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKaW5kZXggMmQxNDE5ZjNiYjViZTQ5OGMwYjE1
NWM4MjBjNWU0YjM0MmQyY2M5Zi4uNzU3YTg0NWZiZGI5NDY4OWIwMDFiY2I2YjRkM2UwMmJhMDVl
NmNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTQ2LDYgKzQ2LDE5IEBAIHByaXZh
dGU6CiAgICAgVmFyaWFudDxFeGNlcHRpb24sIFJldHVyblR5cGU+IG1fdmFsdWU7CiB9OwogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5SZWZlcmVuY2VUeXBlPiBjbGFzcyBFeGNlcHRpb25PcjxS
ZXR1cm5SZWZlcmVuY2VUeXBlJj4geworcHVibGljOgorICAgIEV4Y2VwdGlvbk9yKEV4Y2VwdGlv
biYmKTsKKyAgICBFeGNlcHRpb25PcihSZXR1cm5SZWZlcmVuY2VUeXBlJik7CisKKyAgICBib29s
IGhhc0V4Y2VwdGlvbigpIGNvbnN0OworICAgIEV4Y2VwdGlvbiYmIHJlbGVhc2VFeGNlcHRpb24o
KTsKKyAgICBSZXR1cm5SZWZlcmVuY2VUeXBlJiByZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworcHJp
dmF0ZToKKyAgICBFeGNlcHRpb25PcjxSZXR1cm5SZWZlcmVuY2VUeXBlKj4gbV92YWx1ZTsKK307
CisKIHRlbXBsYXRlPD4gY2xhc3MgRXhjZXB0aW9uT3I8dm9pZD4gewogcHVibGljOgogICAgIEV4
Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmKTsKQEAgLTg4LDYgKzEwMSwzMSBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgUmV0dXJuVHlwZSYmIEV4Y2VwdGlvbk9yPFJldHVyblR5
cGU+OjpyZWxlYQogICAgIHJldHVybiBXVEY6OmdldDxSZXR1cm5UeXBlPihXVEZNb3ZlKG1fdmFs
dWUpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuUmVmZXJlbmNlVHlwZT4gaW5saW5l
IEV4Y2VwdGlvbk9yPFJldHVyblJlZmVyZW5jZVR5cGUmPjo6RXhjZXB0aW9uT3IoRXhjZXB0aW9u
JiYgZXhjZXB0aW9uKQorICAgIDogbV92YWx1ZShXVEZNb3ZlKGV4Y2VwdGlvbikpCit7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFJldHVyblJlZmVyZW5jZVR5cGU+IGlubGluZSBFeGNlcHRpb25P
cjxSZXR1cm5SZWZlcmVuY2VUeXBlJj46OkV4Y2VwdGlvbk9yKFJldHVyblJlZmVyZW5jZVR5cGUm
IHJldHVyblZhbHVlKQorICAgIDogbV92YWx1ZSgmcmV0dXJuVmFsdWUpCit7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFJldHVyblJlZmVyZW5jZVR5cGU+IGlubGluZSBib29sIEV4Y2VwdGlvbk9y
PFJldHVyblJlZmVyZW5jZVR5cGUmPjo6aGFzRXhjZXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV92YWx1ZS5oYXNFeGNlcHRpb24oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJu
UmVmZXJlbmNlVHlwZT4gaW5saW5lIEV4Y2VwdGlvbiYmIEV4Y2VwdGlvbk9yPFJldHVyblJlZmVy
ZW5jZVR5cGUmPjo6cmVsZWFzZUV4Y2VwdGlvbigpCit7CisgICAgcmV0dXJuIG1fdmFsdWUucmVs
ZWFzZUV4Y2VwdGlvbigpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5SZWZlcmVuY2VU
eXBlPiBpbmxpbmUgUmV0dXJuUmVmZXJlbmNlVHlwZSYgRXhjZXB0aW9uT3I8UmV0dXJuUmVmZXJl
bmNlVHlwZSY+OjpyZWxlYXNlUmV0dXJuVmFsdWUoKQoreworICAgIHJldHVybiAqbV92YWx1ZS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKK30KKwogaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+OjpFeGNl
cHRpb25PcihFeGNlcHRpb24mJiBleGNlcHRpb24pCiAgICAgOiBtX2V4Y2VwdGlvbihXVEZNb3Zl
KGV4Y2VwdGlvbikpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMTQ3MDFiNDlhNWI2YzY2YmMzNGU5
YzU2YzJmNDA4Yjc5ZjM5MjlhNi4uNjcwYzU3N2Y3NTEwZWY2MGIwYjFlOTA2NjkwNzVmNmE3ZjMx
MDlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIHN0YXRpYyBSZWZQdHI8
Tm9kZT4gZmlyc3RGb2xsb3dpbmdTaWJsaW5nTm90SW5Ob2RlU2V0KE5vZGUmIGNvbnRleHQsIGNv
bnN0IEhhc2hTCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxOb2RlPiBOb2RlOjpj
b252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVP
clN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxSZWZQdHI8Tm9k
ZT4+IE5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFZlY3RvcjxOb2RlT3JTdHJp
bmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yKQogewogICAgIGlmIChub2RlT3JTdHJpbmdWZWN0b3Iu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ4MSw3MyArNDgxLDEwMCBA
QCBSZWZQdHI8Tm9kZT4gTm9kZTo6Y29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoVmVjdG9y
PE5vZGVPclN0cmluZz4mJiBub2RlT3JTdAogICAgIH0KIAogICAgIGlmIChub2Rlcy5zaXplKCkg
PT0gMSkKLSAgICAgICAgcmV0dXJuIFdURk1vdmUobm9kZXMuZmlyc3QoKSk7CisgICAgICAgIHJl
dHVybiBSZWZQdHI8Tm9kZT4geyBXVEZNb3ZlKG5vZGVzLmZpcnN0KCkpIH07CiAKICAgICBhdXRv
IG5vZGVUb1JldHVybiA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAg
ICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewotICAgICAgICBpZiAoIW5vZGVUb1JldHVybi0+
YXBwZW5kQ2hpbGQobm9kZSwgZWMpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBub2RlVG9SZXR1cm4tPmFwcGVuZENo
aWxkKG5vZGUsIGVjKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IGVjIH07CiAgICAgfQotICAgIHJldHVybiBXVEZNb3ZlKG5vZGVUb1JldHVybik7Cisg
ICAgcmV0dXJuIFJlZlB0cjxOb2RlPiB7IFdURk1vdmUobm9kZVRvUmV0dXJuKSB9OwogfQogCi12
b2lkIE5vZGU6OmJlZm9yZShWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3Rv
ciwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpiZWZvcmUoVmVj
dG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCiB7CiAgICAgUmVmUHRyPENv
bnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byBub2RlU2V0ID0g
bm9kZVNldFByZVRyYW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcihub2RlT3JTdHJpbmdW
ZWN0b3IpOwogICAgIGF1dG8gdmlhYmxlUHJldmlvdXNTaWJsaW5nID0gZmlyc3RQcmVjZWRpbmdT
aWJsaW5nTm90SW5Ob2RlU2V0KCp0aGlzLCBub2RlU2V0KTsKIAotICAgIGF1dG8gbm9kZSA9IGNv
bnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFdURk1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSwg
ZWMpOwotICAgIGlmIChlYyB8fCAhbm9kZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKHZp
YWJsZVByZXZpb3VzU2libGluZykKICAgICAgICAgdmlhYmxlUHJldmlvdXNTaWJsaW5nID0gdmlh
YmxlUHJldmlvdXNTaWJsaW5nLT5uZXh0U2libGluZygpOwogICAgIGVsc2UKICAgICAgICAgdmlh
YmxlUHJldmlvdXNTaWJsaW5nID0gcGFyZW50LT5maXJzdENoaWxkKCk7CiAKKyAgICBhdXRvIHJl
c3VsdCA9IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFdURk1vdmUobm9kZU9yU3RyaW5n
VmVjdG9yKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICBhdXRvIG5vZGUgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAg
aWYgKCFub2RlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUoKm5vZGUsIHZpYWJsZVByZXZpb3VzU2libGlu
Zy5nZXQoKSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IGVj
IH07CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBOb2RlOjphZnRlcihWZWN0b3I8Tm9kZU9y
U3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRp
b25Pcjx2b2lkPiBOb2RlOjphZnRlcihWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmlu
Z1ZlY3RvcikKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0gcGFyZW50Tm9k
ZSgpOwogICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7
IH07CiAKICAgICBhdXRvIG5vZGVTZXQgPSBub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9y
U3RyaW5nVmVjdG9yKG5vZGVPclN0cmluZ1ZlY3Rvcik7CiAgICAgYXV0byB2aWFibGVOZXh0U2li
bGluZyA9IGZpcnN0Rm9sbG93aW5nU2libGluZ05vdEluTm9kZVNldCgqdGhpcywgbm9kZVNldCk7
CiAKLSAgICBhdXRvIG5vZGUgPSBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShXVEZNb3Zl
KG5vZGVPclN0cmluZ1ZlY3RvciksIGVjKTsKLSAgICBpZiAoZWMgfHwgIW5vZGUpCi0gICAgICAg
IHJldHVybjsKKyAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2Rl
KFdURk1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIG5vZGUgPSByZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4geyB9OwogCisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUoKm5vZGUs
IHZpYWJsZU5leHRTaWJsaW5nLmdldCgpLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgZWMgfTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIE5vZGU6OnJl
cGxhY2VXaXRoKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yLCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OnJlcGxhY2VXaXRoKFZlY3Rv
cjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yKQogewogICAgIFJlZlB0cjxDb250
YWluZXJOb2RlPiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnQpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGF1dG8gbm9kZVNldCA9IG5v
ZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2RlT3JTdHJpbmdWZWN0b3Iobm9kZU9yU3RyaW5nVmVj
dG9yKTsKICAgICBhdXRvIHZpYWJsZU5leHRTaWJsaW5nID0gZmlyc3RGb2xsb3dpbmdTaWJsaW5n
Tm90SW5Ob2RlU2V0KCp0aGlzLCBub2RlU2V0KTsKIAotICAgIGF1dG8gbm9kZSA9IGNvbnZlcnRO
b2Rlc09yU3RyaW5nc0ludG9Ob2RlKFdURk1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSwgZWMpOwot
ICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0ID0gY29udmVydE5v
ZGVzT3JTdHJpbmdzSW50b05vZGUoV1RGTW92ZShub2RlT3JTdHJpbmdWZWN0b3IpKTsKKyAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8g
bm9kZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBpZiAocGFyZW50Tm9kZSgpID09IHBhcmVudCkgewotICAg
ICAgICBpZiAobm9kZSkKKyAgICAgICAgaWYgKG5vZGUpIHsKKyAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgICAgICAgICAgcGFyZW50LT5yZXBsYWNlQ2hpbGQoKm5vZGUsICp0
aGlzLCBlYyk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChlYykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgZWMgfTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBwYXJlbnQtPnJlbW92ZUNoaWxkKCp0aGlzKTsKLSAgICB9IGVsc2UgaWYgKG5vZGUpCisgICAg
fSBlbHNlIGlmIChub2RlKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAg
ICBwYXJlbnQtPmluc2VydEJlZm9yZSgqbm9kZSwgdmlhYmxlTmV4dFNpYmxpbmcuZ2V0KCksIGVj
KTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IGVjIH07
CisgICAgfQorICAgIHJldHVybiB7IH07CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OnJl
bW92ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAppbmRleCBlYzg1ZTBiYTY4MmYxYTBhMTE4OTJkZTA5NzBlNjYxZjNi
ZDlkZmFhLi5mZmQwMDlkYjMxZTQ1YjI0OWNmMjIxMjQxODI0MzI3MDY3YTVmZDNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKQEAgLTE5Myw5ICsxOTMsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxl
bWVudCogbmV4dEVsZW1lbnRTaWJsaW5nKCkgY29uc3Q7CiAKICAgICAvLyBGcm9tIHRoZSBDaGls
ZE5vZGUgLSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NoaWxkbm9kZQotICAgIHZvaWQg
YmVmb3JlKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IGFmdGVyKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHJlcGxhY2VXaXRoKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBiZWZvcmUoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gYWZ0ZXIoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CisgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gcmVwbGFjZVdpdGgoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKCk7CiAKICAgICAvLyBPdGhl
ciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCkBAIC02NTIsNyArNjUyLDcgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlKFN0eWxlOjpWYWxpZGl0eSwgU3R5bGU6OkludmFs
aWRhdGlvbk1vZGUgPSBTdHlsZTo6SW52YWxpZGF0aW9uTW9kZTo6Tm9ybWFsKTsKICAgICB2b2lk
IHVwZGF0ZUFuY2VzdG9yc0ZvclN0eWxlUmVjYWxjKCk7CiAKLSAgICBSZWZQdHI8Tm9kZT4gY29u
dmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoVmVjdG9yPE5vZGVPclN0cmluZz4mJiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gY29udmVydE5vZGVzT3JT
dHJpbmdzSW50b05vZGUoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBQc2V1ZG9JZCBjdXN0b21Qc2V1ZG9JZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50
Tm9kZS5pZGwKaW5kZXggM2FhNDk0ZTM5OWE5YWVkYzcyMDM1N2YxODY5OTU5NGE1MDI4Mzg5OC4u
ZWFmMTFkZDhiOTc5ZjQyNjMzNGE2ODU3NGI0ZTY3NDA0MGIwYzI2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
YXJlbnROb2RlLmlkbApAQCAtMzMsMTEgKzMzLDExIEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IEVsZW1lbnQgbGFzdEVsZW1lbnRDaGlsZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBjaGlsZEVsZW1lbnRDb3VudDsKIAotICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJs
ZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgcHJlcGVuZCgoTm9kZSBvciBET01TdHJp
bmcpLi4uIG5vZGVzKTsKLSAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93TGVn
YWN5RXhjZXB0aW9uXSB2b2lkIGFwcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsK
KyAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBy
ZXBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBV
bnNjb3BhYmxlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhcHBlbmQoKE5vZGUgb3IgRE9NU3Ry
aW5nKS4uLiBub2Rlcyk7CiAKICAgICAvLyBbVW5zY29wYWJsZV0gRWxlbWVudD8gcXVlcnkoRE9N
U3RyaW5nIHJlbGF0aXZlU2VsZWN0b3JzKTsKICAgICAvLyBbTmV3T2JqZWN0LCBVbnNjb3BhYmxl
XSBFbGVtZW50cyBxdWVyeUFsbChET01TdHJpbmcgcmVsYXRpdmVTZWxlY3RvcnMpOwotICAgIFtN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gRWxlbWVudCBxdWVyeVNlbGVjdG9yKERPTVN0cmluZyBz
ZWxlY3RvcnMpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgTmV3T2JqZWN0XSBOb2Rl
TGlzdCBxdWVyeVNlbGVjdG9yQWxsKERPTVN0cmluZyBzZWxlY3RvcnMpOworICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gRWxlbWVudCBxdWVyeVNlbGVjdG9yKERPTVN0cmluZyBzZWxlY3RvcnMpOwor
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBOb2RlTGlzdCBxdWVyeVNlbGVjdG9y
QWxsKERPTVN0cmluZyBzZWxlY3RvcnMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmNwcAppbmRleCA4NTljNmIyYmY0MGFmM2JlMmEzNjdjYTNlMTA1ZGNmNWEwZTc4ODU1Li4xZDg3
MzVkYWJhMmMxYWM5Y2YwYjQ3MTg1MGNjZDUzNGI3MjAzMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nl
bGVjdG9yUXVlcnkuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgc3RydWN0IEFsbEVsZW1lbnRFeHRy
YWN0b3JTZWxlY3RvclF1ZXJ5VHJhaXQgewogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQg
YXBwZW5kT3V0cHV0Rm9yRWxlbWVudChPdXRwdXRUeXBlJiBvdXRwdXQsIEVsZW1lbnQqIGVsZW1l
bnQpIHsgQVNTRVJUKGVsZW1lbnQpOyBvdXRwdXQuYXBwZW5kKCplbGVtZW50KTsgfQogfTsKIAot
UmVmUHRyPE5vZGVMaXN0PiBTZWxlY3RvckRhdGFMaXN0OjpxdWVyeUFsbChDb250YWluZXJOb2Rl
JiByb290Tm9kZSkgY29uc3QKK1JlZjxOb2RlTGlzdD4gU2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlB
bGwoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFJlZjxFbGVt
ZW50Pj4gcmVzdWx0OwogICAgIGV4ZWN1dGU8QWxsRWxlbWVudEV4dHJhY3RvclNlbGVjdG9yUXVl
cnlUcmFpdD4ocm9vdE5vZGUsIHJlc3VsdCk7CkBAIC02MTYsMzEgKzYxNiwyNyBAQCBTZWxlY3Rv
clF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KENTU1NlbGVjdG9yTGlzdCYmIHNlbGVjdG9yTGlzdCkKIHsK
IH0KIAotU2VsZWN0b3JRdWVyeSogU2VsZWN0b3JRdWVyeUNhY2hlOjphZGQoY29uc3QgU3RyaW5n
JiBzZWxlY3RvcnMsIERvY3VtZW50JiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNl
cHRpb25PcjxTZWxlY3RvclF1ZXJ5Jj4gU2VsZWN0b3JRdWVyeUNhY2hlOjphZGQoY29uc3QgU3Ry
aW5nJiBzZWxlY3RvcnMsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvIGl0ID0gbV9l
bnRyaWVzLmZpbmQoc2VsZWN0b3JzKTsKICAgICBpZiAoaXQgIT0gbV9lbnRyaWVzLmVuZCgpKQot
ICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOworICAgICAgICByZXR1cm4gKml0LT52YWx1
ZTsKIAogICAgIENTU1BhcnNlciBwYXJzZXIoZG9jdW1lbnQpOwogICAgIENTU1NlbGVjdG9yTGlz
dCBzZWxlY3Rvckxpc3Q7CiAgICAgcGFyc2VyLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JzLCBzZWxl
Y3Rvckxpc3QpOwogCi0gICAgaWYgKCFzZWxlY3Rvckxpc3QuZmlyc3QoKSB8fCBzZWxlY3Rvckxp
c3QuaGFzSW52YWxpZFNlbGVjdG9yKCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKCFzZWxlY3Rvckxpc3QuZmlyc3Qo
KSB8fCBzZWxlY3Rvckxpc3QuaGFzSW52YWxpZFNlbGVjdG9yKCkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKLSAgICBpZiAoc2VsZWN0b3JMaXN0LnNlbGVjdG9y
c05lZWROYW1lc3BhY2VSZXNvbHV0aW9uKCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKHNlbGVjdG9yTGlzdC5zZWxl
Y3RvcnNOZWVkTmFtZXNwYWNlUmVzb2x1dGlvbigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgU1lOVEFYX0VSUiB9OwogCiAgICAgY29uc3QgaW50IG1heGltdW1TZWxlY3RvclF1ZXJ5Q2Fj
aGVTaXplID0gMjU2OwogICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1heGltdW1TZWxlY3Rv
clF1ZXJ5Q2FjaGVTaXplKQogICAgICAgICBtX2VudHJpZXMucmVtb3ZlKG1fZW50cmllcy5iZWdp
bigpKTsKIAotICAgIHJldHVybiBtX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgc3RkOjptYWtlX3Vu
aXF1ZTxTZWxlY3RvclF1ZXJ5PihXVEZNb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFs
dWUuZ2V0KCk7CisgICAgcmV0dXJuICptX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgc3RkOjptYWtl
X3VuaXF1ZTxTZWxlY3RvclF1ZXJ5PihXVEZNb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+
dmFsdWU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1
ZXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCmluZGV4IDU4YWI2NzAx
MGM1YTg2OTU0YjBjNDFjZTY2YWE3NWIyOTUyMjM4NjIuLjJiOTBjNGFlMGJjMzlhNTc3ZmUxOTJl
ZjZhMTAzMWQyMjFiYmRhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rv
clF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaApAQCAtMjMs
OCArMjMsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFNlbGVjdG9yUXVlcnlfaAot
I2RlZmluZSBTZWxlY3RvclF1ZXJ5X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTU2Vs
ZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKQEAgLTM2LDIxICszNSwxNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0gICAg
CiBjbGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBOb2RlOwotY2xhc3MgTm9kZUxpc3Q7CiAKIGNsYXNz
IFNlbGVjdG9yRGF0YUxpc3QgewogcHVibGljOgogICAgIGV4cGxpY2l0IFNlbGVjdG9yRGF0YUxp
c3QoY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CiAgICAgYm9vbCBtYXRjaGVzKEVsZW1lbnQmKSBj
b25zdDsKICAgICBFbGVtZW50KiBjbG9zZXN0KEVsZW1lbnQmKSBjb25zdDsKLSAgICBSZWZQdHI8
Tm9kZUxpc3Q+IHF1ZXJ5QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKKyAgICBS
ZWY8Tm9kZUxpc3Q+IHF1ZXJ5QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKICAg
ICBFbGVtZW50KiBxdWVyeUZpcnN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKIAog
cHJpdmF0ZToKQEAgLTEyMCw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgU2VsZWN0
b3JRdWVyeShDU1NTZWxlY3Rvckxpc3QmJik7CiAgICAgYm9vbCBtYXRjaGVzKEVsZW1lbnQmKSBj
b25zdDsKICAgICBFbGVtZW50KiBjbG9zZXN0KEVsZW1lbnQmKSBjb25zdDsKLSAgICBSZWZQdHI8
Tm9kZUxpc3Q+IHF1ZXJ5QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKKyAgICBS
ZWY8Tm9kZUxpc3Q+IHF1ZXJ5QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKICAg
ICBFbGVtZW50KiBxdWVyeUZpcnN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKIAog
cHJpdmF0ZToKQEAgLTEzMCwxMCArMTI1LDggQEAgcHJpdmF0ZToKIAogY2xhc3MgU2VsZWN0b3JR
dWVyeUNhY2hlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQogcHVibGljOgotICAg
IFNlbGVjdG9yUXVlcnkqIGFkZChjb25zdCBTdHJpbmcmLCBEb2N1bWVudCYsIEV4Y2VwdGlvbkNv
ZGUmKTsKLQorICAgIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBhZGQoY29uc3QgU3RyaW5n
JiwgRG9jdW1lbnQmKTsKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxTZWxlY3RvclF1ZXJ5Pj4gbV9lbnRyaWVzOwogfTsKQEAgLTE0OCw3ICsxNDEsNyBAQCBp
bmxpbmUgRWxlbWVudCogU2VsZWN0b3JRdWVyeTo6Y2xvc2VzdChFbGVtZW50JiBlbGVtZW50KSBj
b25zdAogICAgIHJldHVybiBtX3NlbGVjdG9ycy5jbG9zZXN0KGVsZW1lbnQpOwogfQogCi1pbmxp
bmUgUmVmUHRyPE5vZGVMaXN0PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUFsbChDb250YWluZXJOb2Rl
JiByb290Tm9kZSkgY29uc3QKK2lubGluZSBSZWY8Tm9kZUxpc3Q+IFNlbGVjdG9yUXVlcnk6OnF1
ZXJ5QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdAogewogICAgIHJldHVybiBtX3Nl
bGVjdG9ycy5xdWVyeUFsbChyb290Tm9kZSk7CiB9CkBAIC0xNTksNSArMTUyLDMgQEAgaW5saW5l
IEVsZW1lbnQqIFNlbGVjdG9yUXVlcnk6OnF1ZXJ5Rmlyc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5v
ZGUpIGNvbnN0CiB9CiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggMWY2ZmQ3ZjkxMjc2OTU1MTNkNjIwZjlhMGEwZWUw
ZjcxYjA2ZWMzMS4uNzFiNjIyMWI4OWVjYmMzNzI2MDBjZmIyZGNlZDM0NmU4MDVhZmVjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcApAQCAtMTEy
LDExICsxMTIsMTEgQEAgYm9vbCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmlzS2V5Ym9hcmRGb2N1
c2FibGUoS2V5Ym9hcmRFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudEZy
YW1lICYmIEhUTUxFbGVtZW50Ojppc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KTsKIH0KIAotRXhj
ZXB0aW9uT3I8RG9jdW1lbnQqPiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmdldFNWR0RvY3VtZW50
KCkgY29uc3QKK0V4Y2VwdGlvbk9yPERvY3VtZW50Jj4gSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpn
ZXRTVkdEb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSBjb250ZW50RG9j
dW1lbnQoKTsKICAgICBpZiAoaXM8U1ZHRG9jdW1lbnQ+KGRvY3VtZW50KSkKLSAgICAgICAgcmV0
dXJuIGRvY3VtZW50OworICAgICAgICByZXR1cm4gKmRvY3VtZW50OwogICAgIC8vIFNwZWM6IGh0
dHA6Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCNJbnRlcmZhY2VHZXRTVkdEb2N1bWVu
dAogICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggYmZjYzBlZWY2NGM4
M2Q4YzFjOTIzN2RhMjI4MjY5MDJhMDRkYTYwYi4uZDg1MmVmYTVjN2I3M2VlZDZiZmJjNGEyMTRl
MTYyODQwYjAwMTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVP
d25lckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxl
bWVudC5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAvLyBSZW5kZXJFbGVtZW50IHdo
ZW4gdXNpbmcgZmFsbGJhY2sgY29udGVudC4KICAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdl
dCgpIGNvbnN0OwogCi0gICAgRXhjZXB0aW9uT3I8RG9jdW1lbnQqPiBnZXRTVkdEb2N1bWVudCgp
IGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPERvY3VtZW50Jj4gZ2V0U1ZHRG9jdW1lbnQoKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgU2Nyb2xsYmFyTW9kZSBzY3JvbGxpbmdNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gU2Nyb2xsYmFyQXV0bzsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAppbmRleCAwNWI5ZjYwYTczZjAwNzMxMGM4NjVhYThmOTVhYmNmMzhhYzI1MThiLi5l
MmUxZDQxMWY0NDAzYzdjMTk4MDdmZDg1MjkyMjI1OWU1NTIxZGIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM1OTQsNyArMzU5NCw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6Zm9yZ2V0UmVzb3VyY2VTcGVjaWZpY1RyYWNrcygpCiAgICAgICAgIHJl
bW92ZVZpZGVvVHJhY2soKm1fdmlkZW9UcmFja3MtPmxhc3RJdGVtKCkpOwogfQogCi1FeGNlcHRp
b25PcjxSZWY8VGV4dFRyYWNrPj4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0
IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSkKK0V4Y2VwdGlvbk9yPFRleHRUcmFjayY+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFj
ayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYg
bGFuZ3VhZ2UpCiB7CiAgICAgLy8gNC44LjEwLjEyLjQgVGV4dCB0cmFjayBBUEkKICAgICAvLyBU
aGUgYWRkVGV4dFRyYWNrKGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkgbWV0aG9kIG9mIG1lZGlhIGVs
ZW1lbnRzLCB3aGVuIGludm9rZWQsIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CkBAIC0z
NjA5LDIxICszNjA5LDIyIEBAIEV4Y2VwdGlvbk9yPFJlZjxUZXh0VHJhY2s+PiBIVE1MTWVkaWFF
bGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjCiAKICAgICAvLyA1LiBD
cmVhdGUgYSBuZXcgdGV4dCB0cmFjayBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXcgb2JqZWN0LCBh
bmQgc2V0IGl0cyB0ZXh0IHRyYWNrIGtpbmQgdG8ga2luZCwgaXRzIHRleHQgCiAgICAgLy8gdHJh
Y2sgbGFiZWwgdG8gbGFiZWwsIGl0cyB0ZXh0IHRyYWNrIGxhbmd1YWdlIHRvIGxhbmd1YWdlLi4u
Ci0gICAgYXV0byB0ZXh0VHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZShBY3RpdmVET01PYmplY3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywga2luZCwgZW1wdHlTdHJpbmcoKSwgbGFi
ZWwsIGxhbmd1YWdlKTsKKyAgICBhdXRvIHRyYWNrID0gVGV4dFRyYWNrOjpjcmVhdGUoQWN0aXZl
RE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIGtpbmQsIGVtcHR5U3Ry
aW5nKCksIGxhYmVsLCBsYW5ndWFnZSk7CisgICAgYXV0byYgdHJhY2tSZWZlcmVuY2UgPSB0cmFj
ay5nZXQoKTsKIAogICAgIC8vIE5vdGUsIGR1ZSB0byBzaWRlIGVmZmVjdHMgd2hlbiBjaGFuZ2lu
ZyB0cmFjayBwYXJhbWV0ZXJzLCB3ZSBoYXZlIHRvCiAgICAgLy8gZmlyc3QgYXBwZW5kIHRoZSB0
cmFjayB0byB0aGUgdGV4dCB0cmFjayBsaXN0LgogCiAgICAgLy8gNi4gQWRkIHRoZSBuZXcgdGV4
dCB0cmFjayB0byB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MuCi0gICAg
YWRkVGV4dFRyYWNrKHRleHRUcmFjay5jb3B5UmVmKCkpOworICAgIGFkZFRleHRUcmFjayhXVEZN
b3ZlKHRyYWNrKSk7CiAKICAgICAvLyAuLi4gaXRzIHRleHQgdHJhY2sgcmVhZGluZXNzIHN0YXRl
IHRvIHRoZSB0ZXh0IHRyYWNrIGxvYWRlZCBzdGF0ZSAuLi4KLSAgICB0ZXh0VHJhY2stPnNldFJl
YWRpbmVzc1N0YXRlKFRleHRUcmFjazo6TG9hZGVkKTsKKyAgICB0cmFja1JlZmVyZW5jZS5zZXRS
ZWFkaW5lc3NTdGF0ZShUZXh0VHJhY2s6OkxvYWRlZCk7CiAKICAgICAvLyAuLi4gaXRzIHRleHQg
dHJhY2sgbW9kZSB0byB0aGUgdGV4dCB0cmFjayBoaWRkZW4gbW9kZSwgYW5kIGl0cyB0ZXh0IHRy
YWNrIGxpc3Qgb2YgY3VlcyB0byBhbiBlbXB0eSBsaXN0IC4uLgotICAgIHRleHRUcmFjay0+c2V0
TW9kZShUZXh0VHJhY2s6Ok1vZGU6OkhpZGRlbik7CisgICAgdHJhY2tSZWZlcmVuY2Uuc2V0TW9k
ZShUZXh0VHJhY2s6Ok1vZGU6OkhpZGRlbik7CiAKLSAgICByZXR1cm4gV1RGTW92ZSh0ZXh0VHJh
Y2spOworICAgIHJldHVybiB0cmFja1JlZmVyZW5jZTsKIH0KIAogQXVkaW9UcmFja0xpc3QmIEhU
TUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKaW5kZXggNWFhOTViOWQ1MDZjNmFhYzdlN2FmMTZlZTYyMTkwMWFiYmUyY2Q2Yy4u
MzViMjMzZDUwNDM4ZTVhMThiZmZkNDFjNWZiYTU0MGZiNzgzZWJlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAgICAg
ZG91YmxlIHBlcmNlbnRMb2FkZWQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LSAgICBFeGNlcHRpb25PcjxSZWY8VGV4dFRyYWNrPj4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmlu
ZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7Cisg
ICAgRXhjZXB0aW9uT3I8VGV4dFRyYWNrJj4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2lu
ZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CiAKICAgICBB
dWRpb1RyYWNrTGlzdCYgYXVkaW9UcmFja3MoKTsKICAgICBUZXh0VHJhY2tMaXN0JiB0ZXh0VHJh
Y2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNw
cAppbmRleCAxOTY4NzAwMzE4MGViNzA2NDkwOWU0ZDI5YjYwMzQ4OWIyMGEyYTk2Li4zNTIzNTA5
YmQyYzYwN2NlNWEzOTY3ZDE3ODc4NGY5NDBmOTI2ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTQyOSw4ICs0MjksMTMgQEAgYm9v
bCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkoY29uc3QgTm9k
ZSogbm9kZSkgY29uc3QKICAgICBTaGFkb3dSb290KiBzaGFkb3cgPSB1c2VyQWdlbnRTaGFkb3dS
b290KCk7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBSZWZQ
dHI8RWxlbWVudD4gc25hcHNob3RMYWJlbCA9IHNoYWRvdy0+cXVlcnlTZWxlY3RvcihzZWxlY3Rv
ci5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgcmV0dXJuIG5vZGUgJiYgc25hcHNo
b3RMYWJlbCAmJiAobm9kZSA9PSBzbmFwc2hvdExhYmVsLmdldCgpIHx8IG5vZGUtPmlzRGVzY2Vu
ZGFudE9mKHNuYXBzaG90TGFiZWwuZ2V0KCkpKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhdXRvIHF1ZXJ5UmVzdWx0ID0gc2hhZG93LT5xdWVyeVNlbGVjdG9y
KHNlbGVjdG9yLmdldCgpKTsKKyAgICBpZiAocXVlcnlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiBzbmFwc2hvdExhYmVsID0gcXVlcnlSZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgcmV0dXJuIHNuYXBzaG90TGFiZWwgJiYgc25h
cHNob3RMYWJlbC0+Y29udGFpbnMobm9kZSk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6cmVtb3ZlU25hcHNob3RUaW1lckZpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDVlMTVjYzUxMDJjYzYxYjc5MzZkNmQ1
MWVjMTlmNmUzMjE1ODUxNDcuLjU2YzcwMmQ4ZDg2NTQ5YzQyY2U3MTlhZWNjM2RhMTU3YTIzNjYy
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cApAQCAtNTMzLDE1ICs1MzMsMTQgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxl
Y3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxF
bGVtZW50PiBlbGVtZW50ID0gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKm5vZGUpLnF1ZXJ5U2Vs
ZWN0b3Ioc2VsZWN0b3JzLCBlYyk7Ci0gICAgaWYgKGVjKSB7CisgICAgYXV0byBxdWVyeVJlc3Vs
dCA9IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpub2RlKS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9y
cyk7CisgICAgaWYgKHF1ZXJ5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gQVNDSUlMaXRlcmFsKCJET00gRXJyb3Igd2hpbGUgcXVlcnlpbmciKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChlbGVtZW50KQotICAgICAgICAqZWxlbWVudElk
ID0gcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChlbGVtZW50LmdldCgpKTsKKyAgICBpZiAoYXV0byog
ZWxlbWVudCA9IHF1ZXJ5UmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQorICAgICAgICAqZWxl
bWVudElkID0gcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChlbGVtZW50KTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkKQEAgLTU1NCwxNSArNTUzLDE0IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzID0gZG93bmNhc3Q8Q29u
dGFpbmVyTm9kZT4oKm5vZGUpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzLCBlYyk7Ci0gICAg
aWYgKGVjKSB7CisgICAgYXV0byBxdWVyeVJlc3VsdCA9IGRvd25jYXN0PENvbnRhaW5lck5vZGU+
KCpub2RlKS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9ycyk7CisgICAgaWYgKHF1ZXJ5UmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJE
T00gRXJyb3Igd2hpbGUgcXVlcnlpbmciKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAg
IGF1dG8gbm9kZXMgPSBxdWVyeVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICByZXN1
bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKLQogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2Rlcy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgcmVz
dWx0LT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZXMtPml0ZW0oaSkpKTsKIH0K
QEAgLTkwNSw3ICs5MDMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNo
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB3aAogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZmluZGVyLnBlcmZvcm1TZWFyY2gobm9kZSk7CiAgICAgICAgIH0KLSAg
ICB9IGVsc2UgaWYgKG1fZG9jdW1lbnQpIHsKKyAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGVy
ZSdzIG5vIG5lZWQgdG8gaXRlcmF0ZSB0aGUgZnJhbWVzIHRyZWUgYmVjYXVzZQogICAgICAgICAv
LyB0aGUgc2VhcmNoIGhlbHBlciB3aWxsIGdvIGluc2lkZSB0aGUgZnJhbWUgb3duZXIgZWxlbWVu
dHMuCiAgICAgICAgIGZpbmRlci5wZXJmb3JtU2VhcmNoKG1fZG9jdW1lbnQuZ2V0KCkpOwpAQCAt
MTExNSwxOSArMTExMywxOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxl
Y3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlYwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPE5vZGVM
aXN0PiBub2RlcyA9IGRvY3VtZW50LT5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yU3RyaW5nLCBl
Yyk7CisgICAgYXV0byBxdWVyeVJlc3VsdCA9IGRvY3VtZW50LT5xdWVyeVNlbGVjdG9yQWxsKHNl
bGVjdG9yU3RyaW5nKTsKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0NjE2
MT4gV2ViIEluc3BlY3RvcjogRE9NLmhpZ2hsaWdodFNlbGVjdG9yIHNob3VsZCB3b3JrIGZvciAi
YTp2aXNpdGVkIgotICAgIGlmIChlYykgeworICAgIGlmIChxdWVyeVJlc3VsdC5oYXNFeGNlcHRp
b24oKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRE9NIEVycm9yIHdo
aWxlIHF1ZXJ5aW5nIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWcgPSBoaWdobGlnaHRDb25maWdG
cm9tSW5zcGVjdG9yT2JqZWN0KGVycm9yU3RyaW5nLCAmaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0
KTsKKyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0
b3JPYmplY3QoZXJyb3JTdHJpbmcsICZoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwogICAgIGlm
ICghaGlnaGxpZ2h0Q29uZmlnKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX292ZXJsYXktPmhp
Z2hsaWdodE5vZGVMaXN0KFdURk1vdmUobm9kZXMpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBt
X292ZXJsYXktPmhpZ2hsaWdodE5vZGVMaXN0KHF1ZXJ5UmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LCBjb25zdCBpbnQqIG5vZGVJZCwgY29uc3QgU3Ry
aW5nKiBvYmplY3RJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JOb2RlRmluZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JO
b2RlRmluZGVyLmNwcAppbmRleCA1NWIyYzI4MWFlZmQzYmM4OTVkMjcyMzEzZjBiNGZhZTFkNTZj
MWM4Li41OTU4M2E5MDI4NTQ0YmI5MWIyYzQ3NWUzYTg2ZTVlOWU5Y2YxMTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3BwCkBAIC02NSwz
OCArNjUsMzMgQEAgSW5zcGVjdG9yTm9kZUZpbmRlcjo6SW5zcGVjdG9yTm9kZUZpbmRlcihjb25z
dCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpCiAKIHZvaWQgSW5zcGVjdG9yTm9kZUZp
bmRlcjo6cGVyZm9ybVNlYXJjaChOb2RlKiBwYXJlbnROb2RlKQogewotICAgIHNlYXJjaFVzaW5n
WFBhdGgocGFyZW50Tm9kZSk7Ci0gICAgc2VhcmNoVXNpbmdDU1NTZWxlY3RvcnMocGFyZW50Tm9k
ZSk7CisgICAgaWYgKCFwYXJlbnROb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBzZWFyY2hV
c2luZ1hQYXRoKCpwYXJlbnROb2RlKTsKKyAgICBzZWFyY2hVc2luZ0NTU1NlbGVjdG9ycygqcGFy
ZW50Tm9kZSk7CiAKICAgICAvLyBLZWVwIHRoZSBET00gdHJlZSB0cmF2ZXJzYWwgbGFzdC4gVGhp
cyB3YXkgaWZyYW1lIGNvbnRlbnQgd2lsbCBjb21lIGFmdGVyIHRoZWlyIHBhcmVudHMuCi0gICAg
c2VhcmNoVXNpbmdET01UcmVlVHJhdmVyc2FsKHBhcmVudE5vZGUpOworICAgIHNlYXJjaFVzaW5n
RE9NVHJlZVRyYXZlcnNhbCgqcGFyZW50Tm9kZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTm9kZUZp
bmRlcjo6c2VhcmNoVXNpbmdET01UcmVlVHJhdmVyc2FsKE5vZGUqIHBhcmVudE5vZGUpCit2b2lk
IEluc3BlY3Rvck5vZGVGaW5kZXI6OnNlYXJjaFVzaW5nRE9NVHJlZVRyYXZlcnNhbChOb2RlJiBw
YXJlbnROb2RlKQogewogICAgIC8vIE1hbnVhbCBwbGFpbiB0ZXh0IHNlYXJjaC4KLSAgICBmb3Ig
KGF1dG8qIG5vZGUgPSBwYXJlbnROb2RlOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4
dCgqbm9kZSwgcGFyZW50Tm9kZSkpIHsKKyAgICBmb3IgKGF1dG8qIG5vZGUgPSAmcGFyZW50Tm9k
ZTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsICZwYXJlbnROb2RlKSkg
ewogICAgICAgICBzd2l0Y2ggKG5vZGUtPm5vZGVUeXBlKCkpIHsKICAgICAgICAgY2FzZSBOb2Rl
OjpURVhUX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgotICAgICAgICBj
YXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERTogewotICAgICAgICAgICAgaWYgKG5vZGUtPm5v
ZGVWYWx1ZSgpLmZpbmRJZ25vcmluZ0Nhc2UobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSAhPSBu
b3RGb3VuZCkKKyAgICAgICAgY2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6CisgICAgICAg
ICAgICBpZiAobm9kZS0+bm9kZVZhbHVlKCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShtX3do
aXRlc3BhY2VUcmltbWVkUXVlcnkpKQogICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hZGQobm9k
ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE5vZGU6OkVM
RU1FTlRfTk9ERTogeworICAgICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKICAgICAgICAg
ICAgIGlmIChtYXRjaGVzRWxlbWVudChkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkpKQogICAgICAg
ICAgICAgICAgIG1fcmVzdWx0cy5hZGQobm9kZSk7Ci0KLSAgICAgICAgICAgIC8vIFNlYXJjaCBp
bnNpZGUgZnJhbWUgZWxlbWVudHMuCi0gICAgICAgICAgICBpZiAoaXM8SFRNTEZyYW1lT3duZXJF
bGVtZW50Pigqbm9kZSkpIHsKLSAgICAgICAgICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQm
IGZyYW1lT3duZXIgPSBkb3duY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KCpub2RlKTsKLSAg
ICAgICAgICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWVPd25lci5jb250ZW50
RG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgcGVyZm9ybVNlYXJjaChkb2N1bWVudCk7
Ci0gICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgIGlmIChpczxIVE1MRnJhbWVPd25lckVsZW1l
bnQ+KGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKSkpCisgICAgICAgICAgICAgICAgcGVyZm9ybVNl
YXJjaChkb3duY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KCpub2RlKS5jb250ZW50RG9jdW1l
bnQoKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwNSwxNSArMTAwLDE1IEBAIHZvaWQg
SW5zcGVjdG9yTm9kZUZpbmRlcjo6c2VhcmNoVXNpbmdET01UcmVlVHJhdmVyc2FsKE5vZGUqIHBh
cmVudE5vZGUpCiAKIGJvb2wgSW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hlc0F0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLmxvY2FsTmFt
ZSgpLnN0cmluZygpLmZpbmRJZ25vcmluZ0Nhc2UobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSAh
PSBub3RGb3VuZCkKKyAgICBpZiAoYXR0cmlidXRlLmxvY2FsTmFtZSgpLnN0cmluZygpLmNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fZXhhY3RBdHRyaWJ1dGVNYXRjaCA/IGF0dHJpYnV0
ZS52YWx1ZSgpID09IG1fYXR0cmlidXRlUXVlcnkgOiBhdHRyaWJ1dGUudmFsdWUoKS5zdHJpbmco
KS5maW5kSWdub3JpbmdDYXNlKG1fYXR0cmlidXRlUXVlcnkpICE9IG5vdEZvdW5kOworICAgIHJl
dHVybiBtX2V4YWN0QXR0cmlidXRlTWF0Y2ggPyBhdHRyaWJ1dGUudmFsdWUoKSA9PSBtX2F0dHJp
YnV0ZVF1ZXJ5IDogYXR0cmlidXRlLnZhbHVlKCkuc3RyaW5nKCkuY29udGFpbnNJZ25vcmluZ0FT
Q0lJQ2FzZShtX2F0dHJpYnV0ZVF1ZXJ5KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JOb2RlRmluZGVy
OjptYXRjaGVzRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIFN0cmluZyBu
b2RlTmFtZSA9IGVsZW1lbnQubm9kZU5hbWUoKTsKLSAgICBpZiAoKCFtX3N0YXJ0VGFnRm91bmQg
JiYgIW1fZW5kVGFnRm91bmQgJiYgKG5vZGVOYW1lLmZpbmRJZ25vcmluZ0Nhc2UobV90YWdOYW1l
UXVlcnkpICE9IG5vdEZvdW5kKSkKKyAgICBpZiAoKCFtX3N0YXJ0VGFnRm91bmQgJiYgIW1fZW5k
VGFnRm91bmQgJiYgbm9kZU5hbWUuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShtX3RhZ05hbWVR
dWVyeSkpCiAgICAgICAgIHx8IChtX3N0YXJ0VGFnRm91bmQgJiYgbV9lbmRUYWdGb3VuZCAmJiBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5vZGVOYW1lLCBtX3RhZ05hbWVRdWVyeSkpCiAgICAgICAg
IHx8IChtX3N0YXJ0VGFnRm91bmQgJiYgIW1fZW5kVGFnRm91bmQgJiYgbm9kZU5hbWUuc3RhcnRz
V2l0aChtX3RhZ05hbWVRdWVyeSwgZmFsc2UpKQogICAgICAgICB8fCAoIW1fc3RhcnRUYWdGb3Vu
ZCAmJiBtX2VuZFRhZ0ZvdW5kICYmIG5vZGVOYW1lLmVuZHNXaXRoKG1fdGFnTmFtZVF1ZXJ5LCBm
YWxzZSkpKQpAQCAtMTMwLDkgKzEyNSw5IEBAIGJvb2wgSW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0
Y2hlc0VsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yTm9kZUZpbmRlcjo6c2VhcmNoVXNpbmdYUGF0aChOb2RlKiBwYXJl
bnROb2RlKQordm9pZCBJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFyY2hVc2luZ1hQYXRoKE5vZGUm
IHBhcmVudE5vZGUpCiB7Ci0gICAgYXV0byBldmFsdWF0ZVJlc3VsdCA9IHBhcmVudE5vZGUtPmRv
Y3VtZW50KCkuZXZhbHVhdGUobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBwYXJlbnROb2RlLCBu
dWxscHRyLCBYUGF0aFJlc3VsdDo6T1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUsIG51bGxwdHIp
OworICAgIGF1dG8gZXZhbHVhdGVSZXN1bHQgPSBwYXJlbnROb2RlLmRvY3VtZW50KCkuZXZhbHVh
dGUobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCAmcGFyZW50Tm9kZSwgbnVsbHB0ciwgWFBhdGhS
ZXN1bHQ6Ok9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxscHRyKTsKICAgICBpZiAoZXZh
bHVhdGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIHJl
c3VsdCA9IGV2YWx1YXRlUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwpAQCAtMTUyLDIyICsx
NDcsMjEgQEAgdm9pZCBJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFyY2hVc2luZ1hQYXRoKE5vZGUq
IHBhcmVudE5vZGUpCiAgICAgICAgICAgICBub2RlID0gZG93bmNhc3Q8QXR0cj4oKm5vZGUpLm93
bmVyRWxlbWVudCgpOwogCiAgICAgICAgIC8vIFhQYXRoIGNhbiBnZXQgb3V0IG9mIHRoZSBjb250
ZXh0IG5vZGUgdGhhdCB3ZSBwYXNzIGFzIHRoZSBzdGFydGluZyBwb2ludCB0byBldmFsdWF0ZSwg
c28gd2UgbmVlZCB0byBmaWx0ZXIgZm9yIGp1c3QgdGhlIG5vZGVzIHdlIGNhcmUgYWJvdXQuCi0g
ICAgICAgIGlmIChub2RlID09IHBhcmVudE5vZGUgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2YocGFy
ZW50Tm9kZSkpCisgICAgICAgIGlmIChwYXJlbnROb2RlLmNvbnRhaW5zKG5vZGUpKQogICAgICAg
ICAgICAgbV9yZXN1bHRzLmFkZChub2RlKTsKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yTm9k
ZUZpbmRlcjo6c2VhcmNoVXNpbmdDU1NTZWxlY3RvcnMoTm9kZSogcGFyZW50Tm9kZSkKK3ZvaWQg
SW5zcGVjdG9yTm9kZUZpbmRlcjo6c2VhcmNoVXNpbmdDU1NTZWxlY3RvcnMoTm9kZSYgcGFyZW50
Tm9kZSkKIHsKLSAgICBBU1NFUlQocGFyZW50Tm9kZSk7Ci0gICAgaWYgKCFpczxDb250YWluZXJO
b2RlPigqcGFyZW50Tm9kZSkpCisgICAgaWYgKCFpczxDb250YWluZXJOb2RlPihwYXJlbnROb2Rl
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVm
UHRyPE5vZGVMaXN0PiBub2RlTGlzdCA9IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpwYXJlbnRO
b2RlKS5xdWVyeVNlbGVjdG9yQWxsKG1fd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgZWMpOwotICAg
IGlmIChlYyB8fCAhbm9kZUxpc3QpCisgICAgYXV0byBxdWVyeVJlc3VsdCA9IGRvd25jYXN0PENv
bnRhaW5lck5vZGU+KHBhcmVudE5vZGUpLnF1ZXJ5U2VsZWN0b3JBbGwobV93aGl0ZXNwYWNlVHJp
bW1lZFF1ZXJ5KTsKKyAgICBpZiAocXVlcnlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGF1dG8gbm9kZUxpc3QgPSBxdWVyeVJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKICAgICB1bnNpZ25lZCBzaXplID0gbm9kZUxpc3QtPmxlbmd0aCgpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG1fcmVzdWx0cy5hZGQo
bm9kZUxpc3QtPml0ZW0oaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck5vZGVGaW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JOb2RlRmluZGVyLmgKaW5kZXggYzY3NjFjNjY1NWQ3YTJlNjVjMjg0NGVjODZkODFlNjExOTgw
ZmRjMS4uNWQ1NWRkMzcxN2IwMWVkYTI1YzNlNzc3ODZmOWJkMzYxMTZkMWJmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5oCkBAIC00OSw5ICs0
OSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtYXRjaGVzQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0
ZSYpOwogICAgIGJvb2wgbWF0Y2hlc0VsZW1lbnQoY29uc3QgRWxlbWVudCYpOwogCi0gICAgdm9p
ZCBzZWFyY2hVc2luZ0RPTVRyZWVUcmF2ZXJzYWwoTm9kZSopOwotICAgIHZvaWQgc2VhcmNoVXNp
bmdYUGF0aChOb2RlKik7Ci0gICAgdm9pZCBzZWFyY2hVc2luZ0NTU1NlbGVjdG9ycyhOb2RlKik7
CisgICAgdm9pZCBzZWFyY2hVc2luZ0RPTVRyZWVUcmF2ZXJzYWwoTm9kZSYpOworICAgIHZvaWQg
c2VhcmNoVXNpbmdYUGF0aChOb2RlJik7CisgICAgdm9pZCBzZWFyY2hVc2luZ0NTU1NlbGVjdG9y
cyhOb2RlJik7CiAKICAgICBib29sIG1fc3RhcnRUYWdGb3VuZDsKICAgICBib29sIG1fZW5kVGFn
Rm91bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKaW5kZXggYmUzODcyZjMwZjEwZjU1ZDY5MGZlYjMw
OTVhNTk0ZWFlZDlmYjYzZS4uMDhjYzQzMWJlNjUwMTQ0NzI2YTliMjY5ZmYzOGNiZjM1NjJiM2Rj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcApAQCAtNjksNyArNjksNyBAQCBTdWJ0bGVDcnlwdG8m
IENyeXB0bzo6c3VidGxlKCkKICAgICByZXR1cm4gbV9zdWJ0bGU7CiB9CiAKLUV4Y2VwdGlvbk9y
PFdlYktpdFN1YnRsZUNyeXB0byo+IENyeXB0bzo6d2Via2l0U3VidGxlKCkKK0V4Y2VwdGlvbk9y
PFdlYktpdFN1YnRsZUNyeXB0byY+IENyeXB0bzo6d2Via2l0U3VidGxlKCkKIHsKICAgICBpZiAo
IWlzTWFpblRocmVhZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRF
RF9FUlIgfTsKQEAgLTc3LDcgKzc3LDcgQEAgRXhjZXB0aW9uT3I8V2ViS2l0U3VidGxlQ3J5cHRv
Kj4gQ3J5cHRvOjp3ZWJraXRTdWJ0bGUoKQogICAgIGlmICghbV93ZWJraXRTdWJ0bGUpCiAgICAg
ICAgIG1fd2Via2l0U3VidGxlID0gV2ViS2l0U3VidGxlQ3J5cHRvOjpjcmVhdGUoKmRvd25jYXN0
PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKTsKIAotICAgIHJldHVybiBtX3dl
YmtpdFN1YnRsZS5nZXQoKTsKKyAgICByZXR1cm4gKm1fd2Via2l0U3VidGxlOwogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NyeXB0by5oCmluZGV4IDkwMzRlNjE4N2RiOTAzNTAwMDZlOWIwYWE0ZmQ2M2Q4
OGU2OGRjOTQuLjliNDgwZTA1NDIxOWY5YzRjZTA2NDI1YTA4YzQ3ZDVkMjQzYjhjNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DcnlwdG8uaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3VidGxlQ3J5cHRv
JiBzdWJ0bGUoKTsKIAogICAgIC8vIFdpbGwgYmUgZGVwcmVjYXRlZC4KLSAgICBFeGNlcHRpb25P
cjxXZWJLaXRTdWJ0bGVDcnlwdG8qPiB3ZWJraXRTdWJ0bGUoKTsKKyAgICBFeGNlcHRpb25PcjxX
ZWJLaXRTdWJ0bGVDcnlwdG8mPiB3ZWJraXRTdWJ0bGUoKTsKICNlbmRpZgogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMmE0OWFhYTUyMjRiN2Q3NjU2OWIwZjZm
NThkYjA5M2Y3YjVlNjYwNC4uMzZmMjIwZWYxNjNmZmIyMjIzODVmMTJjYWQzNDY1NThmMDk5NDZj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMDksOSArMTA5LDcgQEAgcHVi
bGljOgogCiAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRT
dHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEVsZW1lbnQmKSBjb25zdDsKIAotICAgIEV4Y2VwdGlv
bk9yPE5vZGUqPiBlbnN1cmVTaGFkb3dSb290KEVsZW1lbnQmIGhvc3QpOwogICAgIE5vZGUqIGVu
c3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCk7Ci0gICAgRXhjZXB0aW9uT3I8
Tm9kZSo+IGNyZWF0ZVNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCk7CiAgICAgTm9kZSogc2hhZG93
Um9vdChFbGVtZW50JiBob3N0KTsKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHNoYWRvd1Jvb3RU
eXBlKGNvbnN0IE5vZGUmKSBjb25zdDsKICAgICBTdHJpbmcgc2hhZG93UHNldWRvSWQoRWxlbWVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZh
bHVlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmlu
ZGV4IDIyOTBmYmRmODNlM2JiYjMyMjQ1YmQ1N2M1YTNiYWRmYmEwZTZkZDIuLjQyYTdhMDI4Yjdk
OTNiMTk5YjNhZWFmNjExNGQxNjEzNTY5NzIwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9E
T00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0KQEAgLTc4LDEzICs3OCwxMyBAQCAtIChOU1N0cmlu
ZyAqKWdldFN0cmluZ1ZhbHVlCiAtIChET01Db3VudGVyICopZ2V0Q291bnRlclZhbHVlCiB7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQo
cmFpc2VPbkRPTUVycm9yKElNUEwtPmdldENvdW50ZXJWYWx1ZSgpKSk7CisgICAgcmV0dXJuIGtp
dCgmcmFpc2VPbkRPTUVycm9yKElNUEwtPmdldENvdW50ZXJWYWx1ZSgpKSk7CiB9CiAKIC0gKERP
TVJlY3QgKilnZXRSZWN0VmFsdWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChyYWlzZU9uRE9NRXJyb3IoSU1QTC0+Z2V0UmVjdFZh
bHVlKCkpKTsKKyAgICByZXR1cm4ga2l0KCZyYWlzZU9uRE9NRXJyb3IoSU1QTC0+Z2V0UmVjdFZh
bHVlKCkpKTsKIH0KIAogLSAoRE9NUkdCQ29sb3IgKilnZXRSR0JDb2xvclZhbHVlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggZmUxOTZmMTQ5NjUxNjkzYWRkNDQ5NzliMjA5
YzM3OWFkZThlNjM5ZC4uMzY5Yjk4MmY2YTA0MGNhOGFjYjBmNmEzMTMzMDBkNWMwMDMyMjkwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtNzgxLDE5ICs3ODEsMTMgQEAg
LSAoRE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZAogLSAo
RE9NRWxlbWVudCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICopc2VsZWN0b3JzCiB7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUVsZW1lbnQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0
cihJTVBMLT5xdWVyeVNlbGVjdG9yKHNlbGVjdG9ycywgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBraXQocmFpc2VPbkRPTUVy
cm9yKElNUEwtPnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JzKSkpOwogfQogCiAtIChET01Ob2RlTGlz
dCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3JzCiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIERPTU5vZGVMaXN0ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1Q
TC0+cXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcnMsIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHJhaXNlT25ET01FcnJv
cihJTVBMLT5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9ycykpLnB0cigpKTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbQppbmRleCA1ZWU2
NTU4NGMyNjk3MTIyNGUwNWUyNTIyYzZkNzkwMmE2OWUxMGI1Li4xZmQ3ZWE5OWYyMjQ4OTNiOWIw
MDJkZDA4NDBjMGYzOTY1MzMzNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00v
RE9NRG9jdW1lbnRGcmFnbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9j
dW1lbnRGcmFnbWVudC5tbQpAQCAtNzgsMTkgKzc4LDEzIEBAIC0gKERPTUVsZW1lbnQgKilnZXRF
bGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50SWQKIC0gKERPTUVsZW1lbnQgKilxdWVyeVNl
bGVjdG9yOihOU1N0cmluZyAqKXNlbGVjdG9ycwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBET01FbGVtZW50ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cXVlcnlTZWxlY3Rv
cihzZWxlY3RvcnMsIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHJhaXNlT25ET01FcnJvcihJTVBMLT5xdWVyeVNlbGVj
dG9yKHNlbGVjdG9ycykpKTsKIH0KIAogLSAoRE9NTm9kZUxpc3QgKilxdWVyeVNlbGVjdG9yQWxs
OihOU1N0cmluZyAqKXNlbGVjdG9ycwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01O
b2RlTGlzdCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnF1ZXJ5U2VsZWN0b3JBbGwo
c2VsZWN0b3JzLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgcmV0dXJuIGtpdChyYWlzZU9uRE9NRXJyb3IoSU1QTC0+cXVlcnlTZWxlY3Rv
ckFsbChzZWxlY3RvcnMpKS5wdHIoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVs
ZW1lbnQubW0KaW5kZXggMzNhOGMyNWVhNDRlYjNkMWVmNmI0Y2FlYWNjMmU2Mzg2M2UyNjcxNy4u
YzBhYThmNzk5MTlhZjU0YTdjOGMxZGE1MzM5MTI3YWM5OTYwOGU0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
RE9NL0RPTUVsZW1lbnQubW0KQEAgLTQ3MiwxOSArNDcyLDEzIEBAIC0gKHZvaWQpcmVtb3ZlCiAt
IChET01FbGVtZW50ICopcXVlcnlTZWxlY3RvcjooTlNTdHJpbmcgKilzZWxlY3RvcnMKIHsKICAg
ICBKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgRE9NRWxlbWVudCAqcmVzdWx0ID0ga2l0KHVud3JhcCgqc2VsZikucXVlcnlTZWxlY3Rv
cihzZWxlY3RvcnMsIGVjKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBraXQocmFpc2VPbkRPTUVycm9yKHVud3JhcCgqc2VsZikucXVl
cnlTZWxlY3RvcihzZWxlY3RvcnMpKSk7CiB9CiAKIC0gKERPTU5vZGVMaXN0ICopcXVlcnlTZWxl
Y3RvckFsbDooTlNTdHJpbmcgKilzZWxlY3RvcnMKIHsKICAgICBKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZUxpc3QgKnJl
c3VsdCA9IGtpdCh1bndyYXAoKnNlbGYpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzLCBlYyku
Z2V0KCkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4ga2l0KHJhaXNlT25ET01FcnJvcih1bndyYXAoKnNlbGYpLnF1ZXJ5U2VsZWN0b3JB
bGwoc2VsZWN0b3JzKSkucHRyKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NRG9jdW1lbnQuY3BwCmluZGV4IDE1YTU4OTcwMTE5NTVkYWE3OTA2NGFj
NTJkMzljYTRlMGY1YjdlNzQuLmJlNjg4ZTA5ZDZhMzU5OTdhYWI2Y2FiZDE4NGQ3NjRhMWIzMWY5
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnQuY3Bw
CkBAIC0xMzg2LDEzICsxMzg2LDEzIEBAIFdlYktpdERPTUVsZW1lbnQqIHdlYmtpdF9kb21fZG9j
dW1lbnRfcXVlcnlfc2VsZWN0b3IoV2ViS2l0RE9NRG9jdW1lbnQqIHNlbGYsIGNvCiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IsIDApOwogICAgIFdlYkNvcmU6OkRv
Y3VtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZl
cnRlZFNlbGVjdG9ycyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzZWxlY3RvcnMpOwotICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50
PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+cXVlcnlTZWxlY3Rvcihjb252ZXJ0
ZWRTZWxlY3RvcnMsIGVjKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+
cXVlcnlTZWxlY3Rvcihjb252ZXJ0ZWRTZWxlY3RvcnMpOworICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVj
ZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vy
cm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNk
ZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4g
V2ViS2l0OjpraXQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIH0KIAogV2ViS2l0RE9N
Tm9kZUxpc3QqIHdlYmtpdF9kb21fZG9jdW1lbnRfcXVlcnlfc2VsZWN0b3JfYWxsKFdlYktpdERP
TURvY3VtZW50KiBzZWxmLCBjb25zdCBnY2hhciogc2VsZWN0b3JzLCBHRXJyb3IqKiBlcnJvcikK
QEAgLTE0MDMsMTMgKzE0MDMsMTMgQEAgV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21fZG9j
dW1lbnRfcXVlcnlfc2VsZWN0b3JfYWxsKFdlYktpdERPTURvY3VtZW50KiBzZWwKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbCghZXJyb3IgfHwgISplcnJvciwgMCk7CiAgICAgV2ViQ29yZTo6RG9j
dW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVy
dGVkU2VsZWN0b3JzID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHNlbGVjdG9ycyk7Ci0gICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGVMaXN0
PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+cXVlcnlTZWxlY3RvckFsbChjb252
ZXJ0ZWRTZWxlY3RvcnMsIGVjKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0ID0gaXRl
bS0+cXVlcnlTZWxlY3RvckFsbChjb252ZXJ0ZWRTZWxlY3RvcnMpOworICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdf
c2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00i
KSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0OjpraXQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLnB0cigpKTsKIH0K
IAogV2ViS2l0RE9NRG9jdW1lbnRUeXBlKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kb2N0eXBl
KFdlYktpdERPTURvY3VtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEZyYWdt
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggMWNjNGUyNGQyNDNhYWVi
YjRkOTVkYWQ2YzU4ZjY2ZWMwN2YwMGIyNi4uNThlYjUyZDIzNDU0MTJhYTZlZWRiMDk2ZDA0N2Vk
M2Y5NDAzNjhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0xOTksMTMgKzE5OSwxMyBAQCBXZWJLaXRET01F
bGVtZW50KiB3ZWJraXRfZG9tX2RvY3VtZW50X2ZyYWdtZW50X3F1ZXJ5X3NlbGVjdG9yKFdlYktp
dERPTURvY3VtZW50RgogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9y
LCAwKTsKICAgICBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFNlbGVjdG9ycyA9IFdURjo6U3RyaW5n
Ojpmcm9tVVRGOChzZWxlY3RvcnMpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQ
dHIoaXRlbS0+cXVlcnlTZWxlY3Rvcihjb252ZXJ0ZWRTZWxlY3RvcnMsIGVjKSk7Ci0gICAgaWYg
KGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2Mo
ZWMpOworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+cXVlcnlTZWxlY3Rvcihjb252ZXJ0ZWRTZWxl
Y3RvcnMpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtf
ZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2Jq
ZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQocmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKTsKIH0KIAogV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21fZG9jdW1l
bnRfZnJhZ21lbnRfcXVlcnlfc2VsZWN0b3JfYWxsKFdlYktpdERPTURvY3VtZW50RnJhZ21lbnQq
IHNlbGYsIGNvbnN0IGdjaGFyKiBzZWxlY3RvcnMsIEdFcnJvcioqIGVycm9yKQpAQCAtMjE2LDEz
ICsyMTYsMTMgQEAgV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21fZG9jdW1lbnRfZnJhZ21l
bnRfcXVlcnlfc2VsZWN0b3JfYWxsKFdlYktpdERPTURvY3UKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbCghZXJyb3IgfHwgISplcnJvciwgMCk7CiAgICAgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVu
dCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRT
ZWxlY3RvcnMgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc2VsZWN0b3JzKTsKLSAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+IGdv
YmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5xdWVyeVNlbGVjdG9yQWxsKGNvbnZlcnRl
ZFNlbGVjdG9ycywgZWMpKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5x
dWVyeVNlbGVjdG9yQWxsKGNvbnZlcnRlZFNlbGVjdG9ycyk7CisgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24g
ZWNkZXNjKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAgZ19zZXRf
ZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBl
Y2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVy
biBXZWJLaXQ6OmtpdChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkucHRyKCkpOwogfQogCiBX
ZWJLaXRET01IVE1MQ29sbGVjdGlvbiogd2Via2l0X2RvbV9kb2N1bWVudF9mcmFnbWVudF9nZXRf
Y2hpbGRyZW4oV2ViS2l0RE9NRG9jdW1lbnRGcmFnbWVudCogc2VsZikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUVsZW1lbnQuY3BwCmluZGV4IDNlM2Q2NmI4ZDNiMGFjZDM3
ODBjYTc4NTkwZWE2Zjk1ZjJlZjgxM2EuLmE5MjE2YTg0NmFjYTY5ZmVlMjQzOTg0NGE4NjNkOWZj
YzQyODkxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01FbGVtZW50
LmNwcApAQCAtOTk4LDEzICs5OTgsMTMgQEAgV2ViS2l0RE9NRWxlbWVudCogd2Via2l0X2RvbV9l
bGVtZW50X3F1ZXJ5X3NlbGVjdG9yKFdlYktpdERPTUVsZW1lbnQqIHNlbGYsIGNvbnMKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbCghZXJyb3IgfHwgISplcnJvciwgMCk7CiAgICAgV2ViQ29yZTo6
RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252
ZXJ0ZWRTZWxlY3RvcnMgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc2VsZWN0b3JzKTsKLSAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVu
dD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnF1ZXJ5U2VsZWN0b3IoY29udmVy
dGVkU2VsZWN0b3JzLCBlYykpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0t
PnF1ZXJ5U2VsZWN0b3IoY29udmVydGVkU2VsZWN0b3JzKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBl
Y2Rlc2MocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9l
cnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVj
ZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6a2l0KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiB9CiAKIFdlYktpdERP
TU5vZGVMaXN0KiB3ZWJraXRfZG9tX2VsZW1lbnRfcXVlcnlfc2VsZWN0b3JfYWxsKFdlYktpdERP
TUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiBzZWxlY3RvcnMsIEdFcnJvcioqIGVycm9yKQpA
QCAtMTAxNSwxMyArMTAxNSwxMyBAQCBXZWJLaXRET01Ob2RlTGlzdCogd2Via2l0X2RvbV9lbGVt
ZW50X3F1ZXJ5X3NlbGVjdG9yX2FsbChXZWJLaXRET01FbGVtZW50KiBzZWxmLAogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yLCAwKTsKICAgICBXZWJDb3JlOjpFbGVt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZFNlbGVjdG9ycyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzZWxlY3RvcnMpOwotICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlTGlzdD4g
Z29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnF1ZXJ5U2VsZWN0b3JBbGwoY29udmVy
dGVkU2VsZWN0b3JzLCBlYykpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0t
PnF1ZXJ5U2VsZWN0b3JBbGwoY29udmVydGVkU2VsZWN0b3JzKTsKKyAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
biBlY2Rlc2MocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3Nl
dF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiks
IGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6a2l0KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAK
IGdjaGFyKiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X3RhZ19uYW1lKFdlYktpdERPTUVsZW1lbnQq
IHNlbGYpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293401</attachid>
            <date>2016-10-31 01:03:22 -0700</date>
            <delta_ts>2016-10-31 08:57:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164214-20161031005926.patch</filename>
            <type>text/plain</type>
            <size>72565</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ExMWNjOGMzOGQ4Yzk4
MGI2ZDhmZjc4MTkwMzc2Mzk3MTU4NTNiNS4uNjFmNGFiYzFhM2ZjOWViZDQ0MzIzNzVhMGYyZjg0
MzhlYzQ5YTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxNi0xMC0zMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDaGlsZE5vZGUgYW5k
IFBhcmVudE5vZGUgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbiwgYWRkIHN1cHBvcnQg
Zm9yIEV4Y2VwdGlvbk9yPFQmPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVPcHRpb25zKTogVXNlIEZldGNoSGVhZGVy
cyYgaW5zdGVhZCBvZgorICAgICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBmb3IgcmV0dXJuIHZhbHVl
LgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aCk6IERpdHRv
LgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0Lmg6IFVwZGF0ZWQgZm9yIGFi
b3ZlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKTogVXNlIFNvdXJj
ZUJ1ZmZlciYgaW5zdGVhZCBvZgorICAgICAgICBTb3VyY2VCdWZmZXIqIGZvciByZXR1cm4gdmFs
dWUuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oOiBVcGRhdGVk
IGZvciBhYm92ZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOiBBZGRl
ZCBvdmVybG9hZHMgb2YgY2hlY2tTZWN1cml0eUZvck5vZGUgc28KKyAgICAgICAgaXQgd29ya3Mg
d2l0aCBhIGZ1bmN0aW9uIHJldHVybmluZyBhIHJlZmVyZW5jZS4KKworICAgICAgICAqIGNzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Z2V0Q291bnRlclZhbHVlKTogVXNlIENvdW50ZXImIGluc3RlYWQgb2YKKyAgICAgICAgQ291
bnRlciogZm9yIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpnZXRSZWN0VmFsdWUpOiBVc2UgUmVjdCYgaW5zdGVhZCBvZgorICAgICAgICBSZWN0KiBm
b3IgcmV0dXJuIHZhbHVlLgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOiBVcGRh
dGVkIGZvciBhYm92ZS4KKworICAgICAgICAqIGRvbS9DaGlsZE5vZGUuaWRsOiBVc2Ugbm9uLWxl
Z2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cXVlcnlTZWxlY3Rvcik6IFVzZSBFeGNlcHRp
b25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cHJlcGVuZCk6IERpdHRvLgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZWxlY3Rv
clF1ZXJ5Rm9yU3RyaW5nKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dGFjaFNoYWRvdyk6IFJldHVybiBTaGFkb3dSb290
JiBpbnN0ZWFkIG9mCisgICAgICAgIFJlZjxTaGFkb3dSb290PiBzaW5jZSB0aGUgc2hhZG93IHJv
b3QgaXMgb3duZWQgYnkgdGhlIGVsZW1lbnQsIG5vdAorICAgICAgICB0aGUgY2FsbGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6bWF0Y2hlcyk6IFVwZGF0ZWQgZm9yIGNoYW5nZSB0byBt
YWtlIHRoZQorICAgICAgICBzZWxlY3RvclF1ZXJ5Rm9yU3RyaW5nIGZ1bmN0aW9uIHVzZSBFeGNl
cHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsb3Nlc3QpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHROb2RlRm9ySW5zZXJ0aW9uKTogUmV0dXJuIENvbnRhaW5l
ck5vZGUmIGluc3RlYWQgb2YKKyAgICAgICAgQ29udGFpbmVyTm9kZSouCisgICAgICAgIChXZWJD
b3JlOjpjb250ZXh0RWxlbWVudEZvckluc2VydGlvbik6IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAg
ICAgICAqIGRvbS9FbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAgICAgICAqIGRvbS9F
bGVtZW50LmlkbDogQ2hhbmdlZCByZXR1cm4gdHlwZSBmb3IgY2xvc2VzdCBhbmQgZm9yCisgICAg
ICAgIGluc2VydEFkamFjZW50RWxlbWVudCB0byBiZSBudWxsYWJsZSBzaW5jZSBib3RoIGNhbiBy
ZXR1cm4gbnVsbC4KKworICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOiBBZGRlZCBhIHNwZWNp
YWxpemF0aW9uIGZvciBFeGNlcHRpb25PcjxUJj4uCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSk6
IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmJlZm9yZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YWZ0ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnJlcGxhY2VXaXRoKTogRGl0dG8uCisgICAgICAgICogZG9tL05vZGUuaDogVXBk
YXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKworICAgICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDog
VXNlIG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OnF1ZXJ5QWxsKTogQ2hh
bmdlZCByZXR1cm4gdHlwZSB0byBSZWYuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1ZXJ5
Q2FjaGU6OmFkZCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVy
eS5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50OjpnZXRTVkdEb2N1bWVudCk6IFJldHVybgorICAgICAgICBEb2N1bWVudCYgaW5zdGVhZCBv
ZiBEb2N1bWVudCouCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaDogVXBk
YXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6
IFJldHVybiBUZXh0VHJhY2smCisgICAgICAgIGluc3RlYWQgb2YgUmVmPFRleHRUcmFjaz4uCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorCisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnRPZlNuYXBzaG90T3ZlcmxheSk6CisgICAg
ICAgIFVwZGF0ZWQgZm9yIG5ldyBleGNlcHRpb25zLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
cXVlcnlTZWxlY3Rvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnF1ZXJ5U2VsZWN0b3JBbGwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IpOiBEaXR0by4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5vZGVGaW5kZXI6OnBlcmZvcm1TZWFyY2gpOiBQdXQgYSBudWxsIGNoZWNrCisgICAgICAg
IGhlcmUgc28gY2FsbGVycyBkb24ndCBoYXZlIHRvIGRvIGl0LiBQYXNzIHJlZmVyZW5jZXMgdG8g
dGhlCisgICAgICAgIGluZGl2aWR1YWwgZnVuY3Rpb25zIHNpbmNlIHRoZSBwb2ludGVyIGNhbid0
IGJlIG51bGwuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFyY2hV
c2luZ0RPTVRyZWVUcmF2ZXJzYWwpOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSByZWZlcmVuY2Ug
YW5kIHN0cmVhbWxpbmVkIGNvZGUgYSBiaXQsIHVzaW5nCisgICAgICAgIGNvbnRhaW5zSWdub3Jp
bmdBU0NJSUNhc2UgaW5zdGVhZCBvZiBmaW5kSWdub3JpbmdDYXNlLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hlc0F0dHJpYnV0ZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hlc0VsZW1lbnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5vZGVGaW5kZXI6OnNlYXJjaFVzaW5nWFBhdGgp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5vZGVGaW5kZXI6OnNlYXJjaFVz
aW5nQ1NTU2VsZWN0b3JzKTogRGl0dG8uCisgICAgICAgIEFsc28gdXBkYXRlZCAgZm9yIG5ldyBl
eGNlcHRpb25zIGluIHF1ZXJ5U2VsZWN0b3JBbGwuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvck5vZGVGaW5kZXIuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisKKyAgICAgICAgKiBwYWdlL0Ny
eXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG86OndlYmtpdFN1YnRsZSk6IFJldHVy
biBXZWJLaXRTdWJ0bGVDcnlwdG8mCisgICAgICAgIGluc2V0YWQgb2YgV2ViS2l0U3VidGxlQ3J5
cHRvKi4KKyAgICAgICAgKiBwYWdlL0NyeXB0by5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKworICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6IFJlbW92ZWQgZGVjbGFyYXRpb25zIGZvciBmdW5j
dGlvbnMgYWxyZWFkeQorICAgICAgICByZW1vdmVkOiBlbnN1cmVTaGFkb3dSb290IGFuZCBjcmVh
dGVTaGFkb3dSb290LgorCiAyMDE2LTEwLTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZml4OiBDb3JyZWN0IENoYW5nZUxvZyBhZnRl
ciBteSBiYWQgbWVyZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggY2Y2YWU2MWQ5OTQ1NGJjMGI5OTAx
ODFlYjQ0YjJiMzMzNDI1ZGMzNS4uZWZkNmUxNDBlNmFjZjM2ZTFkYjI3YzgwNmM2ZTMxYzhkNTJj
ODJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEwLTMxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIENoaWxkTm9kZSBhbmQg
UGFyZW50Tm9kZSBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uLCBhZGQgc3VwcG9ydCBm
b3IgRXhjZXB0aW9uT3I8VCY+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIERPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbToKKyAgICAgICAgKC1bRE9N
Q1NTUHJpbWl0aXZlVmFsdWUgZ2V0Q291bnRlclZhbHVlXSk6IFVwZGF0ZWQgc2luY2UgcmV0dXJu
IHZhbHVlCisgICAgICAgIGlzIGEgcmVmZXJlbmNlIG5vdy4KKyAgICAgICAgKC1bRE9NQ1NTUHJp
bWl0aXZlVmFsdWUgZ2V0UmVjdFZhbHVlXSk6IERpdHRvLgorCisgICAgICAgICogRE9NL0RPTURv
Y3VtZW50Lm1tOgorICAgICAgICAoLVtET01Eb2N1bWVudCBxdWVyeVNlbGVjdG9yOl0pOiBVcGRh
dGVkIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgcXVlcnlTZWxl
Y3RvckFsbDpdKTogRGl0dG8uCisgICAgICAgICogRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW06
CisgICAgICAgICgtW0RPTURvY3VtZW50RnJhZ21lbnQgcXVlcnlTZWxlY3RvcjpdKTogRGl0dG8u
CisgICAgICAgICgtW0RPTURvY3VtZW50RnJhZ21lbnQgcXVlcnlTZWxlY3RvckFsbDpdKTogRGl0
dG8uCisgICAgICAgICogRE9NL0RPTUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUVsZW1lbnQg
cXVlcnlTZWxlY3RvcjpdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUVsZW1lbnQgcXVlcnlTZWxl
Y3RvckFsbDpdKTogRGl0dG8uCisKIDIwMTYtMTAtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFtZWROb2RlTWFwLCBhbmQgRE9NU3Ry
aW5nTWFwIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxNjc2
ZWE5NDE1MjE5YTU2NTA4YjAxNDcwZThiZTk1NjBkZmRkYTFmLi4xMWQ1ZDM0OTk3ZDRiMzYxMzYy
ZmUzZjgzNDgzY2Y2OGNiYzkxYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYt
MTAtMzEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgQ2hp
bGROb2RlIGFuZCBQYXJlbnROb2RlIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRpb24sIGFk
ZCBzdXBwb3J0IGZvciBFeGNlcHRpb25PcjxUJj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01Eb2N1bWVudC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2RvY3VtZW50
X3F1ZXJ5X3NlbGVjdG9yKTogVXBkYXRlZCBleGNlcHRpb24gaGFuZGxpbmcuCisgICAgICAgICh3
ZWJraXRfZG9tX2RvY3VtZW50X3F1ZXJ5X3NlbGVjdG9yX2FsbCk6IERpdHRvLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRG
cmFnbWVudC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2RvY3VtZW50X2ZyYWdtZW50X3F1ZXJ5
X3NlbGVjdG9yKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfZG9tX2RvY3VtZW50X2ZyYWdtZW50
X3F1ZXJ5X3NlbGVjdG9yX2FsbCk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudC5jcHA6CisgICAgICAgICh3ZWJr
aXRfZG9tX2VsZW1lbnRfcXVlcnlfc2VsZWN0b3IpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9k
b21fZWxlbWVudF9xdWVyeV9zZWxlY3Rvcl9hbGwpOiBEaXR0by4KKwogMjAxNi0xMC0zMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBFbGVtZW50LCBOYW1l
ZE5vZGVNYXAsIGFuZCBET01TdHJpbmdNYXAgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4
IDlhZmNjYjg3ZjdhNmQzNmYzNGE5OWEwZDRjNjBjOTU0MDcyYzQ3NmUuLjU1OTJiZDc1YjM1NWNl
MmUwOTdiZTk1YzcxYWM3Mjg3YjI4YjY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBt
ZXRob2RDYW5IYXZlQm9keShjb25zdCBGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCYgaW50
ZXJuYWxSZXF1ZQogICAgIHJldHVybiBpbnRlcm5hbFJlcXVlc3QucmVxdWVzdC5odHRwTWV0aG9k
KCkgIT0gIkdFVCIgJiYgaW50ZXJuYWxSZXF1ZXN0LnJlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJI
RUFEIjsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEZldGNoSGVhZGVycz4+IEZldGNoUmVxdWVzdDo6
aW5pdGlhbGl6ZU9wdGlvbnMoY29uc3QgRGljdGlvbmFyeSYgaW5pdCkKK0V4Y2VwdGlvbk9yPEZl
dGNoSGVhZGVycyY+IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZU9wdGlvbnMoY29uc3QgRGljdGlv
bmFyeSYgaW5pdCkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIApA
QCAtMjM3LDEwICsyMzcsMTAgQEAgRXhjZXB0aW9uT3I8UmVmPEZldGNoSGVhZGVycz4+IEZldGNo
UmVxdWVzdDo6aW5pdGlhbGl6ZU9wdGlvbnMoY29uc3QgRGljdGlvbmFyeSYKICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVGhlcmUgY2Fubm90
IGJlIGFuIGludGVncml0eSBpbiBuby1jb3JzIG1vZGUuIikgfTsKICAgICAgICAgbV9oZWFkZXJz
LT5zZXRHdWFyZChGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXF1ZXN0Tm9Db3JzKTsKICAgICB9Ci0g
ICAgcmV0dXJuIG1faGVhZGVycy5jb3B5UmVmKCk7CisgICAgcmV0dXJuIG1faGVhZGVycy5nZXQo
KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEZldGNoSGVhZGVycz4+IEZldGNoUmVxdWVzdDo6aW5p
dGlhbGl6ZVdpdGgoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IERpY3Rpb25hcnkmIGluaXQpCitF
eGNlcHRpb25PcjxGZXRjaEhlYWRlcnMmPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBEaWN0aW9uYXJ5JiBpbml0KQogewogICAgIEFTU0VSVChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIC8vIEZJWE1FOiBUaWdodGVuIHRoZSBVUkwg
cGFyc2luZyBhbGdvcml0aG0gYWNjb3JkaW5nIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8j
Y29uY2VwdC11cmwtcGFyc2VyLgpAQCAtMjU2LDcgKzI1Niw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxG
ZXRjaEhlYWRlcnM+PiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKGNvbnN0IFN0cmluZyYg
dXJsLCBjCiAgICAgcmV0dXJuIGluaXRpYWxpemVPcHRpb25zKGluaXQpOwogfQogCi1FeGNlcHRp
b25PcjxSZWY8RmV0Y2hIZWFkZXJzPj4gRmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aChGZXRj
aFJlcXVlc3QmIGlucHV0LCBjb25zdCBEaWN0aW9uYXJ5JiBpbml0KQorRXhjZXB0aW9uT3I8RmV0
Y2hIZWFkZXJzJj4gRmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aChGZXRjaFJlcXVlc3QmIGlu
cHV0LCBjb25zdCBEaWN0aW9uYXJ5JiBpbml0KQogewogICAgIGlmIChpbnB1dC5pc0Rpc3R1cmJl
ZE9yTG9ja2VkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24ge1R5cGVFcnJvciwgQVNDSUlM
aXRlcmFsKCJSZXF1ZXN0IGlucHV0IGlzIGRpc3R1cmJlZCBvciBsb2NrZWQuIikgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCmluZGV4IDBiNmNiNjhmYzBh
OWQyM2ZlMzFiNjAyY2QwYjhiM2NlNzc4OTgwMjAuLmI3NjI2NWE2NDFmMzEwZjQ3NTM0ODQ3Mzdm
MjQ0YTg2MWQxZWQ2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuaApAQCAtNDUsOCArNDUsOCBAQCBjbGFzcyBGZXRjaFJlcXVlc3QgZmluYWwgOiBwdWJs
aWMgRmV0Y2hCb2R5T3duZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXF1ZXN0
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwgTnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVh
dGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVxdWVzdCksIHsgfSkpOyB9CiAKLSAgICBFeGNlcHRp
b25PcjxSZWY8RmV0Y2hIZWFkZXJzPj4gaW5pdGlhbGl6ZVdpdGgoRmV0Y2hSZXF1ZXN0JiwgY29u
c3QgRGljdGlvbmFyeSYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaEhlYWRlcnM+PiBpbml0
aWFsaXplV2l0aChjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgRXhjZXB0
aW9uT3I8RmV0Y2hIZWFkZXJzJj4gaW5pdGlhbGl6ZVdpdGgoRmV0Y2hSZXF1ZXN0JiwgY29uc3Qg
RGljdGlvbmFyeSYpOworICAgIEV4Y2VwdGlvbk9yPEZldGNoSGVhZGVycyY+IGluaXRpYWxpemVX
aXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IERpY3Rpb25hcnkmKTsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRCb2R5KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBGZXRjaFJlcXVlc3Qq
KTsKIAogICAgIGNvbnN0IFN0cmluZyYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5h
bFJlcXVlc3QucmVxdWVzdC5odHRwTWV0aG9kKCk7IH0KQEAgLTk1LDcgKzk1LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBGZXRjaFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE9w
dGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgSW50ZXJuYWxSZXF1ZXN0
JiYpOwogCi0gICAgRXhjZXB0aW9uT3I8UmVmPEZldGNoSGVhZGVycz4+IGluaXRpYWxpemVPcHRp
b25zKGNvbnN0IERpY3Rpb25hcnkmKTsKKyAgICBFeGNlcHRpb25PcjxGZXRjaEhlYWRlcnMmPiBp
bml0aWFsaXplT3B0aW9ucyhjb25zdCBEaWN0aW9uYXJ5Jik7CiAKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDgwZTcyODRiMzA4MWQ5
ODljNzkxMzgxMWIyZjA0N2JhMzkzM2QxMWMuLmFmMTNlNDJhOGJkMDg4MTU2YTg2Y2M4NGY5N2E0
OWEzMDJmZjUzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwCkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6
c3RyZWFtRW5kZWRXaXRoRXJyb3IoT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3IpCiAg
ICAgfQogfQogCi1FeGNlcHRpb25PcjxTb3VyY2VCdWZmZXIqPiBNZWRpYVNvdXJjZTo6YWRkU291
cmNlQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkKK0V4Y2VwdGlvbk9yPFNvdXJjZUJ1ZmZlciY+
IE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAg
IExPRyhNZWRpYVNvdXJjZSwgIk1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoJXMpICVwIiwg
dHlwZS5hc2NpaSgpLmRhdGEoKSwgdGhpcyk7CiAKQEAgLTY2OCwxNCArNjY4LDE0IEBAIEV4Y2Vw
dGlvbk9yPFNvdXJjZUJ1ZmZlcio+IE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoY29uc3Qg
U3RyaW5nJiB0eXBlKQogICAgIC8vIOKGsyBTZXQgdGhlIG1vZGUgYXR0cmlidXRlIG9uIHRoZSBu
ZXcgb2JqZWN0IHRvICJzZWdtZW50cyIuCiAgICAgYnVmZmVyLT5zZXRNb2RlKHNob3VsZEdlbmVy
YXRlVGltZXN0YW1wcyA/IFNvdXJjZUJ1ZmZlcjo6QXBwZW5kTW9kZTo6U2VxdWVuY2UgOiBTb3Vy
Y2VCdWZmZXI6OkFwcGVuZE1vZGU6OlNlZ21lbnRzKTsKIAotICAgIFNvdXJjZUJ1ZmZlciogcmVz
dWx0ID0gYnVmZmVyLnB0cigpOworICAgIGF1dG8mIHJlc3VsdCA9IGJ1ZmZlci5nZXQoKTsKIAog
ICAgIC8vIDguIEFkZCB0aGUgbmV3IG9iamVjdCB0byBzb3VyY2VCdWZmZXJzIGFuZCBmaXJlIGEg
YWRkc291cmNlYnVmZmVyIG9uIHRoYXQgb2JqZWN0LgogICAgIG1fc291cmNlQnVmZmVycy0+YWRk
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgcmVnZW5lcmF0ZUFjdGl2ZVNvdXJjZUJ1ZmZlcnMoKTsK
IAogICAgIC8vIDkuIFJldHVybiB0aGUgbmV3IG9iamVjdCB0byB0aGUgY2FsbGVyLgotICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXImIGJ1
ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuaAppbmRleCAzN2YxMTNjZTA4OTBkZTNlYjVhNjU2YWIxZjllMjgwM2VhNDczOTEyLi41YTUz
MjBiMzVmNWFhMjYwODYxODc3MjUwNTM0NWViODBlN2Q0YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC04OSw3ICs4OSw3IEBA
IHB1YmxpYzoKIAogICAgIFNvdXJjZUJ1ZmZlckxpc3QqIHNvdXJjZUJ1ZmZlcnMoKSB7IHJldHVy
biBtX3NvdXJjZUJ1ZmZlcnMuZ2V0KCk7IH0KICAgICBTb3VyY2VCdWZmZXJMaXN0KiBhY3RpdmVT
b3VyY2VCdWZmZXJzKCkgeyByZXR1cm4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzLmdldCgpOyB9Ci0g
ICAgRXhjZXB0aW9uT3I8U291cmNlQnVmZmVyKj4gYWRkU291cmNlQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CisgICAgRXhjZXB0aW9uT3I8U291cmNlQnVmZmVyJj4gYWRkU291cmNlQnVmZmVy
KGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlU291cmNl
QnVmZmVyKFNvdXJjZUJ1ZmZlciYpOwogICAgIHN0YXRpYyBib29sIGlzVHlwZVN1cHBvcnRlZChj
b25zdCBTdHJpbmcmIHR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCmluZGV4IGExNWU4NjQ4YmQwYTMyYTM5NTJmYTIwMjViYmU2MzQzOTcwMjQ0YzkuLjE4
YWIzYzEwZjE3YzY2OTg5Yzg5ZDg1MWYyZjIxODllZjJhZTQzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0yODUsOCArMjg1LDEwIEBAIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGFzSXRlcmF0b3JNZXRob2QoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpOwogCiBlbnVtIFNlY3VyaXR5UmVwb3J0aW5nT3B0aW9uIHsgRG9Ob3RSZXBvcnRTZWN1cml0
eUVycm9yLCBMb2dTZWN1cml0eUVycm9yLCBUaHJvd1NlY3VyaXR5RXJyb3IgfTsKIG5hbWVzcGFj
ZSBCaW5kaW5nU2VjdXJpdHkgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQqIGNoZWNrU2Vj
dXJpdHlGb3JOb2RlKEpTQzo6RXhlY1N0YXRlJiwgVCYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQqIGNoZWNrU2VjdXJpdHlGb3JOb2RlKEpTQzo6RXhlY1N0YXRlJiwgVCopOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IEV4Y2VwdGlvbk9yPFQqPiBjaGVja1NlY3VyaXR5Rm9yTm9kZShK
U0M6OkV4ZWNTdGF0ZSYsIEV4Y2VwdGlvbk9yPFQqPiYmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBFeGNlcHRpb25PcjxUKj4gY2hlY2tTZWN1cml0eUZvck5vZGUoSlNDOjpFeGVjU3RhdGUm
LCBFeGNlcHRpb25PcjxUJj4mJik7CiAgICAgYm9vbCBzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2lu
ZG93KEpTQzo6RXhlY1N0YXRlKiwgRE9NV2luZG93JiwgU2VjdXJpdHlSZXBvcnRpbmdPcHRpb24g
PSBMb2dTZWN1cml0eUVycm9yKTsKICAgICBib29sIHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5k
b3coSlNDOjpFeGVjU3RhdGUmLCBET01XaW5kb3cmLCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIGJv
b2wgc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqLCBTZWN1
cml0eVJlcG9ydGluZ09wdGlvbiA9IExvZ1NlY3VyaXR5RXJyb3IpOwpAQCAtNzc0LDYgKzc3Niwx
MSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNy
ZWF0ZWQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVk
KCZzdGF0ZSwgJmdsb2JhbE9iamVjdCwgdmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOwogfQog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogQmluZGluZ1NlY3VyaXR5OjpjaGVja1Nl
Y3VyaXR5Rm9yTm9kZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFQmIG5vZGUpCit7CisgICAgcmV0
dXJuIHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCAmbm9kZSkgPyAmbm9kZSA6IG51bGxw
dHI7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBCaW5kaW5nU2VjdXJpdHk6
OmNoZWNrU2VjdXJpdHlGb3JOb2RlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVCogbm9kZSkKIHsK
ICAgICByZXR1cm4gc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIG5vZGUpID8gbm9kZSA6
IG51bGxwdHI7CkBAIC03ODIsNyArNzg5LDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBUKiBCaW5kaW5nU2VjdXJpdHk6OmNoZWNrU2VjdXJpdHlGb3JOb2RlKEpTQzo6RXhlY1N0CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgRXhjZXB0aW9uT3I8VCo+IEJpbmRpbmdTZWN1cml0
eTo6Y2hlY2tTZWN1cml0eUZvck5vZGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBFeGNlcHRpb25P
cjxUKj4mJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAg
IHJldHVybiBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLnJlbGVhc2VFeGNl
cHRpb24oKTsKKyAgICByZXR1cm4gY2hlY2tTZWN1cml0eUZvck5vZGUoc3RhdGUsIHZhbHVlLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEV4
Y2VwdGlvbk9yPFQqPiBCaW5kaW5nU2VjdXJpdHk6OmNoZWNrU2VjdXJpdHlGb3JOb2RlKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgRXhjZXB0aW9uT3I8VCY+JiYgdmFsdWUpCit7CisgICAgaWYgKHZh
bHVlLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZUV4Y2VwdGlv
bigpOwogICAgIHJldHVybiBjaGVja1NlY3VyaXR5Rm9yTm9kZShzdGF0ZSwgdmFsdWUucmVsZWFz
ZVJldHVyblZhbHVlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcAppbmRleCA0OTJjNzU0N2U4ODI5MmFkNGQ5MWE4MGQ2MmM5MGVlOWI5M2ExYmQzLi42MjFm
Y2U4MmU1YmU2M2U1MjBjZmNhMTE0NmZmYWVlY2EwYjA1MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTk2MiwxOCArOTYyLDE4IEBAIFN0cmluZyBDU1NQ
cmltaXRpdmVWYWx1ZTo6c3RyaW5nVmFsdWUoKSBjb25zdAogICAgIH0KIH0KIAotRXhjZXB0aW9u
T3I8Q291bnRlcio+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUoKSBjb25zdAor
RXhjZXB0aW9uT3I8Q291bnRlciY+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUo
KSBjb25zdAogewogICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19DT1VOVEVSKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NFU1NfRVJSIH07Ci0gICAgcmV0
dXJuIG1fdmFsdWUuY291bnRlcjsKKyAgICByZXR1cm4gKm1fdmFsdWUuY291bnRlcjsKIH0KIAot
RXhjZXB0aW9uT3I8UmVjdCo+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSZWN0VmFsdWUoKSBjb25z
dAorRXhjZXB0aW9uT3I8UmVjdCY+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSZWN0VmFsdWUoKSBj
b25zdAogewogICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SRUNUKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NFU1NfRVJSIH07Ci0gICAgcmV0dXJuIG1f
dmFsdWUucmVjdDsKKyAgICByZXR1cm4gKm1fdmFsdWUucmVjdDsKIH0KIAogRXhjZXB0aW9uT3I8
UmVmPFJHQkNvbG9yPj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBlNjU1YTFiNWRmNGQ0
ZDE5OGRlODAwMDcyNmUwYWUwNzZhOWQ0ZTkzLi5mMWM4YWVhMDAyZWMyNzcyMDhmNmQ4NjQ4ZGU0
ODUzYjY3MjZjNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAt
MjUxLDggKzI1MSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjxm
bG9hdD4gZ2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U3RyaW5nVmFsdWUodW5zaWduZWQg
c2hvcnQgc3RyaW5nVHlwZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5nPiBnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPENvdW50ZXIqPiBnZXRDb3VudGVyVmFsdWUoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWN0Kj4gZ2V0UmVjdFZhbHVl
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8Q291bnRlciY+IGdldENv
dW50ZXJWYWx1ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlY3Qm
PiBnZXRSZWN0VmFsdWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxS
ZWY8UkdCQ29sb3I+PiBnZXRSR0JDb2xvclZhbHVlKCkgY29uc3Q7CiAKICAgICBkb3VibGUgY29t
cHV0ZURlZ3JlZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGls
ZE5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKaW5kZXggZmM1ZDg1
ZTMzNTMzZTE1YmMxOTI2MjIzNDUxZGFhZjc5OThiNTc0YS4uNTRmNzBhMzQxM2I3NzI2OGJlYzg5
M2JlNWNlMTZkYmQzNTBjYTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxk
Tm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKQEAgLTIyLDgg
KzIyLDggQEAKIFsKICAgICBOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIENoaWxkTm9k
ZSB7Ci0gICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlv
bl0gdm9pZCBiZWZvcmUoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgW0NFUmVh
Y3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBhZnRlcigo
Tm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFi
bGUsIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHJlcGxhY2VXaXRoKChOb2RlIG9yIERP
TVN0cmluZykuLi4gbm9kZXMpOworICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwor
ICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWZ0
ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBVbnNj
b3BhYmxlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01T
dHJpbmcpLi4uIG5vZGVzKTsKICAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93
RXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcAppbmRleCA4NWYwYWYyYmUwMmUxYjdhMWMyNzhkMjkyN2ZlZTlmNmUxNGMxOWE0Li44NzYw
YmFlMzBiZDk2ZGYxYTI0ODdlNjcwMjg0ZjMzZDgxODQzYWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCkBAIC04MDksMTggKzgwOSwyMCBAQCB2b2lkIENvbnRhaW5lck5vZGU6
OnVwZGF0ZVRyZWVBZnRlckluc2VydGlvbihOb2RlJiBjaGlsZCkKICAgICBkaXNwYXRjaENoaWxk
SW5zZXJ0aW9uRXZlbnRzKGNoaWxkKTsKIH0KIAotRWxlbWVudCogQ29udGFpbmVyTm9kZTo6cXVl
cnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYgZWMpCitF
eGNlcHRpb25PcjxFbGVtZW50Kj4gQ29udGFpbmVyTm9kZTo6cXVlcnlTZWxlY3Rvcihjb25zdCBT
dHJpbmcmIHNlbGVjdG9ycykKIHsKLSAgICBpZiAoU2VsZWN0b3JRdWVyeSogc2VsZWN0b3JRdWVy
eSA9IGRvY3VtZW50KCkuc2VsZWN0b3JRdWVyeUZvclN0cmluZyhzZWxlY3RvcnMsIGVjKSkKLSAg
ICAgICAgcmV0dXJuIHNlbGVjdG9yUXVlcnktPnF1ZXJ5Rmlyc3QoKnRoaXMpOwotICAgIHJldHVy
biBudWxscHRyOworICAgIGF1dG8gcXVlcnkgPSBkb2N1bWVudCgpLnNlbGVjdG9yUXVlcnlGb3JT
dHJpbmcoc2VsZWN0b3JzKTsKKyAgICBpZiAocXVlcnkuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBxdWVyeS5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgcmV0dXJuIHF1ZXJ5LnJlbGVh
c2VSZXR1cm5WYWx1ZSgpLnF1ZXJ5Rmlyc3QoKnRoaXMpOwogfQogCi1SZWZQdHI8Tm9kZUxpc3Q+
IENvbnRhaW5lck5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPE5vZGVMaXN0Pj4gQ29udGFpbmVy
Tm9kZTo6cXVlcnlTZWxlY3RvckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycykKIHsKLSAgICBp
ZiAoU2VsZWN0b3JRdWVyeSogc2VsZWN0b3JRdWVyeSA9IGRvY3VtZW50KCkuc2VsZWN0b3JRdWVy
eUZvclN0cmluZyhzZWxlY3RvcnMsIGVjKSkKLSAgICAgICAgcmV0dXJuIHNlbGVjdG9yUXVlcnkt
PnF1ZXJ5QWxsKCp0aGlzKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHF1ZXJ5ID0g
ZG9jdW1lbnQoKS5zZWxlY3RvclF1ZXJ5Rm9yU3RyaW5nKHNlbGVjdG9ycyk7CisgICAgaWYgKHF1
ZXJ5Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcXVlcnkucmVsZWFzZUV4Y2VwdGlv
bigpOworICAgIHJldHVybiBxdWVyeS5yZWxlYXNlUmV0dXJuVmFsdWUoKS5xdWVyeUFsbCgqdGhp
cyk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6Z2V0RWxlbWVudHNC
eVRhZ05hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBxdWFsaWZpZWROYW1lKQpAQCAtODc4LDIyICs4
ODAsMzggQEAgdW5zaWduZWQgQ29udGFpbmVyTm9kZTo6Y2hpbGRFbGVtZW50Q291bnQoKSBjb25z
dAogICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKGNoaWxkcmVuLmJlZ2luKCksIGNoaWxkcmVuLmVu
ZCgpKTsKIH0KIAotdm9pZCBDb250YWluZXJOb2RlOjphcHBlbmQoVmVjdG9yPE5vZGVPclN0cmlu
Zz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8
dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgdmVjdG9y
KQogewotICAgIFJlZlB0cjxOb2RlPiBub2RlID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05v
ZGUoV1RGTW92ZShub2RlT3JTdHJpbmdWZWN0b3IpLCBlYyk7Ci0gICAgaWYgKGVjIHx8ICFub2Rl
KQotICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSBjb252ZXJ0Tm9kZXNPclN0cmlu
Z3NJbnRvTm9kZShXVEZNb3ZlKHZlY3RvcikpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0
byBub2RlID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKIAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGFwcGVu
ZENoaWxkKCpub2RlLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgZWMgfTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIENvbnRhaW5lck5vZGU6OnByZXBl
bmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6cHJlcGVuZChWZWN0b3I8
Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKIHsKLSAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGNvbnZl
cnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFdURk1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSwgZWMp
OwotICAgIGlmIChlYyB8fCAhbm9kZSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVzdWx0
ID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKTsKKworICAgIGF1dG8gbm9kZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiB7IH07CiAKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBpbnNlcnRCZWZvcmUoKm5vZGUsIGZpcnN0Q2hpbGQoKSwgZWMpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IGVjIH07CisgICAgcmV0dXJu
IHsgfTsKIH0KIAogSFRNTENvbGxlY3Rpb24qIENvbnRhaW5lck5vZGU6OmNhY2hlZEhUTUxDb2xs
ZWN0aW9uKENvbGxlY3Rpb25UeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApp
bmRleCBhNjVmNjRhYzIyMmY2NDYzMmEyMDVlOTY0NGRlYjY0ZmUyOTAwNGQwLi41NWVlZWNiNTM4
NTgyYWMxYTljOThkNzU1M2I3NWEzMTZkZjRjMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgKQEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogICAgIC8vIFRoaXMgZ2l2ZXMgdGhlIGFy
ZWEgd2l0aGluIHdoaWNoIGV2ZW50cyBtYXkgZ2V0IGhhbmRsZWQgYnkgYSBoYW5kZXIgcmVnaXN0
ZXJlZCBvbiB0aGlzIG5vZGUuCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGFic29sdXRlRXZlbnRI
YW5kbGVyQm91bmRzKGJvb2wmIC8qIGluY2x1ZGVzRml4ZWRQb3NpdGlvbkVsZW1lbnRzICovKSB7
IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIHF1
ZXJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Tm9kZUxpc3Q+IHF1ZXJ5U2VsZWN0b3JBbGwoY29uc3Qg
U3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBF
eGNlcHRpb25PcjxFbGVtZW50Kj4gcXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9y
cyk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPE5vZGVMaXN0Pj4gcXVlcnlT
ZWxlY3RvckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycyk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8SFRNTENvbGxlY3Rpb24+IGdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0b21pY1N0
cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxIVE1MQ29sbGVjdGlvbj4gZ2V0RWxlbWVu
dHNCeVRhZ05hbWVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUpOwpAQCAtMTAwLDggKzEwMCw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBFbGVtZW50KiBmaXJzdEVsZW1lbnRDaGlsZCgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIEVsZW1lbnQqIGxhc3RFbGVtZW50Q2hpbGQoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB1bnNpZ25lZCBjaGlsZEVsZW1lbnRDb3VudCgpIGNvbnN0OwotICAgIHZvaWQg
YXBwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHByZXBlbmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBwcmVwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOwogCiAgICAgYm9v
bCBlbnN1cmVQcmVJbnNlcnRpb25WYWxpZGl0eShOb2RlJiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hp
bGQsIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWYzODI5
MGFlM2E1N2M0NDViNzYzYTBhZTU3YWNiMzM3OTFkZDFmNC4uOGE2ZmY1YjMxNGYxNmU0MGM3M2Yx
NWMwYjdkMGM3M2ZkNTRmMGU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03NjIsMTYg
Kzc2MiwxMyBAQCBIVE1MSW1hZ2VFbGVtZW50KiBEb2N1bWVudDo6aW1hZ2VFbGVtZW50QnlDYXNl
Rm9sZGVkVXNlbWFwKGNvbnN0IEF0b21pY1N0cmluZ0ltcAogICAgIHJldHVybiBtX2ltYWdlc0J5
VXNlbWFwLmdldEVsZW1lbnRCeUNhc2VGb2xkZWRVc2VtYXAobmFtZSwgKnRoaXMpOwogfQogCi1T
ZWxlY3RvclF1ZXJ5KiBEb2N1bWVudDo6c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJp
bmcmIHNlbGVjdG9yU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFNlbGVj
dG9yUXVlcnkmPiBEb2N1bWVudDo6c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJpbmcm
IHNlbGVjdG9yU3RyaW5nKQogewotICAgIGlmIChzZWxlY3RvclN0cmluZy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KKyAgICBpZiAoc2VsZWN0b3JTdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogICAgIGlmICghbV9zZWxlY3RvclF1ZXJ5Q2FjaGUpCiAg
ICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTZWxlY3RvclF1
ZXJ5Q2FjaGU+KCk7Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3JRdWVyeUNhY2hlLT5hZGQoc2VsZWN0
b3JTdHJpbmcsICp0aGlzLCBlYyk7CisgICAgcmV0dXJuIG1fc2VsZWN0b3JRdWVyeUNhY2hlLT5h
ZGQoc2VsZWN0b3JTdHJpbmcsICp0aGlzKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6Y2xlYXJTZWxl
Y3RvclF1ZXJ5Q2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAwN2MxMmRiYjE1ZjYwMTRh
ZDc5YmY4N2ZjODNlZDg2NTkyMDVjYWVlLi44OTg4ZTMzMjViZDc0YWQzMTg0ODNkZGYzZDBiNDZk
ZjAwM2M4MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZUltYWdlRWxlbWVudEJ5Q2FzZUZvbGRlZFVzZW1hcChjb25zdCBB
dG9taWNTdHJpbmdJbXBsJiwgSFRNTEltYWdlRWxlbWVudCYpOwogICAgIEhUTUxJbWFnZUVsZW1l
bnQqIGltYWdlRWxlbWVudEJ5Q2FzZUZvbGRlZFVzZW1hcChjb25zdCBBdG9taWNTdHJpbmdJbXBs
JikgY29uc3Q7CiAKLSAgICBTZWxlY3RvclF1ZXJ5KiBzZWxlY3RvclF1ZXJ5Rm9yU3RyaW5nKGNv
bnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25PcjxTZWxlY3RvclF1
ZXJ5Jj4gc2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNs
ZWFyU2VsZWN0b3JRdWVyeUNhY2hlKCk7CiAKICAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0
ZXMgZm9yIERvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggM2M3YzhkMTViNGQxM2Q1
MThjYjM4ZGZiOWNlYjQxNTJjZTY2ZTc2YS4uOWFjYjFmNDBjNTc5MTBmODlkODRmZWE1NTk5MGEz
MTdmZGRmMjA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTgzMiw3ICsxODMyLDcgQEAg
c3RhdGljIGJvb2wgY2FuQXR0YWNoQXV0aG9yU2hhZG93Um9vdChjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogICAgIHJldHVybiB0YWdOYW1lcy5nZXQoKS5jb250YWlucyhsb2NhbE5hbWUpIHx8IERv
Y3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGxvY2FsTmFtZSkgPT0gQ3VzdG9tRWxl
bWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZDsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFNo
YWRvd1Jvb3Q+PiBFbGVtZW50OjphdHRhY2hTaGFkb3coY29uc3QgU2hhZG93Um9vdEluaXQmIGlu
aXQpCitFeGNlcHRpb25PcjxTaGFkb3dSb290Jj4gRWxlbWVudDo6YXR0YWNoU2hhZG93KGNvbnN0
IFNoYWRvd1Jvb3RJbml0JiBpbml0KQogewogICAgIGlmICghY2FuQXR0YWNoQXV0aG9yU2hhZG93
Um9vdCgqdGhpcykpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VS
UiB9OwpAQCAtMTg0MSw4ICsxODQxLDkgQEAgRXhjZXB0aW9uT3I8UmVmPFNoYWRvd1Jvb3Q+PiBF
bGVtZW50OjphdHRhY2hTaGFkb3coY29uc3QgU2hhZG93Um9vdEluaXQmIGluaXQpCiAgICAgaWYg
KGluaXQubW9kZSA9PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAgICAgYXV0byBzaGFkb3cgPSBTaGFkb3dSb290Ojpj
cmVhdGUoZG9jdW1lbnQoKSwgaW5pdC5tb2RlKTsKLSAgICBhZGRTaGFkb3dSb290KHNoYWRvdy5j
b3B5UmVmKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKHNoYWRvdyk7CisgICAgYXV0byYgcmVzdWx0
ID0gc2hhZG93LmdldCgpOworICAgIGFkZFNoYWRvd1Jvb3QoV1RGTW92ZShzaGFkb3cpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBTaGFkb3dSb290KiBFbGVtZW50OjpzaGFkb3dSb290Rm9y
QmluZGluZ3MoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKSBjb25zdApAQCAtMjk1NywyMiArMjk1OCwx
OCBAQCBib29sIEVsZW1lbnQ6Om1hdGNoZXNEZWZhdWx0UHNldWRvQ2xhc3MoKSBjb25zdAogCiBF
eGNlcHRpb25Pcjxib29sPiBFbGVtZW50OjptYXRjaGVzKGNvbnN0IFN0cmluZyYgc2VsZWN0b3Ip
CiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byogcXVlcnkgPSBkb2N1bWVu
dCgpLnNlbGVjdG9yUXVlcnlGb3JTdHJpbmcoc2VsZWN0b3IsIGVjKTsKLSAgICBpZiAoZWMpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBlYyB9OwotICAgIHJldHVybiBxdWVyeSAmJiBxdWVy
eS0+bWF0Y2hlcygqdGhpcyk7CisgICAgYXV0byBxdWVyeSA9IGRvY3VtZW50KCkuc2VsZWN0b3JR
dWVyeUZvclN0cmluZyhzZWxlY3Rvcik7CisgICAgaWYgKHF1ZXJ5Lmhhc0V4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gcXVlcnkucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIHJldHVybiBxdWVy
eS5yZWxlYXNlUmV0dXJuVmFsdWUoKS5tYXRjaGVzKCp0aGlzKTsKIH0KIAogRXhjZXB0aW9uT3I8
RWxlbWVudCo+IEVsZW1lbnQ6OmNsb3Nlc3QoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKIHsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvKiBxdWVyeSA9IGRvY3VtZW50KCkuc2Vs
ZWN0b3JRdWVyeUZvclN0cmluZyhzZWxlY3RvciwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IGVjIH07Ci0gICAgaWYgKCFxdWVyeSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHF1ZXJ5LT5jbG9zZXN0KCp0aGlzKTsKKyAgICBhdXRvIHF1
ZXJ5ID0gZG9jdW1lbnQoKS5zZWxlY3RvclF1ZXJ5Rm9yU3RyaW5nKHNlbGVjdG9yKTsKKyAgICBp
ZiAocXVlcnkuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBxdWVyeS5yZWxlYXNlRXhj
ZXB0aW9uKCk7CisgICAgcmV0dXJuIHF1ZXJ5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLmNsb3Nlc3Qo
KnRoaXMpOwogfQogCiBib29sIEVsZW1lbnQ6OnNob3VsZEFwcGVhckluZGV0ZXJtaW5hdGUoKSBj
b25zdApAQCAtMzcxMiwxNiArMzcwOSwxNiBAQCBFeGNlcHRpb25PcjxFbGVtZW50Kj4gRWxlbWVu
dDo6aW5zZXJ0QWRqYWNlbnRFbGVtZW50KGNvbnN0IFN0cmluZyYgd2hlcmUsIEVsZW1lbgogfQog
CiAvLyBTdGVwIDEgb2YgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5nLyNkb20tZWxl
bWVudC1pbnNlcnRhZGphY2VudGh0bWwuCi1zdGF0aWMgRXhjZXB0aW9uT3I8Q29udGFpbmVyTm9k
ZSo+IGNvbnRleHROb2RlRm9ySW5zZXJ0aW9uKGNvbnN0IFN0cmluZyYgd2hlcmUsIEVsZW1lbnQm
IGVsZW1lbnQpCitzdGF0aWMgRXhjZXB0aW9uT3I8Q29udGFpbmVyTm9kZSY+IGNvbnRleHROb2Rl
Rm9ySW5zZXJ0aW9uKGNvbnN0IFN0cmluZyYgd2hlcmUsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHdoZXJlLCAiYmVmb3JlYmVnaW4i
KSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh3aGVyZSwgImFmdGVyZW5kIikpIHsK
ICAgICAgICAgYXV0byogcGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKCk7CiAgICAgICAgIGlm
ICghcGFyZW50IHx8IGlzPERvY3VtZW50PigqcGFyZW50KSkKICAgICAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgfTsKLSAgICAgICAgcmV0dXJu
IHBhcmVudDsKKyAgICAgICAgcmV0dXJuICpwYXJlbnQ7CiAgICAgfQogICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh3aGVyZSwgImFmdGVyYmVnaW4iKSB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh3aGVyZSwgImJlZm9yZWVuZCIpKQotICAgICAgICByZXR1cm4g
JmVsZW1lbnQ7CisgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgIHJldHVybiBFeGNlcHRpb24g
eyBTWU5UQVhfRVJSIH07CiB9CiAKQEAgLTM3MzEsNyArMzcyOCw3IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8RWxlbWVudD4+IGNvbnRleHRFbGVtZW50Rm9ySW5zZXJ0aW9uKGNvbnN0IFN0cmlu
ZyYgd2hlcmUsCiAgICAgYXV0byBjb250ZXh0Tm9kZVJlc3VsdCA9IGNvbnRleHROb2RlRm9ySW5z
ZXJ0aW9uKHdoZXJlLCBlbGVtZW50KTsKICAgICBpZiAoY29udGV4dE5vZGVSZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjb250ZXh0Tm9kZVJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCk7Ci0gICAgYXV0byYgY29udGV4dE5vZGUgPSAqY29udGV4dE5vZGVSZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCk7CisgICAgYXV0byYgY29udGV4dE5vZGUgPSBjb250ZXh0Tm9kZVJlc3Vs
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICBpZiAoIWlzPEVsZW1lbnQ+KGNvbnRleHROb2Rl
KSB8fCAoY29udGV4dE5vZGUuZG9jdW1lbnQoKS5pc0hUTUxEb2N1bWVudCgpICYmIGlzPEhUTUxI
dG1sRWxlbWVudD4oY29udGV4dE5vZGUpKSkKICAgICAgICAgcmV0dXJuIFJlZjxFbGVtZW50PiB7
IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKGNvbnRleHROb2RlLmRvY3VtZW50KCkpIH07CiAgICAg
cmV0dXJuIFJlZjxFbGVtZW50PiB7IGRvd25jYXN0PEVsZW1lbnQ+KGNvbnRleHROb2RlKSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggN2RjYjJmODcxMWI4ZTVmNzZlNjJlZmRhZWYzOTdkODBmMDQ4
M2Y2NC4uZGRhOGJkYTQyOGEzMDdkZWEyOGM2ZTA4YzU5MTVmY2ZlNGExODQyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCkBAIC0yNzMsNyArMjczLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBTaGFkb3dS
b290SW5pdCB7CiAgICAgICAgIFNoYWRvd1Jvb3RNb2RlIG1vZGU7CiAgICAgfTsKLSAgICBFeGNl
cHRpb25PcjxSZWY8U2hhZG93Um9vdD4+IGF0dGFjaFNoYWRvdyhjb25zdCBTaGFkb3dSb290SW5p
dCYpOworICAgIEV4Y2VwdGlvbk9yPFNoYWRvd1Jvb3QmPiBhdHRhY2hTaGFkb3coY29uc3QgU2hh
ZG93Um9vdEluaXQmKTsKIAogICAgIFNoYWRvd1Jvb3QqIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFkb3dSb290JiBlbnN1cmVVc2VyQWdlbnRTaGFk
b3dSb290KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggZTQyZDJkNGQ4MWYyY2JjMjViYjYx
N2E4ZjZkMzAyNmFmNWJjODRlOC4uNzA1NjE3MzhiOTc0OWE4ZDc0YTBmMTdjYTYzYTdmOGZmMTk1
ZTFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMTA0LDcgKzEwNCw3IEBACiAgICAgW1B1
dEZvcndhcmRzPXZhbHVlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NVG9rZW5MaXN0IGNsYXNzTGlz
dDsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBtYXRjaGVzKERPTVN0cmluZyBz
ZWxlY3RvcnMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRWxlbWVudCBjbG9zZXN0KERPTVN0
cmluZyBzZWxlY3RvcnMpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRWxlbWVudD8gY2xvc2Vz
dChET01TdHJpbmcgc2VsZWN0b3JzKTsKICAgICBbSW1wbGVtZW50ZWRBcz1tYXRjaGVzLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiB3ZWJraXRNYXRjaGVzU2VsZWN0b3IoRE9NU3RyaW5nIHNl
bGVjdG9ycyk7CiAKICAgICAvLyBDU1NPTSBWaWV3IE1vZHVsZSBBUEkKQEAgLTEyNCw3ICsxMjQs
NyBAQAogICAgIFtDRVJlYWN0aW9ucywgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB1aWFj
dGlvbnM7CiAjZW5kaWYKIAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEVs
ZW1lbnQgaW5zZXJ0QWRqYWNlbnRFbGVtZW50KERPTVN0cmluZyB3aGVyZSwgRWxlbWVudCBlbGVt
ZW50KTsKKyAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBFbGVtZW50PyBpbnNl
cnRBZGphY2VudEVsZW1lbnQoRE9NU3RyaW5nIHdoZXJlLCBFbGVtZW50IGVsZW1lbnQpOwogICAg
IFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0QWRqYWNlbnRIVE1M
KERPTVN0cmluZyB3aGVyZSwgRE9NU3RyaW5nIGh0bWwpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBpbnNlcnRBZGphY2VudFRleHQoRE9NU3RyaW5nIHdoZXJlLCBET01TdHJpbmcgdGV4
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKaW5kZXggMmQxNDE5ZjNiYjViZTQ5OGMwYjE1
NWM4MjBjNWU0YjM0MmQyY2M5Zi4uNzU3YTg0NWZiZGI5NDY4OWIwMDFiY2I2YjRkM2UwMmJhMDVl
NmNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTQ2LDYgKzQ2LDE5IEBAIHByaXZh
dGU6CiAgICAgVmFyaWFudDxFeGNlcHRpb24sIFJldHVyblR5cGU+IG1fdmFsdWU7CiB9OwogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5SZWZlcmVuY2VUeXBlPiBjbGFzcyBFeGNlcHRpb25PcjxS
ZXR1cm5SZWZlcmVuY2VUeXBlJj4geworcHVibGljOgorICAgIEV4Y2VwdGlvbk9yKEV4Y2VwdGlv
biYmKTsKKyAgICBFeGNlcHRpb25PcihSZXR1cm5SZWZlcmVuY2VUeXBlJik7CisKKyAgICBib29s
IGhhc0V4Y2VwdGlvbigpIGNvbnN0OworICAgIEV4Y2VwdGlvbiYmIHJlbGVhc2VFeGNlcHRpb24o
KTsKKyAgICBSZXR1cm5SZWZlcmVuY2VUeXBlJiByZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworcHJp
dmF0ZToKKyAgICBFeGNlcHRpb25PcjxSZXR1cm5SZWZlcmVuY2VUeXBlKj4gbV92YWx1ZTsKK307
CisKIHRlbXBsYXRlPD4gY2xhc3MgRXhjZXB0aW9uT3I8dm9pZD4gewogcHVibGljOgogICAgIEV4
Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmKTsKQEAgLTg4LDYgKzEwMSwzMSBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgUmV0dXJuVHlwZSYmIEV4Y2VwdGlvbk9yPFJldHVyblR5
cGU+OjpyZWxlYQogICAgIHJldHVybiBXVEY6OmdldDxSZXR1cm5UeXBlPihXVEZNb3ZlKG1fdmFs
dWUpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuUmVmZXJlbmNlVHlwZT4gaW5saW5l
IEV4Y2VwdGlvbk9yPFJldHVyblJlZmVyZW5jZVR5cGUmPjo6RXhjZXB0aW9uT3IoRXhjZXB0aW9u
JiYgZXhjZXB0aW9uKQorICAgIDogbV92YWx1ZShXVEZNb3ZlKGV4Y2VwdGlvbikpCit7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFJldHVyblJlZmVyZW5jZVR5cGU+IGlubGluZSBFeGNlcHRpb25P
cjxSZXR1cm5SZWZlcmVuY2VUeXBlJj46OkV4Y2VwdGlvbk9yKFJldHVyblJlZmVyZW5jZVR5cGUm
IHJldHVyblZhbHVlKQorICAgIDogbV92YWx1ZSgmcmV0dXJuVmFsdWUpCit7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFJldHVyblJlZmVyZW5jZVR5cGU+IGlubGluZSBib29sIEV4Y2VwdGlvbk9y
PFJldHVyblJlZmVyZW5jZVR5cGUmPjo6aGFzRXhjZXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV92YWx1ZS5oYXNFeGNlcHRpb24oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJu
UmVmZXJlbmNlVHlwZT4gaW5saW5lIEV4Y2VwdGlvbiYmIEV4Y2VwdGlvbk9yPFJldHVyblJlZmVy
ZW5jZVR5cGUmPjo6cmVsZWFzZUV4Y2VwdGlvbigpCit7CisgICAgcmV0dXJuIG1fdmFsdWUucmVs
ZWFzZUV4Y2VwdGlvbigpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5SZWZlcmVuY2VU
eXBlPiBpbmxpbmUgUmV0dXJuUmVmZXJlbmNlVHlwZSYgRXhjZXB0aW9uT3I8UmV0dXJuUmVmZXJl
bmNlVHlwZSY+OjpyZWxlYXNlUmV0dXJuVmFsdWUoKQoreworICAgIHJldHVybiAqbV92YWx1ZS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKK30KKwogaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+OjpFeGNl
cHRpb25PcihFeGNlcHRpb24mJiBleGNlcHRpb24pCiAgICAgOiBtX2V4Y2VwdGlvbihXVEZNb3Zl
KGV4Y2VwdGlvbikpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMTQ3MDFiNDlhNWI2YzY2YmMzNGU5
YzU2YzJmNDA4Yjc5ZjM5MjlhNi4uOWFjOWU4YjUyZDJjOTU3NzhiY2JiZDRmYjA0YmFjNGJkZjI2
ODFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIHN0YXRpYyBSZWZQdHI8
Tm9kZT4gZmlyc3RGb2xsb3dpbmdTaWJsaW5nTm90SW5Ob2RlU2V0KE5vZGUmIGNvbnRleHQsIGNv
bnN0IEhhc2hTCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxOb2RlPiBOb2RlOjpj
b252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVP
clN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxSZWZQdHI8Tm9k
ZT4+IE5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFZlY3RvcjxOb2RlT3JTdHJp
bmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yKQogewogICAgIGlmIChub2RlT3JTdHJpbmdWZWN0b3Iu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ4MSw3MyArNDgxLDk4IEBA
IFJlZlB0cjxOb2RlPiBOb2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShWZWN0b3I8
Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0CiAgICAgfQogCiAgICAgaWYgKG5vZGVzLnNpemUoKSA9
PSAxKQotICAgICAgICByZXR1cm4gV1RGTW92ZShub2Rlcy5maXJzdCgpKTsKKyAgICAgICAgcmV0
dXJuIFJlZlB0cjxOb2RlPiB7IFdURk1vdmUobm9kZXMuZmlyc3QoKSkgfTsKIAogICAgIGF1dG8g
bm9kZVRvUmV0dXJuID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAg
IGZvciAoYXV0byYgbm9kZSA6IG5vZGVzKSB7Ci0gICAgICAgIGlmICghbm9kZVRvUmV0dXJuLT5h
cHBlbmRDaGlsZChub2RlLCBlYykpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIG5vZGVUb1JldHVybi0+YXBwZW5kQ2hp
bGQobm9kZSwgZWMpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgZWMgfTsKICAgICB9Ci0gICAgcmV0dXJuIFdURk1vdmUobm9kZVRvUmV0dXJuKTsKKyAg
ICByZXR1cm4gUmVmUHRyPE5vZGU+IHsgV1RGTW92ZShub2RlVG9SZXR1cm4pIH07CiB9CiAKLXZv
aWQgTm9kZTo6YmVmb3JlKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9y
LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OmJlZm9yZShWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKIHsKICAgICBSZWZQdHI8Q29u
dGFpbmVyTm9kZT4gcGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvIG5vZGVTZXQgPSBu
b2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9yKG5vZGVPclN0cmluZ1Zl
Y3Rvcik7CiAgICAgYXV0byB2aWFibGVQcmV2aW91c1NpYmxpbmcgPSBmaXJzdFByZWNlZGluZ1Np
YmxpbmdOb3RJbk5vZGVTZXQoKnRoaXMsIG5vZGVTZXQpOwogCi0gICAgYXV0byBub2RlID0gY29u
dmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoV1RGTW92ZShub2RlT3JTdHJpbmdWZWN0b3IpLCBl
Yyk7Ci0gICAgaWYgKGVjIHx8ICFub2RlKQotICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1
bHQgPSBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShXVEZNb3ZlKG5vZGVPclN0cmluZ1Zl
Y3RvcikpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGF1dG8gbm9kZSA9IHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBpZiAodmlhYmxlUHJldmlvdXNTaWJsaW5nKQogICAgICAgICB2aWFibGVQcmV2aW91c1NpYmxp
bmcgPSB2aWFibGVQcmV2aW91c1NpYmxpbmctPm5leHRTaWJsaW5nKCk7CiAgICAgZWxzZQogICAg
ICAgICB2aWFibGVQcmV2aW91c1NpYmxpbmcgPSBwYXJlbnQtPmZpcnN0Q2hpbGQoKTsKIAorICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKCpub2RlLCB2
aWFibGVQcmV2aW91c1NpYmxpbmcuZ2V0KCksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBlYyB9OworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgTm9kZTo6
YWZ0ZXIoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6YWZ0ZXIoVmVjdG9yPE5vZGVPclN0
cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCiB7CiAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+
IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byBub2RlU2V0ID0gbm9kZVNldFByZVRy
YW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcihub2RlT3JTdHJpbmdWZWN0b3IpOwogICAg
IGF1dG8gdmlhYmxlTmV4dFNpYmxpbmcgPSBmaXJzdEZvbGxvd2luZ1NpYmxpbmdOb3RJbk5vZGVT
ZXQoKnRoaXMsIG5vZGVTZXQpOwogCi0gICAgYXV0byBub2RlID0gY29udmVydE5vZGVzT3JTdHJp
bmdzSW50b05vZGUoV1RGTW92ZShub2RlT3JTdHJpbmdWZWN0b3IpLCBlYyk7Ci0gICAgaWYgKGVj
IHx8ICFub2RlKQotICAgICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSBjb252ZXJ0Tm9k
ZXNPclN0cmluZ3NJbnRvTm9kZShXVEZNb3ZlKG5vZGVPclN0cmluZ1ZlY3RvcikpOworICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpOworICAgIGF1dG8gbm9kZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
KyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiB7IH07CiAKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBwYXJlbnQtPmluc2VydEJlZm9yZSgqbm9kZSwgdmlhYmxlTmV4dFNpYmxp
bmcuZ2V0KCksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBl
YyB9OworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgTm9kZTo6cmVwbGFjZVdpdGgoVmVjdG9y
PE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
RXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6cmVwbGFjZVdpdGgoVmVjdG9yPE5vZGVPclN0cmluZz4m
JiBub2RlT3JTdHJpbmdWZWN0b3IpCiB7CiAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVu
dCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byBub2RlU2V0ID0gbm9kZVNldFByZVRyYW5zZm9y
bWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcihub2RlT3JTdHJpbmdWZWN0b3IpOwogICAgIGF1dG8g
dmlhYmxlTmV4dFNpYmxpbmcgPSBmaXJzdEZvbGxvd2luZ1NpYmxpbmdOb3RJbk5vZGVTZXQoKnRo
aXMsIG5vZGVTZXQpOwogCi0gICAgYXV0byBub2RlID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50
b05vZGUoV1RGTW92ZShub2RlT3JTdHJpbmdWZWN0b3IpLCBlYyk7Ci0gICAgaWYgKGVjKQotICAg
ICAgICByZXR1cm47CisgICAgYXV0byByZXN1bHQgPSBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRv
Tm9kZShXVEZNb3ZlKG5vZGVPclN0cmluZ1ZlY3RvcikpOworICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAg
IGF1dG8gbm9kZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAogICAgIGlmIChwYXJl
bnROb2RlKCkgPT0gcGFyZW50KSB7Ci0gICAgICAgIGlmIChub2RlKQorICAgICAgICBpZiAobm9k
ZSkgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgICAgICBwYXJl
bnQtPnJlcGxhY2VDaGlsZCgqbm9kZSwgKnRoaXMsIGVjKTsKLSAgICAgICAgZWxzZQorICAgICAg
ICAgICAgaWYgKGVjKQorICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBlYyB9Owor
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQoKnRoaXMpOwot
ICAgIH0gZWxzZSBpZiAobm9kZSkKKyAgICB9IGVsc2UgaWYgKG5vZGUpIHsKKyAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKCpub2RlLCB2
aWFibGVOZXh0U2libGluZy5nZXQoKSwgZWMpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgZWMgfTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6cmVtb3ZlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGVjODVlMGJh
NjgyZjFhMGExMTg5MmRlMDk3MGU2NjFmM2JkOWRmYWEuLmZmZDAwOWRiMzFlNDViMjQ5Y2YyMjEy
NDE4MjQzMjcwNjdhNWZkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTkzLDkgKzE5Myw5IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBuZXh0RWxlbWVudFNpYmxpbmcoKSBjb25z
dDsKIAogICAgIC8vIEZyb20gdGhlIENoaWxkTm9kZSAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdn
Lm9yZy8jY2hpbGRub2RlCi0gICAgdm9pZCBiZWZvcmUoVmVjdG9yPE5vZGVPclN0cmluZz4mJiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYWZ0ZXIoVmVjdG9yPE5vZGVPclN0cmluZz4mJiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcmVwbGFjZVdpdGgoVmVjdG9yPE5vZGVPclN0cmlu
Zz4mJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGJlZm9yZShWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZnRlcihWZWN0b3I8
Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlV2l0aChWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiByZW1vdmUoKTsKIAogICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKQEAg
LTY1Miw3ICs2NTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGUoU3R5
bGU6OlZhbGlkaXR5LCBTdHlsZTo6SW52YWxpZGF0aW9uTW9kZSA9IFN0eWxlOjpJbnZhbGlkYXRp
b25Nb2RlOjpOb3JtYWwpOwogICAgIHZvaWQgdXBkYXRlQW5jZXN0b3JzRm9yU3R5bGVSZWNhbGMo
KTsKIAotICAgIFJlZlB0cjxOb2RlPiBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8UmVm
UHRyPE5vZGU+PiBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShWZWN0b3I8Tm9kZU9yU3Ry
aW5nPiYmKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBzZXVkb0lkIGN1c3RvbVBzZXVkb0lk
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbAppbmRleCAzYWE0OTRlMzk5YTlhZWRj
NzIwMzU3ZjE4Njk5NTk0YTUwMjgzODk4Li5lYWYxMWRkOGI5NzlmNDI2MzM0YTY4NTc0YjRlNjc0
MDQwYjBjMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCkBAIC0zMywxMSArMzMsMTEg
QEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBsYXN0RWxlbWVudENoaWxkOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGNoaWxkRWxlbWVudENvdW50OwogCi0g
ICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9p
ZCBwcmVwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtDRVJlYWN0aW9u
cywgVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYXBwZW5kKChOb2Rl
IG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwg
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5v
ZGVzKTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB2
b2lkIGFwcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKIAogICAgIC8vIFtVbnNj
b3BhYmxlXSBFbGVtZW50PyBxdWVyeShET01TdHJpbmcgcmVsYXRpdmVTZWxlY3RvcnMpOwogICAg
IC8vIFtOZXdPYmplY3QsIFVuc2NvcGFibGVdIEVsZW1lbnRzIHF1ZXJ5QWxsKERPTVN0cmluZyBy
ZWxhdGl2ZVNlbGVjdG9ycyk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBFbGVtZW50
IHF1ZXJ5U2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7Ci0gICAgW01heVRocm93TGVnYWN5
RXhjZXB0aW9uLCBOZXdPYmplY3RdIE5vZGVMaXN0IHF1ZXJ5U2VsZWN0b3JBbGwoRE9NU3RyaW5n
IHNlbGVjdG9ycyk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBFbGVtZW50IHF1ZXJ5U2VsZWN0
b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmpl
Y3RdIE5vZGVMaXN0IHF1ZXJ5U2VsZWN0b3JBbGwoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4IDg1OWM2YjJiZjQwYWYzYmUyYTM2
N2NhM2UxMDVkY2Y1YTBlNzg4NTUuLjFkODczNWRhYmEyYzFhYzljZjBiNDcxODUwY2NkNTM0Yjcy
MDMwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKQEAgLTE2OSw3ICsxNjks
NyBAQCBzdHJ1Y3QgQWxsRWxlbWVudEV4dHJhY3RvclNlbGVjdG9yUXVlcnlUcmFpdCB7CiAgICAg
QUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBhcHBlbmRPdXRwdXRGb3JFbGVtZW50KE91dHB1dFR5
cGUmIG91dHB1dCwgRWxlbWVudCogZWxlbWVudCkgeyBBU1NFUlQoZWxlbWVudCk7IG91dHB1dC5h
cHBlbmQoKmVsZW1lbnQpOyB9CiB9OwogCi1SZWZQdHI8Tm9kZUxpc3Q+IFNlbGVjdG9yRGF0YUxp
c3Q6OnF1ZXJ5QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdAorUmVmPE5vZGVMaXN0
PiBTZWxlY3RvckRhdGFMaXN0OjpxdWVyeUFsbChDb250YWluZXJOb2RlJiByb290Tm9kZSkgY29u
c3QKIHsKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiByZXN1bHQ7CiAgICAgZXhlY3V0ZTxBbGxF
bGVtZW50RXh0cmFjdG9yU2VsZWN0b3JRdWVyeVRyYWl0Pihyb290Tm9kZSwgcmVzdWx0KTsKQEAg
LTYxNiwzMSArNjE2LDI3IEBAIFNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkoQ1NTU2VsZWN0
b3JMaXN0JiYgc2VsZWN0b3JMaXN0KQogewogfQogCi1TZWxlY3RvclF1ZXJ5KiBTZWxlY3RvclF1
ZXJ5Q2FjaGU6OmFkZChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRG9jdW1lbnQmIGRvY3VtZW50
LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBTZWxlY3Rv
clF1ZXJ5Q2FjaGU6OmFkZChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogICAgIGF1dG8gaXQgPSBtX2VudHJpZXMuZmluZChzZWxlY3RvcnMpOwogICAgIGlm
IChpdCAhPSBtX2VudHJpZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7
CisgICAgICAgIHJldHVybiAqaXQtPnZhbHVlOwogCiAgICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1
bWVudCk7CiAgICAgQ1NTU2VsZWN0b3JMaXN0IHNlbGVjdG9yTGlzdDsKICAgICBwYXJzZXIucGFy
c2VTZWxlY3RvcihzZWxlY3RvcnMsIHNlbGVjdG9yTGlzdCk7CiAKLSAgICBpZiAoIXNlbGVjdG9y
TGlzdC5maXJzdCgpIHx8IHNlbGVjdG9yTGlzdC5oYXNJbnZhbGlkU2VsZWN0b3IoKSkgewotICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKyAg
ICBpZiAoIXNlbGVjdG9yTGlzdC5maXJzdCgpIHx8IHNlbGVjdG9yTGlzdC5oYXNJbnZhbGlkU2Vs
ZWN0b3IoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAotICAg
IGlmIChzZWxlY3Rvckxpc3Quc2VsZWN0b3JzTmVlZE5hbWVzcGFjZVJlc29sdXRpb24oKSkgewot
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
KyAgICBpZiAoc2VsZWN0b3JMaXN0LnNlbGVjdG9yc05lZWROYW1lc3BhY2VSZXNvbHV0aW9uKCkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKICAgICBjb25zdCBp
bnQgbWF4aW11bVNlbGVjdG9yUXVlcnlDYWNoZVNpemUgPSAyNTY7CiAgICAgaWYgKG1fZW50cmll
cy5zaXplKCkgPT0gbWF4aW11bVNlbGVjdG9yUXVlcnlDYWNoZVNpemUpCiAgICAgICAgIG1fZW50
cmllcy5yZW1vdmUobV9lbnRyaWVzLmJlZ2luKCkpOwogCi0gICAgcmV0dXJuIG1fZW50cmllcy5h
ZGQoc2VsZWN0b3JzLCBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUoc2Vs
ZWN0b3JMaXN0KSkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gKm1fZW50cmll
cy5hZGQoc2VsZWN0b3JzLCBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUo
c2VsZWN0b3JMaXN0KSkpLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxl
Y3RvclF1ZXJ5LmgKaW5kZXggNThhYjY3MDEwYzVhODY5NTRiMGM0MWNlNjZhYTc1YjI5NTIyMzg2
Mi4uNjAxYWRkZjFiMGMyNDc0MWVlOWNhYzE2MjE5YjY4N2Q2ZWE1ZTA4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2VsZWN0b3JRdWVyeS5oCkBAIC0yMywxMCArMjMsMTAgQEAKICAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBTZWxlY3RvclF1ZXJ5X2gKLSNkZWZpbmUgU2VsZWN0b3JRdWVyeV9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJTZWxlY3RvckNvbXBp
bGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTM2LDIxICszNiwxNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0gICAgCiBj
bGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBOb2RlOwotY2xhc3MgTm9kZUxpc3Q7CiAKIGNsYXNzIFNl
bGVjdG9yRGF0YUxpc3QgewogcHVibGljOgogICAgIGV4cGxpY2l0IFNlbGVjdG9yRGF0YUxpc3Qo
Y29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CiAgICAgYm9vbCBtYXRjaGVzKEVsZW1lbnQmKSBjb25z
dDsKICAgICBFbGVtZW50KiBjbG9zZXN0KEVsZW1lbnQmKSBjb25zdDsKLSAgICBSZWZQdHI8Tm9k
ZUxpc3Q+IHF1ZXJ5QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKKyAgICBSZWY8
Tm9kZUxpc3Q+IHF1ZXJ5QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKICAgICBF
bGVtZW50KiBxdWVyeUZpcnN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKIAogcHJp
dmF0ZToKQEAgLTEyMCw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgU2VsZWN0b3JR
dWVyeShDU1NTZWxlY3Rvckxpc3QmJik7CiAgICAgYm9vbCBtYXRjaGVzKEVsZW1lbnQmKSBjb25z
dDsKICAgICBFbGVtZW50KiBjbG9zZXN0KEVsZW1lbnQmKSBjb25zdDsKLSAgICBSZWZQdHI8Tm9k
ZUxpc3Q+IHF1ZXJ5QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKKyAgICBSZWY8
Tm9kZUxpc3Q+IHF1ZXJ5QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKICAgICBF
bGVtZW50KiBxdWVyeUZpcnN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKIAogcHJp
dmF0ZToKQEAgLTEzMCwxMCArMTI2LDggQEAgcHJpdmF0ZToKIAogY2xhc3MgU2VsZWN0b3JRdWVy
eUNhY2hlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQogcHVibGljOgotICAgIFNl
bGVjdG9yUXVlcnkqIGFkZChjb25zdCBTdHJpbmcmLCBEb2N1bWVudCYsIEV4Y2VwdGlvbkNvZGUm
KTsKLQorICAgIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBhZGQoY29uc3QgU3RyaW5nJiwg
RG9jdW1lbnQmKTsKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0
cjxTZWxlY3RvclF1ZXJ5Pj4gbV9lbnRyaWVzOwogfTsKQEAgLTE0OCw3ICsxNDIsNyBAQCBpbmxp
bmUgRWxlbWVudCogU2VsZWN0b3JRdWVyeTo6Y2xvc2VzdChFbGVtZW50JiBlbGVtZW50KSBjb25z
dAogICAgIHJldHVybiBtX3NlbGVjdG9ycy5jbG9zZXN0KGVsZW1lbnQpOwogfQogCi1pbmxpbmUg
UmVmUHRyPE5vZGVMaXN0PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUFsbChDb250YWluZXJOb2RlJiBy
b290Tm9kZSkgY29uc3QKK2lubGluZSBSZWY8Tm9kZUxpc3Q+IFNlbGVjdG9yUXVlcnk6OnF1ZXJ5
QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdAogewogICAgIHJldHVybiBtX3NlbGVj
dG9ycy5xdWVyeUFsbChyb290Tm9kZSk7CiB9CkBAIC0xNTksNSArMTUzLDMgQEAgaW5saW5lIEVs
ZW1lbnQqIFNlbGVjdG9yUXVlcnk6OnF1ZXJ5Rmlyc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUp
IGNvbnN0CiB9CiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5jcHAKaW5kZXggMWY2ZmQ3ZjkxMjc2OTU1MTNkNjIwZjlhMGEwZWUwZjcx
YjA2ZWMzMS4uNzFiNjIyMWI4OWVjYmMzNzI2MDBjZmIyZGNlZDM0NmU4MDVhZmVjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcApAQCAtMTEyLDEx
ICsxMTIsMTEgQEAgYm9vbCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmlzS2V5Ym9hcmRGb2N1c2Fi
bGUoS2V5Ym9hcmRFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudEZyYW1l
ICYmIEhUTUxFbGVtZW50Ojppc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KTsKIH0KIAotRXhjZXB0
aW9uT3I8RG9jdW1lbnQqPiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmdldFNWR0RvY3VtZW50KCkg
Y29uc3QKK0V4Y2VwdGlvbk9yPERvY3VtZW50Jj4gSFRNTEZyYW1lT3duZXJFbGVtZW50OjpnZXRT
VkdEb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSBjb250ZW50RG9jdW1l
bnQoKTsKICAgICBpZiAoaXM8U1ZHRG9jdW1lbnQ+KGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJu
IGRvY3VtZW50OworICAgICAgICByZXR1cm4gKmRvY3VtZW50OwogICAgIC8vIFNwZWM6IGh0dHA6
Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCNJbnRlcmZhY2VHZXRTVkdEb2N1bWVudAog
ICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggYmZjYzBlZWY2NGM4M2Q4
YzFjOTIzN2RhMjI4MjY5MDJhMDRkYTYwYi4uZDg1MmVmYTVjN2I3M2VlZDZiZmJjNGEyMTRlMTYy
ODQwYjAwMTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25l
ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVu
dC5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAvLyBSZW5kZXJFbGVtZW50IHdoZW4g
dXNpbmcgZmFsbGJhY2sgY29udGVudC4KICAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldCgp
IGNvbnN0OwogCi0gICAgRXhjZXB0aW9uT3I8RG9jdW1lbnQqPiBnZXRTVkdEb2N1bWVudCgpIGNv
bnN0OworICAgIEV4Y2VwdGlvbk9yPERvY3VtZW50Jj4gZ2V0U1ZHRG9jdW1lbnQoKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgU2Nyb2xsYmFyTW9kZSBzY3JvbGxpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gU2Nyb2xsYmFyQXV0bzsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCAwNWI5ZjYwYTczZjAwNzMxMGM4NjVhYThmOTVhYmNmMzhhYzI1MThiLi5lMmUx
ZDQxMWY0NDAzYzdjMTk4MDdmZDg1MjkyMjI1OWU1NTIxZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM1OTQsNyArMzU5NCw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6Zm9yZ2V0UmVzb3VyY2VTcGVjaWZpY1RyYWNrcygpCiAgICAgICAgIHJlbW92
ZVZpZGVvVHJhY2soKm1fdmlkZW9UcmFja3MtPmxhc3RJdGVtKCkpOwogfQogCi1FeGNlcHRpb25P
cjxSZWY8VGV4dFRyYWNrPj4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0
cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkK
K0V4Y2VwdGlvbk9yPFRleHRUcmFjayY+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhj
b25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFu
Z3VhZ2UpCiB7CiAgICAgLy8gNC44LjEwLjEyLjQgVGV4dCB0cmFjayBBUEkKICAgICAvLyBUaGUg
YWRkVGV4dFRyYWNrKGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkgbWV0aG9kIG9mIG1lZGlhIGVsZW1l
bnRzLCB3aGVuIGludm9rZWQsIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CkBAIC0zNjA5
LDIxICszNjA5LDIyIEBAIEV4Y2VwdGlvbk9yPFJlZjxUZXh0VHJhY2s+PiBIVE1MTWVkaWFFbGVt
ZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjCiAKICAgICAvLyA1LiBDcmVh
dGUgYSBuZXcgdGV4dCB0cmFjayBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXcgb2JqZWN0LCBhbmQg
c2V0IGl0cyB0ZXh0IHRyYWNrIGtpbmQgdG8ga2luZCwgaXRzIHRleHQgCiAgICAgLy8gdHJhY2sg
bGFiZWwgdG8gbGFiZWwsIGl0cyB0ZXh0IHRyYWNrIGxhbmd1YWdlIHRvIGxhbmd1YWdlLi4uCi0g
ICAgYXV0byB0ZXh0VHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZShBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywga2luZCwgZW1wdHlTdHJpbmcoKSwgbGFiZWws
IGxhbmd1YWdlKTsKKyAgICBhdXRvIHRyYWNrID0gVGV4dFRyYWNrOjpjcmVhdGUoQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIGtpbmQsIGVtcHR5U3RyaW5n
KCksIGxhYmVsLCBsYW5ndWFnZSk7CisgICAgYXV0byYgdHJhY2tSZWZlcmVuY2UgPSB0cmFjay5n
ZXQoKTsKIAogICAgIC8vIE5vdGUsIGR1ZSB0byBzaWRlIGVmZmVjdHMgd2hlbiBjaGFuZ2luZyB0
cmFjayBwYXJhbWV0ZXJzLCB3ZSBoYXZlIHRvCiAgICAgLy8gZmlyc3QgYXBwZW5kIHRoZSB0cmFj
ayB0byB0aGUgdGV4dCB0cmFjayBsaXN0LgogCiAgICAgLy8gNi4gQWRkIHRoZSBuZXcgdGV4dCB0
cmFjayB0byB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MuCi0gICAgYWRk
VGV4dFRyYWNrKHRleHRUcmFjay5jb3B5UmVmKCkpOworICAgIGFkZFRleHRUcmFjayhXVEZNb3Zl
KHRyYWNrKSk7CiAKICAgICAvLyAuLi4gaXRzIHRleHQgdHJhY2sgcmVhZGluZXNzIHN0YXRlIHRv
IHRoZSB0ZXh0IHRyYWNrIGxvYWRlZCBzdGF0ZSAuLi4KLSAgICB0ZXh0VHJhY2stPnNldFJlYWRp
bmVzc1N0YXRlKFRleHRUcmFjazo6TG9hZGVkKTsKKyAgICB0cmFja1JlZmVyZW5jZS5zZXRSZWFk
aW5lc3NTdGF0ZShUZXh0VHJhY2s6OkxvYWRlZCk7CiAKICAgICAvLyAuLi4gaXRzIHRleHQgdHJh
Y2sgbW9kZSB0byB0aGUgdGV4dCB0cmFjayBoaWRkZW4gbW9kZSwgYW5kIGl0cyB0ZXh0IHRyYWNr
IGxpc3Qgb2YgY3VlcyB0byBhbiBlbXB0eSBsaXN0IC4uLgotICAgIHRleHRUcmFjay0+c2V0TW9k
ZShUZXh0VHJhY2s6Ok1vZGU6OkhpZGRlbik7CisgICAgdHJhY2tSZWZlcmVuY2Uuc2V0TW9kZShU
ZXh0VHJhY2s6Ok1vZGU6OkhpZGRlbik7CiAKLSAgICByZXR1cm4gV1RGTW92ZSh0ZXh0VHJhY2sp
OworICAgIHJldHVybiB0cmFja1JlZmVyZW5jZTsKIH0KIAogQXVkaW9UcmFja0xpc3QmIEhUTUxN
ZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKaW5kZXggNWFhOTViOWQ1MDZjNmFhYzdlN2FmMTZlZTYyMTkwMWFiYmUyY2Q2Yy4uMzVi
MjMzZDUwNDM4ZTVhMThiZmZkNDFjNWZiYTU0MGZiNzgzZWJlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAgICAgZG91
YmxlIHBlcmNlbnRMb2FkZWQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAg
ICBFeGNlcHRpb25PcjxSZWY8VGV4dFRyYWNrPj4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYg
a2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CisgICAg
RXhjZXB0aW9uT3I8VGV4dFRyYWNrJj4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CiAKICAgICBBdWRp
b1RyYWNrTGlzdCYgYXVkaW9UcmFja3MoKTsKICAgICBUZXh0VHJhY2tMaXN0JiB0ZXh0VHJhY2tz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApp
bmRleCAxOTY4NzAwMzE4MGViNzA2NDkwOWU0ZDI5YjYwMzQ4OWIyMGEyYTk2Li4zNTIzNTA5YmQy
YzYwN2NlNWEzOTY3ZDE3ODc4NGY5NDBmOTI2ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTQyOSw4ICs0MjksMTMgQEAgYm9vbCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkoY29uc3QgTm9kZSog
bm9kZSkgY29uc3QKICAgICBTaGFkb3dSb290KiBzaGFkb3cgPSB1c2VyQWdlbnRTaGFkb3dSb290
KCk7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBSZWZQdHI8
RWxlbWVudD4gc25hcHNob3RMYWJlbCA9IHNoYWRvdy0+cXVlcnlTZWxlY3RvcihzZWxlY3Rvci5n
ZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgcmV0dXJuIG5vZGUgJiYgc25hcHNob3RM
YWJlbCAmJiAobm9kZSA9PSBzbmFwc2hvdExhYmVsLmdldCgpIHx8IG5vZGUtPmlzRGVzY2VuZGFu
dE9mKHNuYXBzaG90TGFiZWwuZ2V0KCkpKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBhdXRvIHF1ZXJ5UmVzdWx0ID0gc2hhZG93LT5xdWVyeVNlbGVjdG9yKHNl
bGVjdG9yLmdldCgpKTsKKyAgICBpZiAocXVlcnlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiBzbmFwc2hvdExhYmVsID0gcXVlcnlSZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgcmV0dXJuIHNuYXBzaG90TGFiZWwgJiYgc25hcHNo
b3RMYWJlbC0+Y29udGFpbnMobm9kZSk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6cmVtb3ZlU25hcHNob3RUaW1lckZpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDVlMTVjYzUxMDJjYzYxYjc5MzZkNmQ1MWVj
MTlmNmUzMjE1ODUxNDcuLjU2YzcwMmQ4ZDg2NTQ5YzQyY2U3MTlhZWNjM2RhMTU3YTIzNjYyNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApA
QCAtNTMzLDE1ICs1MzMsMTQgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3Rv
cihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxFbGVt
ZW50PiBlbGVtZW50ID0gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKm5vZGUpLnF1ZXJ5U2VsZWN0
b3Ioc2VsZWN0b3JzLCBlYyk7Ci0gICAgaWYgKGVjKSB7CisgICAgYXV0byBxdWVyeVJlc3VsdCA9
IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpub2RlKS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9ycyk7
CisgICAgaWYgKHF1ZXJ5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3Ry
aW5nID0gQVNDSUlMaXRlcmFsKCJET00gRXJyb3Igd2hpbGUgcXVlcnlpbmciKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChlbGVtZW50KQotICAgICAgICAqZWxlbWVudElkID0g
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChlbGVtZW50LmdldCgpKTsKKyAgICBpZiAoYXV0byogZWxl
bWVudCA9IHF1ZXJ5UmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQorICAgICAgICAqZWxlbWVu
dElkID0gcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChlbGVtZW50KTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkKQEAgLTU1NCwxNSArNTUzLDE0IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzID0gZG93bmNhc3Q8Q29udGFp
bmVyTm9kZT4oKm5vZGUpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzLCBlYyk7Ci0gICAgaWYg
KGVjKSB7CisgICAgYXV0byBxdWVyeVJlc3VsdCA9IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpu
b2RlKS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9ycyk7CisgICAgaWYgKHF1ZXJ5UmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJET00g
RXJyb3Igd2hpbGUgcXVlcnlpbmciKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1
dG8gbm9kZXMgPSBxdWVyeVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICByZXN1bHQg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKLQogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBub2Rlcy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgcmVzdWx0
LT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZXMtPml0ZW0oaSkpKTsKIH0KQEAg
LTkwNSw3ICs5MDMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB3aAogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZmluZGVyLnBlcmZvcm1TZWFyY2gobm9kZSk7CiAgICAgICAgIH0KLSAgICB9
IGVsc2UgaWYgKG1fZG9jdW1lbnQpIHsKKyAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGVyZSdz
IG5vIG5lZWQgdG8gaXRlcmF0ZSB0aGUgZnJhbWVzIHRyZWUgYmVjYXVzZQogICAgICAgICAvLyB0
aGUgc2VhcmNoIGhlbHBlciB3aWxsIGdvIGluc2lkZSB0aGUgZnJhbWUgb3duZXIgZWxlbWVudHMu
CiAgICAgICAgIGZpbmRlci5wZXJmb3JtU2VhcmNoKG1fZG9jdW1lbnQuZ2V0KCkpOwpAQCAtMTEx
NSwxOSArMTExMywxOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3Rv
cihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPE5vZGVMaXN0
PiBub2RlcyA9IGRvY3VtZW50LT5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yU3RyaW5nLCBlYyk7
CisgICAgYXV0byBxdWVyeVJlc3VsdCA9IGRvY3VtZW50LT5xdWVyeVNlbGVjdG9yQWxsKHNlbGVj
dG9yU3RyaW5nKTsKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0NjE2MT4g
V2ViIEluc3BlY3RvcjogRE9NLmhpZ2hsaWdodFNlbGVjdG9yIHNob3VsZCB3b3JrIGZvciAiYTp2
aXNpdGVkIgotICAgIGlmIChlYykgeworICAgIGlmIChxdWVyeVJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRE9NIEVycm9yIHdoaWxl
IHF1ZXJ5aW5nIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWcgPSBoaWdobGlnaHRDb25maWdGcm9t
SW5zcGVjdG9yT2JqZWN0KGVycm9yU3RyaW5nLCAmaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsK
KyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JP
YmplY3QoZXJyb3JTdHJpbmcsICZoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwogICAgIGlmICgh
aGlnaGxpZ2h0Q29uZmlnKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX292ZXJsYXktPmhpZ2hs
aWdodE5vZGVMaXN0KFdURk1vdmUobm9kZXMpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBtX292
ZXJsYXktPmhpZ2hsaWdodE5vZGVMaXN0KHF1ZXJ5UmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
LCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYg
aGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LCBjb25zdCBpbnQqIG5vZGVJZCwgY29uc3QgU3RyaW5n
KiBvYmplY3RJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JOb2RlRmluZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2Rl
RmluZGVyLmNwcAppbmRleCA1NWIyYzI4MWFlZmQzYmM4OTVkMjcyMzEzZjBiNGZhZTFkNTZjMWM4
Li41OTU4M2E5MDI4NTQ0YmI5MWIyYzQ3NWUzYTg2ZTVlOWU5Y2YxMTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3BwCkBAIC02NSwzOCAr
NjUsMzMgQEAgSW5zcGVjdG9yTm9kZUZpbmRlcjo6SW5zcGVjdG9yTm9kZUZpbmRlcihjb25zdCBT
dHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpCiAKIHZvaWQgSW5zcGVjdG9yTm9kZUZpbmRl
cjo6cGVyZm9ybVNlYXJjaChOb2RlKiBwYXJlbnROb2RlKQogewotICAgIHNlYXJjaFVzaW5nWFBh
dGgocGFyZW50Tm9kZSk7Ci0gICAgc2VhcmNoVXNpbmdDU1NTZWxlY3RvcnMocGFyZW50Tm9kZSk7
CisgICAgaWYgKCFwYXJlbnROb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBzZWFyY2hVc2lu
Z1hQYXRoKCpwYXJlbnROb2RlKTsKKyAgICBzZWFyY2hVc2luZ0NTU1NlbGVjdG9ycygqcGFyZW50
Tm9kZSk7CiAKICAgICAvLyBLZWVwIHRoZSBET00gdHJlZSB0cmF2ZXJzYWwgbGFzdC4gVGhpcyB3
YXkgaWZyYW1lIGNvbnRlbnQgd2lsbCBjb21lIGFmdGVyIHRoZWlyIHBhcmVudHMuCi0gICAgc2Vh
cmNoVXNpbmdET01UcmVlVHJhdmVyc2FsKHBhcmVudE5vZGUpOworICAgIHNlYXJjaFVzaW5nRE9N
VHJlZVRyYXZlcnNhbCgqcGFyZW50Tm9kZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTm9kZUZpbmRl
cjo6c2VhcmNoVXNpbmdET01UcmVlVHJhdmVyc2FsKE5vZGUqIHBhcmVudE5vZGUpCit2b2lkIElu
c3BlY3Rvck5vZGVGaW5kZXI6OnNlYXJjaFVzaW5nRE9NVHJlZVRyYXZlcnNhbChOb2RlJiBwYXJl
bnROb2RlKQogewogICAgIC8vIE1hbnVhbCBwbGFpbiB0ZXh0IHNlYXJjaC4KLSAgICBmb3IgKGF1
dG8qIG5vZGUgPSBwYXJlbnROb2RlOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgq
bm9kZSwgcGFyZW50Tm9kZSkpIHsKKyAgICBmb3IgKGF1dG8qIG5vZGUgPSAmcGFyZW50Tm9kZTsg
bm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsICZwYXJlbnROb2RlKSkgewog
ICAgICAgICBzd2l0Y2ggKG5vZGUtPm5vZGVUeXBlKCkpIHsKICAgICAgICAgY2FzZSBOb2RlOjpU
RVhUX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgotICAgICAgICBjYXNl
IE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERTogewotICAgICAgICAgICAgaWYgKG5vZGUtPm5vZGVW
YWx1ZSgpLmZpbmRJZ25vcmluZ0Nhc2UobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSAhPSBub3RG
b3VuZCkKKyAgICAgICAgY2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6CisgICAgICAgICAg
ICBpZiAobm9kZS0+bm9kZVZhbHVlKCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShtX3doaXRl
c3BhY2VUcmltbWVkUXVlcnkpKQogICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hZGQobm9kZSk7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE5vZGU6OkVMRU1F
TlRfTk9ERTogeworICAgICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKICAgICAgICAgICAg
IGlmIChtYXRjaGVzRWxlbWVudChkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkpKQogICAgICAgICAg
ICAgICAgIG1fcmVzdWx0cy5hZGQobm9kZSk7Ci0KLSAgICAgICAgICAgIC8vIFNlYXJjaCBpbnNp
ZGUgZnJhbWUgZWxlbWVudHMuCi0gICAgICAgICAgICBpZiAoaXM8SFRNTEZyYW1lT3duZXJFbGVt
ZW50Pigqbm9kZSkpIHsKLSAgICAgICAgICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQmIGZy
YW1lT3duZXIgPSBkb3duY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KCpub2RlKTsKLSAgICAg
ICAgICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWVPd25lci5jb250ZW50RG9j
dW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgcGVyZm9ybVNlYXJjaChkb2N1bWVudCk7Ci0g
ICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgIGlmIChpczxIVE1MRnJhbWVPd25lckVsZW1lbnQ+
KGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKSkpCisgICAgICAgICAgICAgICAgcGVyZm9ybVNlYXJj
aChkb3duY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KCpub2RlKS5jb250ZW50RG9jdW1lbnQo
KSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwNSwxNSArMTAwLDE1IEBAIHZvaWQgSW5z
cGVjdG9yTm9kZUZpbmRlcjo6c2VhcmNoVXNpbmdET01UcmVlVHJhdmVyc2FsKE5vZGUqIHBhcmVu
dE5vZGUpCiAKIGJvb2wgSW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hlc0F0dHJpYnV0ZShjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLmxvY2FsTmFtZSgp
LnN0cmluZygpLmZpbmRJZ25vcmluZ0Nhc2UobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSAhPSBu
b3RGb3VuZCkKKyAgICBpZiAoYXR0cmlidXRlLmxvY2FsTmFtZSgpLnN0cmluZygpLmNvbnRhaW5z
SWdub3JpbmdBU0NJSUNhc2UobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fZXhhY3RBdHRyaWJ1dGVNYXRjaCA/IGF0dHJpYnV0ZS52
YWx1ZSgpID09IG1fYXR0cmlidXRlUXVlcnkgOiBhdHRyaWJ1dGUudmFsdWUoKS5zdHJpbmcoKS5m
aW5kSWdub3JpbmdDYXNlKG1fYXR0cmlidXRlUXVlcnkpICE9IG5vdEZvdW5kOworICAgIHJldHVy
biBtX2V4YWN0QXR0cmlidXRlTWF0Y2ggPyBhdHRyaWJ1dGUudmFsdWUoKSA9PSBtX2F0dHJpYnV0
ZVF1ZXJ5IDogYXR0cmlidXRlLnZhbHVlKCkuc3RyaW5nKCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtX2F0dHJpYnV0ZVF1ZXJ5KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JOb2RlRmluZGVyOjpt
YXRjaGVzRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIFN0cmluZyBub2Rl
TmFtZSA9IGVsZW1lbnQubm9kZU5hbWUoKTsKLSAgICBpZiAoKCFtX3N0YXJ0VGFnRm91bmQgJiYg
IW1fZW5kVGFnRm91bmQgJiYgKG5vZGVOYW1lLmZpbmRJZ25vcmluZ0Nhc2UobV90YWdOYW1lUXVl
cnkpICE9IG5vdEZvdW5kKSkKKyAgICBpZiAoKCFtX3N0YXJ0VGFnRm91bmQgJiYgIW1fZW5kVGFn
Rm91bmQgJiYgbm9kZU5hbWUuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShtX3RhZ05hbWVRdWVy
eSkpCiAgICAgICAgIHx8IChtX3N0YXJ0VGFnRm91bmQgJiYgbV9lbmRUYWdGb3VuZCAmJiBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5vZGVOYW1lLCBtX3RhZ05hbWVRdWVyeSkpCiAgICAgICAgIHx8
IChtX3N0YXJ0VGFnRm91bmQgJiYgIW1fZW5kVGFnRm91bmQgJiYgbm9kZU5hbWUuc3RhcnRzV2l0
aChtX3RhZ05hbWVRdWVyeSwgZmFsc2UpKQogICAgICAgICB8fCAoIW1fc3RhcnRUYWdGb3VuZCAm
JiBtX2VuZFRhZ0ZvdW5kICYmIG5vZGVOYW1lLmVuZHNXaXRoKG1fdGFnTmFtZVF1ZXJ5LCBmYWxz
ZSkpKQpAQCAtMTMwLDkgKzEyNSw5IEBAIGJvb2wgSW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hl
c0VsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yTm9kZUZpbmRlcjo6c2VhcmNoVXNpbmdYUGF0aChOb2RlKiBwYXJlbnRO
b2RlKQordm9pZCBJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFyY2hVc2luZ1hQYXRoKE5vZGUmIHBh
cmVudE5vZGUpCiB7Ci0gICAgYXV0byBldmFsdWF0ZVJlc3VsdCA9IHBhcmVudE5vZGUtPmRvY3Vt
ZW50KCkuZXZhbHVhdGUobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBwYXJlbnROb2RlLCBudWxs
cHRyLCBYUGF0aFJlc3VsdDo6T1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUsIG51bGxwdHIpOwor
ICAgIGF1dG8gZXZhbHVhdGVSZXN1bHQgPSBwYXJlbnROb2RlLmRvY3VtZW50KCkuZXZhbHVhdGUo
bV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCAmcGFyZW50Tm9kZSwgbnVsbHB0ciwgWFBhdGhSZXN1
bHQ6Ok9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxscHRyKTsKICAgICBpZiAoZXZhbHVh
dGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIHJlc3Vs
dCA9IGV2YWx1YXRlUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwpAQCAtMTUyLDIyICsxNDcs
MjEgQEAgdm9pZCBJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFyY2hVc2luZ1hQYXRoKE5vZGUqIHBh
cmVudE5vZGUpCiAgICAgICAgICAgICBub2RlID0gZG93bmNhc3Q8QXR0cj4oKm5vZGUpLm93bmVy
RWxlbWVudCgpOwogCiAgICAgICAgIC8vIFhQYXRoIGNhbiBnZXQgb3V0IG9mIHRoZSBjb250ZXh0
IG5vZGUgdGhhdCB3ZSBwYXNzIGFzIHRoZSBzdGFydGluZyBwb2ludCB0byBldmFsdWF0ZSwgc28g
d2UgbmVlZCB0byBmaWx0ZXIgZm9yIGp1c3QgdGhlIG5vZGVzIHdlIGNhcmUgYWJvdXQuCi0gICAg
ICAgIGlmIChub2RlID09IHBhcmVudE5vZGUgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2YocGFyZW50
Tm9kZSkpCisgICAgICAgIGlmIChwYXJlbnROb2RlLmNvbnRhaW5zKG5vZGUpKQogICAgICAgICAg
ICAgbV9yZXN1bHRzLmFkZChub2RlKTsKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yTm9kZUZp
bmRlcjo6c2VhcmNoVXNpbmdDU1NTZWxlY3RvcnMoTm9kZSogcGFyZW50Tm9kZSkKK3ZvaWQgSW5z
cGVjdG9yTm9kZUZpbmRlcjo6c2VhcmNoVXNpbmdDU1NTZWxlY3RvcnMoTm9kZSYgcGFyZW50Tm9k
ZSkKIHsKLSAgICBBU1NFUlQocGFyZW50Tm9kZSk7Ci0gICAgaWYgKCFpczxDb250YWluZXJOb2Rl
PigqcGFyZW50Tm9kZSkpCisgICAgaWYgKCFpczxDb250YWluZXJOb2RlPihwYXJlbnROb2RlKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRy
PE5vZGVMaXN0PiBub2RlTGlzdCA9IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpwYXJlbnROb2Rl
KS5xdWVyeVNlbGVjdG9yQWxsKG1fd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgZWMpOwotICAgIGlm
IChlYyB8fCAhbm9kZUxpc3QpCisgICAgYXV0byBxdWVyeVJlc3VsdCA9IGRvd25jYXN0PENvbnRh
aW5lck5vZGU+KHBhcmVudE5vZGUpLnF1ZXJ5U2VsZWN0b3JBbGwobV93aGl0ZXNwYWNlVHJpbW1l
ZFF1ZXJ5KTsKKyAgICBpZiAocXVlcnlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGF1dG8gbm9kZUxpc3QgPSBxdWVyeVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKICAgICB1bnNpZ25lZCBzaXplID0gbm9kZUxpc3QtPmxlbmd0aCgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG1fcmVzdWx0cy5hZGQobm9k
ZUxpc3QtPml0ZW0oaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5vZGVGaW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JO
b2RlRmluZGVyLmgKaW5kZXggYzY3NjFjNjY1NWQ3YTJlNjVjMjg0NGVjODZkODFlNjExOTgwZmRj
MS4uNWQ1NWRkMzcxN2IwMWVkYTI1YzNlNzc3ODZmOWJkMzYxMTZkMWJmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5oCkBAIC00OSw5ICs0OSw5
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtYXRjaGVzQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYp
OwogICAgIGJvb2wgbWF0Y2hlc0VsZW1lbnQoY29uc3QgRWxlbWVudCYpOwogCi0gICAgdm9pZCBz
ZWFyY2hVc2luZ0RPTVRyZWVUcmF2ZXJzYWwoTm9kZSopOwotICAgIHZvaWQgc2VhcmNoVXNpbmdY
UGF0aChOb2RlKik7Ci0gICAgdm9pZCBzZWFyY2hVc2luZ0NTU1NlbGVjdG9ycyhOb2RlKik7Cisg
ICAgdm9pZCBzZWFyY2hVc2luZ0RPTVRyZWVUcmF2ZXJzYWwoTm9kZSYpOworICAgIHZvaWQgc2Vh
cmNoVXNpbmdYUGF0aChOb2RlJik7CisgICAgdm9pZCBzZWFyY2hVc2luZ0NTU1NlbGVjdG9ycyhO
b2RlJik7CiAKICAgICBib29sIG1fc3RhcnRUYWdGb3VuZDsKICAgICBib29sIG1fZW5kVGFnRm91
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKaW5kZXggYmUzODcyZjMwZjEwZjU1ZDY5MGZlYjMwOTVh
NTk0ZWFlZDlmYjYzZS4uMDhjYzQzMWJlNjUwMTQ0NzI2YTliMjY5ZmYzOGNiZjM1NjJiM2RjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcApAQCAtNjksNyArNjksNyBAQCBTdWJ0bGVDcnlwdG8mIENy
eXB0bzo6c3VidGxlKCkKICAgICByZXR1cm4gbV9zdWJ0bGU7CiB9CiAKLUV4Y2VwdGlvbk9yPFdl
YktpdFN1YnRsZUNyeXB0byo+IENyeXB0bzo6d2Via2l0U3VidGxlKCkKK0V4Y2VwdGlvbk9yPFdl
YktpdFN1YnRsZUNyeXB0byY+IENyeXB0bzo6d2Via2l0U3VidGxlKCkKIHsKICAgICBpZiAoIWlz
TWFpblRocmVhZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9F
UlIgfTsKQEAgLTc3LDcgKzc3LDcgQEAgRXhjZXB0aW9uT3I8V2ViS2l0U3VidGxlQ3J5cHRvKj4g
Q3J5cHRvOjp3ZWJraXRTdWJ0bGUoKQogICAgIGlmICghbV93ZWJraXRTdWJ0bGUpCiAgICAgICAg
IG1fd2Via2l0U3VidGxlID0gV2ViS2l0U3VidGxlQ3J5cHRvOjpjcmVhdGUoKmRvd25jYXN0PERv
Y3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKTsKIAotICAgIHJldHVybiBtX3dlYmtp
dFN1YnRsZS5nZXQoKTsKKyAgICByZXR1cm4gKm1fd2Via2l0U3VidGxlOwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NyeXB0by5oCmluZGV4IDkwMzRlNjE4N2RiOTAzNTAwMDZlOWIwYWE0ZmQ2M2Q4OGU2
OGRjOTQuLjliNDgwZTA1NDIxOWY5YzRjZTA2NDI1YTA4YzQ3ZDVkMjQzYjhjNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DcnlwdG8uaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3VidGxlQ3J5cHRvJiBz
dWJ0bGUoKTsKIAogICAgIC8vIFdpbGwgYmUgZGVwcmVjYXRlZC4KLSAgICBFeGNlcHRpb25PcjxX
ZWJLaXRTdWJ0bGVDcnlwdG8qPiB3ZWJraXRTdWJ0bGUoKTsKKyAgICBFeGNlcHRpb25PcjxXZWJL
aXRTdWJ0bGVDcnlwdG8mPiB3ZWJraXRTdWJ0bGUoKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMmE0OWFhYTUyMjRiN2Q3NjU2OWIwZjZmNThk
YjA5M2Y3YjVlNjYwNC4uMzZmMjIwZWYxNjNmZmIyMjIzODVmMTJjYWQzNDY1NThmMDk5NDZjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMDksOSArMTA5LDcgQEAgcHVibGlj
OgogCiAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHls
ZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEVsZW1lbnQmKSBjb25zdDsKIAotICAgIEV4Y2VwdGlvbk9y
PE5vZGUqPiBlbnN1cmVTaGFkb3dSb290KEVsZW1lbnQmIGhvc3QpOwogICAgIE5vZGUqIGVuc3Vy
ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCk7Ci0gICAgRXhjZXB0aW9uT3I8Tm9k
ZSo+IGNyZWF0ZVNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCk7CiAgICAgTm9kZSogc2hhZG93Um9v
dChFbGVtZW50JiBob3N0KTsKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHNoYWRvd1Jvb3RUeXBl
KGNvbnN0IE5vZGUmKSBjb25zdDsKICAgICBTdHJpbmcgc2hhZG93UHNldWRvSWQoRWxlbWVudCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVl
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmluZGV4
IDIyOTBmYmRmODNlM2JiYjMyMjQ1YmQ1N2M1YTNiYWRmYmEwZTZkZDIuLjQyYTdhMDI4YjdkOTNi
MTk5YjNhZWFmNjExNGQxNjEzNTY5NzIwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00v
RE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0KQEAgLTc4LDEzICs3OCwxMyBAQCAtIChOU1N0cmluZyAq
KWdldFN0cmluZ1ZhbHVlCiAtIChET01Db3VudGVyICopZ2V0Q291bnRlclZhbHVlCiB7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQocmFp
c2VPbkRPTUVycm9yKElNUEwtPmdldENvdW50ZXJWYWx1ZSgpKSk7CisgICAgcmV0dXJuIGtpdCgm
cmFpc2VPbkRPTUVycm9yKElNUEwtPmdldENvdW50ZXJWYWx1ZSgpKSk7CiB9CiAKIC0gKERPTVJl
Y3QgKilnZXRSZWN0VmFsdWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgcmV0dXJuIGtpdChyYWlzZU9uRE9NRXJyb3IoSU1QTC0+Z2V0UmVjdFZhbHVl
KCkpKTsKKyAgICByZXR1cm4ga2l0KCZyYWlzZU9uRE9NRXJyb3IoSU1QTC0+Z2V0UmVjdFZhbHVl
KCkpKTsKIH0KIAogLSAoRE9NUkdCQ29sb3IgKilnZXRSR0JDb2xvclZhbHVlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggZmUxOTZmMTQ5NjUxNjkzYWRkNDQ5NzliMjA5YzM3
OWFkZThlNjM5ZC4uMzY5Yjk4MmY2YTA0MGNhOGFjYjBmNmEzMTMzMDBkNWMwMDMyMjkwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtNzgxLDE5ICs3ODEsMTMgQEAgLSAo
RE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZAogLSAoRE9N
RWxlbWVudCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICopc2VsZWN0b3JzCiB7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIERPTUVsZW1lbnQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJ
TVBMLT5xdWVyeVNlbGVjdG9yKHNlbGVjdG9ycywgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBraXQocmFpc2VPbkRPTUVycm9y
KElNUEwtPnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JzKSkpOwogfQogCiAtIChET01Ob2RlTGlzdCAq
KXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3JzCiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIERPTU5vZGVMaXN0ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+
cXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcnMsIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHJhaXNlT25ET01FcnJvcihJ
TVBMLT5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9ycykpLnB0cigpKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbQppbmRleCA1ZWU2NTU4
NGMyNjk3MTIyNGUwNWUyNTIyYzZkNzkwMmE2OWUxMGI1Li4xZmQ3ZWE5OWYyMjQ4OTNiOWIwMDJk
ZDA4NDBjMGYzOTY1MzMzNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9N
RG9jdW1lbnRGcmFnbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9jdW1l
bnRGcmFnbWVudC5tbQpAQCAtNzgsMTkgKzc4LDEzIEBAIC0gKERPTUVsZW1lbnQgKilnZXRFbGVt
ZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50SWQKIC0gKERPTUVsZW1lbnQgKilxdWVyeVNlbGVj
dG9yOihOU1N0cmluZyAqKXNlbGVjdG9ycwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBE
T01FbGVtZW50ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cXVlcnlTZWxlY3Rvcihz
ZWxlY3RvcnMsIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4ga2l0KHJhaXNlT25ET01FcnJvcihJTVBMLT5xdWVyeVNlbGVjdG9y
KHNlbGVjdG9ycykpKTsKIH0KIAogLSAoRE9NTm9kZUxpc3QgKilxdWVyeVNlbGVjdG9yQWxsOihO
U1N0cmluZyAqKXNlbGVjdG9ycwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2Rl
TGlzdCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnF1ZXJ5U2VsZWN0b3JBbGwoc2Vs
ZWN0b3JzLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIGtpdChyYWlzZU9uRE9NRXJyb3IoSU1QTC0+cXVlcnlTZWxlY3RvckFs
bChzZWxlY3RvcnMpKS5wdHIoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1l
bnQubW0KaW5kZXggMzNhOGMyNWVhNDRlYjNkMWVmNmI0Y2FlYWNjMmU2Mzg2M2UyNjcxNy4uYzBh
YThmNzk5MTlhZjU0YTdjOGMxZGE1MzM5MTI3YWM5OTYwOGU0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9N
L0RPTUVsZW1lbnQubW0KQEAgLTQ3MiwxOSArNDcyLDEzIEBAIC0gKHZvaWQpcmVtb3ZlCiAtIChE
T01FbGVtZW50ICopcXVlcnlTZWxlY3RvcjooTlNTdHJpbmcgKilzZWxlY3RvcnMKIHsKICAgICBK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgRE9NRWxlbWVudCAqcmVzdWx0ID0ga2l0KHVud3JhcCgqc2VsZikucXVlcnlTZWxlY3Rvcihz
ZWxlY3RvcnMsIGVjKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiBraXQocmFpc2VPbkRPTUVycm9yKHVud3JhcCgqc2VsZikucXVlcnlT
ZWxlY3RvcihzZWxlY3RvcnMpKSk7CiB9CiAKIC0gKERPTU5vZGVMaXN0ICopcXVlcnlTZWxlY3Rv
ckFsbDooTlNTdHJpbmcgKilzZWxlY3RvcnMKIHsKICAgICBKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZUxpc3QgKnJlc3Vs
dCA9IGtpdCh1bndyYXAoKnNlbGYpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzLCBlYykuZ2V0
KCkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBy
ZXR1cm4ga2l0KHJhaXNlT25ET01FcnJvcih1bndyYXAoKnNlbGYpLnF1ZXJ5U2VsZWN0b3JBbGwo
c2VsZWN0b3JzKSkucHRyKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NRG9jdW1lbnQuY3BwCmluZGV4IDE1YTU4OTcwMTE5NTVkYWE3OTA2NGFjNTJk
MzljYTRlMGY1YjdlNzQuLmJlNjg4ZTA5ZDZhMzU5OTdhYWI2Y2FiZDE4NGQ3NjRhMWIzMWY5N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnQuY3BwCkBA
IC0xMzg2LDEzICsxMzg2LDEzIEBAIFdlYktpdERPTUVsZW1lbnQqIHdlYmtpdF9kb21fZG9jdW1l
bnRfcXVlcnlfc2VsZWN0b3IoV2ViS2l0RE9NRG9jdW1lbnQqIHNlbGYsIGNvCiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IsIDApOwogICAgIFdlYkNvcmU6OkRvY3Vt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZFNlbGVjdG9ycyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzZWxlY3RvcnMpOwotICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBn
b2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+cXVlcnlTZWxlY3Rvcihjb252ZXJ0ZWRT
ZWxlY3RvcnMsIGVjKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+cXVl
cnlTZWxlY3Rvcihjb252ZXJ0ZWRTZWxlY3RvcnMpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVz
YyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9y
X2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNj
LmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAg
IHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gV2Vi
S2l0OjpraXQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIH0KIAogV2ViS2l0RE9NTm9k
ZUxpc3QqIHdlYmtpdF9kb21fZG9jdW1lbnRfcXVlcnlfc2VsZWN0b3JfYWxsKFdlYktpdERPTURv
Y3VtZW50KiBzZWxmLCBjb25zdCBnY2hhciogc2VsZWN0b3JzLCBHRXJyb3IqKiBlcnJvcikKQEAg
LTE0MDMsMTMgKzE0MDMsMTMgQEAgV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21fZG9jdW1l
bnRfcXVlcnlfc2VsZWN0b3JfYWxsKFdlYktpdERPTURvY3VtZW50KiBzZWwKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbCghZXJyb3IgfHwgISplcnJvciwgMCk7CiAgICAgV2ViQ29yZTo6RG9jdW1l
bnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVk
U2VsZWN0b3JzID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHNlbGVjdG9ycyk7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGVMaXN0PiBn
b2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+cXVlcnlTZWxlY3RvckFsbChjb252ZXJ0
ZWRTZWxlY3RvcnMsIGVjKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+
cXVlcnlTZWxlY3RvckFsbChjb252ZXJ0ZWRTZWxlY3RvcnMpOworICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
IGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0
X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwg
ZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1
cm4gV2ViS2l0OjpraXQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLnB0cigpKTsKIH0KIAog
V2ViS2l0RE9NRG9jdW1lbnRUeXBlKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kb2N0eXBlKFdl
YktpdERPTURvY3VtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEZyYWdtZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggMWNjNGUyNGQyNDNhYWViYjRk
OTVkYWQ2YzU4ZjY2ZWMwN2YwMGIyNi4uNThlYjUyZDIzNDU0MTJhYTZlZWRiMDk2ZDA0N2VkM2Y5
NDAzNjhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0xOTksMTMgKzE5OSwxMyBAQCBXZWJLaXRET01FbGVt
ZW50KiB3ZWJraXRfZG9tX2RvY3VtZW50X2ZyYWdtZW50X3F1ZXJ5X3NlbGVjdG9yKFdlYktpdERP
TURvY3VtZW50RgogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yLCAw
KTsKICAgICBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFNlbGVjdG9ycyA9IFdURjo6U3RyaW5nOjpm
cm9tVVRGOChzZWxlY3RvcnMpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIo
aXRlbS0+cXVlcnlTZWxlY3Rvcihjb252ZXJ0ZWRTZWxlY3RvcnMsIGVjKSk7Ci0gICAgaWYgKGVj
KSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMp
OworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+cXVlcnlTZWxlY3Rvcihjb252ZXJ0ZWRTZWxlY3Rv
cnMpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
LmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJv
bV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0
UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQocmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKTsKIH0KIAogV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21fZG9jdW1lbnRf
ZnJhZ21lbnRfcXVlcnlfc2VsZWN0b3JfYWxsKFdlYktpdERPTURvY3VtZW50RnJhZ21lbnQqIHNl
bGYsIGNvbnN0IGdjaGFyKiBzZWxlY3RvcnMsIEdFcnJvcioqIGVycm9yKQpAQCAtMjE2LDEzICsy
MTYsMTMgQEAgV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21fZG9jdW1lbnRfZnJhZ21lbnRf
cXVlcnlfc2VsZWN0b3JfYWxsKFdlYktpdERPTURvY3UKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bCghZXJyb3IgfHwgISplcnJvciwgMCk7CiAgICAgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTZWxl
Y3RvcnMgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc2VsZWN0b3JzKTsKLSAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+IGdvYmpl
Y3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5xdWVyeVNlbGVjdG9yQWxsKGNvbnZlcnRlZFNl
bGVjdG9ycywgZWMpKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5xdWVy
eVNlbGVjdG9yQWxsKGNvbnZlcnRlZFNlbGVjdG9ycyk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNk
ZXNjKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAgZ19zZXRfZXJy
b3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rl
c2MuY29kZSwgZWNkZXNjLm5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OmtpdChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkucHRyKCkpOwogfQogCiBXZWJL
aXRET01IVE1MQ29sbGVjdGlvbiogd2Via2l0X2RvbV9kb2N1bWVudF9mcmFnbWVudF9nZXRfY2hp
bGRyZW4oV2ViS2l0RE9NRG9jdW1lbnRGcmFnbWVudCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUVsZW1lbnQuY3BwCmluZGV4IDNlM2Q2NmI4ZDNiMGFjZDM3ODBj
YTc4NTkwZWE2Zjk1ZjJlZjgxM2EuLmE5MjE2YTg0NmFjYTY5ZmVlMjQzOTg0NGE4NjNkOWZjYzQy
ODkxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01FbGVtZW50LmNw
cApAQCAtOTk4LDEzICs5OTgsMTMgQEAgV2ViS2l0RE9NRWxlbWVudCogd2Via2l0X2RvbV9lbGVt
ZW50X3F1ZXJ5X3NlbGVjdG9yKFdlYktpdERPTUVsZW1lbnQqIHNlbGYsIGNvbnMKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbCghZXJyb3IgfHwgISplcnJvciwgMCk7CiAgICAgV2ViQ29yZTo6RWxl
bWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0
ZWRTZWxlY3RvcnMgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc2VsZWN0b3JzKTsKLSAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4g
Z29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnF1ZXJ5U2VsZWN0b3IoY29udmVydGVk
U2VsZWN0b3JzLCBlYykpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPnF1
ZXJ5U2VsZWN0b3IoY29udmVydGVkU2VsZWN0b3JzKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rl
c2MocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJv
cl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVz
Yy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdl
YktpdDo6a2l0KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiB9CiAKIFdlYktpdERPTU5v
ZGVMaXN0KiB3ZWJraXRfZG9tX2VsZW1lbnRfcXVlcnlfc2VsZWN0b3JfYWxsKFdlYktpdERPTUVs
ZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiBzZWxlY3RvcnMsIEdFcnJvcioqIGVycm9yKQpAQCAt
MTAxNSwxMyArMTAxNSwxMyBAQCBXZWJLaXRET01Ob2RlTGlzdCogd2Via2l0X2RvbV9lbGVtZW50
X3F1ZXJ5X3NlbGVjdG9yX2FsbChXZWJLaXRET01FbGVtZW50KiBzZWxmLAogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yLCAwKTsKICAgICBXZWJDb3JlOjpFbGVtZW50
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFNl
bGVjdG9ycyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzZWxlY3RvcnMpOwotICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlTGlzdD4gZ29i
amVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnF1ZXJ5U2VsZWN0b3JBbGwoY29udmVydGVk
U2VsZWN0b3JzLCBlYykpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPnF1
ZXJ5U2VsZWN0b3JBbGwoY29udmVydGVkU2VsZWN0b3JzKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBl
Y2Rlc2MocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9l
cnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVj
ZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6a2l0KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAKIGdj
aGFyKiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X3RhZ19uYW1lKFdlYktpdERPTUVsZW1lbnQqIHNl
bGYpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>