<?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>212519</bug_id>
          
          <creation_ts>2020-05-29 04:28:50 -0700</creation_ts>
          <short_desc>[JSC] for-in should allocate new temporary register for base</short_desc>
          <delta_ts>2020-05-30 20:20:44 -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>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1657210</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-29 04:28:50 -0700</bug_when>
    <thetext>[JSC] for-in should allocate new temporary register for base</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657212</commentid>
    <comment_count>1</comment_count>
      <attachid>400568</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-29 04:32:54 -0700</bug_when>
    <thetext>Created attachment 400568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657213</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-29 04:33:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/63722044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657425</commentid>
    <comment_count>3</comment_count>
      <attachid>400615</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-29 14:19:54 -0700</bug_when>
    <thetext>Created attachment 400615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657440</commentid>
    <comment_count>4</comment_count>
      <attachid>400615</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-29 14:42:57 -0700</bug_when>
    <thetext>Comment on attachment 400615
Patch

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

Nice!

r=me

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1855
&gt; +    auto canUseFastHasOwnProperty = [&amp;] {

nice!

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1865
&gt; +            return generator.variable(generator.propertyNames().thisIdentifier, ThisResolutionType::Local) == structureContext-&gt;baseVariable().value();

what happens for heap |this| inside arrow function?

&gt; Source/JavaScriptCore/parser/ASTBuilder.h:1454
&gt; +        &amp;&amp; (dot-&gt;base()-&gt;isResolveNode() || dot-&gt;base()-&gt;isThisNode())
&gt; +        &amp;&amp; (!dot-&gt;base()-&gt;isResolveNode() || static_cast&lt;ResolveNode*&gt;(dot-&gt;base())-&gt;identifier() != &quot;Reflect&quot;)) {

nit: you could make it:
((dot-&gt;base-&gt;isResolveNode() &amp;&amp; ...-&gt;id() != &quot;Reflect) || dot-&gt;base-&gt;isThisNode())
to avoid double vtable call</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657462</commentid>
    <comment_count>5</comment_count>
      <attachid>400615</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-29 15:12:56 -0700</bug_when>
    <thetext>Comment on attachment 400615
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1865
&gt;&gt; +            return generator.variable(generator.propertyNames().thisIdentifier, ThisResolutionType::Local) == structureContext-&gt;baseVariable().value();
&gt; 
&gt; what happens for heap |this| inside arrow function?

Arrow function loads |this| from scope to its local m_thisRegister. m_thisRegister can point to |this| in CallFrame or a variable register which is allocated for allow function.
So, after executing ensureThis(), m_thisRegister is always correct for |this|.

&gt;&gt; Source/JavaScriptCore/parser/ASTBuilder.h:1454
&gt;&gt; +        &amp;&amp; (!dot-&gt;base()-&gt;isResolveNode() || static_cast&lt;ResolveNode*&gt;(dot-&gt;base())-&gt;identifier() != &quot;Reflect&quot;)) {
&gt; 
&gt; nit: you could make it:
&gt; ((dot-&gt;base-&gt;isResolveNode() &amp;&amp; ...-&gt;id() != &quot;Reflect) || dot-&gt;base-&gt;isThisNode())
&gt; to avoid double vtable call

Sounds nice! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657508</commentid>
    <comment_count>6</comment_count>
      <attachid>400634</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-29 16:48:19 -0700</bug_when>
    <thetext>Created attachment 400634
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657688</commentid>
    <comment_count>7</comment_count>
      <attachid>400686</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-30 18:45:55 -0700</bug_when>
    <thetext>Created attachment 400686
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657689</commentid>
    <comment_count>8</comment_count>
      <attachid>400687</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-30 18:47:57 -0700</bug_when>
    <thetext>Created attachment 400687
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657732</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-30 20:20:44 -0700</bug_when>
    <thetext>Committed r262354: &lt;https://trac.webkit.org/changeset/262354&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400687.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400568</attachid>
            <date>2020-05-29 04:32:54 -0700</date>
            <delta_ts>2020-05-29 14:19:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212519-20200529043254.patch</filename>
            <type>text/plain</type>
            <size>2963</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjI3NWIxOGQwNzg3ZGViOTNiMDA2ZjM3NWIxZjM1NzlhNGEyNDZkLi41MzFhZTZlNmIwYmMwNGEz
ZjdlMjQxZWViNzU4MWNlOWY0ZTQ4YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wNS0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIGZvci1pbiBzaG91bGQgYWxsb2NhdGUgbmV3IHRlbXBvcmFyeSBy
ZWdpc3RlciBmb3IgYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyNTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCByZXZlcnRzIHBhcnQgb2YgcjI2MjIzMzogYnl0ZWNvZGUtZ2Vu
ZXJhdG9yIHNob3VsZCBhbGxvY2F0ZXMgdGVtcG9yYXJ5IHJlZ2lzdGVyIGZvciBiYXNlLiBJZiB2
YXJpYWJsZSByZWdpc3RlciBpcyBzZWxlY3RlZCwKKyAgICAgICAgZm9yLWluIGJvZHkgY2FuIHJl
cGxhY2UgdGhlIGJhc2UgZHVyaW5nIGVudW1lcmF0aW9uIGFuZCBjb25mdXNlIGVudW1lcmF0b3Iu
CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpT
Qzo6Rm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorCiAyMDIwLTA1LTI4ICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgbWlzc2lu
ZyBjb25kaXRpb24gZ3VhcmRzIHdoZW4gZ2VuZXJhdGluZyBvYmpjIHByb3RvY29sIGZpbGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggMWFmYzJlNGJiY2EyZmJkOTZmZmIyMjYzNDcxMDYwMWQ0ZTU3MmFmNC4uNWQzYzI3
Yzg5NGQzZDQ1NGRjNzg1MmQzMjc2MGQ0MWVlMTVhMDU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzc0NywxMCAr
Mzc0NywxMSBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBpZiAobV9sZXhwci0+aXNBc3NpZ25S
ZXNvbHZlTm9kZSgpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSwgbV9sZXhwcik7CiAKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbGVuZ3RoOwog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBlbnVtZXJhdG9yOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKKyAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoYmFzZS5nZXQoKSwgbV9leHByKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbG9jYWwg
PSB0aGlzLT50cnlHZXRCb3VuZExvY2FsKGdlbmVyYXRvcik7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGVudW1lcmF0b3JJbmRleDsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxNWZlYzc3ZTg5MGI5YmQzMjRmMTg3NmRmZWU3N2YxNTM3
OWU4MjQ2Li42Y2MzNzI5MzM5OTY3YmQ1ZGI1ZDk1ZTFkODY2MWYwZTQ2OTllMDc4IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDIwLTA1LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gZm9yLWluIHNob3VsZCBhbGxvY2F0ZSBuZXcgdGVtcG9yYXJ5IHJlZ2lz
dGVyIGZvciBiYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTI1MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHN0cmVzcy9mb3ItaW4tYm9keS1yZXBsYWNlLWVudW1lcmFibGUuanM6IEFkZGVkLgor
ICAgICAgICAoZm9vKToKKwogMjAyMC0wNS0yNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBmb3Itb2Ygc2hvdWxkIGNoZWNrIHRoZSBpdGVyYWJsZSBp
cyBhIEpTQXJyYXkgZm9yIEZhc3RBcnJheSBpbiBERkcgaXRlcmF0b3Jfb3BlbgpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvZm9yLWluLWJvZHktcmVwbGFjZS1lbnVtZXJhYmxlLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZm9yLWluLWJvZHktcmVwbGFjZS1lbnVtZXJhYmxlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI4OWY4MTYxZGYyMjE2MmZlNjMwNmQzNWJlNmFkMTk4ZWRjOWU4ZmMKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tYm9keS1yZXBsYWNlLWVudW1lcmFibGUuanMKQEAg
LTAsMCArMSwxMCBAQAorZnVuY3Rpb24gZm9vKCkgeworICAgIGxldCBhMCA9IFsnYScsIHt9XTsK
KyAgICBmb3IgKGxldCBxIGluIGEwKSB7CisgICAgICAgIGEwID0gbmV3IFVpbnQ4QXJyYXkoKTsK
KyAgICB9Cit9CisKK2ZvciAobGV0IGk9MDsgaTwxZTM7IGkrKykgeworICAgIGZvbygpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400615</attachid>
            <date>2020-05-29 14:19:54 -0700</date>
            <delta_ts>2020-05-29 14:42:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212519-20200529141953.patch</filename>
            <type>text/plain</type>
            <size>21668</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjI3NWIxOGQwNzg3ZGViOTNiMDA2ZjM3NWIxZjM1NzlhNGEyNDZkLi41YzRhZTc0ZDZiNDkyMTNk
NzkxMDhkN2Q1ZGIyN2EyZGY0Nzk5NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAyMC0wNS0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIGZvci1pbiBzaG91bGQgYWxsb2NhdGUgbmV3IHRlbXBvcmFyeSBy
ZWdpc3RlciBmb3IgYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyNTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hpbGUgcjI2MjIzMyBrZWVwcyBmb3ItaW4ncyBlbnVtZXJhdGVkIG9iamVjdCBp
biB2YXJpYWJsZSByZWdpc3RlciBpZiBwb3NzaWJsZSB0byB1c2UgdGhpcyByZWdpc3RlciBmb3Ig
aGV1cmlzdGljcyBkcml2aW5nIGFuIG9wdGltaXphdGlvbiwKKyAgICAgICAgZm9yLWluIGJvZHkg
Y2FuIHJlcGxhY2UgdGhlIGNvbnRlbnQgb2YgdGhpcyByZWdpc3RlciBkdXJpbmcgZW51bWVyYXRp
b24gYW5kIGNvbmZ1c2UgZW51bWVyYXRvci4KKworICAgICAgICBJbnN0ZWFkLCB3ZSByZWNvcmQg
VmFyaWFibGUgaW5mb3JtYXRpb24gaW4gU3RydWN0dXJlRm9ySW5Db250ZXh0LiBUaGlzIGFsbG93
cyB1cyB0byBkZXRlY3QgcGF0dGVybnMgdXNpbmcgaGVhcC12YXJpYWJsZXMgdG9vLgorICAgICAg
ICBGdXJ0aGVyLCB0aGlzIHBhdGNoIGV4dGVuZHMgcGF0dGVybi1tYXRjaGluZyBjb2RlIHRvIHN1
cHBvcnQgVGhpc05vZGUgdG9vLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hTdHJ1Y3R1
cmVGb3JJblNjb3BlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGU6OlZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGU6OmlzUmVzb2x2ZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6c3ltYm9s
VGFibGVDb25zdGFudEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGU6OmlkZW50
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGU6Om9mZnNldCBjb25zdCk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlOjppc0xvY2FsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGU6
OmxvY2FsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGU6OmlzUmVhZE9ubHkgY29uc3Qp
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6aXNTcGVjaWFsIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGU6OmlzQ29uc3QgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6c2V0
SXNSZWFkT25seSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlOjpvcGVyYXRvcj09IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlRm9ySW5Db250ZXh0OjpTdHJ1Y3R1cmVGb3JJbkNvbnRl
eHQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ6OmJhc2VWYXJpYWJsZSBj
b25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUZvckluQ29udGV4dDo6YmFzZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAg
ICAgIChKU0M6Okhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHBh
cnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlv
bkNhbGxOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6RXhw
cmVzc2lvbk5vZGU6OmlzVGhpc05vZGUgY29uc3QpOgorCiAyMDIwLTA1LTI4ICBEZXZpbiBSb3Vz
c28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgbWlz
c2luZyBjb25kaXRpb24gZ3VhcmRzIHdoZW4gZ2VuZXJhdGluZyBvYmpjIHByb3RvY29sIGZpbGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCmluZGV4IGE4MDU1MDhiZjczN2UxMTQ1MjE1ZjVhMjU3ZjFmMmM2NjU3
MjA5MTMuLmZkYmUzOWI0ZDVjNGIyODUyMTE1NjAxM2Q1YWY4NWI2MTc4MmMyMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCkBAIC00NTMzLDEyICs0NTMzLDEyIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKICAgICB9CiB9CiAKLXZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQq
IGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3JSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogYmFzZVJlZ2lzdGVyKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFN0cnVjdHVyZUZv
ckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdp
c3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3RlciwgUmVnaXN0ZXJJRCogZW51bWVyYXRv
clJlZ2lzdGVyLCBPcHRpb25hbDxWYXJpYWJsZT4gYmFzZVZhcmlhYmxlKQogewogICAgIGlmICgh
bG9jYWxSZWdpc3RlcikKICAgICAgICAgcmV0dXJuOwogICAgIHVuc2lnbmVkIGJvZHlCeXRlY29k
ZVN0YXJ0T2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIG1fZm9ySW5Db250ZXh0
U3RhY2suYXBwZW5kKGFkb3B0UmVmKCpuZXcgU3RydWN0dXJlRm9ySW5Db250ZXh0KGxvY2FsUmVn
aXN0ZXIsIGluZGV4UmVnaXN0ZXIsIHByb3BlcnR5UmVnaXN0ZXIsIGVudW1lcmF0b3JSZWdpc3Rl
ciwgYmFzZVJlZ2lzdGVyLCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkpKTsKKyAgICBtX2Zvcklu
Q29udGV4dFN0YWNrLmFwcGVuZChhZG9wdFJlZigqbmV3IFN0cnVjdHVyZUZvckluQ29udGV4dChs
b2NhbFJlZ2lzdGVyLCBpbmRleFJlZ2lzdGVyLCBwcm9wZXJ0eVJlZ2lzdGVyLCBlbnVtZXJhdG9y
UmVnaXN0ZXIsIGJhc2VWYXJpYWJsZSwgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQpKSk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJ
RCogbG9jYWxSZWdpc3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0YjFlZmI4OWQ2MDg3YTRiZjAzOTVh
NjFhMmJiY2NiZmJjMTU1MGU1Li43Mjg2NDkwNjk5YzdlNjc1NWQwODQzZTY5YjRiZDFhZDE5Yjg2
YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCkBAIC05Miw2ICs5Miw3MyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdW5zaWduZWQgbV9wYWRkaW5nOwogICAgIH07CiAKKyAgICBjbGFzcyBWYXJpYWJsZSB7
CisgICAgcHVibGljOgorICAgICAgICBlbnVtIFZhcmlhYmxlS2luZCB7IE5vcm1hbFZhcmlhYmxl
LCBTcGVjaWFsVmFyaWFibGUgfTsKKworICAgICAgICBWYXJpYWJsZSgpID0gZGVmYXVsdDsKKyAg
ICAgICAgCisgICAgICAgIFZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgICAg
ICAgICAgOiBtX2lkZW50KGlkZW50KQorICAgICAgICAgICAgLCBtX2xvY2FsKG51bGxwdHIpCisg
ICAgICAgICAgICAsIG1fYXR0cmlidXRlcygwKQorICAgICAgICAgICAgLCBtX2tpbmQoTm9ybWFs
VmFyaWFibGUpIC8vIFRoaXMgaXMgc29tZXdoYXQgbWVhbmluZ2xlc3MgaGVyZSBmb3IgdGhpcyBr
aW5kIG9mIFZhcmlhYmxlLgorICAgICAgICAgICAgLCBtX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRl
eCgwKSAvLyBUaGlzIGlzIG1lYW5pbmdsZXNzIGhlcmUgZm9yIHRoaXMga2luZCBvZiBWYXJpYWJs
ZS4KKyAgICAgICAgICAgICwgbV9pc0xleGljYWxseVNjb3BlZChmYWxzZSkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIFZh
ck9mZnNldCBvZmZzZXQsIFJlZ2lzdGVySUQqIGxvY2FsLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBW
YXJpYWJsZUtpbmQga2luZCwgaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgYm9vbCBpc0xl
eGljYWxseVNjb3BlZCkKKyAgICAgICAgICAgIDogbV9pZGVudChpZGVudCkKKyAgICAgICAgICAg
ICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAgICAgLCBtX2xvY2FsKGxvY2FsKQorICAgICAg
ICAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKKyAgICAgICAgICAgICwgbV9raW5kKGtp
bmQpCisgICAgICAgICAgICAsIG1fc3ltYm9sVGFibGVDb25zdGFudEluZGV4KHN5bWJvbFRhYmxl
Q29uc3RhbnRJbmRleCkKKyAgICAgICAgICAgICwgbV9pc0xleGljYWxseVNjb3BlZChpc0xleGlj
YWxseVNjb3BlZCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgaXQncyB1
bnNldCwgdGhlbiBpdCBpcyBhIG5vbi1sb2NhbGx5LXNjb3BlZCB2YXJpYWJsZS4gSWYgaXQgaXMg
c2V0LCB0aGVuIGl0IGNvdWxkIGJlCisgICAgICAgIC8vIGEgc3RhY2sgdmFyaWFibGUsIGEgc2Nv
cGVkIHZhcmlhYmxlIGluIGEgbG9jYWwgc2NvcGUsIG9yIGEgdmFyaWFibGUgY2FwdHVyZWQgaW4g
dGhlCisgICAgICAgIC8vIGRpcmVjdCBhcmd1bWVudHMgb2JqZWN0LgorICAgICAgICBib29sIGlz
UmVzb2x2ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fb2Zmc2V0OyB9CisgICAgICAgIGludCBzeW1i
b2xUYWJsZUNvbnN0YW50SW5kZXgoKSBjb25zdCB7IEFTU0VSVChpc1Jlc29sdmVkKCkgJiYgIWlz
U3BlY2lhbCgpKTsgcmV0dXJuIG1fc3ltYm9sVGFibGVDb25zdGFudEluZGV4OyB9CisgICAgICAg
IAorICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnQ7IH0KKyAgICAgICAgCisgICAgICAgIFZhck9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQorICAgICAgICBib29sIGlzTG9jYWwoKSBjb25zdCB7IHJldHVybiBtX29m
ZnNldC5pc1N0YWNrKCk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogbG9jYWwoKSBjb25zdCB7IHJl
dHVybiBtX2xvY2FsOyB9CisKKyAgICAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1
cm4gbV9hdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5OyB9CisgICAgICAg
IGJvb2wgaXNTcGVjaWFsKCkgY29uc3QgeyByZXR1cm4gbV9raW5kICE9IE5vcm1hbFZhcmlhYmxl
OyB9CisgICAgICAgIGJvb2wgaXNDb25zdCgpIGNvbnN0IHsgcmV0dXJuIGlzUmVhZE9ubHkoKSAm
JiBtX2lzTGV4aWNhbGx5U2NvcGVkOyB9CisgICAgICAgIHZvaWQgc2V0SXNSZWFkT25seSgpIHsg
bV9hdHRyaWJ1dGVzIHw9IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seTsgfQorCisgICAgICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCisgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBWYXJpYWJsZSYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBtX2lkZW50ID09IG90aGVyLm1faWRlbnQKKyAgICAgICAgICAgICAgICAmJiBtX29mZnNl
dCA9PSBvdGhlci5tX29mZnNldAorICAgICAgICAgICAgICAgICYmIG1fbG9jYWwgPT0gb3RoZXIu
bV9sb2NhbAorICAgICAgICAgICAgICAgICYmIG1fYXR0cmlidXRlcyA9PSBvdGhlci5tX2F0dHJp
YnV0ZXMKKyAgICAgICAgICAgICAgICAmJiBtX2tpbmQgPT0gb3RoZXIubV9raW5kCisgICAgICAg
ICAgICAgICAgJiYgbV9zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggPT0gb3RoZXIubV9zeW1ib2xU
YWJsZUNvbnN0YW50SW5kZXgKKyAgICAgICAgICAgICAgICAmJiBtX2lzTGV4aWNhbGx5U2NvcGVk
ID09IG90aGVyLm1faXNMZXhpY2FsbHlTY29wZWQ7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKKyAgICAgICAgVmFyT2Zmc2V0IG1fb2Zmc2V0
IHsgfTsKKyAgICAgICAgUmVnaXN0ZXJJRCogbV9sb2NhbCB7IG51bGxwdHIgfTsKKyAgICAgICAg
dW5zaWduZWQgbV9hdHRyaWJ1dGVzIHsgMCB9OworICAgICAgICBWYXJpYWJsZUtpbmQgbV9raW5k
IHsgTm9ybWFsVmFyaWFibGUgfTsKKyAgICAgICAgaW50IG1fc3ltYm9sVGFibGVDb25zdGFudElu
ZGV4IHsgMCB9OyAvLyBUaGlzIGlzIG1lYW5pbmdsZXNzIGhlcmUgZm9yIHRoaXMgZGVmYXVsdCBO
b3JtYWxWYXJpYWJsZSBraW5kIG9mIFZhcmlhYmxlLgorICAgICAgICBib29sIG1faXNMZXhpY2Fs
bHlTY29wZWQgeyBmYWxzZSB9OworICAgIH07CisKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHVi
LmlvL2VjbWEyNjIvI3NlYy1jb21wbGV0aW9uLXJlY29yZC1zcGVjaWZpY2F0aW9uLXR5cGUKICAg
ICAvLwogICAgIC8vIEZvciB0aGUgQnJlYWsgYW5kIENvbnRpbnVlIGNhc2VzLCBpbnN0ZWFkIG9m
IHVzaW5nIHRoZSBCcmVhayBhbmQgQ29udGludWUgZW51bSB2YWx1ZXMKQEAgLTI0MSwxOSArMzA4
LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1c2luZyBJbkluc3QgPSBHZXRJbnN0Owog
ICAgICAgICB1c2luZyBIYXNPd25Qcm9wZXJ0eUp1bXBJbnN0ID0gc3RkOjp0dXBsZTx1bnNpZ25l
ZCwgdW5zaWduZWQ+OwogCi0gICAgICAgIFN0cnVjdHVyZUZvckluQ29udGV4dChSZWdpc3RlcklE
KiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRleFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBw
cm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGJhc2UsIHVuc2lnbmVkIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQorICAgICAgICBTdHJ1
Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJRCog
aW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3RlciwgUmVnaXN0ZXJJRCog
ZW51bWVyYXRvclJlZ2lzdGVyLCBPcHRpb25hbDxWYXJpYWJsZT4gYmFzZVZhcmlhYmxlLCB1bnNp
Z25lZCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkKICAgICAgICAgICAgIDogRm9ySW5Db250ZXh0
KGxvY2FsUmVnaXN0ZXIsIFR5cGU6OlN0cnVjdHVyZUZvckluLCBib2R5Qnl0ZWNvZGVTdGFydE9m
ZnNldCkKICAgICAgICAgICAgICwgbV9pbmRleFJlZ2lzdGVyKGluZGV4UmVnaXN0ZXIpCiAgICAg
ICAgICAgICAsIG1fcHJvcGVydHlSZWdpc3Rlcihwcm9wZXJ0eVJlZ2lzdGVyKQogICAgICAgICAg
ICAgLCBtX2VudW1lcmF0b3JSZWdpc3RlcihlbnVtZXJhdG9yUmVnaXN0ZXIpCi0gICAgICAgICAg
ICAsIG1fYmFzZShiYXNlKQorICAgICAgICAgICAgLCBtX2Jhc2VWYXJpYWJsZShiYXNlVmFyaWFi
bGUpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9pbmRleFJlZ2lzdGVyLmdldCgpOyB9CiAgICAgICAgIFJlZ2lzdGVy
SUQqIHByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdGVyLmdldCgpOyB9
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVudW1lcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2VudW1l
cmF0b3JSZWdpc3Rlci5nZXQoKTsgfQotICAgICAgICBSZWdpc3RlcklEKiBiYXNlKCkgY29uc3Qg
eyByZXR1cm4gbV9iYXNlLmdldCgpOyB9CisgICAgICAgIGNvbnN0IE9wdGlvbmFsPFZhcmlhYmxl
PiYgYmFzZVZhcmlhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVmFyaWFibGU7IH0KIAogICAg
ICAgICB2b2lkIGFkZEdldEluc3QodW5zaWduZWQgaW5zdEluZGV4LCBpbnQgcHJvcGVydHlSZWdJ
bmRleCkKICAgICAgICAgewpAQCAtMjc2LDcgKzM0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9pbmRleFJlZ2lzdGVyOwogICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gbV9wcm9wZXJ0eVJlZ2lzdGVyOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gbV9lbnVtZXJhdG9yUmVnaXN0ZXI7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBtX2Jh
c2U7CisgICAgICAgIE9wdGlvbmFsPFZhcmlhYmxlPiBtX2Jhc2VWYXJpYWJsZTsKICAgICAgICAg
VmVjdG9yPEdldEluc3Q+IG1fZ2V0SW5zdHM7CiAgICAgICAgIFZlY3RvcjxJbkluc3Q+IG1faW5J
bnN0czsKICAgICAgICAgVmVjdG9yPEhhc093blByb3BlcnR5SnVtcEluc3Q+IG1faGFzT3duUHJv
cGVydHlKdW1wSW5zdHM7CkBAIC0zMTEsNzAgKzM3OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBUcnlEYXRhKiB0cnlEYXRhOwogICAgIH07CiAKLSAgICBjbGFzcyBWYXJpYWJsZSB7Ci0g
ICAgcHVibGljOgotICAgICAgICBlbnVtIFZhcmlhYmxlS2luZCB7IE5vcm1hbFZhcmlhYmxlLCBT
cGVjaWFsVmFyaWFibGUgfTsKLQotICAgICAgICBWYXJpYWJsZSgpCi0gICAgICAgICAgICA6IG1f
b2Zmc2V0KCkKLSAgICAgICAgICAgICwgbV9sb2NhbChudWxscHRyKQotICAgICAgICAgICAgLCBt
X2F0dHJpYnV0ZXMoMCkKLSAgICAgICAgICAgICwgbV9raW5kKE5vcm1hbFZhcmlhYmxlKQotICAg
ICAgICAgICAgLCBtX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCgwKSAvLyBUaGlzIGlzIG1lYW5p
bmdsZXNzIGhlcmUgZm9yIHRoaXMga2luZCBvZiBWYXJpYWJsZS4KLSAgICAgICAgICAgICwgbV9p
c0xleGljYWxseVNjb3BlZChmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAgICAgIDog
bV9pZGVudChpZGVudCkKLSAgICAgICAgICAgICwgbV9sb2NhbChudWxscHRyKQotICAgICAgICAg
ICAgLCBtX2F0dHJpYnV0ZXMoMCkKLSAgICAgICAgICAgICwgbV9raW5kKE5vcm1hbFZhcmlhYmxl
KSAvLyBUaGlzIGlzIHNvbWV3aGF0IG1lYW5pbmdsZXNzIGhlcmUgZm9yIHRoaXMga2luZCBvZiBW
YXJpYWJsZS4KLSAgICAgICAgICAgICwgbV9zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgoMCkgLy8g
VGhpcyBpcyBtZWFuaW5nbGVzcyBoZXJlIGZvciB0aGlzIGtpbmQgb2YgVmFyaWFibGUuCi0gICAg
ICAgICAgICAsIG1faXNMZXhpY2FsbHlTY29wZWQoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAg
fQotCi0gICAgICAgIFZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBWYXJPZmZzZXQg
b2Zmc2V0LCBSZWdpc3RlcklEKiBsb2NhbCwgdW5zaWduZWQgYXR0cmlidXRlcywgVmFyaWFibGVL
aW5kIGtpbmQsIGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIGJvb2wgaXNMZXhpY2FsbHlT
Y29wZWQpCi0gICAgICAgICAgICA6IG1faWRlbnQoaWRlbnQpCi0gICAgICAgICAgICAsIG1fb2Zm
c2V0KG9mZnNldCkKLSAgICAgICAgICAgICwgbV9sb2NhbChsb2NhbCkKLSAgICAgICAgICAgICwg
bV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAgICAgICAgICAsIG1fa2luZChraW5kKQotICAg
ICAgICAgICAgLCBtX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleChzeW1ib2xUYWJsZUNvbnN0YW50
SW5kZXgpCi0gICAgICAgICAgICAsIG1faXNMZXhpY2FsbHlTY29wZWQoaXNMZXhpY2FsbHlTY29w
ZWQpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIGl0J3MgdW5zZXQsIHRo
ZW4gaXQgaXMgYSBub24tbG9jYWxseS1zY29wZWQgdmFyaWFibGUuIElmIGl0IGlzIHNldCwgdGhl
biBpdCBjb3VsZCBiZQotICAgICAgICAvLyBhIHN0YWNrIHZhcmlhYmxlLCBhIHNjb3BlZCB2YXJp
YWJsZSBpbiBhIGxvY2FsIHNjb3BlLCBvciBhIHZhcmlhYmxlIGNhcHR1cmVkIGluIHRoZQotICAg
ICAgICAvLyBkaXJlY3QgYXJndW1lbnRzIG9iamVjdC4KLSAgICAgICAgYm9vbCBpc1Jlc29sdmVk
KCkgY29uc3QgeyByZXR1cm4gISFtX29mZnNldDsgfQotICAgICAgICBpbnQgc3ltYm9sVGFibGVD
b25zdGFudEluZGV4KCkgY29uc3QgeyBBU1NFUlQoaXNSZXNvbHZlZCgpICYmICFpc1NwZWNpYWwo
KSk7IHJldHVybiBtX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsgfQotICAgICAgICAKLSAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9Ci0g
ICAgICAgIAotICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZz
ZXQ7IH0KLSAgICAgICAgYm9vbCBpc0xvY2FsKCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQuaXNT
dGFjaygpOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGxvY2FsKCkgY29uc3QgeyByZXR1cm4gbV9s
b2NhbDsgfQotCi0gICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0
cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seTsgfQotICAgICAgICBib29sIGlz
U3BlY2lhbCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCAhPSBOb3JtYWxWYXJpYWJsZTsgfQotICAg
ICAgICBib29sIGlzQ29uc3QoKSBjb25zdCB7IHJldHVybiBpc1JlYWRPbmx5KCkgJiYgbV9pc0xl
eGljYWxseVNjb3BlZDsgfQotICAgICAgICB2b2lkIHNldElzUmVhZE9ubHkoKSB7IG1fYXR0cmli
dXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHk7IH0KLQotICAgICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIElkZW50aWZp
ZXIgbV9pZGVudDsKLSAgICAgICAgVmFyT2Zmc2V0IG1fb2Zmc2V0OwotICAgICAgICBSZWdpc3Rl
cklEKiBtX2xvY2FsOwotICAgICAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZXM7Ci0gICAgICAgIFZh
cmlhYmxlS2luZCBtX2tpbmQ7Ci0gICAgICAgIGludCBtX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRl
eDsKLSAgICAgICAgYm9vbCBtX2lzTGV4aWNhbGx5U2NvcGVkOwotICAgIH07Ci0KICAgICBzdHJ1
Y3QgVHJ5UmFuZ2UgewogICAgICAgICBSZWY8TGFiZWw+IHN0YXJ0OwogICAgICAgICBSZWY8TGFi
ZWw+IGVuZDsKQEAgLTEwMjUsNyArMTAyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHZvaWQgcHVzaEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsLCBSZWdpc3RlcklE
KiBpbmRleCk7CiAgICAgICAgIHZvaWQgcG9wSW5kZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCog
bG9jYWwpOwotICAgICAgICB2b2lkIHB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQq
IGxvY2FsLCBSZWdpc3RlcklEKiBpbmRleCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVy
SUQqIGVudW1lcmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UpOworICAgICAgICB2b2lkIHB1c2hTdHJ1
Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsLCBSZWdpc3RlcklEKiBpbmRleCwgUmVn
aXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGVudW1lcmF0b3IsIE9wdGlvbmFsPFZhcmlh
YmxlPiBiYXNlKTsKICAgICAgICAgdm9pZCBwb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVy
SUQqIGxvY2FsKTsKIAogICAgICAgICBMYWJlbFNjb3BlKiBicmVha1RhcmdldChjb25zdCBJZGVu
dGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKaW5kZXggMWFmYzJlNGJiY2EyZmJkOTZmZmIyMjYzNDcxMDYwMWQ0ZTU3
MmFmNC4uZWZkNTI2OTgwZjRlMzcwODJmM2I3NGYyMWY4YjAzNDFiZjYyYzE5YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApA
QCAtMTg1Miw3ICsxODUyLDI0IEBAIFJlZ2lzdGVySUQqIEhhc093blByb3BlcnR5RnVuY3Rpb25D
YWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnCiAgICAgICAgIHN0
cnVjdHVyZUNvbnRleHQgPSBnZW5lcmF0b3IuZmluZFN0cnVjdHVyZUZvckluQ29udGV4dChwcm9w
ZXJ0eSk7CiAgICAgfQogCi0gICAgaWYgKHN0cnVjdHVyZUNvbnRleHQgJiYgc3RydWN0dXJlQ29u
dGV4dC0+YmFzZSgpID09IGJhc2UuZ2V0KCkpIHsKKyAgICBhdXRvIGNhblVzZUZhc3RIYXNPd25Q
cm9wZXJ0eSA9IFsmXSB7CisgICAgICAgIGlmICghc3RydWN0dXJlQ29udGV4dCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmVDb250ZXh0LT5iYXNlVmFy
aWFibGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1fYmFzZS0+
aXNSZXNvbHZlTm9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci52YXJpYWJsZShz
dGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KG1fYmFzZSktPmlkZW50aWZpZXIoKSkgPT0gc3RydWN0
dXJlQ29udGV4dC0+YmFzZVZhcmlhYmxlKCkudmFsdWUoKTsKKyAgICAgICAgaWYgKG1fYmFzZS0+
aXNUaGlzTm9kZSgpKSB7CisgICAgICAgICAgICAvLyBBZnRlciBnZW5lcmF0b3IuZW5zdXJlVGhp
cyAod2hpY2ggbXVzdCBiZSBpbnZva2VkIGluIHxiYXNlfCdzIG1hdGVyaWFsaXphdGlvbiksIHdl
IGNhbiBlbnN1cmUgdGhhdCB8dGhpc3wgaXMgaW4gbG9jYWwgdGhpcy1yZWdpc3Rlci4KKyAgICAg
ICAgICAgIEFTU0VSVChiYXNlKTsKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IudmFyaWFi
bGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS50aGlzSWRlbnRpZmllciwgVGhpc1Jlc29sdXRp
b25UeXBlOjpMb2NhbCkgPT0gc3RydWN0dXJlQ29udGV4dC0+YmFzZVZhcmlhYmxlKCkudmFsdWUo
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIGlmIChj
YW5Vc2VGYXN0SGFzT3duUHJvcGVydHkoKSkgeworICAgICAgICAvLyBJdCBpcyBwb3NzaWJsZSB0
aGF0IGJhc2UgcmVnaXN0ZXIgaXMgdmFyaWFibGUgYW5kIGVhY2ggZm9yLWluIGJvZHkgcmVwbGFj
ZXMgSlMgb2JqZWN0IGluIHRoZSBiYXNlIHJlZ2lzdGVyIHdpdGggYSBkaWZmZXJlbnQgb25lLgor
ICAgICAgICAvLyBFdmVuIHRob3VnaCwgdGhpcyBpcyBPSyBzaW5jZSBIYXNPd25TdHJ1Y3R1cmVQ
cm9wZXJ0eSB3aWxsIHJlamVjdCB0aGUgcmVwbGFjZWQgSlMgb2JqZWN0LgogICAgICAgICBSZWY8
TGFiZWw+IHJlYWxDYWxsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIFJlZjxMYWJl
bD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAKQEAgLTM3NTAsMTAgKzM3NjcsMTkgQEAg
dm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGxlbmd0aDsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gZW51bWVyYXRvcjsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2V4
cHIpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBsb2NhbCA9IHRoaXMtPnRyeUdldEJvdW5kTG9j
YWwoZ2VuZXJhdG9yKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZW51bWVyYXRvckluZGV4Owog
CisgICAgT3B0aW9uYWw8VmFyaWFibGU+IGJhc2VWYXJpYWJsZTsKKyAgICBpZiAobV9leHByLT5p
c1Jlc29sdmVOb2RlKCkpCisgICAgICAgIGJhc2VWYXJpYWJsZSA9IGdlbmVyYXRvci52YXJpYWJs
ZShzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KG1fZXhwciktPmlkZW50aWZpZXIoKSk7CisgICAg
ZWxzZSBpZiAobV9leHByLT5pc1RoaXNOb2RlKCkpIHsKKyAgICAgICAgLy8gQWZ0ZXIgZ2VuZXJh
dG9yLmVuc3VyZVRoaXMgKHdoaWNoIG11c3QgYmUgaW52b2tlZCBpbiB8YmFzZXwncyBtYXRlcmlh
bGl6YXRpb24pLCB3ZSBjYW4gZW5zdXJlIHRoYXQgfHRoaXN8IGlzIGluIGxvY2FsIHRoaXMtcmVn
aXN0ZXIuCisgICAgICAgIEFTU0VSVChiYXNlKTsKKyAgICAgICAgYmFzZVZhcmlhYmxlID0gZ2Vu
ZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudGhpc0lkZW50aWZpZXIs
IFRoaXNSZXNvbHV0aW9uVHlwZTo6TG9jYWwpOworICAgIH0KKwogICAgIC8vIFBhdXNlIGF0IHRo
ZSBhc3NpZ25tZW50IGV4cHJlc3Npb24gZm9yIGVhY2ggZm9yLi5pbiBpdGVyYXRpb24uCiAgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9sZXhwcik7CiAKQEAgLTM4MjgsNyArMzg1NCw3IEBA
IHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRy
b2xGbG93KHByb2ZpbGVyU3RhcnRPZmZzZXQpOwogCi0gICAgICAgIGdlbmVyYXRvci5wdXNoU3Ry
dWN0dXJlRm9ySW5TY29wZShsb2NhbC5nZXQoKSwgZW51bWVyYXRvckluZGV4LmdldCgpLCBwcm9w
ZXJ0eU5hbWUuZ2V0KCksIGVudW1lcmF0b3IuZ2V0KCksIGJhc2UuZ2V0KCkpOworICAgICAgICBn
ZW5lcmF0b3IucHVzaFN0cnVjdHVyZUZvckluU2NvcGUobG9jYWwuZ2V0KCksIGVudW1lcmF0b3JJ
bmRleC5nZXQoKSwgcHJvcGVydHlOYW1lLmdldCgpLCBlbnVtZXJhdG9yLmdldCgpLCBiYXNlVmFy
aWFibGUpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CiAg
ICAgICAgIGdlbmVyYXRvci5wb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKGxvY2FsLmdldCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCAxYTQ0OGMyNTU4
ZjJmNWY5OGZkMjYwZTJmZWM1MzA4YTM2ODVkNmZiLi5jZTQ5ODg2NTZlZWQwMDBlOTE1NDFlOTJi
ZTU4ZmQ2MzE0YThjNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaApAQCAtMTQ1MCwxMCArMTQ1MCwxMCBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAg
ICAgICAmJiBhcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIKICAgICAgICAgJiYgYXJncy0+bV9saXN0
Tm9kZS0+bV9leHByLT5pc1Jlc29sdmVOb2RlKCkKICAgICAgICAgJiYgIWFyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dAotICAgICAgICAmJiBkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpCi0gICAg
ICAgICYmIHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVy
KCkgIT0gIlJlZmxlY3QiKSB7CisgICAgICAgICYmIChkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9k
ZSgpIHx8IGRvdC0+YmFzZSgpLT5pc1RoaXNOb2RlKCkpCisgICAgICAgICYmICghZG90LT5iYXNl
KCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGRvdC0+YmFz
ZSgpKS0+aWRlbnRpZmllcigpICE9ICJSZWZsZWN0IikpIHsKICAgICAgICAgLy8gV2UgbWF0Y2gg
dGhlIEFTVCBwYXR0ZXJuOgotICAgICAgICAvLyA8cmVzb2x2ZU5vZGU+Lmhhc093blByb3BlcnR5
KDxyZXNvbHZlTm9kZT4pCisgICAgICAgIC8vIDxyZXNvbHZlTm9kZXx0aGlzTm9kZT4uaGFzT3du
UHJvcGVydHkoPHJlc29sdmVOb2RlPikKICAgICAgICAgLy8gaS5lOgogICAgICAgICAvLyBvLmhh
c093blByb3BlcnR5KHApCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEhhc093
blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+
aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDVkMGNhZWZiYWNmZWFmYmYwZDZkNDc5OGZh
YjE4YzBlMTJlMDFkZDMuLjYzYzVhMTNiZjU1ZTRiNzQxMTMzOGU2OGM0YjAwMDJmMDllNDBhNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTIwMCw2ICsyMDAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQWRkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3VidHJhY3QoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCb29sZWFuKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzVGhpc05vZGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcHJlYWRFeHByZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3VwZXJO
b2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzSW1w
b3J0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02MTIsNiArNjEzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFRoaXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBpc1RoaXNOb2RlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwogICAgIH07CiAKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTVmZWM3
N2U4OTBiOWJkMzI0ZjE4NzZkZmVlNzdmMTUzNzllODI0Ni4uYzJhOTM3ODU1MzRkMDU0MGJmMThl
YjU0OTVhZjgxNGJjYmY3MDExYiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0wNS0yOSAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIGZvci1pbiBzaG91bGQg
YWxsb2NhdGUgbmV3IHRlbXBvcmFyeSByZWdpc3RlciBmb3IgYmFzZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNTE5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaGFzLW93
bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC13aXRoLWhlYXAtdmFyaWFibGUuanM6IEFkZGVkLgorICAg
ICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QxLmNvdW50KToKKyAgICAgICAgKHRlc3QxKToK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaGFzLW93bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC13
aXRoLXRoaXMuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QxLmNv
dW50KToKKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKiBzdHJlc3MvZm9yLWluLWJvZHktcmVw
bGFjZS1lbnVtZXJhYmxlLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogc3Ry
ZXNzL2Zvci1pbi1lbnVtZXJhYmxlLXNoYWRvdy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQp
OgorICAgICAgICAodGVzdDEuY291bnQpOgorICAgICAgICAodGVzdDEpOgorCiAyMDIwLTA1LTI3
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGZvci1v
ZiBzaG91bGQgY2hlY2sgdGhlIGl0ZXJhYmxlIGlzIGEgSlNBcnJheSBmb3IgRmFzdEFycmF5IGlu
IERGRyBpdGVyYXRvcl9vcGVuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9o
YXMtb3duLXByb3BlcnR5LWZvci1pbi1sb29wLXdpdGgtaGVhcC12YXJpYWJsZS5qcyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHktZm9yLWluLWxvb3Atd2l0aC1oZWFw
LXZhcmlhYmxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMjYxMzM5MDNlZDU5MDIxMWY5MTliNjBhYzI3YzFm
MmM5ZmEwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMt
b3duLXByb3BlcnR5LWZvci1pbi1sb29wLXdpdGgtaGVhcC12YXJpYWJsZS5qcwpAQCAtMCwwICsx
LDI4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yOworfQorCitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICBsZXQgbyA9IHsKKyAgICAg
ICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAg
IH07CisKKyAgICBmdW5jdGlvbiBjb3VudCgpIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAg
ICBmb3IgKGxldCBwIGluIG8pIHsKKyAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KHAp
KQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAg
ICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2MDAw
MDA7ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQoKSA9PT0gNCk7CisgICAgfQorfQordGVz
dDEoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVy
dHktZm9yLWluLWxvb3Atd2l0aC10aGlzLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFz
LW93bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC13aXRoLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJkYWE1
ZDBmMGNlY2U1NDUyZGI1YzgzM2U1NjhjNDc5NDllYzAwYwotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHktZm9yLWluLWxvb3Atd2l0aC10
aGlzLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFi
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAg
IGxldCBvID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAor
ICAgICAgICBkOjUwCisgICAgfTsKKworICAgIGZ1bmN0aW9uIGNvdW50KCkgeworICAgICAgICBs
ZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gdGhpcykgeworICAgICAgICAgICAgaWYg
KHRoaXMuaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDYwMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChjb3VudC5j
YWxsKG8pID09PSA0KTsKKyAgICB9Cit9Cit0ZXN0MSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZm9yLWluLWJvZHktcmVwbGFjZS1lbnVtZXJhYmxlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Zm9yLWluLWJvZHktcmVwbGFjZS1lbnVtZXJhYmxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4OWY4MTYxZGYy
MjE2MmZlNjMwNmQzNWJlNmFkMTk4ZWRjOWU4ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9mb3ItaW4tYm9keS1yZXBsYWNlLWVudW1lcmFibGUuanMKQEAgLTAsMCArMSwxMCBA
QAorZnVuY3Rpb24gZm9vKCkgeworICAgIGxldCBhMCA9IFsnYScsIHt9XTsKKyAgICBmb3IgKGxl
dCBxIGluIGEwKSB7CisgICAgICAgIGEwID0gbmV3IFVpbnQ4QXJyYXkoKTsKKyAgICB9Cit9CisK
K2ZvciAobGV0IGk9MDsgaTwxZTM7IGkrKykgeworICAgIGZvbygpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZm9yLWluLWVudW1lcmFibGUtc2hhZG93LmpzIGIvSlNUZXN0cy9zdHJl
c3MvZm9yLWluLWVudW1lcmFibGUtc2hhZG93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZmNmMTIzOTkzM2Jh
ZWQzNjc4ZGE3ZjY3ZjUxYzhiYTc5NjY5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9mb3ItaW4tZW51bWVyYWJsZS1zaGFkb3cuanMKQEAgLTAsMCArMSwzMyBAQAorZnVuY3Rp
b24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30K
KworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZnVuY3Rpb24gY291bnQobywgbzIpIHsKKyAgICAg
ICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxldCBwIGluIG8pIHsKKyAgICAgICAgICAgIGxl
dCBvID0gbzI7CisgICAgICAgICAgICBpZiAobzIuaGFzT3duUHJvcGVydHkocCkpCisgICAgICAg
ICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBu
b0lubGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAgICAgYToyMCwKKyAgICAgICAg
YjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07CisKKyAgICBsZXQgbzIg
PSB7CisgICAgICAgIGE6MjAKKyAgICB9OworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7
ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQobywgbzIpID09PSAxKTsKKyAgICB9Cit9Cit0
ZXN0MSgpOwo=
</data>
<flag name="review"
          id="416016"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400634</attachid>
            <date>2020-05-29 16:48:19 -0700</date>
            <delta_ts>2020-05-29 16:48:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212519-20200529164818.patch</filename>
            <type>text/plain</type>
            <size>23549</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjI3NWIxOGQwNzg3ZGViOTNiMDA2ZjM3NWIxZjM1NzlhNGEyNDZkLi5jMjA2NzlhZDg4MGY1ODUw
NmFmZDRmNDJmNDZjN2VmNDk0ZjBjY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAyMC0wNS0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIGZvci1pbiBzaG91bGQgYWxsb2NhdGUgbmV3IHRlbXBvcmFyeSBy
ZWdpc3RlciBmb3IgYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyNTE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzcyMjA0ND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBXaGlsZSByMjYyMjMzIGtl
ZXBzIGZvci1pbidzIGVudW1lcmF0ZWQgb2JqZWN0IGluIHZhcmlhYmxlIHJlZ2lzdGVyIGlmIHBv
c3NpYmxlIHRvIHVzZSB0aGlzIHJlZ2lzdGVyIGZvciBoZXVyaXN0aWNzIGRyaXZpbmcgYW4gb3B0
aW1pemF0aW9uLAorICAgICAgICBmb3ItaW4gYm9keSBjYW4gcmVwbGFjZSB0aGUgY29udGVudCBv
ZiB0aGlzIHJlZ2lzdGVyIGR1cmluZyBlbnVtZXJhdGlvbiBhbmQgY29uZnVzZSBlbnVtZXJhdG9y
LgorCisgICAgICAgIEluc3RlYWQsIHdlIHJlY29yZCBWYXJpYWJsZSBpbmZvcm1hdGlvbiBpbiBT
dHJ1Y3R1cmVGb3JJbkNvbnRleHQuIFRoaXMgYWxsb3dzIHVzIHRvIGRldGVjdCBwYXR0ZXJucyB1
c2luZyBoZWFwLXZhcmlhYmxlcyB0b28uCisgICAgICAgIEZ1cnRoZXIsIHRoaXMgcGF0Y2ggZXh0
ZW5kcyBwYXR0ZXJuLW1hdGNoaW5nIGNvZGUgdG8gc3VwcG9ydCBUaGlzTm9kZSB0b28uCisKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFN0cnVjdHVyZUZvckluU2NvcGUpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZTo6VmFyaWFibGUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6aXNSZXNvbHZlZCBjb25zdCk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlOjpzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggY29uc3Qp
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6aWRlbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpW
YXJpYWJsZTo6b2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGU6OmlzTG9jYWwg
Y29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6bG9jYWwgY29uc3QpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZTo6aXNSZWFkT25seSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
Ojppc1NwZWNpYWwgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6aXNDb25zdCBjb25z
dCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlOjpzZXRJc1JlYWRPbmx5KToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVG
b3JJbkNvbnRleHQ6OlN0cnVjdHVyZUZvckluQ29udGV4dCk6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZUZvckluQ29udGV4dDo6YmFzZVZhcmlhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlRm9ySW5Db250ZXh0OjpiYXNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6SGFzT3duUHJvcGVydHlG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAg
ICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNUaGlzTm9kZSBj
b25zdCk6CisKIDIwMjAtMDUtMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBtaXNzaW5nIGNvbmRpdGlvbiBndWFyZHMgd2hl
biBnZW5lcmF0aW5nIG9iamMgcHJvdG9jb2wgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYTgw
NTUwOGJmNzM3ZTExNDUyMTVmNWEyNTdmMWYyYzY2NTcyMDkxMy4uZmRiZTM5YjRkNWM0YjI4NTIx
MTU2MDEzZDVhZjg1YjYxNzgyYzIwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQ1MzMsMTIgKzQ1
MzMsMTIgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rp
b25Db250ZXh0U2NvcGUoKQogICAgIH0KIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVz
aFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogZW51bWVyYXRvclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBiYXNlUmVnaXN0ZXIpCit2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpwdXNoU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2Nh
bFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRleFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yUmVnaXN0ZXIsIE9wdGlvbmFsPFZhcmlh
YmxlPiBiYXNlVmFyaWFibGUpCiB7CiAgICAgaWYgKCFsb2NhbFJlZ2lzdGVyKQogICAgICAgICBy
ZXR1cm47CiAgICAgdW5zaWduZWQgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQgPSBpbnN0cnVjdGlv
bnMoKS5zaXplKCk7Ci0gICAgbV9mb3JJbkNvbnRleHRTdGFjay5hcHBlbmQoYWRvcHRSZWYoKm5l
dyBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQobG9jYWxSZWdpc3RlciwgaW5kZXhSZWdpc3RlciwgcHJv
cGVydHlSZWdpc3RlciwgZW51bWVyYXRvclJlZ2lzdGVyLCBiYXNlUmVnaXN0ZXIsIGJvZHlCeXRl
Y29kZVN0YXJ0T2Zmc2V0KSkpOworICAgIG1fZm9ySW5Db250ZXh0U3RhY2suYXBwZW5kKGFkb3B0
UmVmKCpuZXcgU3RydWN0dXJlRm9ySW5Db250ZXh0KGxvY2FsUmVnaXN0ZXIsIGluZGV4UmVnaXN0
ZXIsIHByb3BlcnR5UmVnaXN0ZXIsIGVudW1lcmF0b3JSZWdpc3RlciwgYmFzZVZhcmlhYmxlLCBi
b2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkpKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
cG9wU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IDRiMWVmYjg5ZDYwODdhNGJmMDM5NWE2MWEyYmJjY2JmYmMxNTUwZTUuLjcyODY0
OTA2OTljN2U2NzU1ZDA4NDNlNjliNGJkMWFkMTliODZiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTky
LDYgKzkyLDczIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX3BhZGRpbmc7
CiAgICAgfTsKIAorICAgIGNsYXNzIFZhcmlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVu
dW0gVmFyaWFibGVLaW5kIHsgTm9ybWFsVmFyaWFibGUsIFNwZWNpYWxWYXJpYWJsZSB9OworCisg
ICAgICAgIFZhcmlhYmxlKCkgPSBkZWZhdWx0OworICAgICAgICAKKyAgICAgICAgVmFyaWFibGUo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAgICAgICA6IG1faWRlbnQoaWRlbnQpCisg
ICAgICAgICAgICAsIG1fbG9jYWwobnVsbHB0cikKKyAgICAgICAgICAgICwgbV9hdHRyaWJ1dGVz
KDApCisgICAgICAgICAgICAsIG1fa2luZChOb3JtYWxWYXJpYWJsZSkgLy8gVGhpcyBpcyBzb21l
d2hhdCBtZWFuaW5nbGVzcyBoZXJlIGZvciB0aGlzIGtpbmQgb2YgVmFyaWFibGUuCisgICAgICAg
ICAgICAsIG1fc3ltYm9sVGFibGVDb25zdGFudEluZGV4KDApIC8vIFRoaXMgaXMgbWVhbmluZ2xl
c3MgaGVyZSBmb3IgdGhpcyBraW5kIG9mIFZhcmlhYmxlLgorICAgICAgICAgICAgLCBtX2lzTGV4
aWNhbGx5U2NvcGVkKGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBWYXJp
YWJsZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgVmFyT2Zmc2V0IG9mZnNldCwgUmVnaXN0ZXJJ
RCogbG9jYWwsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFZhcmlhYmxlS2luZCBraW5kLCBpbnQgc3lt
Ym9sVGFibGVDb25zdGFudEluZGV4LCBib29sIGlzTGV4aWNhbGx5U2NvcGVkKQorICAgICAgICAg
ICAgOiBtX2lkZW50KGlkZW50KQorICAgICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAg
ICAgICAgICAsIG1fbG9jYWwobG9jYWwpCisgICAgICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRy
aWJ1dGVzKQorICAgICAgICAgICAgLCBtX2tpbmQoa2luZCkKKyAgICAgICAgICAgICwgbV9zeW1i
b2xUYWJsZUNvbnN0YW50SW5kZXgoc3ltYm9sVGFibGVDb25zdGFudEluZGV4KQorICAgICAgICAg
ICAgLCBtX2lzTGV4aWNhbGx5U2NvcGVkKGlzTGV4aWNhbGx5U2NvcGVkKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBJZiBpdCdzIHVuc2V0LCB0aGVuIGl0IGlzIGEgbm9uLWxv
Y2FsbHktc2NvcGVkIHZhcmlhYmxlLiBJZiBpdCBpcyBzZXQsIHRoZW4gaXQgY291bGQgYmUKKyAg
ICAgICAgLy8gYSBzdGFjayB2YXJpYWJsZSwgYSBzY29wZWQgdmFyaWFibGUgaW4gYSBsb2NhbCBz
Y29wZSwgb3IgYSB2YXJpYWJsZSBjYXB0dXJlZCBpbiB0aGUKKyAgICAgICAgLy8gZGlyZWN0IGFy
Z3VtZW50cyBvYmplY3QuCisgICAgICAgIGJvb2wgaXNSZXNvbHZlZCgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9vZmZzZXQ7IH0KKyAgICAgICAgaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCgpIGNv
bnN0IHsgQVNTRVJUKGlzUmVzb2x2ZWQoKSAmJiAhaXNTcGVjaWFsKCkpOyByZXR1cm4gbV9zeW1i
b2xUYWJsZUNvbnN0YW50SW5kZXg7IH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQorICAgICAgICAKKyAgICAgICAg
VmFyT2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgICAgIGJv
b2wgaXNMb2NhbCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0LmlzU3RhY2soKTsgfQorICAgICAg
ICBSZWdpc3RlcklEKiBsb2NhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWw7IH0KKworICAgICAg
ICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMgJiBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHk7IH0KKyAgICAgICAgYm9vbCBpc1NwZWNpYWwoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQgIT0gTm9ybWFsVmFyaWFibGU7IH0KKyAgICAgICAgYm9vbCBpc0NvbnN0
KCkgY29uc3QgeyByZXR1cm4gaXNSZWFkT25seSgpICYmIG1faXNMZXhpY2FsbHlTY29wZWQ7IH0K
KyAgICAgICAgdm9pZCBzZXRJc1JlYWRPbmx5KCkgeyBtX2F0dHJpYnV0ZXMgfD0gUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5OyB9CisKKyAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZhcmlhYmxlJiBvdGhlcikg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1faWRlbnQgPT0gb3RoZXIubV9p
ZGVudAorICAgICAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0CisgICAg
ICAgICAgICAgICAgJiYgbV9sb2NhbCA9PSBvdGhlci5tX2xvY2FsCisgICAgICAgICAgICAgICAg
JiYgbV9hdHRyaWJ1dGVzID09IG90aGVyLm1fYXR0cmlidXRlcworICAgICAgICAgICAgICAgICYm
IG1fa2luZCA9PSBvdGhlci5tX2tpbmQKKyAgICAgICAgICAgICAgICAmJiBtX3N5bWJvbFRhYmxl
Q29uc3RhbnRJbmRleCA9PSBvdGhlci5tX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleAorICAgICAg
ICAgICAgICAgICYmIG1faXNMZXhpY2FsbHlTY29wZWQgPT0gb3RoZXIubV9pc0xleGljYWxseVNj
b3BlZDsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSWRlbnRpZmllciBtX2lk
ZW50OworICAgICAgICBWYXJPZmZzZXQgbV9vZmZzZXQgeyB9OworICAgICAgICBSZWdpc3RlcklE
KiBtX2xvY2FsIHsgbnVsbHB0ciB9OworICAgICAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZXMgeyAw
IH07CisgICAgICAgIFZhcmlhYmxlS2luZCBtX2tpbmQgeyBOb3JtYWxWYXJpYWJsZSB9OworICAg
ICAgICBpbnQgbV9zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggeyAwIH07IC8vIFRoaXMgaXMgbWVh
bmluZ2xlc3MgaGVyZSBmb3IgdGhpcyBkZWZhdWx0IE5vcm1hbFZhcmlhYmxlIGtpbmQgb2YgVmFy
aWFibGUuCisgICAgICAgIGJvb2wgbV9pc0xleGljYWxseVNjb3BlZCB7IGZhbHNlIH07CisgICAg
fTsKKwogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWNvbXBsZXRp
b24tcmVjb3JkLXNwZWNpZmljYXRpb24tdHlwZQogICAgIC8vCiAgICAgLy8gRm9yIHRoZSBCcmVh
ayBhbmQgQ29udGludWUgY2FzZXMsIGluc3RlYWQgb2YgdXNpbmcgdGhlIEJyZWFrIGFuZCBDb250
aW51ZSBlbnVtIHZhbHVlcwpAQCAtMjQxLDE5ICszMDgsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHVzaW5nIEluSW5zdCA9IEdldEluc3Q7CiAgICAgICAgIHVzaW5nIEhhc093blByb3Bl
cnR5SnVtcEluc3QgPSBzdGQ6OnR1cGxlPHVuc2lnbmVkLCB1bnNpZ25lZD47CiAKLSAgICAgICAg
U3RydWN0dXJlRm9ySW5Db250ZXh0KFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGVudW1lcmF0b3JSZWdpc3RlciwgUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgYm9keUJ5
dGVjb2RlU3RhcnRPZmZzZXQpCisgICAgICAgIFN0cnVjdHVyZUZvckluQ29udGV4dChSZWdpc3Rl
cklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRleFJlZ2lzdGVyLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yUmVnaXN0ZXIsIE9wdGlv
bmFsPFZhcmlhYmxlPiBiYXNlVmFyaWFibGUsIHVuc2lnbmVkIGJvZHlCeXRlY29kZVN0YXJ0T2Zm
c2V0KQogICAgICAgICAgICAgOiBGb3JJbkNvbnRleHQobG9jYWxSZWdpc3RlciwgVHlwZTo6U3Ry
dWN0dXJlRm9ySW4sIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQogICAgICAgICAgICAgLCBtX2lu
ZGV4UmVnaXN0ZXIoaW5kZXhSZWdpc3RlcikKICAgICAgICAgICAgICwgbV9wcm9wZXJ0eVJlZ2lz
dGVyKHByb3BlcnR5UmVnaXN0ZXIpCiAgICAgICAgICAgICAsIG1fZW51bWVyYXRvclJlZ2lzdGVy
KGVudW1lcmF0b3JSZWdpc3RlcikKLSAgICAgICAgICAgICwgbV9iYXNlKGJhc2UpCisgICAgICAg
ICAgICAsIG1fYmFzZVZhcmlhYmxlKGJhc2VWYXJpYWJsZSkKICAgICAgICAgewogICAgICAgICB9
CiAKICAgICAgICAgUmVnaXN0ZXJJRCogaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4UmVn
aXN0ZXIuZ2V0KCk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkoKSBjb25zdCB7IHJl
dHVybiBtX3Byb3BlcnR5UmVnaXN0ZXIuZ2V0KCk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW51
bWVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZW51bWVyYXRvclJlZ2lzdGVyLmdldCgpOyB9Ci0g
ICAgICAgIFJlZ2lzdGVySUQqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2UuZ2V0KCk7IH0K
KyAgICAgICAgY29uc3QgT3B0aW9uYWw8VmFyaWFibGU+JiBiYXNlVmFyaWFibGUoKSBjb25zdCB7
IHJldHVybiBtX2Jhc2VWYXJpYWJsZTsgfQogCiAgICAgICAgIHZvaWQgYWRkR2V0SW5zdCh1bnNp
Z25lZCBpbnN0SW5kZXgsIGludCBwcm9wZXJ0eVJlZ0luZGV4KQogICAgICAgICB7CkBAIC0yNzYs
NyArMzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBt
X2luZGV4UmVnaXN0ZXI7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBtX3Byb3BlcnR5UmVn
aXN0ZXI7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBtX2VudW1lcmF0b3JSZWdpc3RlcjsK
LSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG1fYmFzZTsKKyAgICAgICAgT3B0aW9uYWw8VmFy
aWFibGU+IG1fYmFzZVZhcmlhYmxlOwogICAgICAgICBWZWN0b3I8R2V0SW5zdD4gbV9nZXRJbnN0
czsKICAgICAgICAgVmVjdG9yPEluSW5zdD4gbV9pbkluc3RzOwogICAgICAgICBWZWN0b3I8SGFz
T3duUHJvcGVydHlKdW1wSW5zdD4gbV9oYXNPd25Qcm9wZXJ0eUp1bXBJbnN0czsKQEAgLTMxMSw3
MCArMzc4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRyeURhdGEqIHRyeURhdGE7CiAg
ICAgfTsKIAotICAgIGNsYXNzIFZhcmlhYmxlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0g
VmFyaWFibGVLaW5kIHsgTm9ybWFsVmFyaWFibGUsIFNwZWNpYWxWYXJpYWJsZSB9OwotCi0gICAg
ICAgIFZhcmlhYmxlKCkKLSAgICAgICAgICAgIDogbV9vZmZzZXQoKQotICAgICAgICAgICAgLCBt
X2xvY2FsKG51bGxwdHIpCi0gICAgICAgICAgICAsIG1fYXR0cmlidXRlcygwKQotICAgICAgICAg
ICAgLCBtX2tpbmQoTm9ybWFsVmFyaWFibGUpCi0gICAgICAgICAgICAsIG1fc3ltYm9sVGFibGVD
b25zdGFudEluZGV4KDApIC8vIFRoaXMgaXMgbWVhbmluZ2xlc3MgaGVyZSBmb3IgdGhpcyBraW5k
IG9mIFZhcmlhYmxlLgotICAgICAgICAgICAgLCBtX2lzTGV4aWNhbGx5U2NvcGVkKGZhbHNlKQot
ICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFZhcmlhYmxlKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KQotICAgICAgICAgICAgOiBtX2lkZW50KGlkZW50KQotICAgICAgICAg
ICAgLCBtX2xvY2FsKG51bGxwdHIpCi0gICAgICAgICAgICAsIG1fYXR0cmlidXRlcygwKQotICAg
ICAgICAgICAgLCBtX2tpbmQoTm9ybWFsVmFyaWFibGUpIC8vIFRoaXMgaXMgc29tZXdoYXQgbWVh
bmluZ2xlc3MgaGVyZSBmb3IgdGhpcyBraW5kIG9mIFZhcmlhYmxlLgotICAgICAgICAgICAgLCBt
X3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCgwKSAvLyBUaGlzIGlzIG1lYW5pbmdsZXNzIGhlcmUg
Zm9yIHRoaXMga2luZCBvZiBWYXJpYWJsZS4KLSAgICAgICAgICAgICwgbV9pc0xleGljYWxseVNj
b3BlZChmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgVmFyaWFibGUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIFZhck9mZnNldCBvZmZzZXQsIFJlZ2lzdGVySUQqIGxvY2Fs
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBWYXJpYWJsZUtpbmQga2luZCwgaW50IHN5bWJvbFRhYmxl
Q29uc3RhbnRJbmRleCwgYm9vbCBpc0xleGljYWxseVNjb3BlZCkKLSAgICAgICAgICAgIDogbV9p
ZGVudChpZGVudCkKLSAgICAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAgICAg
LCBtX2xvY2FsKGxvY2FsKQotICAgICAgICAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykK
LSAgICAgICAgICAgICwgbV9raW5kKGtpbmQpCi0gICAgICAgICAgICAsIG1fc3ltYm9sVGFibGVD
b25zdGFudEluZGV4KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCkKLSAgICAgICAgICAgICwgbV9p
c0xleGljYWxseVNjb3BlZChpc0xleGljYWxseVNjb3BlZCkKLSAgICAgICAgewotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gSWYgaXQncyB1bnNldCwgdGhlbiBpdCBpcyBhIG5vbi1sb2NhbGx5LXNj
b3BlZCB2YXJpYWJsZS4gSWYgaXQgaXMgc2V0LCB0aGVuIGl0IGNvdWxkIGJlCi0gICAgICAgIC8v
IGEgc3RhY2sgdmFyaWFibGUsIGEgc2NvcGVkIHZhcmlhYmxlIGluIGEgbG9jYWwgc2NvcGUsIG9y
IGEgdmFyaWFibGUgY2FwdHVyZWQgaW4gdGhlCi0gICAgICAgIC8vIGRpcmVjdCBhcmd1bWVudHMg
b2JqZWN0LgotICAgICAgICBib29sIGlzUmVzb2x2ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fb2Zm
c2V0OyB9Ci0gICAgICAgIGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgoKSBjb25zdCB7IEFT
U0VSVChpc1Jlc29sdmVkKCkgJiYgIWlzU3BlY2lhbCgpKTsgcmV0dXJuIG1fc3ltYm9sVGFibGVD
b25zdGFudEluZGV4OyB9Ci0gICAgICAgIAotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KLSAgICAgICAgCi0gICAgICAgIFZhck9mZnNl
dCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQotICAgICAgICBib29sIGlzTG9j
YWwoKSBjb25zdCB7IHJldHVybiBtX29mZnNldC5pc1N0YWNrKCk7IH0KLSAgICAgICAgUmVnaXN0
ZXJJRCogbG9jYWwoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsOyB9Ci0KLSAgICAgICAgYm9vbCBp
c1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5OyB9Ci0gICAgICAgIGJvb2wgaXNTcGVjaWFsKCkgY29uc3QgeyByZXR1cm4g
bV9raW5kICE9IE5vcm1hbFZhcmlhYmxlOyB9Ci0gICAgICAgIGJvb2wgaXNDb25zdCgpIGNvbnN0
IHsgcmV0dXJuIGlzUmVhZE9ubHkoKSAmJiBtX2lzTGV4aWNhbGx5U2NvcGVkOyB9Ci0gICAgICAg
IHZvaWQgc2V0SXNSZWFkT25seSgpIHsgbV9hdHRyaWJ1dGVzIHw9IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seTsgfQotCi0gICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owot
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwotICAgICAgICBWYXJP
ZmZzZXQgbV9vZmZzZXQ7Ci0gICAgICAgIFJlZ2lzdGVySUQqIG1fbG9jYWw7Ci0gICAgICAgIHVu
c2lnbmVkIG1fYXR0cmlidXRlczsKLSAgICAgICAgVmFyaWFibGVLaW5kIG1fa2luZDsKLSAgICAg
ICAgaW50IG1fc3ltYm9sVGFibGVDb25zdGFudEluZGV4OwotICAgICAgICBib29sIG1faXNMZXhp
Y2FsbHlTY29wZWQ7Ci0gICAgfTsKLQogICAgIHN0cnVjdCBUcnlSYW5nZSB7CiAgICAgICAgIFJl
ZjxMYWJlbD4gc3RhcnQ7CiAgICAgICAgIFJlZjxMYWJlbD4gZW5kOwpAQCAtMTAyNSw3ICsxMDI4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBwdXNoSW5kZXhlZEZvckluU2Nv
cGUoUmVnaXN0ZXJJRCogbG9jYWwsIFJlZ2lzdGVySUQqIGluZGV4KTsKICAgICAgICAgdm9pZCBw
b3BJbmRleGVkRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCk7Ci0gICAgICAgIHZvaWQgcHVz
aFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWwsIFJlZ2lzdGVySUQqIGluZGV4
LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogZW51bWVyYXRvciwgUmVnaXN0ZXJJ
RCogYmFzZSk7CisgICAgICAgIHZvaWQgcHVzaFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJ
RCogbG9jYWwsIFJlZ2lzdGVySUQqIGluZGV4LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogZW51bWVyYXRvciwgT3B0aW9uYWw8VmFyaWFibGU+IGJhc2UpOwogICAgICAgICB2b2lk
IHBvcFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWwpOwogCiAgICAgICAgIExh
YmVsU2NvcGUqIGJyZWFrVGFyZ2V0KGNvbnN0IElkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxYWZj
MmU0YmJjYTJmYmQ5NmZmYjIyNjM0NzEwNjAxZDRlNTcyYWY0Li5lZmQ1MjY5ODBmNGUzNzA4MmYz
Yjc0ZjIxZjhiMDM0MWJmNjJjMTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xODUyLDcgKzE4NTIsMjQgQEAgUmVn
aXN0ZXJJRCogSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGcKICAgICAgICAgc3RydWN0dXJlQ29udGV4dCA9IGdlbmVyYXRv
ci5maW5kU3RydWN0dXJlRm9ySW5Db250ZXh0KHByb3BlcnR5KTsKICAgICB9CiAKLSAgICBpZiAo
c3RydWN0dXJlQ29udGV4dCAmJiBzdHJ1Y3R1cmVDb250ZXh0LT5iYXNlKCkgPT0gYmFzZS5nZXQo
KSkgeworICAgIGF1dG8gY2FuVXNlRmFzdEhhc093blByb3BlcnR5ID0gWyZdIHsKKyAgICAgICAg
aWYgKCFzdHJ1Y3R1cmVDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoIXN0cnVjdHVyZUNvbnRleHQtPmJhc2VWYXJpYWJsZSgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAobV9iYXNlLT5pc1Jlc29sdmVOb2RlKCkpCisgICAgICAg
ICAgICByZXR1cm4gZ2VuZXJhdG9yLnZhcmlhYmxlKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4o
bV9iYXNlKS0+aWRlbnRpZmllcigpKSA9PSBzdHJ1Y3R1cmVDb250ZXh0LT5iYXNlVmFyaWFibGUo
KS52YWx1ZSgpOworICAgICAgICBpZiAobV9iYXNlLT5pc1RoaXNOb2RlKCkpIHsKKyAgICAgICAg
ICAgIC8vIEFmdGVyIGdlbmVyYXRvci5lbnN1cmVUaGlzICh3aGljaCBtdXN0IGJlIGludm9rZWQg
aW4gfGJhc2V8J3MgbWF0ZXJpYWxpemF0aW9uKSwgd2UgY2FuIGVuc3VyZSB0aGF0IHx0aGlzfCBp
cyBpbiBsb2NhbCB0aGlzLXJlZ2lzdGVyLgorICAgICAgICAgICAgQVNTRVJUKGJhc2UpOworICAg
ICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLnRoaXNJZGVudGlmaWVyLCBUaGlzUmVzb2x1dGlvblR5cGU6OkxvY2FsKSA9PSBzdHJ1Y3R1
cmVDb250ZXh0LT5iYXNlVmFyaWFibGUoKS52YWx1ZSgpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9OworCisgICAgaWYgKGNhblVzZUZhc3RIYXNPd25Qcm9wZXJ0eSgp
KSB7CisgICAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgYmFzZSByZWdpc3RlciBpcyB2YXJp
YWJsZSBhbmQgZWFjaCBmb3ItaW4gYm9keSByZXBsYWNlcyBKUyBvYmplY3QgaW4gdGhlIGJhc2Ug
cmVnaXN0ZXIgd2l0aCBhIGRpZmZlcmVudCBvbmUuCisgICAgICAgIC8vIEV2ZW4gdGhvdWdoLCB0
aGlzIGlzIE9LIHNpbmNlIEhhc093blN0cnVjdHVyZVByb3BlcnR5IHdpbGwgcmVqZWN0IHRoZSBy
ZXBsYWNlZCBKUyBvYmplY3QuCiAgICAgICAgIFJlZjxMYWJlbD4gcmVhbENhbGwgPSBnZW5lcmF0
b3IubmV3TGFiZWwoKTsKICAgICAgICAgUmVmPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKIApAQCAtMzc1MCwxMCArMzc2NywxOSBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gbGVuZ3RoOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBlbnVtZXJh
dG9yOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
bV9leHByKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIG1fZXhwcik7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGxvY2FsID0gdGhpcy0+dHJ5R2V0Qm91bmRMb2NhbChnZW5lcmF0b3IpOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBlbnVtZXJhdG9ySW5kZXg7CiAKKyAgICBPcHRpb25hbDxWYXJpYWJsZT4g
YmFzZVZhcmlhYmxlOworICAgIGlmIChtX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSkKKyAgICAgICAg
YmFzZVZhcmlhYmxlID0gZ2VuZXJhdG9yLnZhcmlhYmxlKHN0YXRpY19jYXN0PFJlc29sdmVOb2Rl
Kj4obV9leHByKS0+aWRlbnRpZmllcigpKTsKKyAgICBlbHNlIGlmIChtX2V4cHItPmlzVGhpc05v
ZGUoKSkgeworICAgICAgICAvLyBBZnRlciBnZW5lcmF0b3IuZW5zdXJlVGhpcyAod2hpY2ggbXVz
dCBiZSBpbnZva2VkIGluIHxiYXNlfCdzIG1hdGVyaWFsaXphdGlvbiksIHdlIGNhbiBlbnN1cmUg
dGhhdCB8dGhpc3wgaXMgaW4gbG9jYWwgdGhpcy1yZWdpc3Rlci4KKyAgICAgICAgQVNTRVJUKGJh
c2UpOworICAgICAgICBiYXNlVmFyaWFibGUgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS50aGlzSWRlbnRpZmllciwgVGhpc1Jlc29sdXRpb25UeXBlOjpMb2Nh
bCk7CisgICAgfQorCiAgICAgLy8gUGF1c2UgYXQgdGhlIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBm
b3IgZWFjaCBmb3IuLmluIGl0ZXJhdGlvbi4KICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayht
X2xleHByKTsKIApAQCAtMzgyOCw3ICszODU0LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cocHJvZmlsZXJTdGFydE9mZnNl
dCk7CiAKLSAgICAgICAgZ2VuZXJhdG9yLnB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKGxvY2FsLmdl
dCgpLCBlbnVtZXJhdG9ySW5kZXguZ2V0KCksIHByb3BlcnR5TmFtZS5nZXQoKSwgZW51bWVyYXRv
ci5nZXQoKSwgYmFzZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5wdXNoU3RydWN0dXJlRm9y
SW5TY29wZShsb2NhbC5nZXQoKSwgZW51bWVyYXRvckluZGV4LmdldCgpLCBwcm9wZXJ0eU5hbWUu
Z2V0KCksIGVudW1lcmF0b3IuZ2V0KCksIGJhc2VWYXJpYWJsZSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKICAgICAgICAgZ2VuZXJhdG9yLnBvcFN0cnVj
dHVyZUZvckluU2NvcGUobG9jYWwuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCmluZGV4IDFhNDQ4YzI1NThmMmY1Zjk4ZmQyNjBlMmZlYzUzMDhhMzY4
NWQ2ZmIuLjY4NWRiMDAwZjAwOGFhOGI1NGVkYjhmMDFiMjhkYzA5NDI3MmNhYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0xNDQyLDcgKzE0NDIsNyBA
QCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNT
dXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5hcHBseVB1YmxpY05hbWUoKSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgb25seSBuZWVkZWQgYmVjYXVzZSB3ZSBoYXZlbid0
IHRhdWdodCB0aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIHRvIGlubGluZQogICAgICAgICAvLyBSZWZs
ZWN0LmFwcGx5IHlldC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTA2NjguCi0gICAgICAgIGlmICghZG90LT5iYXNlKCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBz
dGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGRvdC0+YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJS
ZWZsZWN0IikKKyAgICAgICAgaWYgKCFkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpIHx8IHN0
YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gbV92
bS5wcm9wZXJ0eU5hbWVzLT5SZWZsZWN0KQogICAgICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJz
ZXJBcmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2Fs
bE9yQXBwbHlDaGlsZERlcHRoKTsKICAgICB9IGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBl
ciAKICAgICAgICAgJiYgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5o
YXNPd25Qcm9wZXJ0eQpAQCAtMTQ1MCwxMCArMTQ1MCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uCiAgICAgICAgICYmIGFyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcgogICAgICAgICAmJiBhcmdz
LT5tX2xpc3ROb2RlLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKQogICAgICAgICAmJiAhYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0Ci0gICAgICAgICYmIGRvdC0+YmFzZSgpLT5pc1Jlc29sdmVOb2Rl
KCkKLSAgICAgICAgJiYgc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihkb3QtPmJhc2UoKSktPmlk
ZW50aWZpZXIoKSAhPSAiUmVmbGVjdCIpIHsKKyAgICAgICAgJiYgKChkb3QtPmJhc2UoKS0+aXNS
ZXNvbHZlTm9kZSgpICYmIHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5p
ZGVudGlmaWVyKCkgIT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5SZWZsZWN0KSB8fCBkb3QtPmJhc2Uo
KS0+aXNUaGlzTm9kZSgpKSkgewogICAgICAgICAvLyBXZSBtYXRjaCB0aGUgQVNUIHBhdHRlcm46
Ci0gICAgICAgIC8vIDxyZXNvbHZlTm9kZT4uaGFzT3duUHJvcGVydHkoPHJlc29sdmVOb2RlPikK
KyAgICAgICAgLy8gPHJlc29sdmVOb2RlfHRoaXNOb2RlPi5oYXNPd25Qcm9wZXJ0eSg8cmVzb2x2
ZU5vZGU+KQogICAgICAgICAvLyBpLmU6CiAgICAgICAgIC8vIG8uaGFzT3duUHJvcGVydHkocCkK
ICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgSGFzT3duUHJvcGVydHlGdW5jdGlv
bkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFy
Z3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKaW5kZXggNWQwY2FlZmJhY2ZlYWZiZjBkNmQ0Nzk4ZmFiMThjMGUxMmUwMWRkMy4u
NjNjNWExM2JmNTVlNGI3NDExMzM4ZTY4YzRiMDAwMmYwOWU0MGE2MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMjAwLDYgKzIwMCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJ0cmFjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUaGlzTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NwcmVhZEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdXBlck5vZGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNJbXBvcnROb2RlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTYxMiw2ICs2MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVGhpc05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBib29sIGlzVGhpc05vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gbnVsbHB0cikgZmluYWw7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxNWZlYzc3ZTg5MGI5YmQzMjRmMTg3
NmRmZWU3N2YxNTM3OWU4MjQ2Li5lMTliYWNiZDJmMjYyYWFjNGM1NGFkMTU3Yjc3OTZiNjYwMzYz
ZTcwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA1LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gZm9yLWluIHNob3VsZCBhbGxvY2F0ZSBuZXcgdGVt
cG9yYXJ5IHJlZ2lzdGVyIGZvciBiYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI1MTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzNzIyMDQ0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHktZm9yLWluLWxvb3Atd2l0aC1oZWFwLXZhcmlhYmxl
LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICh0ZXN0MS5jb3VudCk6Cisg
ICAgICAgICh0ZXN0MSk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVy
dHktZm9yLWluLWxvb3Atd2l0aC10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6Cisg
ICAgICAgICh0ZXN0MS5jb3VudCk6CisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICogc3RyZXNz
L2Zvci1pbi1ib2R5LXJlcGxhY2UtZW51bWVyYWJsZS5qczogQWRkZWQuCisgICAgICAgIChmb28p
OgorICAgICAgICAqIHN0cmVzcy9mb3ItaW4tZW51bWVyYWJsZS1zaGFkb3cuanM6IEFkZGVkLgor
ICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QxLmNvdW50KToKKyAgICAgICAgKHRlc3Qx
KToKKyAgICAgICAgKiBzdHJlc3MvZm9yLWluLWVudW1lcmFibGUtdGhpcy1hcnJvdy5qczogQWRk
ZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAodGVzdDEpOgorCiAyMDIwLTA1LTI3ICBL
ZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGZvci1vZiBz
aG91bGQgY2hlY2sgdGhlIGl0ZXJhYmxlIGlzIGEgSlNBcnJheSBmb3IgRmFzdEFycmF5IGluIERG
RyBpdGVyYXRvcl9vcGVuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMt
b3duLXByb3BlcnR5LWZvci1pbi1sb29wLXdpdGgtaGVhcC12YXJpYWJsZS5qcyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHktZm9yLWluLWxvb3Atd2l0aC1oZWFwLXZh
cmlhYmxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMjYxMzM5MDNlZDU5MDIxMWY5MTliNjBhYzI3YzFmMmM5
ZmEwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtb3du
LXByb3BlcnR5LWZvci1pbi1sb29wLXdpdGgtaGVhcC12YXJpYWJsZS5qcwpAQCAtMCwwICsxLDI4
IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yOworfQorCitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICBsZXQgbyA9IHsKKyAgICAgICAg
YToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07
CisKKyAgICBmdW5jdGlvbiBjb3VudCgpIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBm
b3IgKGxldCBwIGluIG8pIHsKKyAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KHApKQor
ICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAgICB9
CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2MDAwMDA7
ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQoKSA9PT0gNCk7CisgICAgfQorfQordGVzdDEo
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHkt
Zm9yLWluLWxvb3Atd2l0aC10aGlzLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFzLW93
bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC13aXRoLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJkYWE1ZDBm
MGNlY2U1NDUyZGI1YzgzM2U1NjhjNDc5NDllYzAwYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHktZm9yLWluLWxvb3Atd2l0aC10aGlz
LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGxl
dCBvID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAg
ICAgICBkOjUwCisgICAgfTsKKworICAgIGZ1bmN0aW9uIGNvdW50KCkgeworICAgICAgICBsZXQg
YyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gdGhpcykgeworICAgICAgICAgICAgaWYgKHRo
aXMuaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDYwMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChjb3VudC5jYWxs
KG8pID09PSA0KTsKKyAgICB9Cit9Cit0ZXN0MSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvZm9yLWluLWJvZHktcmVwbGFjZS1lbnVtZXJhYmxlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9y
LWluLWJvZHktcmVwbGFjZS1lbnVtZXJhYmxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4OWY4MTYxZGYyMjE2
MmZlNjMwNmQzNWJlNmFkMTk4ZWRjOWU4ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9mb3ItaW4tYm9keS1yZXBsYWNlLWVudW1lcmFibGUuanMKQEAgLTAsMCArMSwxMCBAQAor
ZnVuY3Rpb24gZm9vKCkgeworICAgIGxldCBhMCA9IFsnYScsIHt9XTsKKyAgICBmb3IgKGxldCBx
IGluIGEwKSB7CisgICAgICAgIGEwID0gbmV3IFVpbnQ4QXJyYXkoKTsKKyAgICB9Cit9CisKK2Zv
ciAobGV0IGk9MDsgaTwxZTM7IGkrKykgeworICAgIGZvbygpOworfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZm9yLWluLWVudW1lcmFibGUtc2hhZG93LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Zm9yLWluLWVudW1lcmFibGUtc2hhZG93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZmNmMTIzOTkzM2JhZWQz
Njc4ZGE3ZjY3ZjUxYzhiYTc5NjY5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9mb3ItaW4tZW51bWVyYWJsZS1zaGFkb3cuanMKQEAgLTAsMCArMSwzMyBAQAorZnVuY3Rpb24g
YXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KKwor
ZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZnVuY3Rpb24gY291bnQobywgbzIpIHsKKyAgICAgICAg
bGV0IGMgPSAwOworICAgICAgICBmb3IgKGxldCBwIGluIG8pIHsKKyAgICAgICAgICAgIGxldCBv
ID0gbzI7CisgICAgICAgICAgICBpZiAobzIuaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAg
ICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lu
bGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAgICAgYToyMCwKKyAgICAgICAgYjoz
MCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07CisKKyAgICBsZXQgbzIgPSB7
CisgICAgICAgIGE6MjAKKyAgICB9OworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBhc3NlcnQoY291bnQobywgbzIpID09PSAxKTsKKyAgICB9Cit9Cit0ZXN0
MSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZm9yLWluLWVudW1lcmFibGUtdGhpcy1h
cnJvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1lbnVtZXJhYmxlLXRoaXMtYXJyb3cuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGMxNDNhODE4MWM1ZDMzY2JiNTBmNzU2NzFjNGFlNzA0M2ZkYmJjMwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1lbnVtZXJhYmxlLXRoaXMtYXJy
b3cuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KKworbGV0IG8gPSB7CisgICAgYToyMCwKKyAg
ICBiOjMwLAorICAgIGM6NDAsCisgICAgZDo1MAorfTsKKworZnVuY3Rpb24gdGVzdDEoKSB7Cisg
ICAgbGV0IGNvdW50ID0gKCkgPT4geworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAo
bGV0IHAgaW4gdGhpcykgeworICAgICAgICAgICAgaWYgKHRoaXMuaGFzT3duUHJvcGVydHkocCkp
CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAg
IH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsg
KytpKSB7CisgICAgICAgIGFzc2VydChjb3VudCgpID09PSA0KTsKKyAgICB9Cit9Cit0ZXN0MS5j
YWxsKG8pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400686</attachid>
            <date>2020-05-30 18:45:55 -0700</date>
            <delta_ts>2020-05-30 18:45:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212519-20200530184555.patch</filename>
            <type>text/plain</type>
            <size>23679</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MmNhZGM3ZmI0NTE2MGJhMGQzNTdhZGQ4NmMyYTA2OTBjZjY1OGQzLi5kNTY2MzgyYmExNDAzZWFm
M2QxOTc1Zjk4NzFlNDllMTA3MWRjYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAyMC0wNS0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIGZvci1pbiBzaG91bGQgYWxsb2NhdGUgbmV3IHRlbXBvcmFyeSBy
ZWdpc3RlciBmb3IgYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyNTE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzcyMjA0ND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBXaGlsZSByMjYyMjMzIGtl
ZXBzIGZvci1pbidzIGVudW1lcmF0ZWQgb2JqZWN0IGluIHZhcmlhYmxlIHJlZ2lzdGVyIGlmIHBv
c3NpYmxlIHRvIHVzZSB0aGlzIHJlZ2lzdGVyIGZvciBoZXVyaXN0aWNzIGRyaXZpbmcgYW4gb3B0
aW1pemF0aW9uLAorICAgICAgICBmb3ItaW4gYm9keSBjYW4gcmVwbGFjZSB0aGUgY29udGVudCBv
ZiB0aGlzIHJlZ2lzdGVyIGR1cmluZyBlbnVtZXJhdGlvbiBhbmQgY29uZnVzZSBlbnVtZXJhdG9y
LgorCisgICAgICAgIEluc3RlYWQsIHdlIHJlY29yZCBWYXJpYWJsZSBpbmZvcm1hdGlvbiBpbiBT
dHJ1Y3R1cmVGb3JJbkNvbnRleHQuIFRoaXMgYWxsb3dzIHVzIHRvIGRldGVjdCBwYXR0ZXJucyB1
c2luZyBoZWFwLXZhcmlhYmxlcyB0b28uCisgICAgICAgIEZ1cnRoZXIsIHRoaXMgcGF0Y2ggZXh0
ZW5kcyBwYXR0ZXJuLW1hdGNoaW5nIGNvZGUgdG8gc3VwcG9ydCBUaGlzTm9kZSB0b28uCisKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFN0cnVjdHVyZUZvckluU2NvcGUpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZTo6VmFyaWFibGUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6aXNSZXNvbHZlZCBjb25zdCk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlOjpzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggY29uc3Qp
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6aWRlbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpW
YXJpYWJsZTo6b2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGU6OmlzTG9jYWwg
Y29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6bG9jYWwgY29uc3QpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZTo6aXNSZWFkT25seSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
Ojppc1NwZWNpYWwgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6aXNDb25zdCBjb25z
dCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlOjpzZXRJc1JlYWRPbmx5KToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVG
b3JJbkNvbnRleHQ6OlN0cnVjdHVyZUZvckluQ29udGV4dCk6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZUZvckluQ29udGV4dDo6YmFzZVZhcmlhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlRm9ySW5Db250ZXh0OjpiYXNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6SGFzT3duUHJvcGVydHlG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAg
ICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNUaGlzTm9kZSBj
b25zdCk6CisKIDIwMjAtMDUtMzAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6Y2FsbEV4Y2VwdGlvbkZ1enooKSBpcyBwYXNzaW5nIGEg
d3JvbmcgYXJndW1lbnQgdG8gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eigpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAppbmRleCBhODA1NTA4YmY3MzdlMTE0NTIxNWY1YTI1N2YxZjJjNjY1NzIwOTEzLi5mZGJlMzli
NGQ1YzRiMjg1MjExNTYwMTNkNWFmODViNjE3ODJjMjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
NDUzMywxMiArNDUzMywxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VGhpc1Rv
QXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCiAgICAgfQogfQogCi12b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpwdXNoU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVy
LCBSZWdpc3RlcklEKiBpbmRleFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBwcm9wZXJ0eVJlZ2lzdGVy
LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGJhc2VSZWdpc3Rl
cikKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lz
dGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3JSZWdpc3RlciwgT3B0
aW9uYWw8VmFyaWFibGU+IGJhc2VWYXJpYWJsZSkKIHsKICAgICBpZiAoIWxvY2FsUmVnaXN0ZXIp
CiAgICAgICAgIHJldHVybjsKICAgICB1bnNpZ25lZCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCA9
IGluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICBtX2ZvckluQ29udGV4dFN0YWNrLmFwcGVuZChh
ZG9wdFJlZigqbmV3IFN0cnVjdHVyZUZvckluQ29udGV4dChsb2NhbFJlZ2lzdGVyLCBpbmRleFJl
Z2lzdGVyLCBwcm9wZXJ0eVJlZ2lzdGVyLCBlbnVtZXJhdG9yUmVnaXN0ZXIsIGJhc2VSZWdpc3Rl
ciwgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQpKSk7CisgICAgbV9mb3JJbkNvbnRleHRTdGFjay5h
cHBlbmQoYWRvcHRSZWYoKm5ldyBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQobG9jYWxSZWdpc3Rlciwg
aW5kZXhSZWdpc3RlciwgcHJvcGVydHlSZWdpc3RlciwgZW51bWVyYXRvclJlZ2lzdGVyLCBiYXNl
VmFyaWFibGUsIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KSkpOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggNGIxZWZiODlkNjA4N2E0YmYwMzk1YTYxYTJiYmNjYmZiYzE1
NTBlNS4uNzI4NjQ5MDY5OWM3ZTY3NTVkMDg0M2U2OWI0YmQxYWQxOWI4NmIzOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtOTIsNiArOTIsNzMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVk
IG1fcGFkZGluZzsKICAgICB9OwogCisgICAgY2xhc3MgVmFyaWFibGUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgZW51bSBWYXJpYWJsZUtpbmQgeyBOb3JtYWxWYXJpYWJsZSwgU3BlY2lhbFZhcmlh
YmxlIH07CisKKyAgICAgICAgVmFyaWFibGUoKSA9IGRlZmF1bHQ7CisgICAgICAgIAorICAgICAg
ICBWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgICAgIDogbV9pZGVu
dChpZGVudCkKKyAgICAgICAgICAgICwgbV9sb2NhbChudWxscHRyKQorICAgICAgICAgICAgLCBt
X2F0dHJpYnV0ZXMoMCkKKyAgICAgICAgICAgICwgbV9raW5kKE5vcm1hbFZhcmlhYmxlKSAvLyBU
aGlzIGlzIHNvbWV3aGF0IG1lYW5pbmdsZXNzIGhlcmUgZm9yIHRoaXMga2luZCBvZiBWYXJpYWJs
ZS4KKyAgICAgICAgICAgICwgbV9zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgoMCkgLy8gVGhpcyBp
cyBtZWFuaW5nbGVzcyBoZXJlIGZvciB0aGlzIGtpbmQgb2YgVmFyaWFibGUuCisgICAgICAgICAg
ICAsIG1faXNMZXhpY2FsbHlTY29wZWQoZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIFZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBWYXJPZmZzZXQgb2Zmc2V0
LCBSZWdpc3RlcklEKiBsb2NhbCwgdW5zaWduZWQgYXR0cmlidXRlcywgVmFyaWFibGVLaW5kIGtp
bmQsIGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIGJvb2wgaXNMZXhpY2FsbHlTY29wZWQp
CisgICAgICAgICAgICA6IG1faWRlbnQoaWRlbnQpCisgICAgICAgICAgICAsIG1fb2Zmc2V0KG9m
ZnNldCkKKyAgICAgICAgICAgICwgbV9sb2NhbChsb2NhbCkKKyAgICAgICAgICAgICwgbV9hdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMpCisgICAgICAgICAgICAsIG1fa2luZChraW5kKQorICAgICAgICAg
ICAgLCBtX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgp
CisgICAgICAgICAgICAsIG1faXNMZXhpY2FsbHlTY29wZWQoaXNMZXhpY2FsbHlTY29wZWQpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIGl0J3MgdW5zZXQsIHRoZW4gaXQg
aXMgYSBub24tbG9jYWxseS1zY29wZWQgdmFyaWFibGUuIElmIGl0IGlzIHNldCwgdGhlbiBpdCBj
b3VsZCBiZQorICAgICAgICAvLyBhIHN0YWNrIHZhcmlhYmxlLCBhIHNjb3BlZCB2YXJpYWJsZSBp
biBhIGxvY2FsIHNjb3BlLCBvciBhIHZhcmlhYmxlIGNhcHR1cmVkIGluIHRoZQorICAgICAgICAv
LyBkaXJlY3QgYXJndW1lbnRzIG9iamVjdC4KKyAgICAgICAgYm9vbCBpc1Jlc29sdmVkKCkgY29u
c3QgeyByZXR1cm4gISFtX29mZnNldDsgfQorICAgICAgICBpbnQgc3ltYm9sVGFibGVDb25zdGFu
dEluZGV4KCkgY29uc3QgeyBBU1NFUlQoaXNSZXNvbHZlZCgpICYmICFpc1NwZWNpYWwoKSk7IHJl
dHVybiBtX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsgfQorICAgICAgICAKKyAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CisgICAgICAg
IAorICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0K
KyAgICAgICAgYm9vbCBpc0xvY2FsKCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQuaXNTdGFjaygp
OyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGxvY2FsKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbDsg
fQorCisgICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRl
cyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seTsgfQorICAgICAgICBib29sIGlzU3BlY2lh
bCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCAhPSBOb3JtYWxWYXJpYWJsZTsgfQorICAgICAgICBi
b29sIGlzQ29uc3QoKSBjb25zdCB7IHJldHVybiBpc1JlYWRPbmx5KCkgJiYgbV9pc0xleGljYWxs
eVNjb3BlZDsgfQorICAgICAgICB2b2lkIHNldElzUmVhZE9ubHkoKSB7IG1fYXR0cmlidXRlcyB8
PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHk7IH0KKworICAgICAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKKworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVmFyaWFi
bGUmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9pZGVudCA9
PSBvdGhlci5tX2lkZW50CisgICAgICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9v
ZmZzZXQKKyAgICAgICAgICAgICAgICAmJiBtX2xvY2FsID09IG90aGVyLm1fbG9jYWwKKyAgICAg
ICAgICAgICAgICAmJiBtX2F0dHJpYnV0ZXMgPT0gb3RoZXIubV9hdHRyaWJ1dGVzCisgICAgICAg
ICAgICAgICAgJiYgbV9raW5kID09IG90aGVyLm1fa2luZAorICAgICAgICAgICAgICAgICYmIG1f
c3ltYm9sVGFibGVDb25zdGFudEluZGV4ID09IG90aGVyLm1fc3ltYm9sVGFibGVDb25zdGFudElu
ZGV4CisgICAgICAgICAgICAgICAgJiYgbV9pc0xleGljYWxseVNjb3BlZCA9PSBvdGhlci5tX2lz
TGV4aWNhbGx5U2NvcGVkOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBJZGVu
dGlmaWVyIG1faWRlbnQ7CisgICAgICAgIFZhck9mZnNldCBtX29mZnNldCB7IH07CisgICAgICAg
IFJlZ2lzdGVySUQqIG1fbG9jYWwgeyBudWxscHRyIH07CisgICAgICAgIHVuc2lnbmVkIG1fYXR0
cmlidXRlcyB7IDAgfTsKKyAgICAgICAgVmFyaWFibGVLaW5kIG1fa2luZCB7IE5vcm1hbFZhcmlh
YmxlIH07CisgICAgICAgIGludCBtX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB7IDAgfTsgLy8g
VGhpcyBpcyBtZWFuaW5nbGVzcyBoZXJlIGZvciB0aGlzIGRlZmF1bHQgTm9ybWFsVmFyaWFibGUg
a2luZCBvZiBWYXJpYWJsZS4KKyAgICAgICAgYm9vbCBtX2lzTGV4aWNhbGx5U2NvcGVkIHsgZmFs
c2UgfTsKKyAgICB9OworCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNz
ZWMtY29tcGxldGlvbi1yZWNvcmQtc3BlY2lmaWNhdGlvbi10eXBlCiAgICAgLy8KICAgICAvLyBG
b3IgdGhlIEJyZWFrIGFuZCBDb250aW51ZSBjYXNlcywgaW5zdGVhZCBvZiB1c2luZyB0aGUgQnJl
YWsgYW5kIENvbnRpbnVlIGVudW0gdmFsdWVzCkBAIC0yNDEsMTkgKzMwOCwxOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdXNpbmcgSW5JbnN0ID0gR2V0SW5zdDsKICAgICAgICAgdXNpbmcg
SGFzT3duUHJvcGVydHlKdW1wSW5zdCA9IHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPjsK
IAotICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3Rl
ciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3Rl
ciwgUmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBiYXNlLCB1bnNp
Z25lZCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkKKyAgICAgICAgU3RydWN0dXJlRm9ySW5Db250
ZXh0KFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIs
IFJlZ2lzdGVySUQqIHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3JSZWdp
c3RlciwgT3B0aW9uYWw8VmFyaWFibGU+IGJhc2VWYXJpYWJsZSwgdW5zaWduZWQgYm9keUJ5dGVj
b2RlU3RhcnRPZmZzZXQpCiAgICAgICAgICAgICA6IEZvckluQ29udGV4dChsb2NhbFJlZ2lzdGVy
LCBUeXBlOjpTdHJ1Y3R1cmVGb3JJbiwgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQpCiAgICAgICAg
ICAgICAsIG1faW5kZXhSZWdpc3RlcihpbmRleFJlZ2lzdGVyKQogICAgICAgICAgICAgLCBtX3By
b3BlcnR5UmVnaXN0ZXIocHJvcGVydHlSZWdpc3RlcikKICAgICAgICAgICAgICwgbV9lbnVtZXJh
dG9yUmVnaXN0ZXIoZW51bWVyYXRvclJlZ2lzdGVyKQotICAgICAgICAgICAgLCBtX2Jhc2UoYmFz
ZSkKKyAgICAgICAgICAgICwgbV9iYXNlVmFyaWFibGUoYmFzZVZhcmlhYmxlKQogICAgICAgICB7
CiAgICAgICAgIH0KIAogICAgICAgICBSZWdpc3RlcklEKiBpbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5kZXhSZWdpc3Rlci5nZXQoKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBwcm9wZXJ0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Rlci5nZXQoKTsgfQogICAgICAgICBSZWdp
c3RlcklEKiBlbnVtZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9lbnVtZXJhdG9yUmVnaXN0ZXIu
Z2V0KCk7IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
ZS5nZXQoKTsgfQorICAgICAgICBjb25zdCBPcHRpb25hbDxWYXJpYWJsZT4mIGJhc2VWYXJpYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVZhcmlhYmxlOyB9CiAKICAgICAgICAgdm9pZCBhZGRH
ZXRJbnN0KHVuc2lnbmVkIGluc3RJbmRleCwgaW50IHByb3BlcnR5UmVnSW5kZXgpCiAgICAgICAg
IHsKQEAgLTI3Niw3ICszNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG1faW5kZXhSZWdpc3RlcjsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG1f
cHJvcGVydHlSZWdpc3RlcjsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG1fZW51bWVyYXRv
clJlZ2lzdGVyOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9iYXNlOworICAgICAgICBP
cHRpb25hbDxWYXJpYWJsZT4gbV9iYXNlVmFyaWFibGU7CiAgICAgICAgIFZlY3RvcjxHZXRJbnN0
PiBtX2dldEluc3RzOwogICAgICAgICBWZWN0b3I8SW5JbnN0PiBtX2luSW5zdHM7CiAgICAgICAg
IFZlY3RvcjxIYXNPd25Qcm9wZXJ0eUp1bXBJbnN0PiBtX2hhc093blByb3BlcnR5SnVtcEluc3Rz
OwpAQCAtMzExLDcwICszNzgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHJ5RGF0YSog
dHJ5RGF0YTsKICAgICB9OwogCi0gICAgY2xhc3MgVmFyaWFibGUgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgZW51bSBWYXJpYWJsZUtpbmQgeyBOb3JtYWxWYXJpYWJsZSwgU3BlY2lhbFZhcmlhYmxl
IH07Ci0KLSAgICAgICAgVmFyaWFibGUoKQotICAgICAgICAgICAgOiBtX29mZnNldCgpCi0gICAg
ICAgICAgICAsIG1fbG9jYWwobnVsbHB0cikKLSAgICAgICAgICAgICwgbV9hdHRyaWJ1dGVzKDAp
Ci0gICAgICAgICAgICAsIG1fa2luZChOb3JtYWxWYXJpYWJsZSkKLSAgICAgICAgICAgICwgbV9z
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXgoMCkgLy8gVGhpcyBpcyBtZWFuaW5nbGVzcyBoZXJlIGZv
ciB0aGlzIGtpbmQgb2YgVmFyaWFibGUuCi0gICAgICAgICAgICAsIG1faXNMZXhpY2FsbHlTY29w
ZWQoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVmFyaWFi
bGUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgICAgICA6IG1faWRlbnQoaWRlbnQp
Ci0gICAgICAgICAgICAsIG1fbG9jYWwobnVsbHB0cikKLSAgICAgICAgICAgICwgbV9hdHRyaWJ1
dGVzKDApCi0gICAgICAgICAgICAsIG1fa2luZChOb3JtYWxWYXJpYWJsZSkgLy8gVGhpcyBpcyBz
b21ld2hhdCBtZWFuaW5nbGVzcyBoZXJlIGZvciB0aGlzIGtpbmQgb2YgVmFyaWFibGUuCi0gICAg
ICAgICAgICAsIG1fc3ltYm9sVGFibGVDb25zdGFudEluZGV4KDApIC8vIFRoaXMgaXMgbWVhbmlu
Z2xlc3MgaGVyZSBmb3IgdGhpcyBraW5kIG9mIFZhcmlhYmxlLgotICAgICAgICAgICAgLCBtX2lz
TGV4aWNhbGx5U2NvcGVkKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBW
YXJpYWJsZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgVmFyT2Zmc2V0IG9mZnNldCwgUmVnaXN0
ZXJJRCogbG9jYWwsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFZhcmlhYmxlS2luZCBraW5kLCBpbnQg
c3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBib29sIGlzTGV4aWNhbGx5U2NvcGVkKQotICAgICAg
ICAgICAgOiBtX2lkZW50KGlkZW50KQotICAgICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0g
ICAgICAgICAgICAsIG1fbG9jYWwobG9jYWwpCi0gICAgICAgICAgICAsIG1fYXR0cmlidXRlcyhh
dHRyaWJ1dGVzKQotICAgICAgICAgICAgLCBtX2tpbmQoa2luZCkKLSAgICAgICAgICAgICwgbV9z
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXgoc3ltYm9sVGFibGVDb25zdGFudEluZGV4KQotICAgICAg
ICAgICAgLCBtX2lzTGV4aWNhbGx5U2NvcGVkKGlzTGV4aWNhbGx5U2NvcGVkKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBpdCdzIHVuc2V0LCB0aGVuIGl0IGlzIGEgbm9u
LWxvY2FsbHktc2NvcGVkIHZhcmlhYmxlLiBJZiBpdCBpcyBzZXQsIHRoZW4gaXQgY291bGQgYmUK
LSAgICAgICAgLy8gYSBzdGFjayB2YXJpYWJsZSwgYSBzY29wZWQgdmFyaWFibGUgaW4gYSBsb2Nh
bCBzY29wZSwgb3IgYSB2YXJpYWJsZSBjYXB0dXJlZCBpbiB0aGUKLSAgICAgICAgLy8gZGlyZWN0
IGFyZ3VtZW50cyBvYmplY3QuCi0gICAgICAgIGJvb2wgaXNSZXNvbHZlZCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9vZmZzZXQ7IH0KLSAgICAgICAgaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCgp
IGNvbnN0IHsgQVNTRVJUKGlzUmVzb2x2ZWQoKSAmJiAhaXNTcGVjaWFsKCkpOyByZXR1cm4gbV9z
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7IH0KLSAgICAgICAgCi0gICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQotICAgICAgICAKLSAgICAg
ICAgVmFyT2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9Ci0gICAgICAg
IGJvb2wgaXNMb2NhbCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0LmlzU3RhY2soKTsgfQotICAg
ICAgICBSZWdpc3RlcklEKiBsb2NhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWw7IH0KLQotICAg
ICAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHk7IH0KLSAgICAgICAgYm9vbCBpc1NwZWNpYWwoKSBjb25z
dCB7IHJldHVybiBtX2tpbmQgIT0gTm9ybWFsVmFyaWFibGU7IH0KLSAgICAgICAgYm9vbCBpc0Nv
bnN0KCkgY29uc3QgeyByZXR1cm4gaXNSZWFkT25seSgpICYmIG1faXNMZXhpY2FsbHlTY29wZWQ7
IH0KLSAgICAgICAgdm9pZCBzZXRJc1JlYWRPbmx5KCkgeyBtX2F0dHJpYnV0ZXMgfD0gUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5OyB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7Ci0g
ICAgICAgIFZhck9mZnNldCBtX29mZnNldDsKLSAgICAgICAgUmVnaXN0ZXJJRCogbV9sb2NhbDsK
LSAgICAgICAgdW5zaWduZWQgbV9hdHRyaWJ1dGVzOwotICAgICAgICBWYXJpYWJsZUtpbmQgbV9r
aW5kOwotICAgICAgICBpbnQgbV9zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7Ci0gICAgICAgIGJv
b2wgbV9pc0xleGljYWxseVNjb3BlZDsKLSAgICB9OwotCiAgICAgc3RydWN0IFRyeVJhbmdlIHsK
ICAgICAgICAgUmVmPExhYmVsPiBzdGFydDsKICAgICAgICAgUmVmPExhYmVsPiBlbmQ7CkBAIC0x
MDI1LDcgKzEwMjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHB1c2hJbmRl
eGVkRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0ZXJJRCogaW5kZXgpOwogICAg
ICAgICB2b2lkIHBvcEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsKTsKLSAgICAg
ICAgdm9pZCBwdXNoU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0
ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9y
LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAgdm9pZCBwdXNoU3RydWN0dXJlRm9ySW5TY29w
ZShSZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yLCBPcHRpb25hbDxWYXJpYWJsZT4gYmFzZSk7CiAg
ICAgICAgIHZvaWQgcG9wU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCk7CiAK
ICAgICAgICAgTGFiZWxTY29wZSogYnJlYWtUYXJnZXQoY29uc3QgSWRlbnRpZmllciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CmluZGV4IDFhZmMyZTRiYmNhMmZiZDk2ZmZiMjI2MzQ3MTA2MDFkNGU1NzJhZjQuLmExYmUxMTFj
YzA4NTZiODg4MzZmNDk2NTIyYmZhYTExOGM4NGE5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTE4NTIsNyArMTg1
MiwyNCBAQCBSZWdpc3RlcklEKiBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZwogICAgICAgICBzdHJ1Y3R1cmVDb250ZXh0
ID0gZ2VuZXJhdG9yLmZpbmRTdHJ1Y3R1cmVGb3JJbkNvbnRleHQocHJvcGVydHkpOwogICAgIH0K
IAotICAgIGlmIChzdHJ1Y3R1cmVDb250ZXh0ICYmIHN0cnVjdHVyZUNvbnRleHQtPmJhc2UoKSA9
PSBiYXNlLmdldCgpKSB7CisgICAgYXV0byBjYW5Vc2VGYXN0SGFzT3duUHJvcGVydHkgPSBbJl0g
eworICAgICAgICBpZiAoIXN0cnVjdHVyZUNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmICghc3RydWN0dXJlQ29udGV4dC0+YmFzZVZhcmlhYmxlKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzUmVzb2x2ZU5vZGUo
KSkKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IudmFyaWFibGUoc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUqPihtX2Jhc2UpLT5pZGVudGlmaWVyKCkpID09IHN0cnVjdHVyZUNvbnRleHQtPmJh
c2VWYXJpYWJsZSgpLnZhbHVlKCk7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzVGhpc05vZGUoKSkg
eworICAgICAgICAgICAgLy8gQWZ0ZXIgZ2VuZXJhdG9yLmVuc3VyZVRoaXMgKHdoaWNoIG11c3Qg
YmUgaW52b2tlZCBpbiB8YmFzZXwncyBtYXRlcmlhbGl6YXRpb24pLCB3ZSBjYW4gZW5zdXJlIHRo
YXQgfHRoaXN8IGlzIGluIGxvY2FsIHRoaXMtcmVnaXN0ZXIuCisgICAgICAgICAgICBBU1NFUlQo
YmFzZSk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkudGhpc0lkZW50aWZpZXIsIFRoaXNSZXNvbHV0aW9uVHlwZTo6TG9jYWwp
ID09IHN0cnVjdHVyZUNvbnRleHQtPmJhc2VWYXJpYWJsZSgpLnZhbHVlKCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICBpZiAoY2FuVXNlRmFzdEhhc093
blByb3BlcnR5KCkpIHsKKyAgICAgICAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCBiYXNlIHJlZ2lz
dGVyIGlzIHZhcmlhYmxlIGFuZCBlYWNoIGZvci1pbiBib2R5IHJlcGxhY2VzIEpTIG9iamVjdCBp
biB0aGUgYmFzZSByZWdpc3RlciB3aXRoIGEgZGlmZmVyZW50IG9uZS4KKyAgICAgICAgLy8gRXZl
biB0aG91Z2gsIHRoaXMgaXMgT0sgc2luY2UgSGFzT3duU3RydWN0dXJlUHJvcGVydHkgd2lsbCBy
ZWplY3QgdGhlIHJlcGxhY2VkIEpTIG9iamVjdC4KICAgICAgICAgUmVmPExhYmVsPiByZWFsQ2Fs
bCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICBSZWY8TGFiZWw+IGVuZCA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOwogCkBAIC0zNzQ3LDEzICszNzY0LDIzIEBAIHZvaWQgRm9ySW5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIGlmIChtX2xleHByLT5pc0Fzc2lnblJlc29sdmVOb2RlKCkpCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2xleHByKTsKIAor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBsZW5ndGg7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGVu
dW1lcmF0b3I7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShtX2V4cHIpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVt
aXROb2RlKGJhc2UuZ2V0KCksIG1fZXhwcik7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGxvY2Fs
ID0gdGhpcy0+dHJ5R2V0Qm91bmRMb2NhbChnZW5lcmF0b3IpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBlbnVtZXJhdG9ySW5kZXg7CiAKKyAgICBPcHRpb25hbDxWYXJpYWJsZT4gYmFzZVZhcmlh
YmxlOworICAgIGlmIChtX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSkKKyAgICAgICAgYmFzZVZhcmlh
YmxlID0gZ2VuZXJhdG9yLnZhcmlhYmxlKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4obV9leHBy
KS0+aWRlbnRpZmllcigpKTsKKyAgICBlbHNlIGlmIChtX2V4cHItPmlzVGhpc05vZGUoKSkgewor
ICAgICAgICAvLyBBZnRlciBnZW5lcmF0b3IuZW5zdXJlVGhpcyAod2hpY2ggbXVzdCBiZSBpbnZv
a2VkIGluIHxiYXNlfCdzIG1hdGVyaWFsaXphdGlvbiksIHdlIGNhbiBlbnN1cmUgdGhhdCB8dGhp
c3wgaXMgaW4gbG9jYWwgdGhpcy1yZWdpc3Rlci4KKyAgICAgICAgQVNTRVJUKGJhc2UpOworICAg
ICAgICBiYXNlVmFyaWFibGUgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5
TmFtZXMoKS50aGlzSWRlbnRpZmllciwgVGhpc1Jlc29sdXRpb25UeXBlOjpMb2NhbCk7CisgICAg
fQorCiAgICAgLy8gUGF1c2UgYXQgdGhlIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBmb3IgZWFjaCBm
b3IuLmluIGl0ZXJhdGlvbi4KICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhtX2xleHByKTsK
IApAQCAtMzgyOCw3ICszODU1LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cocHJvZmlsZXJTdGFydE9mZnNldCk7CiAKLSAg
ICAgICAgZ2VuZXJhdG9yLnB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKGxvY2FsLmdldCgpLCBlbnVt
ZXJhdG9ySW5kZXguZ2V0KCksIHByb3BlcnR5TmFtZS5nZXQoKSwgZW51bWVyYXRvci5nZXQoKSwg
YmFzZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5wdXNoU3RydWN0dXJlRm9ySW5TY29wZShs
b2NhbC5nZXQoKSwgZW51bWVyYXRvckluZGV4LmdldCgpLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIGVu
dW1lcmF0b3IuZ2V0KCksIGJhc2VWYXJpYWJsZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fc3RhdGVtZW50KTsKICAgICAgICAgZ2VuZXJhdG9yLnBvcFN0cnVjdHVyZUZvcklu
U2NvcGUobG9jYWwuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCmluZGV4IDFhNDQ4YzI1NThmMmY1Zjk4ZmQyNjBlMmZlYzUzMDhhMzY4NWQ2ZmIuLjY4
NWRiMDAwZjAwOGFhOGI1NGVkYjhmMDFiMjhkYzA5NDI3MmNhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0xNDQyLDcgKzE0NDIsNyBAQCBFeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbgogICAgIGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAo
ZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5h
cHBseVB1YmxpY05hbWUoKSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgLy8gRklY
TUU6IFRoaXMgY2hlY2sgaXMgb25seSBuZWVkZWQgYmVjYXVzZSB3ZSBoYXZlbid0IHRhdWdodCB0
aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIHRvIGlubGluZQogICAgICAgICAvLyBSZWZsZWN0LmFwcGx5
IHlldC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2Njgu
Ci0gICAgICAgIGlmICghZG90LT5iYXNlKCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBzdGF0aWNfY2Fz
dDxSZXNvbHZlTm9kZSo+KGRvdC0+YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJSZWZsZWN0IikK
KyAgICAgICAgaWYgKCFkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpIHx8IHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gbV92bS5wcm9wZXJ0
eU5hbWVzLT5SZWZsZWN0KQogICAgICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlD
aGlsZERlcHRoKTsKICAgICB9IGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAKICAgICAg
ICAgJiYgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd25Qcm9w
ZXJ0eQpAQCAtMTQ1MCwxMCArMTQ1MCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAg
ICAgICYmIGFyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcgogICAgICAgICAmJiBhcmdzLT5tX2xpc3RO
b2RlLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKQogICAgICAgICAmJiAhYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0Ci0gICAgICAgICYmIGRvdC0+YmFzZSgpLT5pc1Jlc29sdmVOb2RlKCkKLSAgICAg
ICAgJiYgc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihkb3QtPmJhc2UoKSktPmlkZW50aWZpZXIo
KSAhPSAiUmVmbGVjdCIpIHsKKyAgICAgICAgJiYgKChkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9k
ZSgpICYmIHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVy
KCkgIT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5SZWZsZWN0KSB8fCBkb3QtPmJhc2UoKS0+aXNUaGlz
Tm9kZSgpKSkgewogICAgICAgICAvLyBXZSBtYXRjaCB0aGUgQVNUIHBhdHRlcm46Ci0gICAgICAg
IC8vIDxyZXNvbHZlTm9kZT4uaGFzT3duUHJvcGVydHkoPHJlc29sdmVOb2RlPikKKyAgICAgICAg
Ly8gPHJlc29sdmVOb2RlfHRoaXNOb2RlPi5oYXNPd25Qcm9wZXJ0eSg8cmVzb2x2ZU5vZGU+KQog
ICAgICAgICAvLyBpLmU6CiAgICAgICAgIC8vIG8uaGFzT3duUHJvcGVydHkocCkKICAgICAgICAg
bm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
aW5kZXggNWQwY2FlZmJhY2ZlYWZiZjBkNmQ0Nzk4ZmFiMThjMGUxMmUwMWRkMy4uNjNjNWExM2Jm
NTVlNGI3NDExMzM4ZTY4YzRiMDAwMmYwOWU0MGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaApAQCAtMjAwLDYgKzIwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNTdWJ0cmFjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNUaGlzTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1NwcmVhZEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdXBlck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNJbXBvcnROb2RlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTYxMiw2ICs2MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhp
c05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBi
b29sIGlzVGhpc05vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
bnVsbHB0cikgZmluYWw7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjYjg1MjZhNDQwZmZmMWZhODY3ZDM3MWU5N2NjNDM1
NzFmOWIxYjNkLi4zYTUzMzYwMDIyNGI0ODBmZWM0NWIwMWI1YTlhYzUyMjEyYTIxZjU4IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI5IEBACisyMDIwLTA1LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0pTQ10gZm9yLWluIHNob3VsZCBhbGxvY2F0ZSBuZXcgdGVtcG9yYXJ5IHJl
Z2lzdGVyIGZvciBiYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTI1MTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzNzIyMDQ0PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtz
L2hhcy1vd24tcHJvcGVydHktZm9yLWluLWxvb3Atd2l0aC1oZWFwLXZhcmlhYmxlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICh0ZXN0MS5jb3VudCk6CisgICAgICAgICh0
ZXN0MSk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHktZm9yLWlu
LWxvb3Atd2l0aC10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICh0
ZXN0MS5jb3VudCk6CisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICogc3RyZXNzL2Zvci1pbi1i
b2R5LXJlcGxhY2UtZW51bWVyYWJsZS5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAg
ICAqIHN0cmVzcy9mb3ItaW4tZW51bWVyYWJsZS1zaGFkb3cuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0KToKKyAgICAgICAgKHRlc3QxLmNvdW50KToKKyAgICAgICAgKHRlc3QxKToKKyAgICAg
ICAgKiBzdHJlc3MvZm9yLWluLWVudW1lcmFibGUtdGhpcy1hcnJvdy5qczogQWRkZWQuCisgICAg
ICAgIChhc3NlcnQpOgorICAgICAgICAodGVzdDEpOgorCiAyMDIwLTA1LTI5ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSlNCaWdJbnQgYWxsb2Nh
dGlvbiBzaG91bGQgYmUgZ3JhY2VmdWwgZm9yIE9PTQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvaGFzLW93bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC13aXRoLWhlYXAtdmFyaWFi
bGUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtb3duLXByb3BlcnR5LWZvci1pbi1s
b29wLXdpdGgtaGVhcC12YXJpYWJsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTI2MTMzOTAzZWQ1OTAyMTFm
OTE5YjYwYWMyN2MxZjJjOWZhMDc1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvaGFzLW93bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC13aXRoLWhlYXAtdmFyaWFibGUu
anMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgbGV0
IG8gPSB7CisgICAgICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAg
ICAgIGQ6NTAKKyAgICB9OworCisgICAgZnVuY3Rpb24gY291bnQoKSB7CisgICAgICAgIGxldCBj
ID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBpZiAoby5oYXNP
d25Qcm9wZXJ0eShwKSkKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgNjAwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KCkgPT09IDQpOwor
ICAgIH0KK30KK3Rlc3QxKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9o
YXMtb3duLXByb3BlcnR5LWZvci1pbi1sb29wLXdpdGgtdGhpcy5qcyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHktZm9yLWluLWxvb3Atd2l0aC10aGlzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRiZGFhNWQwZjBjZWNlNTQ1MmRiNWM4MzNlNTY4YzQ3OTQ5ZWMwMGMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtb3duLXByb3BlcnR5LWZvci1p
bi1sb29wLXdpdGgtdGhpcy5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBhc3NlcnQoYikg
eworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiB0
ZXN0MSgpIHsKKyAgICBsZXQgbyA9IHsKKyAgICAgICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAg
ICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07CisKKyAgICBmdW5jdGlvbiBjb3VudCgp
IHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxldCBwIGluIHRoaXMpIHsKKyAg
ICAgICAgICAgIGlmICh0aGlzLmhhc093blByb3BlcnR5KHApKQorICAgICAgICAgICAgICAgICsr
YzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291
bnQpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2MDAwMDA7ICsraSkgeworICAgICAgICBh
c3NlcnQoY291bnQuY2FsbChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDEoKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1ib2R5LXJlcGxhY2UtZW51bWVyYWJsZS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2Zvci1pbi1ib2R5LXJlcGxhY2UtZW51bWVyYWJsZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yODlmODE2MWRmMjIxNjJmZTYzMDZkMzViZTZhZDE5OGVkYzllOGZjCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLWluLWJvZHktcmVwbGFjZS1lbnVtZXJhYmxlLmpzCkBA
IC0wLDAgKzEsMTAgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICBsZXQgYTAgPSBbJ2EnLCB7fV07
CisgICAgZm9yIChsZXQgcSBpbiBhMCkgeworICAgICAgICBhMCA9IG5ldyBVaW50OEFycmF5KCk7
CisgICAgfQorfQorCitmb3IgKGxldCBpPTA7IGk8MWUzOyBpKyspIHsKKyAgICBmb28oKTsKK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1lbnVtZXJhYmxlLXNoYWRvdy5qcyBi
L0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1lbnVtZXJhYmxlLXNoYWRvdy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
OGZjZjEyMzk5MzNiYWVkMzY3OGRhN2Y2N2Y1MWM4YmE3OTY2OTZkCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZm9yLWluLWVudW1lcmFibGUtc2hhZG93LmpzCkBAIC0wLDAgKzEs
MzMgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3I7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGZ1bmN0aW9uIGNvdW50KG8s
IG8yKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBvKSB7Cisg
ICAgICAgICAgICBsZXQgbyA9IG8yOworICAgICAgICAgICAgaWYgKG8yLmhhc093blByb3BlcnR5
KHApKQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsK
KyAgICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8gPSB7CisgICAgICAgIGE6
MjAsCisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAgICB9Owor
CisgICAgbGV0IG8yID0geworICAgICAgICBhOjIwCisgICAgfTsKKworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KG8sIG8yKSA9PT0gMSk7
CisgICAgfQorfQordGVzdDEoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1l
bnVtZXJhYmxlLXRoaXMtYXJyb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tZW51bWVyYWJs
ZS10aGlzLWFycm93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjMTQzYTgxODFjNWQzM2NiYjUwZjc1NjcxYzRh
ZTcwNDNmZGJiYzMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tZW51
bWVyYWJsZS10aGlzLWFycm93LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIGFzc2VydChi
KSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2xldCBvID0g
eworICAgIGE6MjAsCisgICAgYjozMCwKKyAgICBjOjQwLAorICAgIGQ6NTAKK307CisKK2Z1bmN0
aW9uIHRlc3QxKCkgeworICAgIGxldCBjb3VudCA9ICgpID0+IHsKKyAgICAgICAgbGV0IGMgPSAw
OworICAgICAgICBmb3IgKGxldCBwIGluIHRoaXMpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmhh
c093blByb3BlcnR5KHApKQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQoKSA9PT0gNCk7Cisg
ICAgfQorfQordGVzdDEuY2FsbChvKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400687</attachid>
            <date>2020-05-30 18:47:57 -0700</date>
            <delta_ts>2020-05-30 20:20:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212519-20200530184756.patch</filename>
            <type>text/plain</type>
            <size>23653</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MmNhZGM3ZmI0NTE2MGJhMGQzNTdhZGQ4NmMyYTA2OTBjZjY1OGQzLi5kNTY2MzgyYmExNDAzZWFm
M2QxOTc1Zjk4NzFlNDllMTA3MWRjYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAyMC0wNS0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIGZvci1pbiBzaG91bGQgYWxsb2NhdGUgbmV3IHRlbXBvcmFyeSBy
ZWdpc3RlciBmb3IgYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyNTE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzcyMjA0ND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBXaGlsZSByMjYyMjMzIGtl
ZXBzIGZvci1pbidzIGVudW1lcmF0ZWQgb2JqZWN0IGluIHZhcmlhYmxlIHJlZ2lzdGVyIGlmIHBv
c3NpYmxlIHRvIHVzZSB0aGlzIHJlZ2lzdGVyIGZvciBoZXVyaXN0aWNzIGRyaXZpbmcgYW4gb3B0
aW1pemF0aW9uLAorICAgICAgICBmb3ItaW4gYm9keSBjYW4gcmVwbGFjZSB0aGUgY29udGVudCBv
ZiB0aGlzIHJlZ2lzdGVyIGR1cmluZyBlbnVtZXJhdGlvbiBhbmQgY29uZnVzZSBlbnVtZXJhdG9y
LgorCisgICAgICAgIEluc3RlYWQsIHdlIHJlY29yZCBWYXJpYWJsZSBpbmZvcm1hdGlvbiBpbiBT
dHJ1Y3R1cmVGb3JJbkNvbnRleHQuIFRoaXMgYWxsb3dzIHVzIHRvIGRldGVjdCBwYXR0ZXJucyB1
c2luZyBoZWFwLXZhcmlhYmxlcyB0b28uCisgICAgICAgIEZ1cnRoZXIsIHRoaXMgcGF0Y2ggZXh0
ZW5kcyBwYXR0ZXJuLW1hdGNoaW5nIGNvZGUgdG8gc3VwcG9ydCBUaGlzTm9kZSB0b28uCisKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFN0cnVjdHVyZUZvckluU2NvcGUpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZTo6VmFyaWFibGUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6aXNSZXNvbHZlZCBjb25zdCk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlOjpzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggY29uc3Qp
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6aWRlbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpW
YXJpYWJsZTo6b2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGU6OmlzTG9jYWwg
Y29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6bG9jYWwgY29uc3QpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZTo6aXNSZWFkT25seSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
Ojppc1NwZWNpYWwgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZTo6aXNDb25zdCBjb25z
dCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlOjpzZXRJc1JlYWRPbmx5KToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVG
b3JJbkNvbnRleHQ6OlN0cnVjdHVyZUZvckluQ29udGV4dCk6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZUZvckluQ29udGV4dDo6YmFzZVZhcmlhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlRm9ySW5Db250ZXh0OjpiYXNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6SGFzT3duUHJvcGVydHlG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAg
ICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNUaGlzTm9kZSBj
b25zdCk6CisKIDIwMjAtMDUtMzAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6Y2FsbEV4Y2VwdGlvbkZ1enooKSBpcyBwYXNzaW5nIGEg
d3JvbmcgYXJndW1lbnQgdG8gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eigpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAppbmRleCBhODA1NTA4YmY3MzdlMTE0NTIxNWY1YTI1N2YxZjJjNjY1NzIwOTEzLi5mZGJlMzli
NGQ1YzRiMjg1MjExNTYwMTNkNWFmODViNjE3ODJjMjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
NDUzMywxMiArNDUzMywxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VGhpc1Rv
QXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCiAgICAgfQogfQogCi12b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpwdXNoU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVy
LCBSZWdpc3RlcklEKiBpbmRleFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBwcm9wZXJ0eVJlZ2lzdGVy
LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGJhc2VSZWdpc3Rl
cikKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lz
dGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3JSZWdpc3RlciwgT3B0
aW9uYWw8VmFyaWFibGU+IGJhc2VWYXJpYWJsZSkKIHsKICAgICBpZiAoIWxvY2FsUmVnaXN0ZXIp
CiAgICAgICAgIHJldHVybjsKICAgICB1bnNpZ25lZCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCA9
IGluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICBtX2ZvckluQ29udGV4dFN0YWNrLmFwcGVuZChh
ZG9wdFJlZigqbmV3IFN0cnVjdHVyZUZvckluQ29udGV4dChsb2NhbFJlZ2lzdGVyLCBpbmRleFJl
Z2lzdGVyLCBwcm9wZXJ0eVJlZ2lzdGVyLCBlbnVtZXJhdG9yUmVnaXN0ZXIsIGJhc2VSZWdpc3Rl
ciwgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQpKSk7CisgICAgbV9mb3JJbkNvbnRleHRTdGFjay5h
cHBlbmQoYWRvcHRSZWYoKm5ldyBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQobG9jYWxSZWdpc3Rlciwg
aW5kZXhSZWdpc3RlciwgcHJvcGVydHlSZWdpc3RlciwgZW51bWVyYXRvclJlZ2lzdGVyLCBiYXNl
VmFyaWFibGUsIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KSkpOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggNGIxZWZiODlkNjA4N2E0YmYwMzk1YTYxYTJiYmNjYmZiYzE1
NTBlNS4uNzI4NjQ5MDY5OWM3ZTY3NTVkMDg0M2U2OWI0YmQxYWQxOWI4NmIzOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtOTIsNiArOTIsNzMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVk
IG1fcGFkZGluZzsKICAgICB9OwogCisgICAgY2xhc3MgVmFyaWFibGUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgZW51bSBWYXJpYWJsZUtpbmQgeyBOb3JtYWxWYXJpYWJsZSwgU3BlY2lhbFZhcmlh
YmxlIH07CisKKyAgICAgICAgVmFyaWFibGUoKSA9IGRlZmF1bHQ7CisgICAgICAgIAorICAgICAg
ICBWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgICAgIDogbV9pZGVu
dChpZGVudCkKKyAgICAgICAgICAgICwgbV9sb2NhbChudWxscHRyKQorICAgICAgICAgICAgLCBt
X2F0dHJpYnV0ZXMoMCkKKyAgICAgICAgICAgICwgbV9raW5kKE5vcm1hbFZhcmlhYmxlKSAvLyBU
aGlzIGlzIHNvbWV3aGF0IG1lYW5pbmdsZXNzIGhlcmUgZm9yIHRoaXMga2luZCBvZiBWYXJpYWJs
ZS4KKyAgICAgICAgICAgICwgbV9zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgoMCkgLy8gVGhpcyBp
cyBtZWFuaW5nbGVzcyBoZXJlIGZvciB0aGlzIGtpbmQgb2YgVmFyaWFibGUuCisgICAgICAgICAg
ICAsIG1faXNMZXhpY2FsbHlTY29wZWQoZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIFZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBWYXJPZmZzZXQgb2Zmc2V0
LCBSZWdpc3RlcklEKiBsb2NhbCwgdW5zaWduZWQgYXR0cmlidXRlcywgVmFyaWFibGVLaW5kIGtp
bmQsIGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIGJvb2wgaXNMZXhpY2FsbHlTY29wZWQp
CisgICAgICAgICAgICA6IG1faWRlbnQoaWRlbnQpCisgICAgICAgICAgICAsIG1fb2Zmc2V0KG9m
ZnNldCkKKyAgICAgICAgICAgICwgbV9sb2NhbChsb2NhbCkKKyAgICAgICAgICAgICwgbV9hdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMpCisgICAgICAgICAgICAsIG1fa2luZChraW5kKQorICAgICAgICAg
ICAgLCBtX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgp
CisgICAgICAgICAgICAsIG1faXNMZXhpY2FsbHlTY29wZWQoaXNMZXhpY2FsbHlTY29wZWQpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIGl0J3MgdW5zZXQsIHRoZW4gaXQg
aXMgYSBub24tbG9jYWxseS1zY29wZWQgdmFyaWFibGUuIElmIGl0IGlzIHNldCwgdGhlbiBpdCBj
b3VsZCBiZQorICAgICAgICAvLyBhIHN0YWNrIHZhcmlhYmxlLCBhIHNjb3BlZCB2YXJpYWJsZSBp
biBhIGxvY2FsIHNjb3BlLCBvciBhIHZhcmlhYmxlIGNhcHR1cmVkIGluIHRoZQorICAgICAgICAv
LyBkaXJlY3QgYXJndW1lbnRzIG9iamVjdC4KKyAgICAgICAgYm9vbCBpc1Jlc29sdmVkKCkgY29u
c3QgeyByZXR1cm4gISFtX29mZnNldDsgfQorICAgICAgICBpbnQgc3ltYm9sVGFibGVDb25zdGFu
dEluZGV4KCkgY29uc3QgeyBBU1NFUlQoaXNSZXNvbHZlZCgpICYmICFpc1NwZWNpYWwoKSk7IHJl
dHVybiBtX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsgfQorICAgICAgICAKKyAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CisgICAgICAg
IAorICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0K
KyAgICAgICAgYm9vbCBpc0xvY2FsKCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQuaXNTdGFjaygp
OyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGxvY2FsKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbDsg
fQorCisgICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRl
cyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seTsgfQorICAgICAgICBib29sIGlzU3BlY2lh
bCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCAhPSBOb3JtYWxWYXJpYWJsZTsgfQorICAgICAgICBi
b29sIGlzQ29uc3QoKSBjb25zdCB7IHJldHVybiBpc1JlYWRPbmx5KCkgJiYgbV9pc0xleGljYWxs
eVNjb3BlZDsgfQorICAgICAgICB2b2lkIHNldElzUmVhZE9ubHkoKSB7IG1fYXR0cmlidXRlcyB8
PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHk7IH0KKworICAgICAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKKworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVmFyaWFi
bGUmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9pZGVudCA9
PSBvdGhlci5tX2lkZW50CisgICAgICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9v
ZmZzZXQKKyAgICAgICAgICAgICAgICAmJiBtX2xvY2FsID09IG90aGVyLm1fbG9jYWwKKyAgICAg
ICAgICAgICAgICAmJiBtX2F0dHJpYnV0ZXMgPT0gb3RoZXIubV9hdHRyaWJ1dGVzCisgICAgICAg
ICAgICAgICAgJiYgbV9raW5kID09IG90aGVyLm1fa2luZAorICAgICAgICAgICAgICAgICYmIG1f
c3ltYm9sVGFibGVDb25zdGFudEluZGV4ID09IG90aGVyLm1fc3ltYm9sVGFibGVDb25zdGFudElu
ZGV4CisgICAgICAgICAgICAgICAgJiYgbV9pc0xleGljYWxseVNjb3BlZCA9PSBvdGhlci5tX2lz
TGV4aWNhbGx5U2NvcGVkOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBJZGVu
dGlmaWVyIG1faWRlbnQ7CisgICAgICAgIFZhck9mZnNldCBtX29mZnNldCB7IH07CisgICAgICAg
IFJlZ2lzdGVySUQqIG1fbG9jYWwgeyBudWxscHRyIH07CisgICAgICAgIHVuc2lnbmVkIG1fYXR0
cmlidXRlcyB7IDAgfTsKKyAgICAgICAgVmFyaWFibGVLaW5kIG1fa2luZCB7IE5vcm1hbFZhcmlh
YmxlIH07CisgICAgICAgIGludCBtX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB7IDAgfTsgLy8g
VGhpcyBpcyBtZWFuaW5nbGVzcyBoZXJlIGZvciB0aGlzIGRlZmF1bHQgTm9ybWFsVmFyaWFibGUg
a2luZCBvZiBWYXJpYWJsZS4KKyAgICAgICAgYm9vbCBtX2lzTGV4aWNhbGx5U2NvcGVkIHsgZmFs
c2UgfTsKKyAgICB9OworCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNz
ZWMtY29tcGxldGlvbi1yZWNvcmQtc3BlY2lmaWNhdGlvbi10eXBlCiAgICAgLy8KICAgICAvLyBG
b3IgdGhlIEJyZWFrIGFuZCBDb250aW51ZSBjYXNlcywgaW5zdGVhZCBvZiB1c2luZyB0aGUgQnJl
YWsgYW5kIENvbnRpbnVlIGVudW0gdmFsdWVzCkBAIC0yNDEsMTkgKzMwOCwxOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdXNpbmcgSW5JbnN0ID0gR2V0SW5zdDsKICAgICAgICAgdXNpbmcg
SGFzT3duUHJvcGVydHlKdW1wSW5zdCA9IHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPjsK
IAotICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3Rl
ciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3Rl
ciwgUmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBiYXNlLCB1bnNp
Z25lZCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkKKyAgICAgICAgU3RydWN0dXJlRm9ySW5Db250
ZXh0KFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIs
IFJlZ2lzdGVySUQqIHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3JSZWdp
c3RlciwgT3B0aW9uYWw8VmFyaWFibGU+IGJhc2VWYXJpYWJsZSwgdW5zaWduZWQgYm9keUJ5dGVj
b2RlU3RhcnRPZmZzZXQpCiAgICAgICAgICAgICA6IEZvckluQ29udGV4dChsb2NhbFJlZ2lzdGVy
LCBUeXBlOjpTdHJ1Y3R1cmVGb3JJbiwgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQpCiAgICAgICAg
ICAgICAsIG1faW5kZXhSZWdpc3RlcihpbmRleFJlZ2lzdGVyKQogICAgICAgICAgICAgLCBtX3By
b3BlcnR5UmVnaXN0ZXIocHJvcGVydHlSZWdpc3RlcikKICAgICAgICAgICAgICwgbV9lbnVtZXJh
dG9yUmVnaXN0ZXIoZW51bWVyYXRvclJlZ2lzdGVyKQotICAgICAgICAgICAgLCBtX2Jhc2UoYmFz
ZSkKKyAgICAgICAgICAgICwgbV9iYXNlVmFyaWFibGUoYmFzZVZhcmlhYmxlKQogICAgICAgICB7
CiAgICAgICAgIH0KIAogICAgICAgICBSZWdpc3RlcklEKiBpbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5kZXhSZWdpc3Rlci5nZXQoKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBwcm9wZXJ0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Rlci5nZXQoKTsgfQogICAgICAgICBSZWdp
c3RlcklEKiBlbnVtZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9lbnVtZXJhdG9yUmVnaXN0ZXIu
Z2V0KCk7IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
ZS5nZXQoKTsgfQorICAgICAgICBjb25zdCBPcHRpb25hbDxWYXJpYWJsZT4mIGJhc2VWYXJpYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVZhcmlhYmxlOyB9CiAKICAgICAgICAgdm9pZCBhZGRH
ZXRJbnN0KHVuc2lnbmVkIGluc3RJbmRleCwgaW50IHByb3BlcnR5UmVnSW5kZXgpCiAgICAgICAg
IHsKQEAgLTI3Niw3ICszNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG1faW5kZXhSZWdpc3RlcjsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG1f
cHJvcGVydHlSZWdpc3RlcjsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG1fZW51bWVyYXRv
clJlZ2lzdGVyOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9iYXNlOworICAgICAgICBP
cHRpb25hbDxWYXJpYWJsZT4gbV9iYXNlVmFyaWFibGU7CiAgICAgICAgIFZlY3RvcjxHZXRJbnN0
PiBtX2dldEluc3RzOwogICAgICAgICBWZWN0b3I8SW5JbnN0PiBtX2luSW5zdHM7CiAgICAgICAg
IFZlY3RvcjxIYXNPd25Qcm9wZXJ0eUp1bXBJbnN0PiBtX2hhc093blByb3BlcnR5SnVtcEluc3Rz
OwpAQCAtMzExLDcwICszNzgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHJ5RGF0YSog
dHJ5RGF0YTsKICAgICB9OwogCi0gICAgY2xhc3MgVmFyaWFibGUgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgZW51bSBWYXJpYWJsZUtpbmQgeyBOb3JtYWxWYXJpYWJsZSwgU3BlY2lhbFZhcmlhYmxl
IH07Ci0KLSAgICAgICAgVmFyaWFibGUoKQotICAgICAgICAgICAgOiBtX29mZnNldCgpCi0gICAg
ICAgICAgICAsIG1fbG9jYWwobnVsbHB0cikKLSAgICAgICAgICAgICwgbV9hdHRyaWJ1dGVzKDAp
Ci0gICAgICAgICAgICAsIG1fa2luZChOb3JtYWxWYXJpYWJsZSkKLSAgICAgICAgICAgICwgbV9z
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXgoMCkgLy8gVGhpcyBpcyBtZWFuaW5nbGVzcyBoZXJlIGZv
ciB0aGlzIGtpbmQgb2YgVmFyaWFibGUuCi0gICAgICAgICAgICAsIG1faXNMZXhpY2FsbHlTY29w
ZWQoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVmFyaWFi
bGUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgICAgICA6IG1faWRlbnQoaWRlbnQp
Ci0gICAgICAgICAgICAsIG1fbG9jYWwobnVsbHB0cikKLSAgICAgICAgICAgICwgbV9hdHRyaWJ1
dGVzKDApCi0gICAgICAgICAgICAsIG1fa2luZChOb3JtYWxWYXJpYWJsZSkgLy8gVGhpcyBpcyBz
b21ld2hhdCBtZWFuaW5nbGVzcyBoZXJlIGZvciB0aGlzIGtpbmQgb2YgVmFyaWFibGUuCi0gICAg
ICAgICAgICAsIG1fc3ltYm9sVGFibGVDb25zdGFudEluZGV4KDApIC8vIFRoaXMgaXMgbWVhbmlu
Z2xlc3MgaGVyZSBmb3IgdGhpcyBraW5kIG9mIFZhcmlhYmxlLgotICAgICAgICAgICAgLCBtX2lz
TGV4aWNhbGx5U2NvcGVkKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBW
YXJpYWJsZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgVmFyT2Zmc2V0IG9mZnNldCwgUmVnaXN0
ZXJJRCogbG9jYWwsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFZhcmlhYmxlS2luZCBraW5kLCBpbnQg
c3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBib29sIGlzTGV4aWNhbGx5U2NvcGVkKQotICAgICAg
ICAgICAgOiBtX2lkZW50KGlkZW50KQotICAgICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0g
ICAgICAgICAgICAsIG1fbG9jYWwobG9jYWwpCi0gICAgICAgICAgICAsIG1fYXR0cmlidXRlcyhh
dHRyaWJ1dGVzKQotICAgICAgICAgICAgLCBtX2tpbmQoa2luZCkKLSAgICAgICAgICAgICwgbV9z
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXgoc3ltYm9sVGFibGVDb25zdGFudEluZGV4KQotICAgICAg
ICAgICAgLCBtX2lzTGV4aWNhbGx5U2NvcGVkKGlzTGV4aWNhbGx5U2NvcGVkKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBpdCdzIHVuc2V0LCB0aGVuIGl0IGlzIGEgbm9u
LWxvY2FsbHktc2NvcGVkIHZhcmlhYmxlLiBJZiBpdCBpcyBzZXQsIHRoZW4gaXQgY291bGQgYmUK
LSAgICAgICAgLy8gYSBzdGFjayB2YXJpYWJsZSwgYSBzY29wZWQgdmFyaWFibGUgaW4gYSBsb2Nh
bCBzY29wZSwgb3IgYSB2YXJpYWJsZSBjYXB0dXJlZCBpbiB0aGUKLSAgICAgICAgLy8gZGlyZWN0
IGFyZ3VtZW50cyBvYmplY3QuCi0gICAgICAgIGJvb2wgaXNSZXNvbHZlZCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9vZmZzZXQ7IH0KLSAgICAgICAgaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCgp
IGNvbnN0IHsgQVNTRVJUKGlzUmVzb2x2ZWQoKSAmJiAhaXNTcGVjaWFsKCkpOyByZXR1cm4gbV9z
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7IH0KLSAgICAgICAgCi0gICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQotICAgICAgICAKLSAgICAg
ICAgVmFyT2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9Ci0gICAgICAg
IGJvb2wgaXNMb2NhbCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0LmlzU3RhY2soKTsgfQotICAg
ICAgICBSZWdpc3RlcklEKiBsb2NhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWw7IH0KLQotICAg
ICAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHk7IH0KLSAgICAgICAgYm9vbCBpc1NwZWNpYWwoKSBjb25z
dCB7IHJldHVybiBtX2tpbmQgIT0gTm9ybWFsVmFyaWFibGU7IH0KLSAgICAgICAgYm9vbCBpc0Nv
bnN0KCkgY29uc3QgeyByZXR1cm4gaXNSZWFkT25seSgpICYmIG1faXNMZXhpY2FsbHlTY29wZWQ7
IH0KLSAgICAgICAgdm9pZCBzZXRJc1JlYWRPbmx5KCkgeyBtX2F0dHJpYnV0ZXMgfD0gUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5OyB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7Ci0g
ICAgICAgIFZhck9mZnNldCBtX29mZnNldDsKLSAgICAgICAgUmVnaXN0ZXJJRCogbV9sb2NhbDsK
LSAgICAgICAgdW5zaWduZWQgbV9hdHRyaWJ1dGVzOwotICAgICAgICBWYXJpYWJsZUtpbmQgbV9r
aW5kOwotICAgICAgICBpbnQgbV9zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7Ci0gICAgICAgIGJv
b2wgbV9pc0xleGljYWxseVNjb3BlZDsKLSAgICB9OwotCiAgICAgc3RydWN0IFRyeVJhbmdlIHsK
ICAgICAgICAgUmVmPExhYmVsPiBzdGFydDsKICAgICAgICAgUmVmPExhYmVsPiBlbmQ7CkBAIC0x
MDI1LDcgKzEwMjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHB1c2hJbmRl
eGVkRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0ZXJJRCogaW5kZXgpOwogICAg
ICAgICB2b2lkIHBvcEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsKTsKLSAgICAg
ICAgdm9pZCBwdXNoU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0
ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9y
LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAgdm9pZCBwdXNoU3RydWN0dXJlRm9ySW5TY29w
ZShSZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yLCBPcHRpb25hbDxWYXJpYWJsZT4gYmFzZSk7CiAg
ICAgICAgIHZvaWQgcG9wU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCk7CiAK
ICAgICAgICAgTGFiZWxTY29wZSogYnJlYWtUYXJnZXQoY29uc3QgSWRlbnRpZmllciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CmluZGV4IDFhZmMyZTRiYmNhMmZiZDk2ZmZiMjI2MzQ3MTA2MDFkNGU1NzJhZjQuLjQ0MWZhMjRl
Y2M4YzE4ZDIzMmU0Yjk0YWU1NGU5YmI0ZWY1NmZkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTE4NTIsNyArMTg1
MiwyNCBAQCBSZWdpc3RlcklEKiBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZwogICAgICAgICBzdHJ1Y3R1cmVDb250ZXh0
ID0gZ2VuZXJhdG9yLmZpbmRTdHJ1Y3R1cmVGb3JJbkNvbnRleHQocHJvcGVydHkpOwogICAgIH0K
IAotICAgIGlmIChzdHJ1Y3R1cmVDb250ZXh0ICYmIHN0cnVjdHVyZUNvbnRleHQtPmJhc2UoKSA9
PSBiYXNlLmdldCgpKSB7CisgICAgYXV0byBjYW5Vc2VGYXN0SGFzT3duUHJvcGVydHkgPSBbJl0g
eworICAgICAgICBpZiAoIXN0cnVjdHVyZUNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmICghc3RydWN0dXJlQ29udGV4dC0+YmFzZVZhcmlhYmxlKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzUmVzb2x2ZU5vZGUo
KSkKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IudmFyaWFibGUoc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUqPihtX2Jhc2UpLT5pZGVudGlmaWVyKCkpID09IHN0cnVjdHVyZUNvbnRleHQtPmJh
c2VWYXJpYWJsZSgpLnZhbHVlKCk7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzVGhpc05vZGUoKSkg
eworICAgICAgICAgICAgLy8gQWZ0ZXIgZ2VuZXJhdG9yLmVuc3VyZVRoaXMgKHdoaWNoIG11c3Qg
YmUgaW52b2tlZCBpbiB8YmFzZXwncyBtYXRlcmlhbGl6YXRpb24pLCB3ZSBjYW4gZW5zdXJlIHRo
YXQgfHRoaXN8IGlzIGluIGxvY2FsIHRoaXMtcmVnaXN0ZXIuCisgICAgICAgICAgICBBU1NFUlQo
YmFzZSk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkudGhpc0lkZW50aWZpZXIsIFRoaXNSZXNvbHV0aW9uVHlwZTo6TG9jYWwp
ID09IHN0cnVjdHVyZUNvbnRleHQtPmJhc2VWYXJpYWJsZSgpLnZhbHVlKCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICBpZiAoY2FuVXNlRmFzdEhhc093
blByb3BlcnR5KCkpIHsKKyAgICAgICAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCBiYXNlIHJlZ2lz
dGVyIGlzIHZhcmlhYmxlIGFuZCBlYWNoIGZvci1pbiBib2R5IHJlcGxhY2VzIEpTIG9iamVjdCBp
biB0aGUgYmFzZSByZWdpc3RlciB3aXRoIGEgZGlmZmVyZW50IG9uZS4KKyAgICAgICAgLy8gRXZl
biB0aG91Z2gsIHRoaXMgaXMgT0sgc2luY2UgSGFzT3duU3RydWN0dXJlUHJvcGVydHkgd2lsbCBy
ZWplY3QgdGhlIHJlcGxhY2VkIEpTIG9iamVjdC4KICAgICAgICAgUmVmPExhYmVsPiByZWFsQ2Fs
bCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICBSZWY8TGFiZWw+IGVuZCA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOwogCkBAIC0zNzQ3LDEzICszNzY0LDIzIEBAIHZvaWQgRm9ySW5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIGlmIChtX2xleHByLT5pc0Fzc2lnblJlc29sdmVOb2RlKCkpCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2xleHByKTsKIAor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBsZW5ndGg7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGVu
dW1lcmF0b3I7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShtX2V4cHIpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShiYXNlLmdldCgpLCBtX2V4cHIp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBsb2NhbCA9IHRoaXMtPnRyeUdldEJvdW5kTG9jYWwo
Z2VuZXJhdG9yKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZW51bWVyYXRvckluZGV4OwogCisg
ICAgT3B0aW9uYWw8VmFyaWFibGU+IGJhc2VWYXJpYWJsZTsKKyAgICBpZiAobV9leHByLT5pc1Jl
c29sdmVOb2RlKCkpCisgICAgICAgIGJhc2VWYXJpYWJsZSA9IGdlbmVyYXRvci52YXJpYWJsZShz
dGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KG1fZXhwciktPmlkZW50aWZpZXIoKSk7CisgICAgZWxz
ZSBpZiAobV9leHByLT5pc1RoaXNOb2RlKCkpIHsKKyAgICAgICAgLy8gQWZ0ZXIgZ2VuZXJhdG9y
LmVuc3VyZVRoaXMgKHdoaWNoIG11c3QgYmUgaW52b2tlZCBpbiB8YmFzZXwncyBtYXRlcmlhbGl6
YXRpb24pLCB3ZSBjYW4gZW5zdXJlIHRoYXQgfHRoaXN8IGlzIGluIGxvY2FsIHRoaXMtcmVnaXN0
ZXIuCisgICAgICAgIEFTU0VSVChiYXNlKTsKKyAgICAgICAgYmFzZVZhcmlhYmxlID0gZ2VuZXJh
dG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudGhpc0lkZW50aWZpZXIsIFRo
aXNSZXNvbHV0aW9uVHlwZTo6TG9jYWwpOworICAgIH0KKwogICAgIC8vIFBhdXNlIGF0IHRoZSBh
c3NpZ25tZW50IGV4cHJlc3Npb24gZm9yIGVhY2ggZm9yLi5pbiBpdGVyYXRpb24uCiAgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9sZXhwcik7CiAKQEAgLTM4MjgsNyArMzg1NSw3IEBAIHZv
aWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xG
bG93KHByb2ZpbGVyU3RhcnRPZmZzZXQpOwogCi0gICAgICAgIGdlbmVyYXRvci5wdXNoU3RydWN0
dXJlRm9ySW5TY29wZShsb2NhbC5nZXQoKSwgZW51bWVyYXRvckluZGV4LmdldCgpLCBwcm9wZXJ0
eU5hbWUuZ2V0KCksIGVudW1lcmF0b3IuZ2V0KCksIGJhc2UuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IucHVzaFN0cnVjdHVyZUZvckluU2NvcGUobG9jYWwuZ2V0KCksIGVudW1lcmF0b3JJbmRl
eC5nZXQoKSwgcHJvcGVydHlOYW1lLmdldCgpLCBlbnVtZXJhdG9yLmdldCgpLCBiYXNlVmFyaWFi
bGUpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CiAgICAg
ICAgIGdlbmVyYXRvci5wb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKGxvY2FsLmdldCgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCAxYTQ0OGMyNTU4ZjJm
NWY5OGZkMjYwZTJmZWM1MzA4YTM2ODVkNmZiLi42ODVkYjAwMGYwMDhhYThiNTRlZGI4ZjAxYjI4
ZGMwOTQyNzJjYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aApAQCAtMTQ0Miw3ICsxNDQyLDcgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VG
dW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBlbHNl
IGlmICghcHJldmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQdWJsaWNOYW1lKCkgfHwgZG90LT5p
ZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVBy
aXZhdGVOYW1lKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIG9ubHkgbmVl
ZGVkIGJlY2F1c2Ugd2UgaGF2ZW4ndCB0YXVnaHQgdGhlIGJ5dGVjb2RlIGdlbmVyYXRvciB0byBp
bmxpbmUKICAgICAgICAgLy8gUmVmbGVjdC5hcHBseSB5ZXQuIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNjY4LgotICAgICAgICBpZiAoIWRvdC0+YmFzZSgp
LT5pc1Jlc29sdmVOb2RlKCkgfHwgc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihkb3QtPmJhc2Uo
KSktPmlkZW50aWZpZXIoKSAhPSAiUmVmbGVjdCIpCisgICAgICAgIGlmICghZG90LT5iYXNlKCkt
PmlzUmVzb2x2ZU5vZGUoKSB8fCBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGRvdC0+YmFzZSgp
KS0+aWRlbnRpZmllcigpICE9IG1fdm0ucHJvcGVydHlOYW1lcy0+UmVmbGVjdCkKICAgICAgICAg
ICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShs
b2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2
b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CiAgICAgfSBlbHNlIGlm
ICghcHJldmlvdXNCYXNlV2FzU3VwZXIgCiAgICAgICAgICYmIGRvdC0+aWRlbnRpZmllcigpID09
IG1fdm0ucHJvcGVydHlOYW1lcy0+aGFzT3duUHJvcGVydHkKQEAgLTE0NTAsMTAgKzE0NTAsOSBA
QCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgICAgICAmJiBhcmdzLT5tX2xpc3ROb2RlLT5t
X2V4cHIKICAgICAgICAgJiYgYXJncy0+bV9saXN0Tm9kZS0+bV9leHByLT5pc1Jlc29sdmVOb2Rl
KCkKICAgICAgICAgJiYgIWFyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dAotICAgICAgICAmJiBkb3Qt
PmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpCi0gICAgICAgICYmIHN0YXRpY19jYXN0PFJlc29sdmVO
b2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gIlJlZmxlY3QiKSB7CisgICAgICAg
ICYmICgoZG90LT5iYXNlKCktPmlzUmVzb2x2ZU5vZGUoKSAmJiBzdGF0aWNfY2FzdDxSZXNvbHZl
Tm9kZSo+KGRvdC0+YmFzZSgpKS0+aWRlbnRpZmllcigpICE9IG1fdm0ucHJvcGVydHlOYW1lcy0+
UmVmbGVjdCkgfHwgZG90LT5iYXNlKCktPmlzVGhpc05vZGUoKSkpIHsKICAgICAgICAgLy8gV2Ug
bWF0Y2ggdGhlIEFTVCBwYXR0ZXJuOgotICAgICAgICAvLyA8cmVzb2x2ZU5vZGU+Lmhhc093blBy
b3BlcnR5KDxyZXNvbHZlTm9kZT4pCisgICAgICAgIC8vIDxyZXNvbHZlTm9kZXx0aGlzTm9kZT4u
aGFzT3duUHJvcGVydHkoPHJlc29sdmVOb2RlPikKICAgICAgICAgLy8gaS5lOgogICAgICAgICAv
LyBvLmhhc093blByb3BlcnR5KHApCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IEhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDVkMGNhZWZiYWNmZWFmYmYwZDZk
NDc5OGZhYjE4YzBlMTJlMDFkZDMuLjYzYzVhMTNiZjU1ZTRiNzQxMTMzOGU2OGM0YjAwMDJmMDll
NDBhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTIwMCw2ICsyMDAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQWRkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3VidHJhY3QoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCb29sZWFuKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzVGhpc05vZGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcHJlYWRFeHBy
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlz
U3VwZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29s
IGlzSW1wb3J0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02MTIsNiArNjEzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRoaXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBpc1RoaXNOb2RlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwogICAgIH07CiAK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
Y2I4NTI2YTQ0MGZmZjFmYTg2N2QzNzFlOTdjYzQzNTcxZjliMWIzZC4uM2E1MzM2MDAyMjRiNDgw
ZmVjNDViMDFiNWE5YWM1MjIxMmEyMWY1OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wNS0zMCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIGZvci1pbiBz
aG91bGQgYWxsb2NhdGUgbmV3IHRlbXBvcmFyeSByZWdpc3RlciBmb3IgYmFzZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNTE5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MzcyMjA0ND4KKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0
aS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9oYXMtb3duLXByb3BlcnR5LWZvci1pbi1s
b29wLXdpdGgtaGVhcC12YXJpYWJsZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAg
ICAgICAodGVzdDEuY291bnQpOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9oYXMtb3duLXByb3BlcnR5LWZvci1pbi1sb29wLXdpdGgtdGhpcy5qczogQWRkZWQu
CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAodGVzdDEuY291bnQpOgorICAgICAgICAodGVz
dDEpOgorICAgICAgICAqIHN0cmVzcy9mb3ItaW4tYm9keS1yZXBsYWNlLWVudW1lcmFibGUuanM6
IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiBzdHJlc3MvZm9yLWluLWVudW1lcmFi
bGUtc2hhZG93LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICh0ZXN0MS5j
b3VudCk6CisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICogc3RyZXNzL2Zvci1pbi1lbnVtZXJh
YmxlLXRoaXMtYXJyb3cuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRl
c3QxKToKKwogMjAyMC0wNS0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIEpTQmlnSW50IGFsbG9jYXRpb24gc2hvdWxkIGJlIGdyYWNlZnVsIGZv
ciBPT00KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVy
dHktZm9yLWluLWxvb3Atd2l0aC1oZWFwLXZhcmlhYmxlLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvaGFzLW93bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC13aXRoLWhlYXAtdmFyaWFibGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzEyNjEzMzkwM2VkNTkwMjExZjkxOWI2MGFjMjdjMWYyYzlmYTA3NQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHkt
Zm9yLWluLWxvb3Atd2l0aC1oZWFwLXZhcmlhYmxlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0
aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Cit9
CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGxldCBvID0geworICAgICAgICBhOjIwLAorICAg
ICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAgICBkOjUwCisgICAgfTsKKworICAgIGZ1
bmN0aW9uIGNvdW50KCkgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAg
aW4gbykgeworICAgICAgICAgICAgaWYgKG8uaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAg
ICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lu
bGluZShjb3VudCk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDYwMDAwMDsgKytpKSB7Cisg
ICAgICAgIGFzc2VydChjb3VudCgpID09PSA0KTsKKyAgICB9Cit9Cit0ZXN0MSgpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFzLW93bi1wcm9wZXJ0eS1mb3ItaW4tbG9v
cC13aXRoLXRoaXMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtb3duLXByb3BlcnR5
LWZvci1pbi1sb29wLXdpdGgtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmRhYTVkMGYwY2VjZTU0NTJk
YjVjODMzZTU2OGM0Nzk0OWVjMDBjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvaGFzLW93bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC13aXRoLXRoaXMuanMKQEAgLTAs
MCArMSwyOCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcjsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgbGV0IG8gPSB7Cisg
ICAgICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAK
KyAgICB9OworCisgICAgZnVuY3Rpb24gY291bnQoKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAg
ICAgICAgZm9yIChsZXQgcCBpbiB0aGlzKSB7CisgICAgICAgICAgICBpZiAodGhpcy5oYXNPd25Q
cm9wZXJ0eShwKSkKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgNjAwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50LmNhbGwobykgPT09IDQp
OworICAgIH0KK30KK3Rlc3QxKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4t
Ym9keS1yZXBsYWNlLWVudW1lcmFibGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tYm9keS1y
ZXBsYWNlLWVudW1lcmFibGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg5ZjgxNjFkZjIyMTYyZmU2MzA2ZDM1
YmU2YWQxOThlZGM5ZThmYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1p
bi1ib2R5LXJlcGxhY2UtZW51bWVyYWJsZS5qcwpAQCAtMCwwICsxLDEwIEBACitmdW5jdGlvbiBm
b28oKSB7CisgICAgbGV0IGEwID0gWydhJywge31dOworICAgIGZvciAobGV0IHEgaW4gYTApIHsK
KyAgICAgICAgYTAgPSBuZXcgVWludDhBcnJheSgpOworICAgIH0KK30KKworZm9yIChsZXQgaT0w
OyBpPDFlMzsgaSsrKSB7CisgICAgZm9vKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9mb3ItaW4tZW51bWVyYWJsZS1zaGFkb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tZW51
bWVyYWJsZS1zaGFkb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThmY2YxMjM5OTMzYmFlZDM2NzhkYTdmNjdm
NTFjOGJhNzk2Njk2ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1l
bnVtZXJhYmxlLXNoYWRvdy5qcwpAQCAtMCwwICsxLDMzIEBACitmdW5jdGlvbiBhc3NlcnQoYikg
eworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiB0
ZXN0MSgpIHsKKyAgICBmdW5jdGlvbiBjb3VudChvLCBvMikgeworICAgICAgICBsZXQgYyA9IDA7
CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgbGV0IG8gPSBvMjsKKyAg
ICAgICAgICAgIGlmIChvMi5oYXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50
KTsKKworICAgIGxldCBvID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAg
ICBjOjQwLAorICAgICAgICBkOjUwCisgICAgfTsKKworICAgIGxldCBvMiA9IHsKKyAgICAgICAg
YToyMAorICAgIH07CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAg
ICAgIGFzc2VydChjb3VudChvLCBvMikgPT09IDEpOworICAgIH0KK30KK3Rlc3QxKCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tZW51bWVyYWJsZS10aGlzLWFycm93LmpzIGIv
SlNUZXN0cy9zdHJlc3MvZm9yLWluLWVudW1lcmFibGUtdGhpcy1hcnJvdy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YzE0M2E4MTgxYzVkMzNjYmI1MGY3NTY3MWM0YWU3MDQzZmRiYmMzCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLWluLWVudW1lcmFibGUtdGhpcy1hcnJvdy5qcwpAQCAt
MCwwICsxLDI4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yOworfQorCitsZXQgbyA9IHsKKyAgICBhOjIwLAorICAgIGI6MzAsCisg
ICAgYzo0MCwKKyAgICBkOjUwCit9OworCitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICBsZXQgY291
bnQgPSAoKSA9PiB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiB0
aGlzKSB7CisgICAgICAgICAgICBpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAg
ICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5v
SW5saW5lKGNvdW50KTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgYXNzZXJ0KGNvdW50KCkgPT09IDQpOworICAgIH0KK30KK3Rlc3QxLmNhbGwobyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>