<?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>224275</bug_id>
          
          <creation_ts>2021-04-07 02:37:44 -0700</creation_ts>
          <short_desc>[JSC] Use FixedVector more in bytecode dir and JumpTable</short_desc>
          <delta_ts>2021-04-07 14:16:16 -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>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <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>1747831</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 02:37:44 -0700</bug_when>
    <thetext>[JSC] Use FixedVector more in bytecode dir and JumpTable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747832</commentid>
    <comment_count>1</comment_count>
      <attachid>425372</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 02:41:53 -0700</bug_when>
    <thetext>Created attachment 425372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747992</commentid>
    <comment_count>2</comment_count>
      <attachid>425372</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2021-04-07 11:39:33 -0700</bug_when>
    <thetext>Comment on attachment 425372
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747997</commentid>
    <comment_count>3</comment_count>
      <attachid>425372</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-07 11:53:33 -0700</bug_when>
    <thetext>Comment on attachment 425372
Patch

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

r=me with issues addressed.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        1. Use FixedVector more in bytecode/ directory&apos;s long-living data structures.[

Accidental &apos;[&apos;.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        2. Use FixedVector in SimpleJumpTable. This involves LLInt changes because we need to access to FixedVector data from LLInt.

/access to/access/

&gt; Source/JavaScriptCore/bytecode/ObjectPropertyConditionSet.h:61
&gt; +        result.m_data-&gt;m_vector = FixedVector&lt;ObjectPropertyCondition&gt;(WTFMove(vector));

Shouldn&apos;t this be:
    result.m_data-&gt;m_vector = WTFMove(FixedVector&lt;ObjectPropertyCondition&gt;(vector));

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:616
&gt; +const RefCountedArrayStorageNonNullRefCountOffset = -(constexpr (RefCountedArray::Header::size())) + RefCountedArray::Header::refCount

Is this needed?

&gt; Source/WTF/wtf/RefCountedArray.h:280
&gt; +        static ptrdiff_t offsetOfRefCount() { return OBJECT_OFFSETOF(Header, refCount); }
&gt; +        static ptrdiff_t offsetOfLength() { return OBJECT_OFFSETOF(Header, length); }

Are these used anywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748036</commentid>
    <comment_count>4</comment_count>
      <attachid>425372</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 13:13:49 -0700</bug_when>
    <thetext>Comment on attachment 425372
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/ObjectPropertyConditionSet.h:61
&gt;&gt; +        result.m_data-&gt;m_vector = FixedVector&lt;ObjectPropertyCondition&gt;(WTFMove(vector));
&gt; 
&gt; Shouldn&apos;t this be:
&gt;     result.m_data-&gt;m_vector = WTFMove(FixedVector&lt;ObjectPropertyCondition&gt;(vector));

This becomes move-assignment without WTFMove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748037</commentid>
    <comment_count>5</comment_count>
      <attachid>425372</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 13:15:05 -0700</bug_when>
    <thetext>Comment on attachment 425372
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        1. Use FixedVector more in bytecode/ directory&apos;s long-living data structures.[
&gt; 
&gt; Accidental &apos;[&apos;.

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        2. Use FixedVector in SimpleJumpTable. This involves LLInt changes because we need to access to FixedVector data from LLInt.
&gt; 
&gt; /access to/access/

Fixed.

&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:616
&gt;&gt; +const RefCountedArrayStorageNonNullRefCountOffset = -(constexpr (RefCountedArray::Header::size())) + RefCountedArray::Header::refCount
&gt; 
&gt; Is this needed?

I added for the completeness, but maybe we never access it. Removed.

&gt;&gt; Source/WTF/wtf/RefCountedArray.h:280
&gt;&gt; +        static ptrdiff_t offsetOfLength() { return OBJECT_OFFSETOF(Header, length); }
&gt; 
&gt; Are these used anywhere?

Not used. But I think having offsetOfLength() is good since we could touch it from JIT in the future, and we know that this field is accessed by LLInt by having this function too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748062</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 14:15:10 -0700</bug_when>
    <thetext>Committed r275626 (236271@main): &lt;https://commits.webkit.org/236271@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748063</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-07 14:16:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/76365012&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425372</attachid>
            <date>2021-04-07 02:41:53 -0700</date>
            <delta_ts>2021-04-07 11:39:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224275-20210407024152.patch</filename>
            <type>text/plain</type>
            <size>31180</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDFkMzQ5MjQwYWM5NjhkYzY0MDBiYTE0Zjc2Y2U4ODU5MjNjZGQ5Li42NmUyNDIxY2JiODE3MDNl
YjQ3NzY5MDIwOGZjYTljYzJlNDliN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAyMS0wNC0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBGaXhlZFZlY3RvciBtb3JlIGluIGJ5dGVjb2RlIGRpciBh
bmQgSnVtcFRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjQyNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAxLiBVc2UgRml4ZWRWZWN0b3IgbW9yZSBpbiBieXRlY29kZS8gZGlyZWN0b3J5J3MgbG9u
Zy1saXZpbmcgZGF0YSBzdHJ1Y3R1cmVzLlsKKyAgICAgICAgMi4gVXNlIEZpeGVkVmVjdG9yIGlu
IFNpbXBsZUp1bXBUYWJsZS4gVGhpcyBpbnZvbHZlcyBMTEludCBjaGFuZ2VzIGJlY2F1c2Ugd2Ug
bmVlZCB0byBhY2Nlc3MgdG8gRml4ZWRWZWN0b3IgZGF0YSBmcm9tIExMSW50LgorCisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0IGNvbnN0KToKKyAgICAg
ICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBieXRlY29kZS9KdW1w
VGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2ltcGxlSnVtcFRhYmxlOjpjbGVhcik6CisgICAgICAg
ICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwOgorICAgICAgICAoSlND
OjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6bWVyZ2VkV2l0aCBjb25zdCk6CisgICAgICAg
IChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpkdW1wSW5Db250ZXh0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmlzVmFsaWRBbmRXYXRj
aGFibGUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0Lmg6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZCBjb25z
dCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpzaXplIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmJlZ2luIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmVuZCBjb25zdCk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6ZmluZEFyZ3VtZW50UG9zaXRpb25Gb3JMb2NhbCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmZsdXNoSW1wbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAg
KiBkZmcvREZHQ29tbW9uRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6
dmFsaWRhdGVSZWZlcmVuY2VzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkdyYXBoOjppc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZH
R3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToK
KyAgICAgICAgKiBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RhY2tMYXlvdXRQaGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVH
ZXRNeUFyZ3VtZW50QnlWYWwpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjphcmd1bWVudHNTdGFydCk6CisgICAgICAgICog
aml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6ZW1pdFNldHVwVmFyYXJn
c0ZyYW1lRmFzdENhc2UpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0Ns
b25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6Y3JlYXRl
V2l0aElubGluZUZyYW1lKToKKwogMjAyMS0wNC0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBGaXhlZFZlY3RvciBtb3JlIGluIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCBlYmM0ZGVlYWJhZGEwYTg2N2ViMWU1YWZlMzEwNmNiN2JmMDUxNDRjLi4wOWY3OWRmNjJi
YmM5NGI4Y2YzNWFjMmY4NjczNzNmYWMyZWFmMDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIx
LTA0LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pT
Q10gVXNlIEZpeGVkVmVjdG9yIG1vcmUgaW4gYnl0ZWNvZGUgZGlyIGFuZCBKdW1wVGFibGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDI3NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1JlZkNv
dW50ZWRBcnJheS5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OkhlYWRlcjo6c2l6
ZSk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6SGVhZGVyOjpvZmZzZXRPZlJlZkNv
dW50KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpIZWFkZXI6Om9mZnNldE9mTGVu
Z3RoKToKKwogMjAyMS0wNC0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEFkZCBVKzA1ODEgYW5kIFUrMDU4NSB0byBsaXN0IG9mIEFybWVu
aWFuIGNoYXJhY3RlcnMgdGhhdCBsb29rIGxpa2UgTGF0aW4gY2hhcmFjdGVycwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA4M2I5ZGUyNWRiYWVk
MDJjOGY2ZTdlNDQ5ZTVkZDBiNTVkMzcyOGVmLi5kMmI5ZmY3MTBjYzNmZTBiMGIzOTczNjExYzU3
NzJmNjIzMDg0YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcApAQCAtNDU0LDggKzQ1NCw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAg
ICAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgc291cmNlVGFibGUgPSB1bmxpbmtlZENvZGVC
bG9jay0+c3dpdGNoSnVtcFRhYmxlKGkpOwogICAgICAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJs
ZSYgZGVzdFRhYmxlID0gbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW2ldOwotICAgICAg
ICAgICAgICAgIGRlc3RUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZVRvRml0KHNvdXJjZVRhYmxl
LmJyYW5jaE9mZnNldHMuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBzdGQ6OmNvcHkoc291cmNl
VGFibGUuYnJhbmNoT2Zmc2V0cy5iZWdpbigpLCBzb3VyY2VUYWJsZS5icmFuY2hPZmZzZXRzLmVu
ZCgpLCBkZXN0VGFibGUuYnJhbmNoT2Zmc2V0cy5iZWdpbigpKTsKKyAgICAgICAgICAgICAgICBk
ZXN0VGFibGUuYnJhbmNoT2Zmc2V0cyA9IHNvdXJjZVRhYmxlLmJyYW5jaE9mZnNldHM7CiAgICAg
ICAgICAgICAgICAgZGVzdFRhYmxlLm1pbiA9IHNvdXJjZVRhYmxlLm1pbjsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmNwcAppbmRleCA1MDMyMTcyMzM4MThmY2JiMmY0YzgwZDE3NjY5MGRjY2Uy
N2JiYzU0Li43MmRkNWQ5MWI3MGNhMGE3NzkyMWE4MmQyNjE4OTRhNjU4YTJlNTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcApA
QCAtNzQsNyArNzQsNyBAQCB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dChQcmlu
dFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29ucwogICAgIGVsc2UKICAgICAg
ICAgb3V0LnByaW50KCIsIGtub3duIGNhbGxlZTogIiwgaW5Db250ZXh0KGNhbGxlZVJlY292ZXJ5
LmNvbnN0YW50KCksIGNvbnRleHQpKTsKICAgICBvdXQucHJpbnQoIiwgbnVtQXJncyt0aGlzID0g
IiwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIG91dC5wcmludCgiLCBudW1GaXh1
cCA9ICIsIGFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyk7CisgICAgb3V0LnByaW50KCIsIG51bUZpeHVwID0gIiwgbV9hcmd1bWVudHNXaXRoRml4
dXAuc2l6ZSgpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgIG91dC5wcmludCgi
LCBzdGFja09mZnNldCA9ICIsIHN0YWNrT2Zmc2V0KTsKICAgICBvdXQucHJpbnQoIiAoIiwgdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoMCksICIgbWFwcyB0byAiLCB2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbCgwKSArIHN0YWNrT2Zmc2V0LCAiKT4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaAppbmRleCA3NWY5YmIxYTg0NjhhNjFkN2Jl
OTZjM2FjOWI5MWU5NTNlYTNiZjZjLi5iNmY0ZjNjMzU4MjkxMmJjYjY1YTRkZDEzYjE2MzVkMmFh
MGUyNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5l
Q2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNh
bGxGcmFtZS5oCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RydWN0IElubGluZUNhbGxGcmFtZSB7CiAg
ICAgICAgIHJldHVybiBjYWxsZXIgPyBjYWxsZXItPmlubGluZUNhbGxGcmFtZSgpIDogbnVsbHB0
cjsKICAgICB9CiAgICAgCi0gICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3VtZW50c1dpdGhG
aXh1cDsgLy8gSW5jbHVkZXMgJ3RoaXMnIGFuZCBhcml0eSBmaXh1cHMuCisgICAgRml4ZWRWZWN0
b3I8VmFsdWVSZWNvdmVyeT4gbV9hcmd1bWVudHNXaXRoRml4dXA7IC8vIEluY2x1ZGVzICd0aGlz
JyBhbmQgYXJpdHkgZml4dXBzLgogICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IGJhc2VsaW5l
Q29kZUJsb2NrOwogICAgIENvZGVPcmlnaW4gZGlyZWN0Q2FsbGVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgKaW5kZXggNWZiODRhMWU1NGVkZWJmMGJhYjYx
OGZmN2I4MjM5ZmJhOWIzMmZmYS4uNDcwMGM1ZjI1YTgzNzczNjBhMWZkNzg4NTY5OGFlODA1OGNl
YjllMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaApAQCAt
NzgsNyArNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBTaW1wbGVKdW1wVGFi
bGUgewogICAgICAgICAvLyBGSVhNRTogVGhlIHR3byBWZWN0b3JzIGNhbiBiZSBjb21iaW5lZCBp
bnRvIG9uZSBWZWN0b3I8T2Zmc2V0TG9jYXRpb24+Ci0gICAgICAgIFZlY3RvcjxpbnQzMl90PiBi
cmFuY2hPZmZzZXRzOworICAgICAgICBGaXhlZFZlY3RvcjxpbnQzMl90PiBicmFuY2hPZmZzZXRz
OwogICAgICAgICBpbnQzMl90IG1pbiB7IElOVDMyX01JTiB9OwogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4+IGN0aU9mZnNl
dHM7CkBAIC0xMTUsNyArMTE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgICAgIHZvaWQgY2xlYXIoKQogICAgICAgICB7Ci0gICAgICAgICAgICBicmFuY2hP
ZmZzZXRzLmNsZWFyKCk7CisgICAgICAgICAgICBicmFuY2hPZmZzZXRzID0gRml4ZWRWZWN0b3I8
aW50MzJfdD4oKTsKICAgICAgICAgICAgIGN0aU9mZnNldHMuY2xlYXIoKTsKICAgICAgICAgfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAppbmRleCBmZTk5MjkzMTczM2Q3ZWYwZDE2
MjNiZThhYTFlMTNiNjJmMGE1MmE2Li4xYzU5OTM3MzMxM2JmODgxMDNjOTViZjZkZTJlMmM0ZDkx
MTQ5MDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6bWVy
Z2VkV2l0aCgKICAgICBWZWN0b3I8T2JqZWN0UHJvcGVydHlDb25kaXRpb24+IHJlc3VsdDsKICAg
ICAKICAgICBpZiAoIWlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3RvcihtX2Rh
dGEtPnZlY3Rvcik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLT5tX3ZlY3Rvci5iZWdp
bigpLCBtX2RhdGEtPm1fdmVjdG9yLnNpemUoKSk7CiAgICAgCiAgICAgZm9yIChjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiYgbmV3Q29uZGl0aW9uIDogb3RoZXIpIHsKICAgICAgICAgYm9v
bCBmb3VuZE1hdGNoID0gZmFsc2U7CkBAIC0xMjEsNyArMTIxLDcgQEAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om1lcmdlZFdpdGgoCiAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKG5ld0NvbmRpdGlvbik7CiAgICAgfQogCi0gICAgcmV0dXJu
IGNyZWF0ZShyZXN1bHQpOworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShyZXN1bHQpKTsKIH0K
IAogYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6c3RydWN0dXJlc0Vuc3VyZVZhbGlk
aXR5KCkgY29uc3QKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjbwog
ICAgIAogICAgIG91dC5wcmludCgiWyIpOwogICAgIGlmIChtX2RhdGEpCi0gICAgICAgIG91dC5w
cmludChsaXN0RHVtcEluQ29udGV4dChtX2RhdGEtPnZlY3RvciwgY29udGV4dCkpOworICAgICAg
ICBvdXQucHJpbnQobGlzdER1bXBJbkNvbnRleHQobV9kYXRhLT5tX3ZlY3RvciwgY29udGV4dCkp
OwogICAgIG91dC5wcmludCgiXSIpOwogfQogCkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZEFuZFdhdGNoYWJsZSgpIGNvbnN0CiAgICAg
aWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoT2JqZWN0
UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uIDogbV9kYXRhLT52ZWN0b3IpIHsKKyAgICBmb3Ig
KGF1dG8mIGNvbmRpdGlvbiA6IG1fZGF0YS0+bV92ZWN0b3IpIHsKICAgICAgICAgaWYgKCFjb25k
aXRpb24uaXNXYXRjaGFibGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC0zMjksNyArMzI5LDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25k
aXRpb25zKAogCiAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJldHVybmluZyBjb25kaXRpb25zOiAiLCBsaXN0RHVt
cChjb25kaXRpb25zKSwgIlxuIik7Ci0gICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0OjpjcmVhdGUoY29uZGl0aW9ucyk7CisgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0OjpjcmVhdGUoV1RGTW92ZShjb25kaXRpb25zKSk7CiB9CiAKIH0gLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAppbmRleCAzNDNhZmQwZDg3YTBhOGY5NDYw
NzM4MjI2MmE1MWFiMGY1ZmUyNjBjLi41ZDkwNTQ1OTc0ZjFlZDM3ZjI4Y2FmM2EyYWViMzQ2YTQ5
MTBhMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MCwyNSArNTEsMjUgQEAgY2xhc3MgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAK
LSAgICBzdGF0aWMgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY3JlYXRlKGNvbnN0IFZlY3Rv
cjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4mIHZlY3RvcikKKyAgICBzdGF0aWMgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQgY3JlYXRlKFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4m
JiB2ZWN0b3IpCiAgICAgewogICAgICAgICBpZiAodmVjdG9yLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpOwogICAgICAgICAKICAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgcmVzdWx0OwogICAgICAgICByZXN1bHQubV9k
YXRhID0gYWRvcHRSZWYobmV3IERhdGEoKSk7Ci0gICAgICAgIHJlc3VsdC5tX2RhdGEtPnZlY3Rv
ciA9IHZlY3RvcjsKKyAgICAgICAgcmVzdWx0Lm1fZGF0YS0+bV92ZWN0b3IgPSBGaXhlZFZlY3Rv
cjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4oV1RGTW92ZSh2ZWN0b3IpKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiAhbV9kYXRhIHx8ICFtX2RhdGEtPnZlY3Rvci5pc0VtcHR5KCk7Cisg
ICAgICAgIHJldHVybiAhbV9kYXRhIHx8ICFtX2RhdGEtPm1fdmVjdG9yLmlzRW1wdHkoKTsKICAg
ICB9CiAKICAgICBib29sIGlzVmFsaWRBbmRXYXRjaGFibGUoKSBjb25zdDsKIAotICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhID8gbV9kYXRhLT52ZWN0b3Iuc2l6ZSgpIDog
MDsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhID8gbV9kYXRhLT5t
X3ZlY3Rvci5zaXplKCkgOiAwOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiAhbV9kYXRhOwpAQCAtODAsMTMgKzgxLDEzIEBAIGNsYXNzIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0IHsKICAgICB7CiAgICAgICAgIGlmICghbV9kYXRhKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2RhdGEtPnZlY3Rvci5iZWdp
bigpOworICAgICAgICByZXR1cm4gbV9kYXRhLT5tX3ZlY3Rvci5iZWdpbigpOwogICAgIH0KICAg
ICBpdGVyYXRvciBlbmQoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2RhdGEpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1fZGF0YS0+dmVjdG9yLmVu
ZCgpOworICAgICAgICByZXR1cm4gbV9kYXRhLT5tX3ZlY3Rvci5lbmQoKTsKICAgICB9CiAgICAg
CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9yT2JqZWN0KEpTT2JqZWN0KikgY29uc3Q7
CkBAIC0xNTcsNyArMTU4LDcgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgRGF0YSgpIHsgfQogICAgICAgICAKLSAgICAgICAgVmVjdG9y
PE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiB2ZWN0b3I7CisgICAgICAgIEZpeGVkVmVjdG9yPE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uPiBtX3ZlY3RvcjsKICAgICB9OwogICAgIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggYjcyNWRkZDY2NWZkMjE1ODI2Y2ZiYzNiMmM4ZWUzZmZmZGQ3MTMyYy4uMTE3MzM0M2I2ZDlj
MDdjMmUyNDc5ZDY1YmM4ZmM0YzM1YzlmYTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU3NSw3ICs1NzUsNyBAQCBjbGFzcyBC
eXRlQ29kZVBhcnNlciB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAo
b3BlcmFuZC5vZmZzZXQoKSA8IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID49IHN0YXRp
Y19jYXN0PGludD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhp
c0FyZ3VtZW50T2Zmc2V0KCkgKyBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5z
aXplKCkpKQorICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPj0gc3RhdGljX2Nhc3Q8
aW50PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1l
bnRPZmZzZXQoKSArIGlubGluZUNhbGxGcmFtZS0+bV9hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgp
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGludCBhcmd1bWVudCA9
IFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpIC0gaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCkudG9Bcmd1bWVudCgpOwogICAgICAgICAgICAgcmV0dXJuIHN0YWNrLT5tX2FyZ3Vt
ZW50UG9zaXRpb25zW2FyZ3VtZW50XTsKQEAgLTU5OCw3ICs1OTgsNyBAQCBjbGFzcyBCeXRlQ29k
ZVBhcnNlciB7CiAgICAgICAgIGludCBudW1Bcmd1bWVudHM7CiAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9ncmFwaC5oYXNEZWJ1Z2dlckVuYWJs
ZWQoKSk7Ci0gICAgICAgICAgICBudW1Bcmd1bWVudHMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50c1dpdGhGaXh1cC5zaXplKCk7CisgICAgICAgICAgICBudW1Bcmd1bWVudHMgPSBpbmxpbmVD
YWxsRnJhbWUtPm1fYXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsKICAgICAgICAgICAgIGlmIChp
bmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICAgICAgYWRkRmx1c2hE
aXJlY3QoaW5saW5lQ2FsbEZyYW1lLCByZW1hcE9wZXJhbmQoaW5saW5lQ2FsbEZyYW1lLCBDYWxs
RnJhbWVTbG90OjpjYWxsZWUpKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlz
VmFyYXJncygpKQpAQCAtODE0Niw3ICs4MTQ2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50OwogICAg
ICAgICAgICAgaW50MzJfdCBhcmd1bWVudEluZGV4SW5jbHVkaW5nVGhpcyA9IGJ5dGVjb2RlLm1f
aW5kZXg7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJh
bWUtPmlzVmFyYXJncygpKSB7Ci0gICAgICAgICAgICAgICAgaW50MzJfdCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZp
eHVwLnNpemUoKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzV2l0aEZpeHVwID0gaW5saW5lQ2FsbEZyYW1lLT5tX2FyZ3VtZW50c1dpdGhGaXh1cC5z
aXplKCk7CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzIDwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXApCiAgICAgICAgICAgICAgICAgICAg
IGFyZ3VtZW50ID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhh
cmd1bWVudEluZGV4SW5jbHVkaW5nVGhpcykpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTg1
MjQsNyArODUyNCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVT
dGFja0VudHJ5KAogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1l
LT5pc0Nsb3N1cmVDYWxsID0gdHJ1ZTsKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmRpcmVj
dENhbGxlciA9IGJ5dGVDb2RlUGFyc2VyLT5jdXJyZW50Q29kZU9yaWdpbigpOwotICAgICAgICBt
X2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnJlc2l6ZVRvRml0KGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwKTsgLy8gU2V0IHRoZSBudW1iZXIgb2YgYXJndW1l
bnRzIGluY2x1ZGluZyB0aGlzLCBidXQgZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSByZWNvdmVy
aWVzLCB5ZXQuCisgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5tX2FyZ3VtZW50c1dpdGhGaXh1
cCA9IEZpeGVkVmVjdG9yPFZhbHVlUmVjb3Zlcnk+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
V2l0aEZpeHVwKTsgLy8gU2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluY2x1ZGluZyB0aGlz
LCBidXQgZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLCB5ZXQuCiAgICAgICAg
IG1faW5saW5lQ2FsbEZyYW1lLT5raW5kID0ga2luZDsKICAgICAgICAgCiAgICAgICAgIG1faWRl
bnRpZmllclJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAppbmRleCAwY2ZlYWQ0
MjEwZjlmMGEzYjExOWE4Zjk1Mzc3ZmFiM2U0OTNiZTVkLi5jY2Y0ZDgzNmViODE1ZTc4MDYwNTY2
MmMyOThiYjYxNjNjMzliZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
bW9uRGF0YS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIENvbW1vbkRhdGE6OnZhbGlkYXRl
UmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVmZXJlbmNlcyYgdHJhY2tlZFJlZmVyZW5jZXMpCiB7
CiAgICAgaWYgKElubGluZUNhbGxGcmFtZVNldCogc2V0ID0gaW5saW5lQ2FsbEZyYW1lcy5nZXQo
KSkgewogICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lIDogKnNl
dCkgewotICAgICAgICAgICAgZm9yIChWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA6IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwKSB7CisgICAgICAgICAgICBmb3IgKFZhbHVlUmVj
b3ZlcnkmIHJlY292ZXJ5IDogaW5saW5lQ2FsbEZyYW1lLT5tX2FyZ3VtZW50c1dpdGhGaXh1cCkg
ewogICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyeS5pc0NvbnN0YW50KCkpCiAgICAgICAgICAg
ICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmNoZWNrKHJlY292ZXJ5LmNvbnN0YW50KCkpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCAw
NGIzYWIyOTU5MmM0NzQ5MzgzMGI1MTk5N2U2MWQ1YTA4NWU2NWFjLi5hMzQ4YmZmNDQwN2MzMTBm
YWQ0NDk4MGVkYWU5MWIyY2NhZWQ4OTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcApAQCAtMTE5NCw3ICsxMTk0LDcgQEAgYm9vbCBHcmFwaDo6aXNMaXZlSW5CeXRlY29k
ZShPcGVyYW5kIG9wZXJhbmQsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICAgICAgLy8gQXJn
dW1lbnRzIGFyZSBhbHdheXMgbGl2ZS4gVGhpcyB3b3VsZCBiZSByZWR1bmRhbnQgaWYgaXQgd2Fz
bid0IGZvciBvdXIKICAgICAgICAgLy8gb3BfY2FsbF92YXJhcmdzIGlubGluaW5nLgogICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmIHJlZy5pc0FyZ3VtZW50KCkKLSAgICAgICAgICAgICYm
IHN0YXRpY19jYXN0PHNpemVfdD4ocmVnLnRvQXJndW1lbnQoKSkgPCBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkpIHsKKyAgICAgICAgICAgICYmIHN0YXRpY19jYXN0
PHNpemVfdD4ocmVnLnRvQXJndW1lbnQoKSkgPCBpbmxpbmVDYWxsRnJhbWUtPm1fYXJndW1lbnRz
V2l0aEZpeHVwLnNpemUoKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiQXJndW1lbnQgaXMgbGl2ZS5cbiIpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggMGQyYThiNTNlNGE2
MzJhOGQ4MjJlOWZlNTY2YjAwZGUzMjkwZDczZC4uNGI4OGY0MTNlYzI1OWIxMjVjMmY1OWNkNzc3
OTQ3NDFmYjdhMzRhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtOTE2
LDcgKzkxNiw3IEBAIGNsYXNzIEdyYXBoIGZpbmFsIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxl
IHsKICAgICAgICAgICAgIC8vIEFyZ3VtZW50cyBhcmUgYWx3YXlzIGxpdmUuIFRoaXMgd291bGQg
YmUgcmVkdW5kYW50IGlmIGl0IHdhc24ndCBmb3Igb3VyCiAgICAgICAgICAgICAvLyBvcF9jYWxs
X3ZhcmFyZ3MgaW5saW5pbmcuIFNlZSB0aGUgY29tbWVudCBhYm92ZS4KICAgICAgICAgICAgIGV4
Y2x1c2lvblN0YXJ0ID0gc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5j
bHVkaW5nVGhpcygwKTsKLSAgICAgICAgICAgIGV4Y2x1c2lvbkVuZCA9IHN0YWNrT2Zmc2V0ICsg
Q2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpKTsKKyAgICAgICAgICAgIGV4Y2x1c2lvbkVuZCA9IHN0
YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoaW5saW5l
Q2FsbEZyYW1lLT5tX2FyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBXZSB3aWxsIGFsd2F5cyBoYXZlIGEgInRoaXMiIGFyZ3VtZW50IGFuZCBl
eGNsdXNpb25TdGFydCBzaG91bGQgYmUgYSBzbWFsbGVyIHN0YWNrCiAgICAgICAgICAgICAvLyBv
ZmZzZXQgdGhhbiBleGNsdXNpb25FbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDcxNGI3NjAyOGMxYTQ0OTAz
MmUxY2Q4MDhlNTM4YjE1MjY1M2Y5OGEuLjk4MDU5OWIyZTU0YWY3ZDBjYTg3YTk5YzE2OTYwNjQ5
NzBhMDFlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lz
ZUxvY2FsQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZS5oCkBAIC0xMTksNyArMTE5LDcgQEAgY2xhc3MgUHJlY2lzZUxv
Y2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICAgICAgLy8gUmVhZCBhbGwgb2YgdGhlIGlu
bGluZSBhcmd1bWVudHMgYW5kIGNhbGwgZnJhbWUgaGVhZGVycyB0aGF0IHdlIGRpZG4ndCBhbHJl
YWR5IGNhcHR1cmUuCiAgICAgICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOyBpbmxpbmVD
YWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVySW5s
aW5lRnJhbWVTa2lwcGluZ1RhaWxDYWxscygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpbmxp
bmVDYWxsRnJhbWUtPmlzSW5TdHJpY3RDb250ZXh0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6
ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmxpbmVD
YWxsRnJhbWUtPm1fYXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaS0tOykKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKS5vZmZz
ZXQoKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2Fs
bEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQpAQCAtMTM4LDcgKzEzOCw3IEBAIGNsYXNzIFByZWNpc2VM
b2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJl
ck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4
dXAuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+bV9hcmd1bWVudHNXaXRoRml4dXAu
c2l6ZSgpOyBpKyspCiAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3Rlcihpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNs
dWRpbmdUaGlzKGkpLm9mZnNldCgpKSk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
LT5pc1ZhcmFyZ3MoKSkKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykpOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGNsYXNzIFByZWNpc2VMb2NhbENs
b2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpLCAiR2V0QXJndW1lbnQgaXMg
b25seSB1c2VkIGZvciBJbmxpbmVDYWxsRnJhbWUgaWYgdGhlIGNhbGwgZnJhbWUgaXMgdmFyYXJn
cy4iKTsKLSAgICAgICAgICAgIGlmIChpbmRleEluY2x1ZGluZ1RoaXMgPCBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkpCisgICAgICAgICAgICBpZiAoaW5kZXhJbmNs
dWRpbmdUaGlzIDwgaW5saW5lQ2FsbEZyYW1lLT5tX2FyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkp
CiAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGlu
ZGV4SW5jbHVkaW5nVGhpcykub2Zmc2V0KCkpKTsKICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFs
UmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCmluZGV4IDI5
Zjc1OTgxNTliODFmNTE3OTEyZTk5NzhlYmUzMDhhOThlZWVhNTMuLjk2NDliZjJhYjM3YzljNWRm
ZmJjOWQ0NjY1NDA4MTZmZTBmYmE1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIFN0
YWNrTGF5b3V0UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICBDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQpLCB0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
V2l0aEZpeHVwLnNpemUoKTsgYXJndW1lbnQtLTspIHsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUtPm1fYXJndW1lbnRzV2l0aEZpeHVwLnNpemUo
KTsgYXJndW1lbnQtLTspIHsKICAgICAgICAgICAgICAgICB1c2VkT3BlcmFuZHMuc2V0T3BlcmFu
ZChWaXJ0dWFsUmVnaXN0ZXIoCiAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhhcmd1bWVudCkub2Zmc2V0KCkgKwogICAgICAgICAgICAg
ICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSwgdHJ1ZSk7CkBAIC0xNzgsNyAr
MTc4LDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
ICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKICAgICAgICAgICAgICAgICBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciA9IGFzc2lnbih1c2VkT3BlcmFu
ZHMsIGFsbG9jYXRpb24sIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzV2l0aEZpeHVwLnNpemUoKTsgYXJndW1lbnQtLTspIHsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUtPm1fYXJndW1lbnRzV2l0aEZpeHVwLnNp
emUoKTsgYXJndW1lbnQtLTspIHsKICAgICAgICAgICAgICAgICBBcmd1bWVudFBvc2l0aW9uJiBw
b3NpdGlvbiA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9uc1sKICAgICAgICAgICAgICAgICAg
ICAgZGF0YS5hcmd1bWVudFBvc2l0aW9uU3RhcnQgKyBhcmd1bWVudF07CiAgICAgICAgICAgICAg
ICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IHBvc2l0aW9uLnNvbWVWYXJpYWJsZSgp
OwpAQCAtMTg5LDcgKzE4OSw3IEBAIGNsYXNzIFN0YWNrTGF5b3V0UGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBWYWx1ZVNvdXJjZTo6Zm9yRmx1c2hG
b3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWFjaGluZUxvY2FsKCks
IHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBbYXJndW1lbnRdID0gc291
cmNlLnZhbHVlUmVjb3ZlcnkoKTsKKyAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPm1f
YXJndW1lbnRzV2l0aEZpeHVwW2FyZ3VtZW50XSA9IHNvdXJjZS52YWx1ZVJlY292ZXJ5KCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlu
bGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCA9PSAhIWRhdGEuY2FsbGVlVmFyaWFibGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggMzVkZWRhYjRlMGUx
NjY3MThkODMyNmI5MjYyY2E5YjQyYWIxMTZlYy4uZjU3MTc1MmRiZDNhZjA0NTlhZTI4YTg0YmE3
ZTY5ZTQzMjFlMzUxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3Bw
CkBAIC05Miw5ICs5Miw5IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6
UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRSZWdpc3Rlci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciArPSBsb2NhbHNPZmZzZXQ7CiAgICAgICAgIAotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNX
aXRoRml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKLSAgICAgICAgICAgIGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwW2FyZ3VtZW50XSA9Ci0gICAgICAgICAgICAgICAg
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXBbYXJndW1lbnRdLndpdGhMb2NhbHNP
ZmZzZXQobG9jYWxzT2Zmc2V0KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlu
bGluZUNhbGxGcmFtZS0+bV9hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tID4g
MTspIHsKKyAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+bV9hcmd1bWVudHNXaXRoRml4dXBb
YXJndW1lbnRdID0KKyAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPm1fYXJndW1lbnRz
V2l0aEZpeHVwW2FyZ3VtZW50XS53aXRoTG9jYWxzT2Zmc2V0KGxvY2Fsc09mZnNldCk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNh
bGwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCBkZDYyMTY1NDBhZWRhZDFhNmRjMWM0MzVjZmQ0ZGU5OTQyY2VlMTI4Li5lMWJiMWQ3NGVh
MGY3YjA0NjIyZDlkOWJhZTdmMjA5ZDJhMmZhOWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC01NDQ3LDcgKzU0NDcsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICBUeXBlZFBvaW50ZXIgYmFzZTsKICAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZSkgewogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPiAxKQotICAgICAgICAgICAgICAgIGJhc2UgPSBhZGRyZXNz
Rm9yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwWzBdLnZpcnR1YWxSZWdpc3Rl
cigpKTsKKyAgICAgICAgICAgICAgICBiYXNlID0gYWRkcmVzc0ZvcihpbmxpbmVDYWxsRnJhbWUt
Pm1fYXJndW1lbnRzV2l0aEZpeHVwWzBdLnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBiYXNlID0gYWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudEluY2x1ZGluZ1RoaXMoMCkpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDcwMTJiN2U2ZTNjOWU1ZGI5ZjMxYTExNTRlYzMx
MzRlNTZlZGI1YmQuLjY4N2EyYTE3NWU4MTJjMWUzNzk0YWVlOTFiZmIyNjNjODhmMWYyYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMTU5NSw5
ICsxNTk1LDkgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVy
IHsKICAgICB7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0
dXJuIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApKTsKLSAgICAg
ICAgaWYgKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKSA8PSAxKQor
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5tX2FyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkg
PD0gMSkKICAgICAgICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgwKTsKLSAg
ICAgICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
V2l0aEZpeHVwWzFdOworICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5ID0gaW5saW5lQ2Fs
bEZyYW1lLT5tX2FyZ3VtZW50c1dpdGhGaXh1cFsxXTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
cmVjb3ZlcnkudGVjaG5pcXVlKCkgPT0gRGlzcGxhY2VkSW5KU1N0YWNrKTsKICAgICAgICAgcmV0
dXJuIHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKaW5kZXggMDQ4YWY3NDQ5ZjQyMDFm
ZTNmMGFiODFkOTZiMjcyNzhjMjA4ZmViOC4uZTQxNTdmOGFjMjBlNDYyNTEwZmIxZmE0ODM3YWM3
MTAzYTdkMGYzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZh
cmFyZ3NGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFy
Z3NGcmFtZS5jcHAKQEAgLTEyMiw4ICsxMjIsOCBAQCB2b2lkIGVtaXRTZXR1cFZhcmFyZ3NGcmFt
ZUZhc3RDYXNlKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBudW1Vc2VkU2xvdAog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlY292ZXJ5ID0gVmFs
dWVSZWNvdmVyeTo6Y29uc3RhbnQoanNOdW1iZXIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkgPiAxKQotICAgICAgICAgICAgZmlyc3RBcmd1
bWVudFJlZyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwWzFdLnZpcnR1YWxS
ZWdpc3RlcigpOworICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5tX2FyZ3VtZW50c1dpdGhG
aXh1cC5zaXplKCkgPiAxKQorICAgICAgICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IGlubGluZUNh
bGxGcmFtZS0+bV9hcmd1bWVudHNXaXRoRml4dXBbMV0udmlydHVhbFJlZ2lzdGVyKCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFsUmVnaXN0ZXIo
MCk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBmZmM0ZjYyOTM5ZWNlNzQ2MmUzOTc0MDllNzNm
MWJkYzgxOGRkMGZjLi5kMDYwNTJjNGRjY2M4ZjA2NDQ5ZGYwMTExY2NjY2RmMGRkZjkwMzlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC02MTMsNiArNjEzLDkgQEAgY29uc3QgQmxhY2tUaHJlc2hvbGQgPSBjb25zdGV4
cHIgYmxhY2tUaHJlc2hvbGQKIGNvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IFZlY3Rvcjo6bV9i
dWZmZXIKIGNvbnN0IFZlY3RvclNpemVPZmZzZXQgPSBWZWN0b3I6Om1fc2l6ZQogCitjb25zdCBS
ZWZDb3VudGVkQXJyYXlTdG9yYWdlTm9uTnVsbFJlZkNvdW50T2Zmc2V0ID0gLShjb25zdGV4cHIg
KFJlZkNvdW50ZWRBcnJheTo6SGVhZGVyOjpzaXplKCkpKSArIFJlZkNvdW50ZWRBcnJheTo6SGVh
ZGVyOjpyZWZDb3VudAorY29uc3QgUmVmQ291bnRlZEFycmF5U3RvcmFnZU5vbk51bGxTaXplT2Zm
c2V0ID0gLShjb25zdGV4cHIgKFJlZkNvdW50ZWRBcnJheTo6SGVhZGVyOjpzaXplKCkpKSArIFJl
ZkNvdW50ZWRBcnJheTo6SGVhZGVyOjpsZW5ndGgKKwogIyBTb21lIGNvbW1vbiB1dGlsaXRpZXMu
CiBtYWNybyBjcmFzaCgpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KaW5kZXggMWI0NjExMzkyNTBiOTkzZjZmYjY3ZTU0NWJjM2RjYjI2MDAxMWNhOC4uZDAzOTg0
NTA2NTQ1MjEzN2RiMzEyMWQzNDkwNjVhZWM4ZTMxZWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAg
LTIwMzksOSArMjAzOSwxMCBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2ltbSwgT3BTd2l0
Y2hJbW0sIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgIGFkZHAgdDMsIHQy
CiAgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKICAgICBzdWJpIFNp
bXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKLSAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxl
OjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxU
aHJvdWdoCi0gICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3QyXSwgdDMKLSAgICBsb2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBsb2Fk
cCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdl
ICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgorICAgIGJ0cHogdDIsIC5vcFN3aXRj
aEltbUZhbGxUaHJvdWdoCisgICAgYmlhZXEgdDAsIFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25O
dWxsU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZGkgW3Qy
LCB0MCwgNF0sIHQxCiAgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKICAgICBk
aXNwYXRjaEluZGlyZWN0KHQxKQogCkBAIC0yMDc4LDggKzIwNzksOSBAQCBsbGludE9wV2l0aEp1
bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwg
ZGlzcGF0Y2gpCiAgICAgbG9hZGIgW3QwXSwgdDAKIC5vcFN3aXRjaENoYXJSZWFkeToKICAgICBz
dWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKLSAgICBiaWFlcSB0MCwgU2ltcGxlSnVt
cFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENo
YXJGYWxsVGhyb3VnaAotICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyAr
IFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpi
cmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6
bV9kYXRhW3QyXSwgdDIKKyAgICBidHB6IHQyLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAg
ICBiaWFlcSB0MCwgUmVmQ291bnRlZEFycmF5U3RvcmFnZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwg
Lm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCiAgICAg
YnRpeiB0MSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgZGlzcGF0Y2hJbmRpcmVjdCh0
MSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KaW5kZXggMDdmY2Q2OTM5YTA1YjFhY2Y1NGZlNmYwYzIzZjZmYjkyMGMwOGY0
Zi4uMzliNTliYzhkY2MzNWI3YmVmOTA5NWY4NjQ4Yjc4YzYxY2E4MGI4MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
QEAgLTIxNTksOSArMjE1OSwxMCBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2ltbSwgT3BT
d2l0Y2hJbW0sIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgIGFkZHAgdDMs
IHQyCiAgICAgYnFiIHQxLCBudW1iZXJUYWcsIC5vcFN3aXRjaEltbU5vdEludAogICAgIHN1Ymkg
U2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MQotICAgIGJpYWVxIHQxLCBTaW1wbGVKdW1wVGFi
bGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFs
bFRocm91Z2gKLSAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0
b3JCdWZmZXJPZmZzZXRbdDJdLCB0MwotICAgIGxvYWRpcyBbdDMsIHQxLCA0XSwgdDEKKyAgICBs
b2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9y
YWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgorICAgIGJ0cHogdDIsIC5vcFN3
aXRjaEltbUZhbGxUaHJvdWdoCisgICAgYmlhZXEgdDEsIFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VO
b25OdWxsU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZGlz
IFt0MiwgdDEsIDRdLCB0MQogICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAg
ICAgZGlzcGF0Y2hJbmRpcmVjdCh0MSkKIApAQCAtMjE5OCw4ICsyMTk5LDkgQEAgbGxpbnRPcFdp
dGhKdW1wKG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRjaENoYXIsIG1hY3JvIChzaXplLCBnZXQsIGp1
bXAsIGRpc3BhdGNoKQogICAgIGxvYWRiIFt0MV0sIHQwCiAub3BTd2l0Y2hDaGFyUmVhZHk6CiAg
ICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCi0gICAgYmlhZXEgdDAsIFNpbXBs
ZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0
Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNl
dHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJs
ZTo6YnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJy
YXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgYnRweiB0MiwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CisgICAgYmlhZXEgdDAsIFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldFt0
Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGxvYWRpcyBbdDIsIHQwLCA0XSwgdDEK
ICAgICBidGl6IHQxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBkaXNwYXRjaEluZGly
ZWN0KHQxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVk
QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5jcHAKaW5kZXggZDc5ZDRhYmYyNzQ5OTRjZTgzYWQ5NWEyOTY4YTg3ZDJkZDA4NzlmOC4u
NTQ5ZGY4YjJlMDJmZDgxZDhhYTRhMTc2ZDg0MDM1MjU1MGZiYWIyZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0xMDYsNyAr
MTA2LDcgQEAgQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZVdpdGhJbmxp
bmVGcmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgICAgIHJlc3VsdCA9IGNy
ZWF0ZUVtcHR5KGdsb2JhbE9iamVjdCwgY2FsbGVlLCBsZW5ndGgpOwogCiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCi0gICAgICAgICAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGksIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
V2l0aEZpeHVwW2kgKyAxXS5yZWNvdmVyKHRhcmdldEZyYW1lKSk7CisgICAgICAgICAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGksIGlubGluZUNhbGxGcmFtZS0+
bV9hcmd1bWVudHNXaXRoRml4dXBbaSArIDFdLnJlY292ZXIodGFyZ2V0RnJhbWUpKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxlbmd0aCA9IHRhcmdldEZyYW1lLT5hcmd1bWVudENv
dW50KCk7CiAgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVFbXB0eShnbG9iYWxPYmplY3QsIGNh
bGxlZSwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJh
eS5oIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKaW5kZXggYjA3OWRmNzZjMmJj
OTI2NmFkMmIxOTIzMGY5ZjMxNjNhYjQzYWQ4NS4uZmU2M2VlY2FkZGJmZWYzMmM0Y2Y1ZjExZDY4
YWI4ZDg2OThmNDZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5
LmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKQEAgLTI3MSwxMCArMjcx
LDEzIEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgICAgIHVuc2lnbmVkIHJlZkNvdW50
OwogICAgICAgICB1bnNpZ25lZCBsZW5ndGg7CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgc2l6
ZV90IHNpemUoKQorICAgICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXplKCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIChzaXplb2YoSGVhZGVyKSArIDcpICYgfjc7CiAgICAg
ICAgIH0KKworICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVmQ291bnQoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSGVhZGVyLCByZWZDb3VudCk7IH0KKyAgICAgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkxlbmd0aCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihIZWFk
ZXIsIGxlbmd0aCk7IH0KICAgICAgICAgCiAgICAgICAgIFQqIHBheWxvYWQoKQogICAgICAgICB7
Cg==
</data>
<flag name="review"
          id="445310"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>