<?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>238823</bug_id>
          
          <creation_ts>2022-04-05 11:33:08 -0700</creation_ts>
          <short_desc>Call Structure::get instead of Structure::getConcurrently on the mutator thread</short_desc>
          <delta_ts>2022-04-06 12:37:17 -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>JavaScriptCore</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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1858478</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-04-05 11:33:08 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858670</commentid>
    <comment_count>1</comment_count>
      <attachid>456774</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-04-05 18:58:42 -0700</bug_when>
    <thetext>Created attachment 456774
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858675</commentid>
    <comment_count>2</comment_count>
      <attachid>456774</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-05 19:56:55 -0700</bug_when>
    <thetext>Comment on attachment 456774
patch

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

r=me

&gt; Source/JavaScriptCore/runtime/JSObject.h:1418
&gt; +    case Concurrency::MainThread:

Let&apos;s add `ASSERT(!isCompilationThread() &amp;&amp; !Thread::mayBeGCThread());` assertion.

&gt; Source/JavaScriptCore/runtime/Structure.h:520
&gt; +        case Concurrency::MainThread:

Let&apos;s add `ASSERT(!isCompilationThread() &amp;&amp; !Thread::mayBeGCThread());` assertion.

&gt; Source/JavaScriptCore/runtime/Structure.h:530
&gt; +        case Concurrency::MainThread:

Let&apos;s add `ASSERT(!isCompilationThread() &amp;&amp; !Thread::mayBeGCThread());` assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858924</commentid>
    <comment_count>3</comment_count>
      <attachid>456839</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-04-06 11:05:23 -0700</bug_when>
    <thetext>Created attachment 456839
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858973</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-06 12:36:48 -0700</bug_when>
    <thetext>Committed r292493 (249341@main): &lt;https://commits.webkit.org/249341@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456839.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858976</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-06 12:37:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/91370257&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456774</attachid>
            <date>2022-04-05 18:58:42 -0700</date>
            <delta_ts>2022-04-06 11:05:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>40349</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjkyNDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBA
CisyMDIyLTA0LTA1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENhbGwgU3RydWN0dXJlOjpnZXQgaW5zdGVhZCBvZiBTdHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRs
eSBvbiB0aGUgbXV0YXRvciB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODgyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlIHRyeSB0byBjYWxsIFN0cnVjdHVyZTo6Z2V0IGluc3RlYWQgb2Yg
U3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkgd2hlbgorICAgICAgICB3ZSBrbm93IGZvciBzdXJl
IHdlJ3JlIG9uIHRoZSBtYWluIHRocmVhZC4gVGhpcyBpcyBiZWNhdXNlIGdldENvbmN1cnJlbnRs
eQorICAgICAgICBpcyBzbG93ZXIgdGhhbiBnZXQuCisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y291bGRTdGlsbFN1Y2NlZWQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlOjppbnN0YWxsKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0UHJvcGVydHlDb25kaXRpb246OnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eUFzc3VtaW5nSW1w
dXJlUHJvcGVydHlXYXRjaHBvaW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVy
dHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxW
YWxpZCBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjpzdHJ1
Y3R1cmVFbnN1cmVzVmFsaWRpdHkgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFBy
b3BlcnR5Q29uZGl0aW9uLmg6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6
c3RydWN0dXJlc0Vuc3VyZVZhbGlkaXR5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVD
b25kaXRpb25zRm9yUHJvcGVydHlNaXNzKToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVDb25kaXRp
b25zRm9yUHJvcGVydHlTZXR0ZXJNaXNzKToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVDb25kaXRp
b25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXQpOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUNvbmRp
dGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0eUhpdEN1c3RvbSk6CisgICAgICAgIChKU0M6OmdlbmVy
YXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZUVxdWl2YWxlbmNlQ29uY3VycmVudGx5KToKKyAgICAg
ICAgKEpTQzo6Z2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlNaXNzQ29uY3VycmVudGx5KToK
KyAgICAgICAgKEpTQzo6Z2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlTZXR0ZXJNaXNzQ29u
Y3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVDb25kaXRpb25Gb3JTZWxmRXF1aXZh
bGVuY2UpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6c3RydWN0
dXJlc0Vuc3VyZVZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNW
YWxpZEFuZFdhdGNoYWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaDoKKyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0eUNv
bmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFs
aWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6CisgICAgICAgIChKU0M6
OndhdGNoYWJpbGl0eVRvQ29uY3VycmVuY3kpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRp
dGlvbjo6aXNTdGlsbFZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRp
b246OmlzV2F0Y2hhYmxlV2hlblZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlD
b25kaXRpb246OmlzV2F0Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6aXNXYXRjaGFibGUgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmg6CisgICAgICAgICogZGZn
L0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjppbnN0YWxsKToKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpj
aGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBsYW5Mb2FkKToKKyAg
ICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjp0cnlGb2xkQXNQdXRCeU9mZnNldCk6CisgICAgICAg
ICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludEFkYXB0b3I6Omhhc0JlZW5JbnZhbGlkYXRlZCk6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6d2F0Y2hD
b25kaXRpb24pOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKiBydW50
aW1lL0NhY2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6
CisgICAgICAgIChKU0M6OkNhY2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludDo6aW5zdGFsbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsU3BlY2llc1dhdGNocG9p
bnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmdldERpcmVjdCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVTcGVj
aWFsUHJvcGVydHlTbG93KToKKwogMjAyMi0wNC0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFN0cmljdGx5IGFubm90YXRlIHBvaW50ZXJzIHdp
dGggVHJ1c3RlZEltbVB0ciBpbiBDQ2FsbEhlbHBlcnMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI5MjQ0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzE3LDcgKzcxNyw3IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y291bGRTdGlsbFN1Y2NlZWQo
KSBjb24KICAgICAgICAgICAgIGlmICghY29uZGl0aW9uLmlzV2F0Y2hhYmxlQXNzdW1pbmdJbXB1
cmVQcm9wZXJ0eVdhdGNocG9pbnQoUHJvcGVydHlDb25kaXRpb246OldhdGNoYWJpbGl0eUVmZm9y
dDo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1
cmVzVmFsaWRpdHlBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKQorICAgICAgICAg
ICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnQoQ29uY3VycmVuY3k6Ok1haW5UaHJlYWQpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTE4MDMsNyArMTgwMyw3IEBA
IHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgLy8gRm9y
IG5vdywgd2Ugb25seSBhbGxvdyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxlLgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9IFByb3Bl
cnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSk7CiAKLSAgICAgICAgaWYgKCFjb25kaXRpb24uc3Ry
dWN0dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkg
eworICAgICAgICBpZiAoIWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHlBc3N1bWlu
Z0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChDb25jdXJyZW5jeTo6TWFpblRocmVhZCkpIHsKICAg
ICAgICAgICAgIC8vIFRoZSByZWFzb24gd2h5IHRoaXMgY2Fubm90IGhhcHBlbiBpcyB0aGF0IHdl
IHJlcXVpcmUgdGhhdCBQb2x5bW9ycGhpY0FjY2VzcyBjYWxscwogICAgICAgICAgICAgLy8gQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGUoKSBvbmx5IGFmdGVyIGl0IGhhcyB2ZXJpZmllZCB0aGF0CiAgICAg
ICAgICAgICAvLyBBY2Nlc3NDYXNlOjpjb3VsZFN0aWxsU3VjY2VlZCgpIHJldHVybmVkIHRydWUu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UuY3BwCShyZXZpc2lvbiAyOTI0NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDEzICs0NCwxMyBAQCB2b2lkIEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwCiAKIHZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRj
aHBvaW50QmFzZTo6aW5zdGFsbChWTSYgdm0pCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9rZXku
aXNXYXRjaGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9rZXkuaXNXYXRjaGFibGUoUHJv
cGVydHlDb25kaXRpb246Ok1ha2VOb0NoYW5nZXMpKTsKIAogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gbV9rZXkub2JqZWN0KCktPnN0cnVjdHVyZSh2bSk7CiAKICAgICBzdHJ1Y3R1cmUtPmFk
ZFRyYW5zaXRpb25XYXRjaHBvaW50KCZtX3N0cnVjdHVyZVdhdGNocG9pbnQpOwogCi0gICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkobV9rZXkudWlk
KCkpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBtX2tl
eS51aWQoKSk7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gc3RydWN0dXJlLT5wcm9wZXJ0eVJl
cGxhY2VtZW50V2F0Y2hwb2ludFNldChvZmZzZXQpOwogICAgIHNldC0+YWRkKCZtX3Byb3BlcnR5
V2F0Y2hwb2ludCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMjkyNDQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBM
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZQogCiB2b2lkIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsbChWTSYgdm0pCiB7Ci0gICAg
UkVMRUFTRV9BU1NFUlQobV9rZXkuaXNXYXRjaGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV9rZXkuaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246Ok1ha2VOb0NoYW5nZXMpKTsKIAog
ICAgIG1fa2V5Lm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2lu
dCh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmNwcAkocmV2aXNpb24gMjkyNDQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDEyIEBAIHZvaWQgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb246OmR1bXAoUHJpbnQKICAgICBkdW1wSW5Db250ZXh0KG91dCwgbnVsbHB0cik7
CiB9CiAKLWJvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb246OnN0cnVjdHVyZUVuc3VyZXNWYWxp
ZGl0eUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkgY29uc3QKK2Jvb2wgT2JqZWN0
UHJvcGVydHlDb25kaXRpb246OnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eUFzc3VtaW5nSW1wdXJl
UHJvcGVydHlXYXRjaHBvaW50KENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5KSBjb25zdAogewogICAg
IGlmICghKnRoaXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gbV9j
b25kaXRpb24uaXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQobV9v
YmplY3QtPnN0cnVjdHVyZSgpLCBudWxscHRyKTsKKyAgICByZXR1cm4gbV9jb25kaXRpb24uaXNT
dGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoY29uY3VycmVuY3ksIG1f
b2JqZWN0LT5zdHJ1Y3R1cmUoKSwgbnVsbHB0cik7CiB9CiAKIGJvb2wgT2JqZWN0UHJvcGVydHlD
b25kaXRpb246OnZhbGlkaXR5UmVxdWlyZXNJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0CkBAIC02Nyw0NCArNjcsNDQgQEAgYm9vbCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbjo6dmFsaWRpdHlSZQogICAgIHJldHVybiB2YWxpZGl0eVJlcXVpcmVzSW1w
dXJlUHJvcGVydHlXYXRjaHBvaW50KG1fb2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiB9CiAKLWJvb2wg
T2JqZWN0UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50KFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAorYm9vbCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoQ29uY3VycmVuY3kgY29uY3VycmVuY3ksIFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAog
ewotICAgIHJldHVybiBtX2NvbmRpdGlvbi5pc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3Bl
cnR5V2F0Y2hwb2ludChzdHJ1Y3R1cmUsIG1fb2JqZWN0KTsKKyAgICByZXR1cm4gbV9jb25kaXRp
b24uaXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoY29uY3VycmVu
Y3ksIHN0cnVjdHVyZSwgbV9vYmplY3QpOwogfQogCi1ib29sIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpIGNvbnN0
Citib29sIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVy
ZVByb3BlcnR5V2F0Y2hwb2ludChDb25jdXJyZW5jeSBjb25jdXJyZW5jeSkgY29uc3QKIHsKICAg
ICBpZiAoISp0aGlzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gaXNTdGls
bFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQobV9vYmplY3QtPnN0cnVjdHVy
ZSgpKTsKKyAgICByZXR1cm4gaXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNo
cG9pbnQoY29uY3VycmVuY3ksIG1fb2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiB9CiAKIAotYm9vbCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkKFN0cnVjdHVyZSogc3RydWN0dXJl
KSBjb25zdAorYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkKENvbmN1
cnJlbmN5IGNvbmN1cnJlbmN5LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9jb25kaXRpb24uaXNTdGlsbFZhbGlkKHN0cnVjdHVyZSwgbV9vYmplY3QpOworICAg
IHJldHVybiBtX2NvbmRpdGlvbi5pc1N0aWxsVmFsaWQoY29uY3VycmVuY3ksIHN0cnVjdHVyZSwg
bV9vYmplY3QpOwogfQogCi1ib29sIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFs
aWQoKSBjb25zdAorYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkKENv
bmN1cnJlbmN5IGNvbmN1cnJlbmN5KSBjb25zdAogewogICAgIGlmICghKnRoaXMpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gaXNTdGlsbFZhbGlkKG1fb2JqZWN0LT5z
dHJ1Y3R1cmUoKSk7CisgICAgcmV0dXJuIGlzU3RpbGxWYWxpZChjb25jdXJyZW5jeSwgbV9vYmpl
Y3QtPnN0cnVjdHVyZSgpKTsKIH0KIAotYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6c3Ry
dWN0dXJlRW5zdXJlc1ZhbGlkaXR5KFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAorYm9vbCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6c3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KENvbmN1cnJl
bmN5IGNvbmN1cnJlbmN5LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9jb25kaXRpb24uaXNTdGlsbFZhbGlkKHN0cnVjdHVyZSk7CisgICAgcmV0dXJuIG1fY29u
ZGl0aW9uLmlzU3RpbGxWYWxpZChjb25jdXJyZW5jeSwgc3RydWN0dXJlKTsKIH0KIAotYm9vbCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6c3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KCkgY29uc3QK
K2Jvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb246OnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShD
b25jdXJyZW5jeSBjb25jdXJyZW5jeSkgY29uc3QKIHsKICAgICBpZiAoISp0aGlzKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIHN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0
eShtX29iamVjdC0+c3RydWN0dXJlKCkpOworICAgIHJldHVybiBzdHJ1Y3R1cmVFbnN1cmVzVmFs
aWRpdHkoY29uY3VycmVuY3ksIG1fb2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiB9CiAKIGJvb2wgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb246OmlzV2F0Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdh
dGNocG9pbnQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJv
cGVydHlDb25kaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaAkocmV2aXNpb24gMjkyNDQ0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gQ2hl
Y2tzIGlmIHRoZSBvYmplY3QncyBzdHJ1Y3R1cmUgY2xhaW1zIHRoYXQgdGhlIHByb3BlcnR5IHdv
bid0IGJlIGludGVyY2VwdGVkLiBWYWxpZGl0eQogICAgIC8vIGRvZXMgbm90IHJlcXVpcmUgd2F0
Y2hwb2ludHMgb24gdGhlIG9iamVjdC4KLSAgICBib29sIHN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0
eUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkgY29uc3Q7CisgICAgYm9vbCBzdHJ1
Y3R1cmVFbnN1cmVzVmFsaWRpdHlBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChDb25j
dXJyZW5jeSkgY29uc3Q7CiAgICAgCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIG5lZWQgYW4g
aW1wdXJlIHByb3BlcnR5IHdhdGNocG9pbnQgdG8gZW5zdXJlIHZhbGlkaXR5IGV2ZW4gaWYKICAg
ICAvLyBpc1N0aWxsVmFsaWRBY2NvcmRpbmdUb1N0cnVjdHVyZSgpIHJldHVybmVkIHRydWUuCkBA
IC0yMTMsMzYgKzIxMywzNiBAQCBwdWJsaWM6CiAKICAgICAvLyBDaGVja3MgaWYgdGhlIGNvbmRp
dGlvbiBzdGlsbCBob2xkcyBzZXR0aW5nIGFzaWRlIHRoZSBuZWVkIGZvciBhbiBpbXB1cmUgcHJv
cGVydHkgd2F0Y2hwb2ludC4KICAgICAvLyBWYWxpZGl0eSBtaWdodCBzdGlsbCByZXF1aXJlIHdh
dGNocG9pbnRzIG9uIHRoZSBvYmplY3QuCi0gICAgYm9vbCBpc1N0aWxsVmFsaWRBc3N1bWluZ0lt
cHVyZVByb3BlcnR5V2F0Y2hwb2ludChTdHJ1Y3R1cmUqKSBjb25zdDsKLSAgICBib29sIGlzU3Rp
bGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkgY29uc3Q7CisgICAgYm9v
bCBpc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChDb25jdXJyZW5j
eSwgU3RydWN0dXJlKikgY29uc3Q7CisgICAgYm9vbCBpc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVy
ZVByb3BlcnR5V2F0Y2hwb2ludChDb25jdXJyZW5jeSkgY29uc3Q7CiAKICAgICAvLyBDaGVja3Mg
aWYgdGhlIGNvbmRpdGlvbiBzdGlsbCBob2xkcy4gTWF5IGNvbnNlcnZhdGl2ZWx5IHJldHVybiBm
YWxzZSwgaWYgdGhlIG9iamVjdCBhbmQKICAgICAvLyBzdHJ1Y3R1cmUgYWxvbmUgZG9uJ3QgZ3Vh
cmFudGVlIHRoZSBjb25kaXRpb24uIE5vdGUgdGhhdCB0aGlzIG1heSByZXR1cm4gdHJ1ZSBpZiB0
aGUKICAgICAvLyBjb25kaXRpb24gc3RpbGwgcmVxdWlyZXMgc29tZSB3YXRjaHBvaW50cyBvbiB0
aGUgb2JqZWN0IGluIGFkZGl0aW9uIHRvIGNoZWNraW5nIHRoZQogICAgIC8vIHN0cnVjdHVyZS4g
SWYgeW91IHdhbnQgdG8gY2hlY2sgaWYgdGhlIGNvbmRpdGlvbiBob2xkcyBieSB1c2luZyB0aGUg
c3RydWN0dXJlIGFsb25lLAogICAgIC8vIHVzZSBzdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHkoKS4K
LSAgICBib29sIGlzU3RpbGxWYWxpZChTdHJ1Y3R1cmUqKSBjb25zdDsKLSAgICBib29sIGlzU3Rp
bGxWYWxpZCgpIGNvbnN0OworICAgIGJvb2wgaXNTdGlsbFZhbGlkKENvbmN1cnJlbmN5LCBTdHJ1
Y3R1cmUqKSBjb25zdDsKKyAgICBib29sIGlzU3RpbGxWYWxpZChDb25jdXJyZW5jeSkgY29uc3Q7
CiAgICAgCiAgICAgLy8gU2hvcnRoYW5kIGZvciBjb25kaXRpb24oKS5pc1N0aWxsVmFsaWQoc3Ry
dWN0dXJlKS4KLSAgICBib29sIHN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShTdHJ1Y3R1cmUqKSBj
b25zdDsKLSAgICBib29sIHN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eSgpIGNvbnN0OworICAgIGJv
b2wgc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KENvbmN1cnJlbmN5LCBTdHJ1Y3R1cmUqKSBjb25z
dDsKKyAgICBib29sIHN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShDb25jdXJyZW5jeSkgY29uc3Q7
CiAgICAgCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IGl0J3Mgc3RpbGwgdmFsaWQgYW5kIHdlIGNv
dWxkIGVuZm9yY2UgdmFsaWRpdHkgYnkgc2V0dGluZyBhIHRyYW5zaXRpb24KICAgICAvLyB3YXRj
aHBvaW50IG9uIHRoZSBzdHJ1Y3R1cmUgYW5kIHBvc3NpYmx5IGFuIGltcHVyZSBwcm9wZXJ0eSB3
YXRjaHBvaW50LgogICAgIGJvb2wgaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0
Y2hwb2ludCgKICAgICAgICAgU3RydWN0dXJlKiwKLSAgICAgICAgUHJvcGVydHlDb25kaXRpb246
OldhdGNoYWJpbGl0eUVmZm9ydCA9IFByb3BlcnR5Q29uZGl0aW9uOjpNYWtlTm9DaGFuZ2VzKSBj
b25zdDsKKyAgICAgICAgUHJvcGVydHlDb25kaXRpb246OldhdGNoYWJpbGl0eUVmZm9ydCkgY29u
c3Q7CiAgICAgYm9vbCBpc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50
KAotICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0ID0gUHJvcGVy
dHlDb25kaXRpb246Ok1ha2VOb0NoYW5nZXMpIGNvbnN0OworICAgICAgICBQcm9wZXJ0eUNvbmRp
dGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0KSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWVhbnMgdGhh
dCBpdCdzIHN0aWxsIHZhbGlkIGFuZCB3ZSBjb3VsZCBlbmZvcmNlIHZhbGlkaXR5IGJ5IHNldHRp
bmcgYSB0cmFuc2l0aW9uCiAgICAgLy8gd2F0Y2hwb2ludCBvbiB0aGUgc3RydWN0dXJlLCBhbmQg
YSB2YWx1ZSBjaGFuZ2Ugd2F0Y2hwb2ludCBpZiB3ZSdyZSBFcXVpdmFsZW5jZS4KICAgICBib29s
IGlzV2F0Y2hhYmxlKAogICAgICAgICBTdHJ1Y3R1cmUqLAotICAgICAgICBQcm9wZXJ0eUNvbmRp
dGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0ID0gUHJvcGVydHlDb25kaXRpb246Ok1ha2VOb0NoYW5n
ZXMpIGNvbnN0OworICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0
KSBjb25zdDsKICAgICBib29sIGlzV2F0Y2hhYmxlKAotICAgICAgICBQcm9wZXJ0eUNvbmRpdGlv
bjo6V2F0Y2hhYmlsaXR5RWZmb3J0ID0gUHJvcGVydHlDb25kaXRpb246Ok1ha2VOb0NoYW5nZXMp
IGNvbnN0OworICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0KSBj
b25zdDsKICAgICAKICAgICBib29sIHdhdGNoaW5nUmVxdWlyZXNTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludCgpIGNvbnN0CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3Bw
CShyZXZpc2lvbiAyOTI0NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsMTkgKzEz
MCw3IEBAIGJvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OnN0cnVjdHUKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAogICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24mIGNvbmRpdGlvbiA6ICp0aGlzKSB7Ci0gICAgICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVy
ZUVuc3VyZXNWYWxpZGl0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6c3Ry
dWN0dXJlc0Vuc3VyZVZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSBj
b25zdAotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ci0gICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogKnRo
aXMpIHsKLSAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5QXNz
dW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkKKyAgICAgICAgaWYgKCFjb25kaXRpb24u
c3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KENvbmN1cnJlbmN5OjpDb25jdXJyZW50VGhyZWFkKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0x
ODQsMTggKzE3Miw2IEBAIHZvaWQgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmR1bXAoUHIK
ICAgICBkdW1wSW5Db250ZXh0KG91dCwgbnVsbHB0cik7CiB9CiAKLWJvb2wgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQ6OmlzVmFsaWRBbmRXYXRjaGFibGUoKSBjb25zdAotewotICAgIGlmICgh
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3IgKGF1dG8mIGNvbmRp
dGlvbiA6ICptX2RhdGEpIHsKLSAgICAgICAgaWYgKCFjb25kaXRpb24uaXNXYXRjaGFibGUoKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
IG5hbWVzcGFjZSB7CiAKIG5hbWVzcGFjZSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVy
bmFsIHsKQEAgLTIwMyw3ICsxNzksNyBAQCBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9
IGZhbHNlOwogfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbigK
LSAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBvYmplY3QsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGNvbmRpdGlvbktpbmQpCisgICAg
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogb2JqZWN0LCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBQcm9wZXJ0eUNvbmRpdGlvbjo6S2luZCBjb25kaXRpb25LaW5kLCBDb25jdXJyZW5j
eSBjb25jdXJyZW5jeSkKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3Ry
dWN0dXJlKHZtKTsKICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6
dmVyYm9zZSkKQEAgLTIxMyw3ICsxODksNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5l
cmF0ZUNvbmRpdGlvCiAgICAgc3dpdGNoIChjb25kaXRpb25LaW5kKSB7CiAgICAgY2FzZSBQcm9w
ZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2U6IHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsK
LSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50
bHkodWlkLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3Ry
dWN0dXJlLT5nZXQodm0sIGNvbmN1cnJlbmN5LCB1aWQsIGF0dHJpYnV0ZXMpOwogICAgICAgICBp
ZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJv
cGVydHlDb25kaXRpb24oKTsKICAgICAgICAgcmVzdWx0ID0gT2JqZWN0UHJvcGVydHlDb25kaXRp
b246OnByZXNlbmNlKHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIG9mZnNldCwgYXR0cmlidXRlcyk7
CkBAIC0yMzUsMTAgKzIxMSwxMCBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNv
bmRpdGlvCiAgICAgfQogICAgIGNhc2UgUHJvcGVydHlDb25kaXRpb246OkVxdWl2YWxlbmNlOiB7
CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCwgYXR0cmlidXRlcyk7CisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBjb25jdXJyZW5j
eSwgdWlkLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0
KQogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uKCk7Ci0gICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldERpcmVjdENvbmN1cnJlbnRseShzdHJ1Y3R1cmUs
IG9mZnNldCk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldERpcmVjdChjb25j
dXJyZW5jeSwgc3RydWN0dXJlLCBvZmZzZXQpOwogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uKCk7CiAgICAgICAgIHJlc3VsdCA9
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjplcXVpdmFsZW5jZSh2bSwgb3duZXIsIG9iamVjdCwg
dWlkLCB2YWx1ZSk7CkBAIC0yNTYsNyArMjMyLDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24g
Z2VuZXJhdGVDb25kaXRpbwogICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb24o
KTsKICAgICB9CiAKLSAgICBpZiAoIXJlc3VsdC5pc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVBy
b3BlcnR5V2F0Y2hwb2ludCgpKSB7CisgICAgaWYgKCFyZXN1bHQuaXNTdGlsbFZhbGlkQXNzdW1p
bmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoY29uY3VycmVuY3kpKSB7CiAgICAgICAgIGlmIChP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiRmFpbGVkIHRvIGNyZWF0ZSBjb25kaXRpb246ICIsIHJlc3VsdCwgIlxuIik7CiAg
ICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbigpOwpAQCAtMzQxLDcgKzMxNyw3
IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGkKICAgICAgICAgdm0s
IGdsb2JhbE9iamVjdCwgaGVhZFN0cnVjdHVyZSwgbnVsbHB0ciwKICAgICAgICAgWyZdIChWZWN0
b3I8T2JqZWN0UHJvcGVydHlDb25kaXRpb24+JiBjb25kaXRpb25zLCBKU09iamVjdCogb2JqZWN0
KSAtPiBib29sIHsKICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHJlc3VsdCA9
Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25kaXRpb24odm0sIG93bmVyLCBvYmplY3QsIHVp
ZCwgUHJvcGVydHlDb25kaXRpb246OkFic2VuY2UpOworICAgICAgICAgICAgICAgIGdlbmVyYXRl
Q29uZGl0aW9uKHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpBYnNl
bmNlLCBDb25jdXJyZW5jeTo6TWFpblRocmVhZCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjb25kaXRpb25zLmFw
cGVuZChyZXN1bHQpOwpAQCAtMzU2LDcgKzMzMiw3IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0IGdlbmVyYXRlQ29uZGkKICAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgaGVhZFN0cnVjdHVy
ZSwgbnVsbHB0ciwKICAgICAgICAgWyZdIChWZWN0b3I8T2JqZWN0UHJvcGVydHlDb25kaXRpb24+
JiBjb25kaXRpb25zLCBKU09iamVjdCogb2JqZWN0KSAtPiBib29sIHsKICAgICAgICAgICAgIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uIHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdGVD
b25kaXRpb24odm0sIG93bmVyLCBvYmplY3QsIHVpZCwgUHJvcGVydHlDb25kaXRpb246OkFic2Vu
Y2VPZlNldEVmZmVjdCk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25kaXRpb24odm0sIG93
bmVyLCBvYmplY3QsIHVpZCwgUHJvcGVydHlDb25kaXRpb246OkFic2VuY2VPZlNldEVmZmVjdCwg
Q29uY3VycmVuY3k6Ok1haW5UaHJlYWQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQo
cmVzdWx0KTsKQEAgLTM3NCw3ICszNTAsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBn
ZW5lcmF0ZUNvbmRpCiAgICAgICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbjo6S2luZCBraW5kID0K
ICAgICAgICAgICAgICAgICBvYmplY3QgPT0gcHJvdG90eXBlID8gUHJvcGVydHlDb25kaXRpb246
OlByZXNlbmNlIDogUHJvcGVydHlDb25kaXRpb246OkFic2VuY2U7CiAgICAgICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQgPQotICAgICAgICAgICAgICAgIGdlbmVyYXRlQ29u
ZGl0aW9uKHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIGtpbmQpOworICAgICAgICAgICAgICAgIGdl
bmVyYXRlQ29uZGl0aW9uKHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIGtpbmQsIENvbmN1cnJlbmN5
OjpNYWluVGhyZWFkKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvbmRpdGlvbnMuYXBwZW5kKHJlc3VsdCk7CkBA
IC00MjIsNyArMzk4LDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25k
aQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gcmVzdWx0
ID0gZ2VuZXJhdGVDb25kaXRpb24odm0sIG93bmVyLCBvYmplY3QsIHVpZCwga2luZCk7CisgICAg
ICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQgPSBnZW5lcmF0ZUNvbmRpdGlv
bih2bSwgb3duZXIsIG9iamVjdCwgdWlkLCBraW5kLCBDb25jdXJyZW5jeTo6TWFpblRocmVhZCk7
CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICBjb25kaXRpb25zLmFwcGVuZChyZXN1bHQpOwpAQCAtNDcxLDcgKzQ0Nyw3
IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGkKICAgICAgICAgWyZd
IChWZWN0b3I8T2JqZWN0UHJvcGVydHlDb25kaXRpb24+JiBjb25kaXRpb25zLCBKU09iamVjdCog
b2JqZWN0KSAtPiBib29sIHsKICAgICAgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGtp
bmQgPQogICAgICAgICAgICAgICAgIG9iamVjdCA9PSBwcm90b3R5cGUgPyBQcm9wZXJ0eUNvbmRp
dGlvbjo6RXF1aXZhbGVuY2UgOiBQcm9wZXJ0eUNvbmRpdGlvbjo6QWJzZW5jZTsKLSAgICAgICAg
ICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHJlc3VsdCA9IGdlbmVyYXRlQ29uZGl0aW9uKHZt
LCBudWxscHRyLCBvYmplY3QsIHVpZCwga2luZCk7CisgICAgICAgICAgICBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbiByZXN1bHQgPSBnZW5lcmF0ZUNvbmRpdGlvbih2bSwgbnVsbHB0ciwgb2JqZWN0
LCB1aWQsIGtpbmQsIENvbmN1cnJlbmN5OjpDb25jdXJyZW50VGhyZWFkKTsKICAgICAgICAgICAg
IGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IGNvbmRpdGlvbnMuYXBwZW5kKHJlc3VsdCk7CkBAIC00ODUsNyArNDYxLDcgQEAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaQogICAgIHJldHVybiBnZW5lcmF0ZUNvbmRp
dGlvbnMoCiAgICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIGhlYWRTdHJ1Y3R1cmUsIG51bGxwdHIs
CiAgICAgICAgIFsmXSAoVmVjdG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiYgY29uZGl0aW9u
cywgSlNPYmplY3QqIG9iamVjdCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbiByZXN1bHQgPSBnZW5lcmF0ZUNvbmRpdGlvbih2bSwgbnVsbHB0ciwgb2JqZWN0
LCB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpBYnNlbmNlKTsKKyAgICAgICAgICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIHJlc3VsdCA9IGdlbmVyYXRlQ29uZGl0aW9uKHZtLCBudWxscHRyLCBv
YmplY3QsIHVpZCwgUHJvcGVydHlDb25kaXRpb246OkFic2VuY2UsIENvbmN1cnJlbmN5OjpDb25j
dXJyZW50VGhyZWFkKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvbmRpdGlvbnMuYXBwZW5kKHJlc3VsdCk7CkBA
IC01MDAsNyArNDc2LDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25k
aQogICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBoZWFkU3RydWN0dXJlLCBudWxscHRyLAogICAg
ICAgICBbJl0gKFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4mIGNvbmRpdGlvbnMsIEpT
T2JqZWN0KiBvYmplY3QpIC0+IGJvb2wgewogICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24gcmVzdWx0ID0KLSAgICAgICAgICAgICAgICBnZW5lcmF0ZUNvbmRpdGlvbih2bSwgbnVs
bHB0ciwgb2JqZWN0LCB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpBYnNlbmNlT2ZTZXRFZmZlY3Qp
OworICAgICAgICAgICAgICAgIGdlbmVyYXRlQ29uZGl0aW9uKHZtLCBudWxscHRyLCBvYmplY3Qs
IHVpZCwgUHJvcGVydHlDb25kaXRpb246OkFic2VuY2VPZlNldEVmZmVjdCwgQ29uY3VycmVuY3k6
OkNvbmN1cnJlbnRUaHJlYWQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQocmVzdWx0
KTsKQEAgLTUxMSw3ICs0ODcsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0
ZUNvbmRpCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbkZvclNlbGZF
cXVpdmFsZW5jZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBvYmplY3Qs
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlQ29uZGl0aW9u
KHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSk7
CisgICAgcmV0dXJuIGdlbmVyYXRlQ29uZGl0aW9uKHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIFBy
b3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSwgQ29uY3VycmVuY3k6Ok1haW5UaHJlYWQpOwog
fQogCiAvLyBDdXJyZW50IG1pZ2h0IGJlIG51bGwuIFN0cnVjdHVyZSBjYW4ndCBiZSBudWxsLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgJKHJldmlzaW9uIDI5MjQ0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw4ICs3MSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICFtX2Rh
dGEgfHwgIW1fZGF0YS0+aXNFbXB0eSgpOwogICAgIH0KIAotICAgIGJvb2wgaXNWYWxpZEFuZFdh
dGNoYWJsZSgpIGNvbnN0OwotCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEgPyBtX2RhdGEtPnNpemUoKSA6IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAg
IHsKQEAgLTEzOSw3ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQgbWVyZ2VkV2l0aChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgb3RoZXIp
IGNvbnN0OwogICAgIAogICAgIGJvb2wgc3RydWN0dXJlc0Vuc3VyZVZhbGlkaXR5KCkgY29uc3Q7
Ci0gICAgYm9vbCBzdHJ1Y3R1cmVzRW5zdXJlVmFsaWRpdHlBc3N1bWluZ0ltcHVyZVByb3BlcnR5
V2F0Y2hwb2ludCgpIGNvbnN0OwogICAgIAogICAgIGJvb2wgbmVlZEltcHVyZVByb3BlcnR5V2F0
Y2hwb2ludCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJvcGVydHlDb25kaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAJKHJldmlzaW9uIDI5MjQ0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBQcm9wZXJ0eUNvbmRpdGlvbjo6ZHVtcChQ
cmludFN0cmVhbQogfQogCiBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1
bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNPYmplY3QqIGJhc2UpIGNvbnN0CisgICAgQ29uY3VycmVuY3kgY29uY3VycmVuY3ksIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogYmFzZSkgY29uc3QKIHsKICAgICBpZiAoUHJvcGVy
dHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKApAQCAtMTA5
LDcgKzEwOSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3UKICAg
ICBzd2l0Y2ggKG1faGVhZGVyLnR5cGUoKSkgewogICAgIGNhc2UgUHJlc2VuY2U6IHsKICAgICAg
ICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1
cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSwgY3VycmVudEF0
dHJpYnV0ZXMpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBjdXJyZW50T2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQoc3RydWN0dXJlLT52bSgpLCBjb25jdXJyZW5jeSwgdWlkKCksIGN1cnJlbnRBdHRy
aWJ1dGVzKTsKICAgICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgIT0gb2Zmc2V0KCkgfHwgY3VycmVu
dEF0dHJpYnV0ZXMgIT0gYXR0cmlidXRlcygpKSB7CiAgICAgICAgICAgICBpZiAoUHJvcGVydHlD
b25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCkBA
IC0xMzYsNyArMTM2LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNz
dQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgUHJvcGVy
dHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgp
KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
KHN0cnVjdHVyZS0+dm0oKSwgY29uY3VycmVuY3ksIHVpZCgpKTsKICAgICAgICAgaWYgKGN1cnJl
bnRPZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29u
ZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW52YWxp
ZCBiZWNhdXNlIHRoZSBwcm9wZXJ0eSBleGlzdHMgYXQgb2Zmc2V0OiAiLCBjdXJyZW50T2Zmc2V0
LCAiXG4iKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0
aWxsVmFsaWRBc3N1CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGN1cnJl
bnRBdHRyaWJ1dGVzOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBjdXJyZW50T2Zmc2V0ID0gc3Ry
dWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkKCksIGN1cnJlbnRBdHRyaWJ1dGVzKTsKKyAgICAg
ICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHN0cnVjdHVy
ZS0+dm0oKSwgY29uY3VycmVuY3ksIHVpZCgpLCBjdXJyZW50QXR0cmlidXRlcyk7CiAgICAgICAg
IGlmIChjdXJyZW50T2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChj
dXJyZW50QXR0cmlidXRlcyAmIChQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3JP
clZhbHVlKSkgewogICAgICAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFs
Ojp2ZXJib3NlKSB7CkBAIC0yMzEsNyArMjMxLDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6
aXNTdGlsbFZhbGlkQXNzdQogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBzb21ld2hhdCByYWN5
LCBhbmQgbWF5YmUgbW9yZSByaXNreSB0aGFuIHdlIHdhbnQuCiAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ2NDEKICAgICAgICAgCi0gICAgICAg
IFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRs
eSh1aWQoKSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldChzdHJ1Y3R1cmUtPnZtKCksIGNvbmN1cnJlbmN5LCB1aWQoKSk7CiAgICAgICAgIGlm
IChjdXJyZW50T2Zmc2V0ID09IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChQcm9w
ZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygKQEAgLTI0MSw3ICsyNDEsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFs
aWRBc3N1CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBK
U1ZhbHVlIGN1cnJlbnRWYWx1ZSA9IGJhc2UtPmdldERpcmVjdENvbmN1cnJlbnRseShzdHJ1Y3R1
cmUsIGN1cnJlbnRPZmZzZXQpOworICAgICAgICBKU1ZhbHVlIGN1cnJlbnRWYWx1ZSA9IGJhc2Ut
PmdldERpcmVjdChjb25jdXJyZW5jeSwgc3RydWN0dXJlLCBjdXJyZW50T2Zmc2V0KTsKICAgICAg
ICAgaWYgKGN1cnJlbnRWYWx1ZSAhPSByZXF1aXJlZFZhbHVlKCkpIHsKICAgICAgICAgICAgIGlm
IChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygKQEAgLTI1NCw3ICsyNTQsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0
aWxsVmFsaWRBc3N1CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gCiAgICAgY2FzZSBIYXNT
dGF0aWNQcm9wZXJ0eTogewotICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUtPmdl
dENvbmN1cnJlbnRseSh1aWQoKSkpKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChzdHJ1Y3R1
cmUtPmdldChzdHJ1Y3R1cmUtPnZtKCksIGNvbmN1cnJlbmN5LCB1aWQoKSkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5zdGF0aWNQcm9wZXJ0aWVz
UmVpZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY2LDYgKzI2NiwxNiBA
QCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitzdGF0aWMgQUxXQVlTX0lOTElORSBDb25jdXJyZW5jeSB3YXRjaGFiaWxpdHlU
b0NvbmN1cnJlbmN5KFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQgZWZmb3J0
KQoreworICAgIHN3aXRjaCAoZWZmb3J0KSB7CisgICAgY2FzZSBQcm9wZXJ0eUNvbmRpdGlvbjo6
V2F0Y2hhYmlsaXR5RWZmb3J0OjpFbnN1cmVXYXRjaGFiaWxpdHk6CisgICAgICAgIHJldHVybiBD
b25jdXJyZW5jeTo6TWFpblRocmVhZDsKKyAgICBjYXNlIFByb3BlcnR5Q29uZGl0aW9uOjpXYXRj
aGFiaWxpdHlFZmZvcnQ6Ok1ha2VOb0NoYW5nZXM6CisgICAgICAgIHJldHVybiBDb25jdXJyZW5j
eTo6Q29uY3VycmVudFRocmVhZDsKKyAgICB9Cit9CisKIGJvb2wgUHJvcGVydHlDb25kaXRpb246
OnZhbGlkaXR5UmVxdWlyZXNJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykKQEAgLTI4Niw5ICsyOTYsOSBAQCBib29s
IFByb3BlcnR5Q29uZGl0aW9uOjp2YWxpZGl0eVJlcXVpcmVzCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWQoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTT2JqZWN0KiBiYXNlKSBjb25zdAorYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNT
dGlsbFZhbGlkKENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNPYmplY3QqIGJhc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc1N0aWxsVmFsaWRBc3N1bWluZ0lt
cHVyZVByb3BlcnR5V2F0Y2hwb2ludChzdHJ1Y3R1cmUsIGJhc2UpKQorICAgIGlmICghaXNTdGls
bFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoY29uY3VycmVuY3ksIHN0cnVj
dHVyZSwgYmFzZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEN1cnJlbnRseSB3
ZSBhc3N1bWUgdGhhdCBhbiBpbXB1cmUgcHJvcGVydHkgY2FuIGNhdXNlIGEgcHJvcGVydHkgdG8g
YXBwZWFyLCBhbmQgY2FuIGFsc28KQEAgLTMyMCw3ICszMzAsNyBAQCBib29sIFByb3BlcnR5Q29u
ZGl0aW9uOjppc1dhdGNoYWJsZVdoZW5WCiAgICAgCiAgICAgc3dpdGNoIChtX2hlYWRlci50eXBl
KCkpIHsKICAgICBjYXNlIEVxdWl2YWxlbmNlOiB7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpKTsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoc3RydWN0dXJlLT52bSgpLCB3YXRjaGFi
aWxpdHlUb0NvbmN1cnJlbmN5KGVmZm9ydCksIHVpZCgpKTsKICAgICAgICAgCiAgICAgICAgIC8v
IFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHNvbWUgdmFyaWFudCBvZiBp
c1ZhbGlkIHJldHVybmVkIHRydWUsIHdoaWNoCiAgICAgICAgIC8vIGltcGxpZXMgdGhhdCB3ZSBh
bHJlYWR5IGNvbmZpcm1lZCB0aGF0IHRoZSBzdHJ1Y3R1cmUga25vd3Mgb2YgdGhlIHByb3BlcnR5
LiBXZSBzaG91bGQKQEAgLTM2OSwxNCArMzc5LDE0IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246
OmlzV2F0Y2hhYmxlV2hlblYKIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzV2F0Y2hhYmxlQXNz
dW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTT2JqZWN0KiBiYXNlLCBXYXRjaGFiaWxpdHlFZmZvcnQgZWZmb3J0KSBjb25zdAogewotICAg
IHJldHVybiBpc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChzdHJ1
Y3R1cmUsIGJhc2UpCisgICAgcmV0dXJuIGlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50KHdhdGNoYWJpbGl0eVRvQ29uY3VycmVuY3koZWZmb3J0KSwgc3RydWN0dXJl
LCBiYXNlKQogICAgICAgICAmJiBpc1dhdGNoYWJsZVdoZW5WYWxpZChzdHJ1Y3R1cmUsIGVmZm9y
dCk7CiB9CiAKIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzV2F0Y2hhYmxlKAogICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogYmFzZSwgV2F0Y2hhYmlsaXR5RWZmb3J0IGVmZm9y
dCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNTdGlsbFZhbGlkKHN0cnVjdHVyZSwgYmFzZSkKKyAg
ICByZXR1cm4gaXNTdGlsbFZhbGlkKHdhdGNoYWJpbGl0eVRvQ29uY3VycmVuY3koZWZmb3J0KSwg
c3RydWN0dXJlLCBiYXNlKQogICAgICAgICAmJiBpc1dhdGNoYWJsZVdoZW5WYWxpZChzdHJ1Y3R1
cmUsIGVmZm9ydCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cm9wZXJ0eUNvbmRpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oCShyZXZpc2lvbiAyOTI0NDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgLy8gQ2hlY2tz
IGlmIHRoZSBvYmplY3QncyBzdHJ1Y3R1cmUgY2xhaW1zIHRoYXQgdGhlIHByb3BlcnR5IHdvbid0
IGJlIGludGVyY2VwdGVkLgotICAgIGJvb2wgaXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9w
ZXJ0eVdhdGNocG9pbnQoU3RydWN0dXJlKiwgSlNPYmplY3QqIGJhc2UgPSBudWxscHRyKSBjb25z
dDsKKyAgICBib29sIGlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50
KENvbmN1cnJlbmN5LCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogYmFzZSA9IG51bGxwdHIpIGNvbnN0
OwogICAgIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBuZWVkIGFuIGltcHVyZSBwcm9wZXJ0
eSB3YXRjaHBvaW50IHRvIGVuc3VyZSB2YWxpZGl0eSBldmVuIGlmCiAgICAgLy8gaXNTdGlsbFZh
bGlkQWNjb3JkaW5nVG9TdHJ1Y3R1cmUoKSByZXR1cm5lZCB0cnVlLgpAQCAtMjYyLDcgKzI2Miw3
IEBAIHB1YmxpYzoKICAgICAvLyBhbiBvYmplY3QgaGFzIHRoZSBnaXZlbiBzdHJ1Y3R1cmUgZ3Vh
cmFudGVlcyB0aGUgY29uZGl0aW9uIHN0aWxsIGhvbGRzLiBJZiBhbiBvYmplY3QgaXMKICAgICAv
LyBzdXBwbGllZCwgdGhlbiB5b3UgbWF5IG5lZWQgdG8gdXNlIHNvbWUgb3RoZXIgd2F0Y2hwb2lu
dHMgb24gdGhlIG9iamVjdCB0byBndWFyYW50ZWUgdGhlCiAgICAgLy8gY29uZGl0aW9uIGluIGFk
ZGl0aW9uIHRvIHRoZSBzdHJ1Y3R1cmUgY2hlY2suCi0gICAgYm9vbCBpc1N0aWxsVmFsaWQoU3Ry
dWN0dXJlKiwgSlNPYmplY3QqIGJhc2UgPSBudWxscHRyKSBjb25zdDsKKyAgICBib29sIGlzU3Rp
bGxWYWxpZChDb25jdXJyZW5jeSwgU3RydWN0dXJlKiwgSlNPYmplY3QqIGJhc2UgPSBudWxscHRy
KSBjb25zdDsKICAgICAKICAgICAvLyBJbiBzb21lIGNhc2VzLCB0aGUgY29uZGl0aW9uIGlzIG5v
dCB3YXRjaGFibGUsIGJ1dCBjb3VsZCBiZSBtYWRlIHdhdGNoYWJsZSBieSBlbmFibGluZyB0aGUK
ICAgICAvLyBhcHByb3ByaWF0ZSB3YXRjaHBvaW50LiBGb3IgZXhhbXBsZSwgcmVwbGFjZW1lbnQg
d2F0Y2hwb2ludHMgYXJlIGVuYWJsZWQgb25seSB3aGVuIHNvbWUKQEAgLTI5MSwxMiArMjkxLDEy
IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgaXQncyBzdGlsbCB2YWxpZCBhbmQg
d2UgY291bGQgZW5mb3JjZSB2YWxpZGl0eSBieSBzZXR0aW5nIGEgdHJhbnNpdGlvbgogICAgIC8v
IHdhdGNocG9pbnQgb24gdGhlIHN0cnVjdHVyZSBhbmQgcG9zc2libHkgYW4gaW1wdXJlIHByb3Bl
cnR5IHdhdGNocG9pbnQuCiAgICAgYm9vbCBpc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50KAotICAgICAgICBTdHJ1Y3R1cmUqLCBKU09iamVjdCogYmFzZSwgV2F0Y2hh
YmlsaXR5RWZmb3J0ID0gTWFrZU5vQ2hhbmdlcykgY29uc3Q7CisgICAgICAgIFN0cnVjdHVyZSos
IEpTT2JqZWN0KiBiYXNlLCBXYXRjaGFiaWxpdHlFZmZvcnQpIGNvbnN0OwogICAgIAogICAgIC8v
IFRoaXMgbWVhbnMgdGhhdCBpdCdzIHN0aWxsIHZhbGlkIGFuZCB3ZSBjb3VsZCBlbmZvcmNlIHZh
bGlkaXR5IGJ5IHNldHRpbmcgYSB0cmFuc2l0aW9uCiAgICAgLy8gd2F0Y2hwb2ludCBvbiB0aGUg
c3RydWN0dXJlLgogICAgIGJvb2wgaXNXYXRjaGFibGUoCi0gICAgICAgIFN0cnVjdHVyZSosIEpT
T2JqZWN0KiwgV2F0Y2hhYmlsaXR5RWZmb3J0ID0gTWFrZU5vQ2hhbmdlcykgY29uc3Q7CisgICAg
ICAgIFN0cnVjdHVyZSosIEpTT2JqZWN0KiwgV2F0Y2hhYmlsaXR5RWZmb3J0KSBjb25zdDsKICAg
ICAKICAgICBib29sIHdhdGNoaW5nUmVxdWlyZXNTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2lu
dCgpIGNvbnN0CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAkocmV2aXNpb24g
MjkyNDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojppbml0aWEKIAogdm9pZCBBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQ6Omluc3RhbGwoVk0mIHZtKQogewotICAgIFJFTEVBU0VfQVNTRVJUKG1fa2V5
LmlzV2F0Y2hhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fa2V5LmlzV2F0Y2hhYmxlKFBy
b3BlcnR5Q29uZGl0aW9uOjpNYWtlTm9DaGFuZ2VzKSk7CiAgICAgCiAgICAgbV9rZXkub2JqZWN0
KCktPnN0cnVjdHVyZSh2bSktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHRoaXMpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHJldmlzaW9uIDI5MjQ0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjUxLDcgKzQyNTEsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpjaGVjayhjb25zdCBPYmplY3RQCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1
Y3R1cmUoKm1fdm0pOwotICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0
eShzdHJ1Y3R1cmUpKQorICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0
eShDb25jdXJyZW5jeTo6Q29uY3VycmVudFRocmVhZCwgc3RydWN0dXJlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAogICAgIGFkZFRvR3JhcGgoCkBAIC00MzgwLDcgKzQzODAsNyBAQCBH
ZXRCeU9mZnNldE1ldGhvZCBCeXRlQ29kZVBhcnNlcjo6cGxhbkxvCiAgICAgCiAgICAgLy8gQ2hl
Y2sgaWYgdGhlIHN0cnVjdHVyZSB0aGF0IHdlJ3ZlIHJlZ2lzdGVyZWQgbWFrZXMgdGhlIGNvbmRp
dGlvbiBob2xkLiBJZiBub3QsIGp1c3QgZ2l2ZQogICAgIC8vIHVwLiBUaGlzIGlzIGNhc2UgKDUp
IGFib3ZlLgotICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1
Y3R1cmUpKQorICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShDb25j
dXJyZW5jeTo6Q29uY3VycmVudFRocmVhZCwgc3RydWN0dXJlKSkKICAgICAgICAgcmV0dXJuIEdl
dEJ5T2Zmc2V0TWV0aG9kKCk7CiAgICAgCiAgICAgLy8gSWYgdGhlIHN0cnVjdHVyZSBpcyB3YXRj
aGVkIGJ5IHRoZSBERkcgYWxyZWFkeSwgdGhlbiBqdXN0IHVzZSB0aGlzIGZhY3QgdG8gZW1pdCB0
aGUgbG9hZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyOTI0NDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQzNSw3ICsxNDM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Y29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KHN0cnVjdHVy
ZSkpCisgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNW
YWxpZGl0eShDb25jdXJyZW5jeTo6Q29uY3VycmVudFRocmVhZCwgc3RydWN0dXJlKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
ZXNpcmVkV2F0Y2hwb2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oCShyZXZpc2lvbiAyOTI0NDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjQsNyArMTY0LDcgQEAgc3RydWN0IEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludEFk
YXB0bwogICAgIHN0YXRpYyB2b2lkIGFkZChDb2RlQmxvY2sqLCBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbiYsIFdhdGNocG9pbnRDb2xsZWN0b3ImKTsKICAgICBzdGF0aWMgYm9vbCBoYXNC
ZWVuSW52YWxpZGF0ZWQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAha2V5LmlzV2F0Y2hhYmxlKCk7CisgICAgICAgIHJldHVybiAha2V5
LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpNYWtlTm9DaGFuZ2VzKTsKICAgICB9CiAg
ICAgc3RhdGljIHZvaWQgZHVtcEluQ29udGV4dCgKICAgICAgICAgUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSwgRHVtcENvbnRleHQqIGNvbnRleHQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjky
NDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNjQsNyArMTA2NCw3IEBAIGJvb2wgR3JhcGg6OndhdGNoQ29uZGl0aW9uKGNv
bnN0IE9iamVjdFAKICAgICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKCFrZXkuaXNXYXRjaGFibGUoKSkKKyAgICBpZiAoIWtleS5pc1dh
dGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6TWFrZU5vQ2hhbmdlcykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIERlc2lyZWRXZWFrUmVmZXJlbmNlcyYgd2Vha1JlZmVyZW5jZXMgPSBt
X3BsYW4ud2Vha1JlZmVyZW5jZXMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjkyNDQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzgxLDcgKzc4MSw3IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEoK
ICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgZm9yIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biBjb25kaXRpb24gOiBjb25kaXRpb25zKSB7CiAgICAgICAgIGF1dG8mIHdhdGNocG9pbnQgPSB3
YXRjaHBvaW50c1tpbmRleCsrXTsKLSAgICAgICAgaWYgKCFjb25kaXRpb24uaXNXYXRjaGFibGUo
KSkKKyAgICAgICAgaWYgKCFjb25kaXRpb24uaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246
Ok1ha2VOb0NoYW5nZXMpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoY29uZGl0
aW9uLmNvbmRpdGlvbigpLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpCiAg
ICAgICAgICAgICBvZmZzZXQgPSBjb25kaXRpb24uY29uZGl0aW9uKCkub2Zmc2V0KCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRTcGVjaWFsUHJvcGVydHlBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAJKHJldmlzaW9uIDI5MjQ0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgQ2FjaGVkU3BlY2lhbFByb3BlcnR5
QWRhcHRpdmVTdHJ1Y3R1cmVXYQogCiB2b2lkIENhY2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsbChWTSYgdm0pCiB7Ci0gICAgUkVMRUFTRV9BU1NF
UlQobV9rZXkuaXNXYXRjaGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9rZXkuaXNXYXRj
aGFibGUoUHJvcGVydHlDb25kaXRpb246Ok1ha2VOb0NoYW5nZXMpKTsKIAogICAgIG1fa2V5Lm9i
amVjdCgpLT5zdHJ1Y3R1cmUodm0pLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludCh0aGlzKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAJKHJldmlzaW9uIDI5MjQ0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2MSw3ICsyNDYxLDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbFNwZWNpZXNXYQogICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIGNvbnN0cnVjdG9yQ29uZGl0aW9uID0gT2JqZWN0UHJvcGVydHlDb25kaXRp
b246OmVxdWl2YWxlbmNlKHZtLCBwcm90b3R5cGUsIHByb3RvdHlwZSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IuaW1wbCgpLCBjb25zdHJ1Y3Rvcik7CiAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gc3BlY2llc0NvbmRpdGlvbiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjplcXVp
dmFsZW5jZSh2bSwgcHJvdG90eXBlLCBjb25zdHJ1Y3Rvciwgdm0ucHJvcGVydHlOYW1lcy0+c3Bl
Y2llc1N5bWJvbC5pbXBsKCksIHNwZWNpZXNHZXR0ZXJTZXR0ZXIoKSk7CiAKLSAgICBpZiAoIWNv
bnN0cnVjdG9yQ29uZGl0aW9uLmlzV2F0Y2hhYmxlKCkgfHwgIXNwZWNpZXNDb25kaXRpb24uaXNX
YXRjaGFibGUoKSkgeworICAgIGlmICghY29uc3RydWN0b3JDb25kaXRpb24uaXNXYXRjaGFibGUo
UHJvcGVydHlDb25kaXRpb246Ok1ha2VOb0NoYW5nZXMpIHx8ICFzcGVjaWVzQ29uZGl0aW9uLmlz
V2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpNYWtlTm9DaGFuZ2VzKSkgewogICAgICAgICBp
bnZhbGlkYXRlV2F0Y2hwb2ludCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyOTI0NDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC04MzUsNiArODM1LDcgQEAgcHVibGljOgogCiAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25v
d24gcHJvcGVydHkgb2Zmc2V0cy4KICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0RGlyZWN0
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbG9jYXRpb25Gb3JPZmZzZXQo
b2Zmc2V0KS0+Z2V0KCk7IH0KKyAgICBKU1ZhbHVlIGdldERpcmVjdChDb25jdXJyZW5jeSwgU3Ry
dWN0dXJlKiBleHBlY3RlZFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpIGNvbnN0OwogICAgIEpT
VmFsdWUgZ2V0RGlyZWN0Q29uY3VycmVudGx5KFN0cnVjdHVyZSogZXhwZWN0ZWRTdHJ1Y3R1cmUs
IFByb3BlcnR5T2Zmc2V0KSBjb25zdDsKICAgICB2b2lkIHB1dERpcmVjdChWTSYgdm0sIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZz
ZXQpLT5zZXQodm0sIHRoaXMsIHZhbHVlKTsgfQogICAgIHZvaWQgcHV0RGlyZWN0V2l0aG91dEJh
cnJpZXIoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IGxvY2F0aW9uRm9y
T2Zmc2V0KG9mZnNldCktPnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodmFsdWUpOyB9CkBAIC0xNDEx
LDYgKzE0MTIsMTYgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlwZShWTQog
Ly8gcGFzdCBzdHJ1Y3R1cmUgdGhlbiBpdCBzaG91bGQgYmUgdmFsaWQgZm9yIGFueSBuZXcgc3Ry
dWN0dXJlLiBIb3dldmVyLCB3ZSBtYXkgc29tZXRpbWVzCiAvLyBzaHJpbmsgdGhlIGJ1dHRlcmZs
eSB3aGVuIHdlIGFyZSBob2xkaW5nIHRoZSBTdHJ1Y3R1cmUncyBDb25jdXJyZW50SlNMb2NrLCBz
dWNoIGFzIHdoZW4gd2UKIC8vIGZsYXR0ZW4gYW4gb2JqZWN0LgorQUxXQVlTX0lOTElORSBKU1Zh
bHVlIEpTT2JqZWN0OjpnZXREaXJlY3QoQ29uY3VycmVuY3kgY29uY3VycmVuY3ksIFN0cnVjdHVy
ZSogZXhwZWN0ZWRTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QKK3sKKyAg
ICBzd2l0Y2ggKGNvbmN1cnJlbmN5KSB7CisgICAgY2FzZSBDb25jdXJyZW5jeTo6TWFpblRocmVh
ZDoKKyAgICAgICAgcmV0dXJuIGdldERpcmVjdChvZmZzZXQpOworICAgIGNhc2UgQ29uY3VycmVu
Y3k6OkNvbmN1cnJlbnRUaHJlYWQ6CisgICAgICAgIHJldHVybiBnZXREaXJlY3RDb25jdXJyZW50
bHkoZXhwZWN0ZWRTdHJ1Y3R1cmUsIG9mZnNldCk7CisgICAgfQorCit9CiBpbmxpbmUgSlNWYWx1
ZSBKU09iamVjdDo6Z2V0RGlyZWN0Q29uY3VycmVudGx5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0CiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihzdHJ1Y3R1cmUtPmxvY2soKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjkyNDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCisjaW5jbHVkZSAiQ29uY3Vy
cmVuY3kuaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCiAjaW5jbHVkZSAiRGVsZXRl
UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCkBAIC01MTIsNiArNTEz
LDI2IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9p
ZCBmb3JFYWNoUHJvcGVydHkoVk0mLCBjb25zdCBGdW5jdG9yJik7CisKKyAgICBBTFdBWVNfSU5M
SU5FIFByb3BlcnR5T2Zmc2V0IGdldChWTSYgdm0sIENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5LCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAoY29uY3VycmVuY3kpIHsKKyAgICAgICAgY2FzZSBDb25jdXJyZW5jeTo6TWFp
blRocmVhZDoKKyAgICAgICAgICAgIHJldHVybiBnZXQodm0sIHVpZCwgYXR0cmlidXRlcyk7Cisg
ICAgICAgIGNhc2UgQ29uY3VycmVuY3k6OkNvbmN1cnJlbnRUaHJlYWQ6CisgICAgICAgICAgICBy
ZXR1cm4gZ2V0Q29uY3VycmVudGx5KHVpZCwgYXR0cmlidXRlcyk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIFByb3BlcnR5T2Zmc2V0IGdldChWTSYgdm0sIENvbmN1cnJl
bmN5IGNvbmN1cnJlbmN5LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChjb25jdXJyZW5jeSkgeworICAgICAgICBjYXNlIENvbmN1cnJlbmN5OjpNYWluVGhy
ZWFkOgorICAgICAgICAgICAgcmV0dXJuIGdldCh2bSwgdWlkKTsKKyAgICAgICAgY2FzZSBDb25j
dXJyZW5jeTo6Q29uY3VycmVudFRocmVhZDoKKyAgICAgICAgICAgIHJldHVybiBnZXRDb25jdXJy
ZW50bHkodWlkKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAgICBQcm9wZXJ0eU9mZnNldCBn
ZXRDb25jdXJyZW50bHkoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiAgICAgUHJvcGVydHlPZmZz
ZXQgZ2V0Q29uY3VycmVudGx5KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJh
cmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVSYXJlRGF0YS5jcHAJKHJldmlzaW9uIDI5MjQ0NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTkwLDExICsxOTAsMTEgQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVTcGVjaWFsUHJv
cAogICAgICAgICAgICAgZXF1aXZDb25kaXRpb24gPSBjb25kaXRpb24uYXR0ZW1wdFRvTWFrZUVx
dWl2YWxlbmNlV2l0aG91dEJhcnJpZXIodm0pOwogCiAgICAgICAgICAgICAvLyBUaGUgZXF1aXZh
bGVuY2UgY29uZGl0aW9uIHdvbid0IGJlIHdhdGNoYWJsZSBpZiB3ZSBoYXZlIGFscmVhZHkgc2Vl
biBhIHJlcGxhY2VtZW50LgotICAgICAgICAgICAgaWYgKCFlcXVpdkNvbmRpdGlvbi5pc1dhdGNo
YWJsZSgpKSB7CisgICAgICAgICAgICBpZiAoIWVxdWl2Q29uZGl0aW9uLmlzV2F0Y2hhYmxlKFBy
b3BlcnR5Q29uZGl0aW9uOjpNYWtlTm9DaGFuZ2VzKSkgewogICAgICAgICAgICAgICAgIGdpdmVV
cE9uU3BlY2lhbFByb3BlcnR5Q2FjaGUoa2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoIWNvbmRpdGlvbi5pc1dhdGNoYWJsZSgp
KSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWNvbmRpdGlvbi5pc1dhdGNoYWJsZShQcm9wZXJ0eUNv
bmRpdGlvbjo6TWFrZU5vQ2hhbmdlcykpIHsKICAgICAgICAgICAgIGdpdmVVcE9uU3BlY2lhbFBy
b3BlcnR5Q2FjaGUoa2V5KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQo=
</data>
<flag name="review"
          id="485178"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456839</attachid>
            <date>2022-04-06 11:05:23 -0700</date>
            <delta_ts>2022-04-06 12:36:49 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>40563</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjkyNDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBA
CisyMDIyLTA0LTA1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENhbGwgU3RydWN0dXJlOjpnZXQgaW5zdGVhZCBvZiBTdHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRs
eSBvbiB0aGUgbXV0YXRvciB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODgyMworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1
a2kuCisKKyAgICAgICAgV2UgdHJ5IHRvIGNhbGwgU3RydWN0dXJlOjpnZXQgaW5zdGVhZCBvZiBT
dHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseSB3aGVuCisgICAgICAgIHdlIGtub3cgZm9yIHN1cmUg
d2UncmUgb24gdGhlIG1haW4gdGhyZWFkLiBUaGlzIGlzIGJlY2F1c2UgZ2V0Q29uY3VycmVudGx5
CisgICAgICAgIGlzIHNsb3dlciB0aGFuIGdldC4KKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb3VsZFN0aWxsU3VjY2VlZCBj
b25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5j
cHA6CisgICAgICAgIChKU0M6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2U6Omluc3RhbGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsbCk6CisgICAgICAgICog
Ynl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uY3BwOgorICAgICAgICAoSlNDOjpPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbjo6c3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1
cmVQcm9wZXJ0eVdhdGNocG9pbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZh
bGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb246OnN0cnVj
dHVyZUVuc3VyZXNWYWxpZGl0eSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJv
cGVydHlDb25kaXRpb24uaDoKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Ojpz
dHJ1Y3R1cmVzRW5zdXJlVmFsaWRpdHkgY29uc3QpOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUNv
bmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3MpOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUNvbmRpdGlv
bnNGb3JQcm9wZXJ0eVNldHRlck1pc3MpOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUNvbmRpdGlv
bnNGb3JQcm90b3R5cGVQcm9wZXJ0eUhpdCk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlQ29uZGl0
aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0Q3VzdG9tKToKKyAgICAgICAgKEpTQzo6Z2VuZXJh
dGVDb25kaXRpb25zRm9yUHJvdG90eXBlRXF1aXZhbGVuY2VDb25jdXJyZW50bHkpOgorICAgICAg
ICAoSlNDOjpnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3NDb25jdXJyZW50bHkpOgor
ICAgICAgICAoSlNDOjpnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eVNldHRlck1pc3NDb25j
dXJyZW50bHkpOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUNvbmRpdGlvbkZvclNlbGZFcXVpdmFs
ZW5jZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpzdHJ1Y3R1
cmVzRW5zdXJlVmFsaWRpdHlBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Ojppc1Zh
bGlkQW5kV2F0Y2hhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9PYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3BlcnR5Q29u
ZGl0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxp
ZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
d2F0Y2hhYmlsaXR5VG9Db25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0
aW9uOjppc1N0aWxsVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlv
bjo6aXNXYXRjaGFibGVXaGVuVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUNv
bmRpdGlvbjo6aXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1dhdGNoYWJsZSBjb25zdCk6
CisgICAgICAgICogYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaDoKKyAgICAgICAgKiBkZmcv
REZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbGwpOgorICAgICAgICAqIGRmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNo
ZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQpOgorICAg
ICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OnRyeUZvbGRBc1B1dEJ5T2Zmc2V0KToKKyAgICAgICAg
KiBkZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50QWRhcHRvcjo6aGFzQmVlbkludmFsaWRhdGVkKToKKyAgICAg
ICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp3YXRjaENv
bmRpdGlvbik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAqIHJ1bnRp
bWUvQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDoK
KyAgICAgICAgKEpTQzo6Q2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50OjppbnN0YWxsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0RGlyZWN0IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZVNwZWNp
YWxQcm9wZXJ0eVNsb3cpOgorCiAyMDIyLTA0LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gU3RyaWN0bHkgYW5ub3RhdGUgcG9pbnRlcnMgd2l0
aCBUcnVzdGVkSW1tUHRyIGluIENDYWxsSGVscGVycwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkocmV2aXNpb24gMjkyNDQ0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MTcsNyArNzE3LDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpjb3VsZFN0aWxsU3VjY2VlZCgp
IGNvbgogICAgICAgICAgICAgaWYgKCFjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVy
ZVByb3BlcnR5V2F0Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0
OjpFbnN1cmVXYXRjaGFiaWxpdHkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3Vy
ZXNWYWxpZGl0eUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkpCisgICAgICAgICAg
ICBpZiAoIWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHlBc3N1bWluZ0ltcHVyZVBy
b3BlcnR5V2F0Y2hwb2ludChDb25jdXJyZW5jeTo6TWFpblRocmVhZCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTgwMyw3ICsxODAzLDcgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAvLyBGb3Ig
bm93LCB3ZSBvbmx5IGFsbG93IGVxdWl2YWxlbmNlIHdoZW4gaXQncyB3YXRjaGFibGUuCiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGNvbmRpdGlvbi5jb25kaXRpb24oKS5raW5kKCkgIT0gUHJvcGVy
dHlDb25kaXRpb246OkVxdWl2YWxlbmNlKTsKIAotICAgICAgICBpZiAoIWNvbmRpdGlvbi5zdHJ1
Y3R1cmVFbnN1cmVzVmFsaWRpdHlBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7
CisgICAgICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eUFzc3VtaW5n
SW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KENvbmN1cnJlbmN5OjpNYWluVGhyZWFkKSkgewogICAg
ICAgICAgICAgLy8gVGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVuIGlzIHRoYXQgd2Ug
cmVxdWlyZSB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCiAgICAgICAgICAgICAvLyBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVkIHRoYXQKICAgICAg
ICAgICAgIC8vIEFjY2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0dXJuZWQgdHJ1ZS4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZS5jcHAJKHJldmlzaW9uIDI5MjQ0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQsMTMgKzQ0LDEzIEBAIHZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5VmFsdWVXYXRjaHAKIAogdm9pZCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlOjppbnN0YWxsKFZNJiB2bSkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVChtX2tleS5p
c1dhdGNoYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2tleS5pc1dhdGNoYWJsZShQcm9w
ZXJ0eUNvbmRpdGlvbjo6TWFrZU5vQ2hhbmdlcykpOwogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJlKHZtKTsKIAogICAgIHN0cnVjdHVyZS0+YWRk
VHJhbnNpdGlvbldhdGNocG9pbnQoJm1fc3RydWN0dXJlV2F0Y2hwb2ludCk7CiAKLSAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShtX2tleS51aWQo
KSk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIG1fa2V5
LnVpZCgpKTsKICAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBzdHJ1Y3R1cmUtPnByb3BlcnR5UmVw
bGFjZW1lbnRXYXRjaHBvaW50U2V0KG9mZnNldCk7CiAgICAgc2V0LT5hZGQoJm1fcHJvcGVydHlX
YXRjaHBvaW50KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAyOTI0NDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIExM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlCiAKIHZvaWQgTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjppbnN0YWxsKFZNJiB2bSkKIHsKLSAgICBS
RUxFQVNFX0FTU0VSVChtX2tleS5pc1dhdGNoYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCht
X2tleS5pc1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6TWFrZU5vQ2hhbmdlcykpOwogCiAg
ICAgbV9rZXkub2JqZWN0KCktPnN0cnVjdHVyZSh2bSktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50
KHRoaXMpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFBy
b3BlcnR5Q29uZGl0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uY3BwCShyZXZpc2lvbiAyOTI0NDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMiArNDYsMTIgQEAgdm9pZCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbjo6ZHVtcChQcmludAogICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsK
IH0KIAotYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6c3RydWN0dXJlRW5zdXJlc1ZhbGlk
aXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSBjb25zdAorYm9vbCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbjo6c3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnQoQ29uY3VycmVuY3kgY29uY3VycmVuY3kpIGNvbnN0CiB7CiAgICAg
aWYgKCEqdGhpcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBtX2Nv
bmRpdGlvbi5pc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChtX29i
amVjdC0+c3RydWN0dXJlKCksIG51bGxwdHIpOworICAgIHJldHVybiBtX2NvbmRpdGlvbi5pc1N0
aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChjb25jdXJyZW5jeSwgbV9v
YmplY3QtPnN0cnVjdHVyZSgpLCBudWxscHRyKTsKIH0KIAogYm9vbCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbjo6dmFsaWRpdHlSZXF1aXJlc0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkgY29uc3QKQEAgLTY3LDQ0ICs2Nyw0NCBAQCBib29sIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uOjp2YWxpZGl0eVJlCiAgICAgcmV0dXJuIHZhbGlkaXR5UmVxdWlyZXNJbXB1
cmVQcm9wZXJ0eVdhdGNocG9pbnQobV9vYmplY3QtPnN0cnVjdHVyZSgpKTsKIH0KIAotYm9vbCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0
eVdhdGNocG9pbnQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Citib29sIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2lu
dChDb25jdXJyZW5jeSBjb25jdXJyZW5jeSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fY29uZGl0aW9uLmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50KHN0cnVjdHVyZSwgbV9vYmplY3QpOworICAgIHJldHVybiBtX2NvbmRpdGlv
bi5pc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChjb25jdXJyZW5j
eSwgc3RydWN0dXJlLCBtX29iamVjdCk7CiB9CiAKLWJvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRp
b246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkgY29uc3QK
K2Jvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJl
UHJvcGVydHlXYXRjaHBvaW50KENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5KSBjb25zdAogewogICAg
IGlmICghKnRoaXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBpc1N0aWxs
VmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChtX29iamVjdC0+c3RydWN0dXJl
KCkpOworICAgIHJldHVybiBpc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hw
b2ludChjb25jdXJyZW5jeSwgbV9vYmplY3QtPnN0cnVjdHVyZSgpKTsKIH0KIAogCi1ib29sIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
IGNvbnN0Citib29sIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWQoQ29uY3Vy
cmVuY3kgY29uY3VycmVuY3ksIFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAogewotICAgIHJl
dHVybiBtX2NvbmRpdGlvbi5pc1N0aWxsVmFsaWQoc3RydWN0dXJlLCBtX29iamVjdCk7CisgICAg
cmV0dXJuIG1fY29uZGl0aW9uLmlzU3RpbGxWYWxpZChjb25jdXJyZW5jeSwgc3RydWN0dXJlLCBt
X29iamVjdCk7CiB9CiAKLWJvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxp
ZCgpIGNvbnN0Citib29sIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWQoQ29u
Y3VycmVuY3kgY29uY3VycmVuY3kpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBpc1N0aWxsVmFsaWQobV9vYmplY3QtPnN0
cnVjdHVyZSgpKTsKKyAgICByZXR1cm4gaXNTdGlsbFZhbGlkKGNvbmN1cnJlbmN5LCBtX29iamVj
dC0+c3RydWN0dXJlKCkpOwogfQogCi1ib29sIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjpzdHJ1
Y3R1cmVFbnN1cmVzVmFsaWRpdHkoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Citib29sIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uOjpzdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHkoQ29uY3VycmVu
Y3kgY29uY3VycmVuY3ksIFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAogewotICAgIHJldHVy
biBtX2NvbmRpdGlvbi5pc1N0aWxsVmFsaWQoc3RydWN0dXJlKTsKKyAgICByZXR1cm4gbV9jb25k
aXRpb24uaXNTdGlsbFZhbGlkKGNvbmN1cnJlbmN5LCBzdHJ1Y3R1cmUpOwogfQogCi1ib29sIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uOjpzdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHkoKSBjb25zdAor
Ym9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6c3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KENv
bmN1cnJlbmN5IGNvbmN1cnJlbmN5KSBjb25zdAogewogICAgIGlmICghKnRoaXMpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5
KG1fb2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgcmV0dXJuIHN0cnVjdHVyZUVuc3VyZXNWYWxp
ZGl0eShjb25jdXJyZW5jeSwgbV9vYmplY3QtPnN0cnVjdHVyZSgpKTsKIH0KIAogYm9vbCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbjo6aXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0
Y2hwb2ludCgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oCShyZXZpc2lvbiAyOTI0NDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMjA0LDcgKzIwNCw3IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBDaGVj
a3MgaWYgdGhlIG9iamVjdCdzIHN0cnVjdHVyZSBjbGFpbXMgdGhhdCB0aGUgcHJvcGVydHkgd29u
J3QgYmUgaW50ZXJjZXB0ZWQuIFZhbGlkaXR5CiAgICAgLy8gZG9lcyBub3QgcmVxdWlyZSB3YXRj
aHBvaW50cyBvbiB0aGUgb2JqZWN0LgotICAgIGJvb2wgc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5
QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSBjb25zdDsKKyAgICBib29sIHN0cnVj
dHVyZUVuc3VyZXNWYWxpZGl0eUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KENvbmN1
cnJlbmN5KSBjb25zdDsKICAgICAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2UgbmVlZCBhbiBp
bXB1cmUgcHJvcGVydHkgd2F0Y2hwb2ludCB0byBlbnN1cmUgdmFsaWRpdHkgZXZlbiBpZgogICAg
IC8vIGlzU3RpbGxWYWxpZEFjY29yZGluZ1RvU3RydWN0dXJlKCkgcmV0dXJuZWQgdHJ1ZS4KQEAg
LTIxMywzNiArMjEzLDM2IEBAIHB1YmxpYzoKIAogICAgIC8vIENoZWNrcyBpZiB0aGUgY29uZGl0
aW9uIHN0aWxsIGhvbGRzIHNldHRpbmcgYXNpZGUgdGhlIG5lZWQgZm9yIGFuIGltcHVyZSBwcm9w
ZXJ0eSB3YXRjaHBvaW50LgogICAgIC8vIFZhbGlkaXR5IG1pZ2h0IHN0aWxsIHJlcXVpcmUgd2F0
Y2hwb2ludHMgb24gdGhlIG9iamVjdC4KLSAgICBib29sIGlzU3RpbGxWYWxpZEFzc3VtaW5nSW1w
dXJlUHJvcGVydHlXYXRjaHBvaW50KFN0cnVjdHVyZSopIGNvbnN0OwotICAgIGJvb2wgaXNTdGls
bFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSBjb25zdDsKKyAgICBib29s
IGlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KENvbmN1cnJlbmN5
LCBTdHJ1Y3R1cmUqKSBjb25zdDsKKyAgICBib29sIGlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJl
UHJvcGVydHlXYXRjaHBvaW50KENvbmN1cnJlbmN5KSBjb25zdDsKIAogICAgIC8vIENoZWNrcyBp
ZiB0aGUgY29uZGl0aW9uIHN0aWxsIGhvbGRzLiBNYXkgY29uc2VydmF0aXZlbHkgcmV0dXJuIGZh
bHNlLCBpZiB0aGUgb2JqZWN0IGFuZAogICAgIC8vIHN0cnVjdHVyZSBhbG9uZSBkb24ndCBndWFy
YW50ZWUgdGhlIGNvbmRpdGlvbi4gTm90ZSB0aGF0IHRoaXMgbWF5IHJldHVybiB0cnVlIGlmIHRo
ZQogICAgIC8vIGNvbmRpdGlvbiBzdGlsbCByZXF1aXJlcyBzb21lIHdhdGNocG9pbnRzIG9uIHRo
ZSBvYmplY3QgaW4gYWRkaXRpb24gdG8gY2hlY2tpbmcgdGhlCiAgICAgLy8gc3RydWN0dXJlLiBJ
ZiB5b3Ugd2FudCB0byBjaGVjayBpZiB0aGUgY29uZGl0aW9uIGhvbGRzIGJ5IHVzaW5nIHRoZSBz
dHJ1Y3R1cmUgYWxvbmUsCiAgICAgLy8gdXNlIHN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eSgpLgot
ICAgIGJvb2wgaXNTdGlsbFZhbGlkKFN0cnVjdHVyZSopIGNvbnN0OwotICAgIGJvb2wgaXNTdGls
bFZhbGlkKCkgY29uc3Q7CisgICAgYm9vbCBpc1N0aWxsVmFsaWQoQ29uY3VycmVuY3ksIFN0cnVj
dHVyZSopIGNvbnN0OworICAgIGJvb2wgaXNTdGlsbFZhbGlkKENvbmN1cnJlbmN5KSBjb25zdDsK
ICAgICAKICAgICAvLyBTaG9ydGhhbmQgZm9yIGNvbmRpdGlvbigpLmlzU3RpbGxWYWxpZChzdHJ1
Y3R1cmUpLgotICAgIGJvb2wgc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KFN0cnVjdHVyZSopIGNv
bnN0OwotICAgIGJvb2wgc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KCkgY29uc3Q7CisgICAgYm9v
bCBzdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHkoQ29uY3VycmVuY3ksIFN0cnVjdHVyZSopIGNvbnN0
OworICAgIGJvb2wgc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KENvbmN1cnJlbmN5KSBjb25zdDsK
ICAgICAKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgaXQncyBzdGlsbCB2YWxpZCBhbmQgd2UgY291
bGQgZW5mb3JjZSB2YWxpZGl0eSBieSBzZXR0aW5nIGEgdHJhbnNpdGlvbgogICAgIC8vIHdhdGNo
cG9pbnQgb24gdGhlIHN0cnVjdHVyZSBhbmQgcG9zc2libHkgYW4gaW1wdXJlIHByb3BlcnR5IHdh
dGNocG9pbnQuCiAgICAgYm9vbCBpc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KAogICAgICAgICBTdHJ1Y3R1cmUqLAotICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbjo6
V2F0Y2hhYmlsaXR5RWZmb3J0ID0gUHJvcGVydHlDb25kaXRpb246Ok1ha2VOb0NoYW5nZXMpIGNv
bnN0OworICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0KSBjb25z
dDsKICAgICBib29sIGlzV2F0Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQo
Ci0gICAgICAgIFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQgPSBQcm9wZXJ0
eUNvbmRpdGlvbjo6TWFrZU5vQ2hhbmdlcykgY29uc3Q7CisgICAgICAgIFByb3BlcnR5Q29uZGl0
aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0
IGl0J3Mgc3RpbGwgdmFsaWQgYW5kIHdlIGNvdWxkIGVuZm9yY2UgdmFsaWRpdHkgYnkgc2V0dGlu
ZyBhIHRyYW5zaXRpb24KICAgICAvLyB3YXRjaHBvaW50IG9uIHRoZSBzdHJ1Y3R1cmUsIGFuZCBh
IHZhbHVlIGNoYW5nZSB3YXRjaHBvaW50IGlmIHdlJ3JlIEVxdWl2YWxlbmNlLgogICAgIGJvb2wg
aXNXYXRjaGFibGUoCiAgICAgICAgIFN0cnVjdHVyZSosCi0gICAgICAgIFByb3BlcnR5Q29uZGl0
aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQgPSBQcm9wZXJ0eUNvbmRpdGlvbjo6TWFrZU5vQ2hhbmdl
cykgY29uc3Q7CisgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQp
IGNvbnN0OwogICAgIGJvb2wgaXNXYXRjaGFibGUoCi0gICAgICAgIFByb3BlcnR5Q29uZGl0aW9u
OjpXYXRjaGFiaWxpdHlFZmZvcnQgPSBQcm9wZXJ0eUNvbmRpdGlvbjo6TWFrZU5vQ2hhbmdlcykg
Y29uc3Q7CisgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQpIGNv
bnN0OwogICAgIAogICAgIGJvb2wgd2F0Y2hpbmdSZXF1aXJlc1N0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50KCkgY29uc3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAJ
KHJldmlzaW9uIDI5MjQ0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCwxOSArMTMw
LDcgQEAgYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6c3RydWN0dQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biYgY29uZGl0aW9uIDogKnRoaXMpIHsKLSAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJl
RW5zdXJlc1ZhbGlkaXR5KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpzdHJ1
Y3R1cmVzRW5zdXJlVmFsaWRpdHlBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpIGNv
bnN0Ci17Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
LSAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiAqdGhp
cykgewotICAgICAgICBpZiAoIWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHlBc3N1
bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKQorICAgICAgICBpZiAoIWNvbmRpdGlvbi5z
dHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHkoQ29uY3VycmVuY3k6OkNvbmN1cnJlbnRUaHJlYWQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4
NCwxOCArMTcyLDYgQEAgdm9pZCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6ZHVtcChQcgog
ICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKIH0KIAotYm9vbCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldDo6aXNWYWxpZEFuZFdhdGNoYWJsZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFp
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAoYXV0byYgY29uZGl0
aW9uIDogKm1fZGF0YSkgewotICAgICAgICBpZiAoIWNvbmRpdGlvbi5pc1dhdGNoYWJsZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQog
bmFtZXNwYWNlIHsKIAogbmFtZXNwYWNlIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJu
YWwgewpAQCAtMjAzLDcgKzE3OSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRlQ29uZGl0aW9uKAot
ICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIG9iamVjdCwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCwgUHJvcGVydHlDb25kaXRpb246OktpbmQgY29uZGl0aW9uS2luZCkKKyAgICBW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBvYmplY3QsIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGNvbmRpdGlvbktpbmQsIENvbmN1cnJlbmN5
IGNvbmN1cnJlbmN5KQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0LT5zdHJ1
Y3R1cmUodm0pOwogICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2
ZXJib3NlKQpAQCAtMjEzLDcgKzE4OSw3IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGdlbmVy
YXRlQ29uZGl0aW8KICAgICBzd2l0Y2ggKGNvbmRpdGlvbktpbmQpIHsKICAgICBjYXNlIFByb3Bl
cnR5Q29uZGl0aW9uOjpQcmVzZW5jZTogewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwot
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRs
eSh1aWQsIGF0dHJpYnV0ZXMpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1
Y3R1cmUtPmdldCh2bSwgY29uY3VycmVuY3ksIHVpZCwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlm
IChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbigpOwogICAgICAgICByZXN1bHQgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
bjo6cHJlc2VuY2Uodm0sIG93bmVyLCBvYmplY3QsIHVpZCwgb2Zmc2V0LCBhdHRyaWJ1dGVzKTsK
QEAgLTIzNSwxMCArMjExLDEwIEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRlQ29u
ZGl0aW8KICAgICB9CiAgICAgY2FzZSBQcm9wZXJ0eUNvbmRpdGlvbjo6RXF1aXZhbGVuY2U6IHsK
ICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkLCBhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIGNvbmN1cnJlbmN5
LCB1aWQsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQp
CiAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKTsKLSAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0Q29uY3VycmVudGx5KHN0cnVjdHVyZSwg
b2Zmc2V0KTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KGNvbmN1
cnJlbmN5LCBzdHJ1Y3R1cmUsIG9mZnNldCk7CiAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAg
ICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKTsKICAgICAgICAgcmVzdWx0ID0g
T2JqZWN0UHJvcGVydHlDb25kaXRpb246OmVxdWl2YWxlbmNlKHZtLCBvd25lciwgb2JqZWN0LCB1
aWQsIHZhbHVlKTsKQEAgLTI1Niw3ICsyMzIsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBn
ZW5lcmF0ZUNvbmRpdGlvCiAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbigp
OwogICAgIH0KIAotICAgIGlmICghcmVzdWx0LmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJv
cGVydHlXYXRjaHBvaW50KCkpIHsKKyAgICBpZiAoIXJlc3VsdC5pc1N0aWxsVmFsaWRBc3N1bWlu
Z0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChjb25jdXJyZW5jeSkpIHsKICAgICAgICAgaWYgKE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCJGYWlsZWQgdG8gY3JlYXRlIGNvbmRpdGlvbjogIiwgcmVzdWx0LCAiXG4iKTsKICAg
ICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uKCk7CkBAIC0zNDEsNyArMzE3LDcg
QEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaQogICAgICAgICB2bSwg
Z2xvYmFsT2JqZWN0LCBoZWFkU3RydWN0dXJlLCBudWxscHRyLAogICAgICAgICBbJl0gKFZlY3Rv
cjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4mIGNvbmRpdGlvbnMsIEpTT2JqZWN0KiBvYmplY3Qp
IC0+IGJvb2wgewogICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gcmVzdWx0ID0K
LSAgICAgICAgICAgICAgICBnZW5lcmF0ZUNvbmRpdGlvbih2bSwgb3duZXIsIG9iamVjdCwgdWlk
LCBQcm9wZXJ0eUNvbmRpdGlvbjo6QWJzZW5jZSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVD
b25kaXRpb24odm0sIG93bmVyLCBvYmplY3QsIHVpZCwgUHJvcGVydHlDb25kaXRpb246OkFic2Vu
Y2UsIENvbmN1cnJlbmN5OjpNYWluVGhyZWFkKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvbmRpdGlvbnMuYXBw
ZW5kKHJlc3VsdCk7CkBAIC0zNTYsNyArMzMyLDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQgZ2VuZXJhdGVDb25kaQogICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBoZWFkU3RydWN0dXJl
LCBudWxscHRyLAogICAgICAgICBbJl0gKFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4m
IGNvbmRpdGlvbnMsIEpTT2JqZWN0KiBvYmplY3QpIC0+IGJvb2wgewogICAgICAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gcmVzdWx0ID0KLSAgICAgICAgICAgICAgICBnZW5lcmF0ZUNv
bmRpdGlvbih2bSwgb3duZXIsIG9iamVjdCwgdWlkLCBQcm9wZXJ0eUNvbmRpdGlvbjo6QWJzZW5j
ZU9mU2V0RWZmZWN0KTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZUNvbmRpdGlvbih2bSwgb3du
ZXIsIG9iamVjdCwgdWlkLCBQcm9wZXJ0eUNvbmRpdGlvbjo6QWJzZW5jZU9mU2V0RWZmZWN0LCBD
b25jdXJyZW5jeTo6TWFpblRocmVhZCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjb25kaXRpb25zLmFwcGVuZChy
ZXN1bHQpOwpAQCAtMzc0LDcgKzM1MCw3IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdl
bmVyYXRlQ29uZGkKICAgICAgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGtpbmQgPQog
ICAgICAgICAgICAgICAgIG9iamVjdCA9PSBwcm90b3R5cGUgPyBQcm9wZXJ0eUNvbmRpdGlvbjo6
UHJlc2VuY2UgOiBQcm9wZXJ0eUNvbmRpdGlvbjo6QWJzZW5jZTsKICAgICAgICAgICAgIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uIHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25k
aXRpb24odm0sIG93bmVyLCBvYmplY3QsIHVpZCwga2luZCk7CisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdGVDb25kaXRpb24odm0sIG93bmVyLCBvYmplY3QsIHVpZCwga2luZCwgQ29uY3VycmVuY3k6
Ok1haW5UaHJlYWQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQocmVzdWx0KTsKQEAg
LTQyMiw3ICszOTgsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQg
PSBnZW5lcmF0ZUNvbmRpdGlvbih2bSwgb3duZXIsIG9iamVjdCwgdWlkLCBraW5kKTsKKyAgICAg
ICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHJlc3VsdCA9IGdlbmVyYXRlQ29uZGl0aW9u
KHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIGtpbmQsIENvbmN1cnJlbmN5OjpNYWluVGhyZWFkKTsK
ICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGNvbmRpdGlvbnMuYXBwZW5kKHJlc3VsdCk7CkBAIC00NzEsNyArNDQ3LDcg
QEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaQogICAgICAgICBbJl0g
KFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4mIGNvbmRpdGlvbnMsIEpTT2JqZWN0KiBv
YmplY3QpIC0+IGJvb2wgewogICAgICAgICAgICAgUHJvcGVydHlDb25kaXRpb246OktpbmQga2lu
ZCA9CiAgICAgICAgICAgICAgICAgb2JqZWN0ID09IHByb3RvdHlwZSA/IFByb3BlcnR5Q29uZGl0
aW9uOjpFcXVpdmFsZW5jZSA6IFByb3BlcnR5Q29uZGl0aW9uOjpBYnNlbmNlOwotICAgICAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gcmVzdWx0ID0gZ2VuZXJhdGVDb25kaXRpb24odm0s
IG51bGxwdHIsIG9iamVjdCwgdWlkLCBraW5kKTsKKyAgICAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIHJlc3VsdCA9IGdlbmVyYXRlQ29uZGl0aW9uKHZtLCBudWxscHRyLCBvYmplY3Qs
IHVpZCwga2luZCwgQ29uY3VycmVuY3k6OkNvbmN1cnJlbnRUaHJlYWQpOwogICAgICAgICAgICAg
aWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
Y29uZGl0aW9ucy5hcHBlbmQocmVzdWx0KTsKQEAgLTQ4NSw3ICs0NjEsNyBAQCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpCiAgICAgcmV0dXJuIGdlbmVyYXRlQ29uZGl0
aW9ucygKICAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgaGVhZFN0cnVjdHVyZSwgbnVsbHB0ciwK
ICAgICAgICAgWyZdIChWZWN0b3I8T2JqZWN0UHJvcGVydHlDb25kaXRpb24+JiBjb25kaXRpb25z
LCBKU09iamVjdCogb2JqZWN0KSAtPiBib29sIHsKLSAgICAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIHJlc3VsdCA9IGdlbmVyYXRlQ29uZGl0aW9uKHZtLCBudWxscHRyLCBvYmplY3Qs
IHVpZCwgUHJvcGVydHlDb25kaXRpb246OkFic2VuY2UpOworICAgICAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gcmVzdWx0ID0gZ2VuZXJhdGVDb25kaXRpb24odm0sIG51bGxwdHIsIG9i
amVjdCwgdWlkLCBQcm9wZXJ0eUNvbmRpdGlvbjo6QWJzZW5jZSwgQ29uY3VycmVuY3k6OkNvbmN1
cnJlbnRUaHJlYWQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQocmVzdWx0KTsKQEAg
LTUwMCw3ICs0NzYsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRp
CiAgICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIGhlYWRTdHJ1Y3R1cmUsIG51bGxwdHIsCiAgICAg
ICAgIFsmXSAoVmVjdG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiYgY29uZGl0aW9ucywgSlNP
YmplY3QqIG9iamVjdCkgLT4gYm9vbCB7CiAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiByZXN1bHQgPQotICAgICAgICAgICAgICAgIGdlbmVyYXRlQ29uZGl0aW9uKHZtLCBudWxs
cHRyLCBvYmplY3QsIHVpZCwgUHJvcGVydHlDb25kaXRpb246OkFic2VuY2VPZlNldEVmZmVjdCk7
CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25kaXRpb24odm0sIG51bGxwdHIsIG9iamVjdCwg
dWlkLCBQcm9wZXJ0eUNvbmRpdGlvbjo6QWJzZW5jZU9mU2V0RWZmZWN0LCBDb25jdXJyZW5jeTo6
Q29uY3VycmVudFRocmVhZCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjb25kaXRpb25zLmFwcGVuZChyZXN1bHQp
OwpAQCAtNTExLDcgKzQ4Nyw3IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRl
Q29uZGkKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRlQ29uZGl0aW9uRm9yU2VsZkVx
dWl2YWxlbmNlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIG9iamVjdCwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVDb25kaXRpb24o
dm0sIG93bmVyLCBvYmplY3QsIHVpZCwgUHJvcGVydHlDb25kaXRpb246OkVxdWl2YWxlbmNlKTsK
KyAgICByZXR1cm4gZ2VuZXJhdGVDb25kaXRpb24odm0sIG93bmVyLCBvYmplY3QsIHVpZCwgUHJv
cGVydHlDb25kaXRpb246OkVxdWl2YWxlbmNlLCBDb25jdXJyZW5jeTo6TWFpblRocmVhZCk7CiB9
CiAKIC8vIEN1cnJlbnQgbWlnaHQgYmUgbnVsbC4gU3RydWN0dXJlIGNhbid0IGJlIG51bGwuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAkocmV2aXNpb24gMjkyNDQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDggKzcxLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gIW1fZGF0
YSB8fCAhbV9kYXRhLT5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgYm9vbCBpc1ZhbGlkQW5kV2F0
Y2hhYmxlKCkgY29uc3Q7Ci0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YSA/IG1fZGF0YS0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAg
ewpAQCAtMTM5LDcgKzEzNyw2IEBAIHB1YmxpYzoKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCBtZXJnZWRXaXRoKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBvdGhlcikg
Y29uc3Q7CiAgICAgCiAgICAgYm9vbCBzdHJ1Y3R1cmVzRW5zdXJlVmFsaWRpdHkoKSBjb25zdDsK
LSAgICBib29sIHN0cnVjdHVyZXNFbnN1cmVWYWxpZGl0eUFzc3VtaW5nSW1wdXJlUHJvcGVydHlX
YXRjaHBvaW50KCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBuZWVkSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cm9wZXJ0eUNvbmRpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcAkocmV2aXNpb24gMjkyNDQ0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1wKFBy
aW50U3RyZWFtCiB9CiAKIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3Vt
aW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U09iamVjdCogYmFzZSkgY29uc3QKKyAgICBDb25jdXJyZW5jeSBjb25jdXJyZW5jeSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBiYXNlKSBjb25zdAogewogICAgIGlmIChQcm9wZXJ0
eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coCkBAIC0xMDks
NyArMTA5LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdQogICAg
IHN3aXRjaCAobV9oZWFkZXIudHlwZSgpKSB7CiAgICAgY2FzZSBQcmVzZW5jZTogewogICAgICAg
ICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgY3Vy
cmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpLCBjdXJyZW50QXR0
cmlidXRlcyk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldChzdHJ1Y3R1cmUtPnZtKCksIGNvbmN1cnJlbmN5LCB1aWQoKSwgY3VycmVudEF0dHJp
YnV0ZXMpOwogICAgICAgICBpZiAoY3VycmVudE9mZnNldCAhPSBvZmZzZXQoKSB8fCBjdXJyZW50
QXR0cmlidXRlcyAhPSBhdHRyaWJ1dGVzKCkpIHsKICAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNv
bmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKQEAg
LTEzNiw3ICsxMzYsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBQcm9wZXJ0
eU9mZnNldCBjdXJyZW50T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkKCkp
OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBjdXJyZW50T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQo
c3RydWN0dXJlLT52bSgpLCBjb25jdXJyZW5jeSwgdWlkKCkpOwogICAgICAgICBpZiAoY3VycmVu
dE9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25k
aXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJbnZhbGlk
IGJlY2F1c2UgdGhlIHByb3BlcnR5IGV4aXN0cyBhdCBvZmZzZXQ6ICIsIGN1cnJlbnRPZmZzZXQs
ICJcbiIpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3Rp
bGxWYWxpZEFzc3UKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgY3VycmVu
dEF0dHJpYnV0ZXM7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1
Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSwgY3VycmVudEF0dHJpYnV0ZXMpOworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBjdXJyZW50T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoc3RydWN0dXJl
LT52bSgpLCBjb25jdXJyZW5jeSwgdWlkKCksIGN1cnJlbnRBdHRyaWJ1dGVzKTsKICAgICAgICAg
aWYgKGN1cnJlbnRPZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGN1
cnJlbnRBdHRyaWJ1dGVzICYgKFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5
QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9y
VmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6
OnZlcmJvc2UpIHsKQEAgLTIzMSw3ICsyMzEsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjpp
c1N0aWxsVmFsaWRBc3N1CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHNvbWV3aGF0IHJhY3ks
IGFuZCBtYXliZSBtb3JlIHJpc2t5IHRoYW4gd2Ugd2FudC4KICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDY0MQogICAgICAgICAKLSAgICAgICAg
UHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5
KHVpZCgpKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0KHN0cnVjdHVyZS0+dm0oKSwgY29uY3VycmVuY3ksIHVpZCgpKTsKICAgICAgICAgaWYg
KGN1cnJlbnRPZmZzZXQgPT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKFByb3Bl
cnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9n
KApAQCAtMjQxLDcgKzI0MSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxp
ZEFzc3UKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIEpT
VmFsdWUgY3VycmVudFZhbHVlID0gYmFzZS0+Z2V0RGlyZWN0Q29uY3VycmVudGx5KHN0cnVjdHVy
ZSwgY3VycmVudE9mZnNldCk7CisgICAgICAgIEpTVmFsdWUgY3VycmVudFZhbHVlID0gYmFzZS0+
Z2V0RGlyZWN0KGNvbmN1cnJlbmN5LCBzdHJ1Y3R1cmUsIGN1cnJlbnRPZmZzZXQpOwogICAgICAg
ICBpZiAoY3VycmVudFZhbHVlICE9IHJlcXVpcmVkVmFsdWUoKSkgewogICAgICAgICAgICAgaWYg
KFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBk
YXRhTG9nKApAQCAtMjU0LDcgKzI1NCw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3Rp
bGxWYWxpZEFzc3UKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSAKICAgICBjYXNlIEhhc1N0
YXRpY1Byb3BlcnR5OiB7Ci0gICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0
Q29uY3VycmVudGx5KHVpZCgpKSkpCisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVy
ZS0+Z2V0KHN0cnVjdHVyZS0+dm0oKSwgY29uY3VycmVuY3ksIHVpZCgpKSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnN0YXRpY1Byb3BlcnRpZXNS
ZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjYsNiArMjY2LDE2IEBA
IGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3UKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIENvbmN1cnJlbmN5IHdhdGNoYWJpbGl0eVRv
Q29uY3VycmVuY3koUHJvcGVydHlDb25kaXRpb246OldhdGNoYWJpbGl0eUVmZm9ydCBlZmZvcnQp
Cit7CisgICAgc3dpdGNoIChlZmZvcnQpIHsKKyAgICBjYXNlIFByb3BlcnR5Q29uZGl0aW9uOjpX
YXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJpbGl0eToKKyAgICAgICAgcmV0dXJuIENv
bmN1cnJlbmN5OjpNYWluVGhyZWFkOworICAgIGNhc2UgUHJvcGVydHlDb25kaXRpb246OldhdGNo
YWJpbGl0eUVmZm9ydDo6TWFrZU5vQ2hhbmdlczoKKyAgICAgICAgcmV0dXJuIENvbmN1cnJlbmN5
OjpDb25jdXJyZW50VGhyZWFkOworICAgIH0KK30KKwogYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6
dmFsaWRpdHlSZXF1aXJlc0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkgY29uc3QKIHsKICAgICBpZiAoISp0aGlzKQpAQCAtMjg2LDkgKzI5Niw5IEBAIGJvb2wg
UHJvcGVydHlDb25kaXRpb246OnZhbGlkaXR5UmVxdWlyZXMKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNPYmplY3QqIGJhc2UpIGNvbnN0Citib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0
aWxsVmFsaWQoQ29uY3VycmVuY3kgY29uY3VycmVuY3ksIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U09iamVjdCogYmFzZSkgY29uc3QKIHsKLSAgICBpZiAoIWlzU3RpbGxWYWxpZEFzc3VtaW5nSW1w
dXJlUHJvcGVydHlXYXRjaHBvaW50KHN0cnVjdHVyZSwgYmFzZSkpCisgICAgaWYgKCFpc1N0aWxs
VmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChjb25jdXJyZW5jeSwgc3RydWN0
dXJlLCBiYXNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQ3VycmVudGx5IHdl
IGFzc3VtZSB0aGF0IGFuIGltcHVyZSBwcm9wZXJ0eSBjYW4gY2F1c2UgYSBwcm9wZXJ0eSB0byBh
cHBlYXIsIGFuZCBjYW4gYWxzbwpAQCAtMzIwLDcgKzMzMCw3IEBAIGJvb2wgUHJvcGVydHlDb25k
aXRpb246OmlzV2F0Y2hhYmxlV2hlblYKICAgICAKICAgICBzd2l0Y2ggKG1faGVhZGVyLnR5cGUo
KSkgewogICAgIGNhc2UgRXF1aXZhbGVuY2U6IHsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkKCkpOworICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldChzdHJ1Y3R1cmUtPnZtKCksIHdhdGNoYWJp
bGl0eVRvQ29uY3VycmVuY3koZWZmb3J0KSwgdWlkKCkpOwogICAgICAgICAKICAgICAgICAgLy8g
VGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gc29tZSB2YXJpYW50IG9mIGlz
VmFsaWQgcmV0dXJuZWQgdHJ1ZSwgd2hpY2gKICAgICAgICAgLy8gaW1wbGllcyB0aGF0IHdlIGFs
cmVhZHkgY29uZmlybWVkIHRoYXQgdGhlIHN0cnVjdHVyZSBrbm93cyBvZiB0aGUgcHJvcGVydHku
IFdlIHNob3VsZApAQCAtMzY5LDE0ICszNzksMTQgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6
aXNXYXRjaGFibGVXaGVuVgogYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNXYXRjaGFibGVBc3N1
bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNPYmplY3QqIGJhc2UsIFdhdGNoYWJpbGl0eUVmZm9ydCBlZmZvcnQpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KHN0cnVj
dHVyZSwgYmFzZSkKKyAgICByZXR1cm4gaXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0
eVdhdGNocG9pbnQod2F0Y2hhYmlsaXR5VG9Db25jdXJyZW5jeShlZmZvcnQpLCBzdHJ1Y3R1cmUs
IGJhc2UpCiAgICAgICAgICYmIGlzV2F0Y2hhYmxlV2hlblZhbGlkKHN0cnVjdHVyZSwgZWZmb3J0
KTsKIH0KIAogYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNXYXRjaGFibGUoCiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBiYXNlLCBXYXRjaGFiaWxpdHlFZmZvcnQgZWZmb3J0
KSBjb25zdAogewotICAgIHJldHVybiBpc1N0aWxsVmFsaWQoc3RydWN0dXJlLCBiYXNlKQorICAg
IHJldHVybiBpc1N0aWxsVmFsaWQod2F0Y2hhYmlsaXR5VG9Db25jdXJyZW5jeShlZmZvcnQpLCBz
dHJ1Y3R1cmUsIGJhc2UpCiAgICAgICAgICYmIGlzV2F0Y2hhYmxlV2hlblZhbGlkKHN0cnVjdHVy
ZSwgZWZmb3J0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
b3BlcnR5Q29uZGl0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgJKHJldmlzaW9uIDI5MjQ0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDksNyArMjQ5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICAvLyBDaGVja3Mg
aWYgdGhlIG9iamVjdCdzIHN0cnVjdHVyZSBjbGFpbXMgdGhhdCB0aGUgcHJvcGVydHkgd29uJ3Qg
YmUgaW50ZXJjZXB0ZWQuCi0gICAgYm9vbCBpc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3Bl
cnR5V2F0Y2hwb2ludChTdHJ1Y3R1cmUqLCBKU09iamVjdCogYmFzZSA9IG51bGxwdHIpIGNvbnN0
OworICAgIGJvb2wgaXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQo
Q29uY3VycmVuY3ksIFN0cnVjdHVyZSosIEpTT2JqZWN0KiBiYXNlID0gbnVsbHB0cikgY29uc3Q7
CiAgICAgCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIG5lZWQgYW4gaW1wdXJlIHByb3BlcnR5
IHdhdGNocG9pbnQgdG8gZW5zdXJlIHZhbGlkaXR5IGV2ZW4gaWYKICAgICAvLyBpc1N0aWxsVmFs
aWRBY2NvcmRpbmdUb1N0cnVjdHVyZSgpIHJldHVybmVkIHRydWUuCkBAIC0yNjIsNyArMjYyLDcg
QEAgcHVibGljOgogICAgIC8vIGFuIG9iamVjdCBoYXMgdGhlIGdpdmVuIHN0cnVjdHVyZSBndWFy
YW50ZWVzIHRoZSBjb25kaXRpb24gc3RpbGwgaG9sZHMuIElmIGFuIG9iamVjdCBpcwogICAgIC8v
IHN1cHBsaWVkLCB0aGVuIHlvdSBtYXkgbmVlZCB0byB1c2Ugc29tZSBvdGhlciB3YXRjaHBvaW50
cyBvbiB0aGUgb2JqZWN0IHRvIGd1YXJhbnRlZSB0aGUKICAgICAvLyBjb25kaXRpb24gaW4gYWRk
aXRpb24gdG8gdGhlIHN0cnVjdHVyZSBjaGVjay4KLSAgICBib29sIGlzU3RpbGxWYWxpZChTdHJ1
Y3R1cmUqLCBKU09iamVjdCogYmFzZSA9IG51bGxwdHIpIGNvbnN0OworICAgIGJvb2wgaXNTdGls
bFZhbGlkKENvbmN1cnJlbmN5LCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogYmFzZSA9IG51bGxwdHIp
IGNvbnN0OwogICAgIAogICAgIC8vIEluIHNvbWUgY2FzZXMsIHRoZSBjb25kaXRpb24gaXMgbm90
IHdhdGNoYWJsZSwgYnV0IGNvdWxkIGJlIG1hZGUgd2F0Y2hhYmxlIGJ5IGVuYWJsaW5nIHRoZQog
ICAgIC8vIGFwcHJvcHJpYXRlIHdhdGNocG9pbnQuIEZvciBleGFtcGxlLCByZXBsYWNlbWVudCB3
YXRjaHBvaW50cyBhcmUgZW5hYmxlZCBvbmx5IHdoZW4gc29tZQpAQCAtMjkxLDEyICsyOTEsMTIg
QEAgcHVibGljOgogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBpdCdzIHN0aWxsIHZhbGlkIGFuZCB3
ZSBjb3VsZCBlbmZvcmNlIHZhbGlkaXR5IGJ5IHNldHRpbmcgYSB0cmFuc2l0aW9uCiAgICAgLy8g
d2F0Y2hwb2ludCBvbiB0aGUgc3RydWN0dXJlIGFuZCBwb3NzaWJseSBhbiBpbXB1cmUgcHJvcGVy
dHkgd2F0Y2hwb2ludC4KICAgICBib29sIGlzV2F0Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9wZXJ0
eVdhdGNocG9pbnQoCi0gICAgICAgIFN0cnVjdHVyZSosIEpTT2JqZWN0KiBiYXNlLCBXYXRjaGFi
aWxpdHlFZmZvcnQgPSBNYWtlTm9DaGFuZ2VzKSBjb25zdDsKKyAgICAgICAgU3RydWN0dXJlKiwg
SlNPYmplY3QqIGJhc2UsIFdhdGNoYWJpbGl0eUVmZm9ydCkgY29uc3Q7CiAgICAgCiAgICAgLy8g
VGhpcyBtZWFucyB0aGF0IGl0J3Mgc3RpbGwgdmFsaWQgYW5kIHdlIGNvdWxkIGVuZm9yY2UgdmFs
aWRpdHkgYnkgc2V0dGluZyBhIHRyYW5zaXRpb24KICAgICAvLyB3YXRjaHBvaW50IG9uIHRoZSBz
dHJ1Y3R1cmUuCiAgICAgYm9vbCBpc1dhdGNoYWJsZSgKLSAgICAgICAgU3RydWN0dXJlKiwgSlNP
YmplY3QqLCBXYXRjaGFiaWxpdHlFZmZvcnQgPSBNYWtlTm9DaGFuZ2VzKSBjb25zdDsKKyAgICAg
ICAgU3RydWN0dXJlKiwgSlNPYmplY3QqLCBXYXRjaGFiaWxpdHlFZmZvcnQpIGNvbnN0OwogICAg
IAogICAgIGJvb2wgd2F0Y2hpbmdSZXF1aXJlc1N0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50
KCkgY29uc3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAy
OTI0NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmluaXRpYQogCiB2b2lkIEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludDo6aW5zdGFsbChWTSYgdm0pCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9rZXku
aXNXYXRjaGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9rZXkuaXNXYXRjaGFibGUoUHJv
cGVydHlDb25kaXRpb246Ok1ha2VOb0NoYW5nZXMpKTsKICAgICAKICAgICBtX2tleS5vYmplY3Qo
KS0+c3RydWN0dXJlKHZtKS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQodGhpcyk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
cmV2aXNpb24gMjkyNDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNTEsNyArNDI1MSw3IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmNoZWNrKGNvbnN0IE9iamVjdFAKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVj
dHVyZSgqbV92bSk7Ci0gICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5
KHN0cnVjdHVyZSkpCisgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5
KENvbmN1cnJlbmN5OjpDb25jdXJyZW50VGhyZWFkLCBzdHJ1Y3R1cmUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgYWRkVG9HcmFwaCgKQEAgLTQzODAsNyArNDM4MCw3IEBAIEdl
dEJ5T2Zmc2V0TWV0aG9kIEJ5dGVDb2RlUGFyc2VyOjpwbGFuTG8KICAgICAKICAgICAvLyBDaGVj
ayBpZiB0aGUgc3RydWN0dXJlIHRoYXQgd2UndmUgcmVnaXN0ZXJlZCBtYWtlcyB0aGUgY29uZGl0
aW9uIGhvbGQuIElmIG5vdCwganVzdCBnaXZlCiAgICAgLy8gdXAuIFRoaXMgaXMgY2FzZSAoNSkg
YWJvdmUuCi0gICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KHN0cnVj
dHVyZSkpCisgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KENvbmN1
cnJlbmN5OjpDb25jdXJyZW50VGhyZWFkLCBzdHJ1Y3R1cmUpKQogICAgICAgICByZXR1cm4gR2V0
QnlPZmZzZXRNZXRob2QoKTsKICAgICAKICAgICAvLyBJZiB0aGUgc3RydWN0dXJlIGlzIHdhdGNo
ZWQgYnkgdGhlIERGRyBhbHJlYWR5LCB0aGVuIGp1c3QgdXNlIHRoaXMgZmFjdCB0byBlbWl0IHRo
ZSBsb2FkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDI5MjQ0NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDM1LDcgKzE0MzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBj
b25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHkoc3RydWN0dXJl
KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1Zh
bGlkaXR5KENvbmN1cnJlbmN5OjpDb25jdXJyZW50VGhyZWFkLCBzdHJ1Y3R1cmUpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRXYXRjaHBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgJKHJldmlzaW9uIDI5MjQ0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2NCw3ICsxNjQsNyBAQCBzdHJ1Y3QgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50QWRh
cHRvCiAgICAgc3RhdGljIHZvaWQgYWRkKENvZGVCbG9jayosIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uJiwgV2F0Y2hwb2ludENvbGxlY3RvciYpOwogICAgIHN0YXRpYyBib29sIGhhc0Jl
ZW5JbnZhbGlkYXRlZChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5KQogICAgIHsK
LSAgICAgICAgcmV0dXJuICFrZXkuaXNXYXRjaGFibGUoKTsKKyAgICAgICAgcmV0dXJuICFrZXku
aXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246Ok1ha2VOb0NoYW5nZXMpOwogICAgIH0KICAg
ICBzdGF0aWMgdm9pZCBkdW1wSW5Db250ZXh0KAogICAgICAgICBQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5LCBEdW1wQ29udGV4dCogY29udGV4dCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyOTI0
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA2NCw3ICsxMDY0LDcgQEAgYm9vbCBHcmFwaDo6d2F0Y2hDb25kaXRpb24oY29u
c3QgT2JqZWN0UAogICAgIGlmIChtX3BsYW4uaXNVbmxpbmtlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAoIWtleS5pc1dhdGNoYWJsZSgpKQorICAgIGlmICgha2V5LmlzV2F0
Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpNYWtlTm9DaGFuZ2VzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgRGVzaXJlZFdlYWtSZWZlcmVuY2VzJiB3ZWFrUmVmZXJlbmNlcyA9IG1f
cGxhbi53ZWFrUmVmZXJlbmNlcygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyOTI0NDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
ODEsNyArNzgxLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSgog
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICBmb3IgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA6IGNvbmRpdGlvbnMpIHsKICAgICAgICAgYXV0byYgd2F0Y2hwb2ludCA9IHdh
dGNocG9pbnRzW2luZGV4KytdOwotICAgICAgICBpZiAoIWNvbmRpdGlvbi5pc1dhdGNoYWJsZSgp
KQorICAgICAgICBpZiAoIWNvbmRpdGlvbi5pc1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6
TWFrZU5vQ2hhbmdlcykpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChjb25kaXRp
b24uY29uZGl0aW9uKCkua2luZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVzZW5jZSkKICAg
ICAgICAgICAgIG9mZnNldCA9IGNvbmRpdGlvbi5jb25kaXRpb24oKS5vZmZzZXQoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50LmNwcAkocmV2aXNpb24gMjkyNDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBDYWNoZWRTcGVjaWFsUHJvcGVydHlB
ZGFwdGl2ZVN0cnVjdHVyZVdhCiAKIHZvaWQgQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50OjppbnN0YWxsKFZNJiB2bSkKIHsKLSAgICBSRUxFQVNFX0FTU0VS
VChtX2tleS5pc1dhdGNoYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2tleS5pc1dhdGNo
YWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6TWFrZU5vQ2hhbmdlcykpOwogCiAgICAgbV9rZXkub2Jq
ZWN0KCktPnN0cnVjdHVyZSh2bSktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHRoaXMpOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAkocmV2aXNpb24gMjkyNDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYxLDcgKzI0NjEsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsU3BlY2llc1dhCiAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uc3RydWN0b3JDb25kaXRpb24gPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
bjo6ZXF1aXZhbGVuY2Uodm0sIHByb3RvdHlwZSwgcHJvdG90eXBlLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3Rvci5pbXBsKCksIGNvbnN0cnVjdG9yKTsKICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBzcGVjaWVzQ29uZGl0aW9uID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb246OmVxdWl2
YWxlbmNlKHZtLCBwcm90b3R5cGUsIGNvbnN0cnVjdG9yLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVj
aWVzU3ltYm9sLmltcGwoKSwgc3BlY2llc0dldHRlclNldHRlcigpKTsKIAotICAgIGlmICghY29u
c3RydWN0b3JDb25kaXRpb24uaXNXYXRjaGFibGUoKSB8fCAhc3BlY2llc0NvbmRpdGlvbi5pc1dh
dGNoYWJsZSgpKSB7CisgICAgaWYgKCFjb25zdHJ1Y3RvckNvbmRpdGlvbi5pc1dhdGNoYWJsZShQ
cm9wZXJ0eUNvbmRpdGlvbjo6TWFrZU5vQ2hhbmdlcykgfHwgIXNwZWNpZXNDb25kaXRpb24uaXNX
YXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246Ok1ha2VOb0NoYW5nZXMpKSB7CiAgICAgICAgIGlu
dmFsaWRhdGVXYXRjaHBvaW50KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDI5MjQ0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTgzNSw2ICs4MzUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGYXN0IGFjY2VzcyB0byBrbm93
biBwcm9wZXJ0eSBvZmZzZXRzLgogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXREaXJlY3Qo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBsb2NhdGlvbkZvck9mZnNldChv
ZmZzZXQpLT5nZXQoKTsgfQorICAgIEpTVmFsdWUgZ2V0RGlyZWN0KENvbmN1cnJlbmN5LCBTdHJ1
Y3R1cmUqIGV4cGVjdGVkU3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCkgY29uc3Q7CiAgICAgSlNW
YWx1ZSBnZXREaXJlY3RDb25jdXJyZW50bHkoU3RydWN0dXJlKiBleHBlY3RlZFN0cnVjdHVyZSwg
UHJvcGVydHlPZmZzZXQpIGNvbnN0OwogICAgIHZvaWQgcHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNl
dCktPnNldCh2bSwgdGhpcywgdmFsdWUpOyB9CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0QmFy
cmllcihQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25Gb3JP
ZmZzZXQob2Zmc2V0KS0+c2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7IH0KQEAgLTE0MTEs
NiArMTQxMiwxNyBAQCBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBlKFZNCiAv
LyBwYXN0IHN0cnVjdHVyZSB0aGVuIGl0IHNob3VsZCBiZSB2YWxpZCBmb3IgYW55IG5ldyBzdHJ1
Y3R1cmUuIEhvd2V2ZXIsIHdlIG1heSBzb21ldGltZXMKIC8vIHNocmluayB0aGUgYnV0dGVyZmx5
IHdoZW4gd2UgYXJlIGhvbGRpbmcgdGhlIFN0cnVjdHVyZSdzIENvbmN1cnJlbnRKU0xvY2ssIHN1
Y2ggYXMgd2hlbiB3ZQogLy8gZmxhdHRlbiBhbiBvYmplY3QuCitBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgSlNPYmplY3Q6OmdldERpcmVjdChDb25jdXJyZW5jeSBjb25jdXJyZW5jeSwgU3RydWN0dXJl
KiBleHBlY3RlZFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdAoreworICAg
IHN3aXRjaCAoY29uY3VycmVuY3kpIHsKKyAgICBjYXNlIENvbmN1cnJlbmN5OjpNYWluVGhyZWFk
OgorICAgICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSAmJiAhVGhyZWFkOjptYXlC
ZUdDVGhyZWFkKCkpOworICAgICAgICByZXR1cm4gZ2V0RGlyZWN0KG9mZnNldCk7CisgICAgY2Fz
ZSBDb25jdXJyZW5jeTo6Q29uY3VycmVudFRocmVhZDoKKyAgICAgICAgcmV0dXJuIGdldERpcmVj
dENvbmN1cnJlbnRseShleHBlY3RlZFN0cnVjdHVyZSwgb2Zmc2V0KTsKKyAgICB9CisKK30KIGlu
bGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXREaXJlY3RDb25jdXJyZW50bHkoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bG9jaygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAyOTI0NDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKKyNpbmNs
dWRlICJDb25jdXJyZW5jeS5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNpbmNs
dWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKQEAg
LTUxMiw2ICs1MTMsMjggQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KICAgICB2b2lkIGZvckVhY2hQcm9wZXJ0eShWTSYsIGNvbnN0IEZ1bmN0b3ImKTsKKworICAg
IEFMV0FZU19JTkxJTkUgUHJvcGVydHlPZmZzZXQgZ2V0KFZNJiB2bSwgQ29uY3VycmVuY3kgY29u
Y3VycmVuY3ksIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25jdXJyZW5jeSkgeworICAgICAgICBjYXNlIENvbmN1
cnJlbmN5OjpNYWluVGhyZWFkOgorICAgICAgICAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhy
ZWFkKCkgJiYgIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBn
ZXQodm0sIHVpZCwgYXR0cmlidXRlcyk7CisgICAgICAgIGNhc2UgQ29uY3VycmVuY3k6OkNvbmN1
cnJlbnRUaHJlYWQ6CisgICAgICAgICAgICByZXR1cm4gZ2V0Q29uY3VycmVudGx5KHVpZCwgYXR0
cmlidXRlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFByb3BlcnR5
T2Zmc2V0IGdldChWTSYgdm0sIENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5LCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25jdXJyZW5jeSkgeworICAgICAg
ICBjYXNlIENvbmN1cnJlbmN5OjpNYWluVGhyZWFkOgorICAgICAgICAgICAgQVNTRVJUKCFpc0Nv
bXBpbGF0aW9uVGhyZWFkKCkgJiYgIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBnZXQodm0sIHVpZCk7CisgICAgICAgIGNhc2UgQ29uY3VycmVuY3k6OkNvbmN1
cnJlbnRUaHJlYWQ6CisgICAgICAgICAgICByZXR1cm4gZ2V0Q29uY3VycmVudGx5KHVpZCk7Cisg
ICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0Q29uY3VycmVudGx5
KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIFByb3BlcnR5T2Zmc2V0IGdldENvbmN1cnJl
bnRseShVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCYgYXR0cmlidXRlcyk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURh
dGEuY3BwCShyZXZpc2lvbiAyOTI0NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwxMSArMTkwLDEx
IEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlU3BlY2lhbFByb3AKICAgICAgICAgICAg
IGVxdWl2Q29uZGl0aW9uID0gY29uZGl0aW9uLmF0dGVtcHRUb01ha2VFcXVpdmFsZW5jZVdpdGhv
dXRCYXJyaWVyKHZtKTsKIAogICAgICAgICAgICAgLy8gVGhlIGVxdWl2YWxlbmNlIGNvbmRpdGlv
biB3b24ndCBiZSB3YXRjaGFibGUgaWYgd2UgaGF2ZSBhbHJlYWR5IHNlZW4gYSByZXBsYWNlbWVu
dC4KLSAgICAgICAgICAgIGlmICghZXF1aXZDb25kaXRpb24uaXNXYXRjaGFibGUoKSkgeworICAg
ICAgICAgICAgaWYgKCFlcXVpdkNvbmRpdGlvbi5pc1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlv
bjo6TWFrZU5vQ2hhbmdlcykpIHsKICAgICAgICAgICAgICAgICBnaXZlVXBPblNwZWNpYWxQcm9w
ZXJ0eUNhY2hlKGtleSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgaWYgKCFjb25kaXRpb24uaXNXYXRjaGFibGUoKSkgeworICAgICAgICB9
IGVsc2UgaWYgKCFjb25kaXRpb24uaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246Ok1ha2VO
b0NoYW5nZXMpKSB7CiAgICAgICAgICAgICBnaXZlVXBPblNwZWNpYWxQcm9wZXJ0eUNhY2hlKGtl
eSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>