<?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>224414</bug_id>
          
          <creation_ts>2021-04-10 22:07:29 -0700</creation_ts>
          <short_desc>[JSC] Do not copy StringSwitchJumpTable</short_desc>
          <delta_ts>2021-04-12 15:02:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1749070</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-10 22:07:29 -0700</bug_when>
    <thetext>[JSC] Do not copy StringSwitchJumpTable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749071</commentid>
    <comment_count>1</comment_count>
      <attachid>425699</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-10 22:12:01 -0700</bug_when>
    <thetext>Created attachment 425699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749074</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-11 02:43:29 -0700</bug_when>
    <thetext>My plan is doing the similar thing for SimpleJumpTable, but that was a bit more complicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749341</commentid>
    <comment_count>3</comment_count>
      <attachid>425699</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-04-12 12:57:38 -0700</bug_when>
    <thetext>Comment on attachment 425699
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Previously, we are copying UnlinkedStringJumpTable to CodeBlock&apos;s StringJumpTable because we are embedding CodeLocation pointer

Nit: Since previously is past tense the verb should be were rather than are. Also: &quot;because we are embedding&quot; =&gt; &quot;because we embed&quot;

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        inside CodeBlock&apos;s StringJumpTable. This is copying mostly identical hashtable to each CodeBlock even in DFG and FTL. And this

Nit: &quot;copying mostly&quot; =&gt; &quot;copying a mostly&quot;. You can also drop the &quot;and in the third sentence.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        even prevents us from inlining op_switch_string in DFG and FTL.

Maybe explain why it prevents inlining.

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        from copying unnecessary hashtable, and even this paves the way to inlining switch_string in DFG and FTL.

Nit: hashtables*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749405</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-12 15:01:33 -0700</bug_when>
    <thetext>Committed r275840 (236408@main): &lt;https://commits.webkit.org/236408@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749406</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-12 15:02:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/76559929&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425699</attachid>
            <date>2021-04-10 22:12:01 -0700</date>
            <delta_ts>2021-04-12 12:57:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224414-20210410221201.patch</filename>
            <type>text/plain</type>
            <size>42288</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YzU3YmM0MjdmNTM5ZjMyMzNjY2JhM2JlYjE2YWYyZTc4NjRhNzJjLi43NzE0NzE4MzgxNWY0MTZi
Y2E2ZGRjNjkyODYyNjUxMTc3YzMyMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMS0wNC0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERvIG5vdCBjb3B5IFN0cmluZ1N3aXRjaEp1bXBUYWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDE0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
d2UgYXJlIGNvcHlpbmcgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgdG8gQ29kZUJsb2NrJ3MgU3Ry
aW5nSnVtcFRhYmxlIGJlY2F1c2Ugd2UgYXJlIGVtYmVkZGluZyBDb2RlTG9jYXRpb24gcG9pbnRl
cgorICAgICAgICBpbnNpZGUgQ29kZUJsb2NrJ3MgU3RyaW5nSnVtcFRhYmxlLiBUaGlzIGlzIGNv
cHlpbmcgbW9zdGx5IGlkZW50aWNhbCBoYXNodGFibGUgdG8gZWFjaCBDb2RlQmxvY2sgZXZlbiBp
biBERkcgYW5kIEZUTC4gQW5kIHRoaXMKKyAgICAgICAgZXZlbiBwcmV2ZW50cyB1cyBmcm9tIGlu
bGluaW5nIG9wX3N3aXRjaF9zdHJpbmcgaW4gREZHIGFuZCBGVEwuCisKKyAgICAgICAgSW4gdGhp
cyBwYXRjaCwgd2Ugc3RvcCBjb3B5aW5nIFN0cmluZ1N3aXRjaEp1bXBUYWJsZS4gV2UgZGVjb3Vw
bGUgQ29kZUxvY2F0aW9uIHBvaW50ZXJzIGZyb20gdGhlIGhhc2h0YWJsZSBzbyB0aGF0IHdlIGNh
biB1c2UKKyAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgaW4gVW5saW5rZWRDb2RlQmxv
Y2suIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJ3MgaGFzaHRhYmxlIGluY2x1ZXMgbV9pbmRleElu
VGFibGUgaW4gZWFjaCBlbnRyeSBzbyB0aGF0CisgICAgICAgIHdlIGNhbiBoYXZlIGFycmF5IG9m
IENvZGVMb2NhdGlvbiBwb2ludGVycyBpbiBDb2RlQmxvY2sncyBKSVREYXRhIHRvIGhhdmUgSklU
IGp1bXAgdGFyZ2V0cyBzZXBhcmF0ZWx5LiBUaGlzIGRlc2lnbiBwcmV2ZW50cyB1cworICAgICAg
ICBmcm9tIGNvcHlpbmcgdW5uZWNlc3NhcnkgaGFzaHRhYmxlLCBhbmQgZXZlbiB0aGlzIHBhdmVz
IHRoZSB3YXkgdG8gaW5saW5pbmcgc3dpdGNoX3N0cmluZyBpbiBERkcgYW5kIEZUTC4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnN0cmluZ1N3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVt
YmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMgY29uc3QpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpudW1iZXJPZlN0cmluZ1N3aXRjaEp1bXBUYWJsZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0p1bXBUYWJsZS5oOgorICAgICAgICAoSlNDOjpTdHJp
bmdKdW1wVGFibGU6OmN0aUZvclZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RyaW5nSnVt
cFRhYmxlOjpvZmZzZXRGb3JWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cmluZ0p1
bXBUYWJsZTo6Y3RpRm9yVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJpbmdKdW1w
VGFibGU6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHNJbmxpbmVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNldEZvclZhbHVlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om51bWJlck9mVW5saW5rZWRT
dHJpbmdTd2l0Y2hKdW1wVGFibGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2s6OnVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNldEZvclZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om51bWJlck9mU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpzdHJpbmdT
d2l0Y2hKdW1wVGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6bnVt
YmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMgY29uc3QpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6YWRkVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1w
VGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6dW5saW5r
ZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvcjo6bnVtYmVyT2ZTdHJpbmdTd2l0Y2hKdW1wVGFibGVzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmFkZFN0cmluZ1N3
aXRjaEp1bXBUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
R2VuZXJhdG9yOjpzdHJpbmdTd2l0Y2hKdW1wVGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpiZWdpblN3aXRjaCk6CisgICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVG
b3JTdHJpbmdTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW5kU3dp
dGNoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHSklU
Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3dpdGNoU3RyaW5nU2xvdyk6
CisgICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkpT
Q19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpT
d2l0Y2hSZWNvcmQ6OlN3aXRjaFJlY29yZCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX3N0cmluZyk6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0
Y2hfc3RyaW5nKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRT
dHJpbmdKdW1wVGFibGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFN0cmluZ0p1bXBU
YWJsZTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrUmFyZURh
dGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9ja1JhcmVEYXRhOjpkZWNv
ZGUgY29uc3QpOgorCiAyMDIxLTA0LTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gQjMgcmVkdWNlLWRvdWJsZS10by1mbG9hdCBzaG91bGQgcmVk
dWNlIG9ubHkgd2hlbiBjb25zdGFudCBkb3VibGUgaXMgY2Fub25pY2FsIG9uZSB0byByZWR1Y2Vk
IGZsb2F0IHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlRHVtcGVyLmNwcAppbmRleCBlODc2ZjVjYmRlN2VlMDkyYmE4Njg0NzVlNmVlZWVjZTIxZDYx
OTk2Li4yZTI1ZTA3ZGY4MTc1NzBkNDU2Mjk1MzIxMTVlZGY0MjA2ZTE4YjY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKQEAgLTE5
NiwxNSArMTk2LDEzIEBAIHZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1w
U3dpdGNoSnVtcFRhYmxlcygpCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KIHZvaWQgQ29kZUJsb2Nr
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpCiB7Ci0g
ICAgaWYgKHVuc2lnbmVkIGNvdW50ID0gdGhpcy0+YmxvY2soKS0+bnVtYmVyT2ZTdHJpbmdTd2l0
Y2hKdW1wVGFibGVzKCkpIHsKKyAgICBpZiAodW5zaWduZWQgY291bnQgPSB0aGlzLT5ibG9jaygp
LT5udW1iZXJPZlVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpKSB7CiAgICAgICAgIHRo
aXMtPm1fb3V0LnByaW50ZigiXG5TdHJpbmcgU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAg
ICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBkbyB7CiAgICAgICAgICAgICB0aGlzLT5tX291
dC5wcmludGYoIiAgJTFkID0ge1xuIiwgaSk7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBzdHJp
bmdTd2l0Y2hKdW1wVGFibGUgPSB0aGlzLT5ibG9jaygpLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUo
aSk7Ci0gICAgICAgICAgICBhdXRvIGVuZCA9IHN0cmluZ1N3aXRjaEp1bXBUYWJsZS5vZmZzZXRU
YWJsZS5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoYXV0byBpdGVyID0gc3RyaW5nU3dpdGNoSnVt
cFRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAg
ICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIGl0ZXIt
PmtleS0+dXRmOCgpLmRhdGEoKSwgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKKyAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB0aGlzLT5ibG9jaygpLT51bmxpbmtlZFN0cmlu
Z1N3aXRjaEp1bXBUYWJsZShpKS5tX29mZnNldFRhYmxlKQorICAgICAgICAgICAgICAgIHRoaXMt
Pm1fb3V0LnByaW50ZigiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBlbnRyeS5rZXktPnV0ZjgoKS5k
YXRhKCksIGVudHJ5LnZhbHVlLm1fYnJhbmNoT2Zmc2V0KTsKICAgICAgICAgICAgIHRoaXMtPm1f
b3V0LnByaW50ZigiICAgICAgfVxuIik7CiAgICAgICAgICAgICArK2k7CiAgICAgICAgIH0gd2hp
bGUgKGkgPCBjb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IGQyYjlmZjcxMGNjM2ZlMGIwYjM5NzM2MTFjNTc3MmY2MjMwODRhMmYuLjkz
ODdmZmM3OWRmYWRmZjc2YjYxN2UzOWQ3MDJlMTliNWE0MzVkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMjcsNyArMzI3LDYgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBD
b2RlQmxvY2smIG90aGVyKQogICAgICAgICAKICAgICAgICAgbV9yYXJlRGF0YS0+bV9leGNlcHRp
b25IYW5kbGVycyA9IG90aGVyLm1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnM7CiAgICAg
ICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1f
c3dpdGNoSnVtcFRhYmxlczsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogICAg
IH0KIH0KIApAQCAtNDE5LDcgKzQxOCw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
ICAgIG1fZnVuY3Rpb25FeHByc1tpXS5zZXQodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZS0+
bGluayh2bSwgdG9wTGV2ZWxFeGVjdXRhYmxlLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpLCBX
VEY6Om51bGxvcHQsIE5vSW50cmluc2ljLCBvd25lckV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbigpKSk7CiAgICAgfQogCi0gICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5oYXNS
YXJlRGF0YSgpKSB7CisgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlv
bkhhbmRsZXJzKCkgfHwgdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxl
cygpKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKIAogICAgICAgICBp
ZiAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRXhjZXB0aW9uSGFu
ZGxlcnMoKSkgewpAQCAtNDM2LDE5ICs0MzUsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZlN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSkgewotICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnJlc2l6ZVRvRml0
KGNvdW50KTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykg
ewotICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRU
YWJsZTo6aXRlcmF0b3IgcHRyID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBU
YWJsZShpKS5vZmZzZXRUYWJsZS5iZWdpbigpOwotICAgICAgICAgICAgICAgIFVubGlua2VkU3Ry
aW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5saW5rZWRD
b2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQoKTsKLSAg
ICAgICAgICAgICAgICBmb3IgKDsgcHRyICE9IGVuZDsgKytwdHIpIHsKLSAgICAgICAgICAgICAg
ICAgICAgT2Zmc2V0TG9jYXRpb24gb2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBvZmZzZXQu
YnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZS5icmFuY2hPZmZzZXQ7Ci0gICAgICAgICAgICAgICAg
ICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5h
ZGQocHRyLT5rZXksIG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2Nr
LT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSkgewogICAgICAgICAgICAgbV9yYXJlRGF0YS0+
bV9zd2l0Y2hKdW1wVGFibGVzLnJlc2l6ZVRvRml0KGNvdW50KTsKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewpAQCAtMjE0MSwxMCArMjEyNyw4IEBAIHZv
aWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTaHJp
bmtNb2RlIHNocmlua01vZGUpCiAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b24uc2hyaW5rVG9GaXQoKTsKIAogICAgIGlmIChzaHJpbmtNb2RlID09IFNocmlua01vZGU6OkVh
cmx5U2hyaW5rKSB7Ci0gICAgICAgIGlmIChtX3JhcmVEYXRhKSB7CisgICAgICAgIGlmIChtX3Jh
cmVEYXRhKQogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlu
a1RvRml0KCk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgfQogICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsg
dGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50
byB0aGVzZSB0YWJsZXMuCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAppbmRleCAzZGE0OGZjZGRkYjUzMTJkOTUyMjIxYWM4OTQ0YWUzNDYwMDBlMTRkLi4y
OTI3N2EyZjg5NDg3ZWE0NDBmMDUwMmQ3OWUyZjdlYzMzZTVkMDU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yNzgsNiArMjc4LDcgQEAgY2xhc3Mg
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxD
YWxsTGlua0luZm8sIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+PiBtX2luY29t
aW5nQ2FsbHM7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxQb2x5bW9ycGhpY0NhbGxOb2Rl
LCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8UG9seW1vcnBoaWNDYWxsTm9kZT4+IG1faW5jb21pbmdQ
b2x5bW9ycGhpY0NhbGxzOwogICAgICAgICBGaXhlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGU+IG1f
cmFyZUNhc2VQcm9maWxlczsKKyAgICAgICAgRml4ZWRWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBt
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29k
ZU9yaWdpbk1hcD4gbV9wY1RvQ29kZU9yaWdpbk1hcDsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7CiAgICAgICAgIEpJ
VENvZGVNYXAgbV9qaXRDb2RlTWFwOwpAQCAtNjMwLDggKzYzMSwxNSBAQCBjbGFzcyBDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAjZW5kaWYKIAotICAgIHNpemVfdCBudW1iZXJP
ZlN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9y
YXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSA6IDA7IH0KLSAgICBTdHJp
bmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxF
QVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQorI2lmIEVOQUJMRShKSVQpCisgICAgU3RyaW5nSnVt
cFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpCisgICAgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX2ppdERhdGEpOworICAgICAgICByZXR1cm4gbV9qaXREYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07CisgICAgfQorI2VuZGlmCisg
ICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1w
VGFibGVzKCk7IH0KKyAgICBjb25zdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYgdW5saW5rZWRT
dHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgcmV0dXJuIG1fdW5saW5rZWRD
b2RlLT51bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsgfQogCiAgICAg
RGlyZWN0RXZhbENvZGVDYWNoZSYgZGlyZWN0RXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURh
dGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9kaXJlY3RFdmFsQ29kZUNhY2hl
OyB9CiAKQEAgLTg4Myw3ICs4OTEsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKIAogICAgICAgICAvLyBKdW1wIFRhYmxlcwogICAgICAgICBWZWN0b3I8U2ltcGxlSnVtcFRh
YmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+
IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlckJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxl
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCmluZGV4IDQ3
MDBjNWYyNWE4Mzc3MzYwYTFmZDc4ODU2OThhZTgwNThjZWI5ZTIuLmU3NmI1MDA1MDk2NmEyOTll
OTNjYTNjZWM3ZWIzMzJjM2M5OTU3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9KdW1wVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSnVtcFRhYmxlLmgKQEAgLTMwLDUxICszMCwyNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJDb2RlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAg
ICBzdHJ1Y3QgT2Zmc2V0TG9jYXRpb24gewotICAgICAgICBpbnQzMl90IGJyYW5jaE9mZnNldDsK
ICNpZiBFTkFCTEUoSklUKQotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRh
Zz4gY3RpT2Zmc2V0OwotI2VuZGlmCi0gICAgfTsKLQogICAgIHN0cnVjdCBTdHJpbmdKdW1wVGFi
bGUgewotICAgICAgICB1c2luZyBTdHJpbmdPZmZzZXRUYWJsZSA9IE1lbW9yeUNvbXBhY3RMb29r
dXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9u
PjsKLSAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7Ci0jaWYgRU5BQkxFKEpJ
VCkKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+IGN0aURlZmF1bHQ7
IC8vIEZJWE1FOiBpdCBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSB0byBzdG9yZSB0aGlzLgotI2Vu
ZGlmCisgICAgICAgIEZpeGVkVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEpTU3dpdGNoUHRyVGFn
Pj4gbV9jdGlPZmZzZXRzOworICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRh
Zz4gbV9jdGlEZWZhdWx0OyAvLyBGSVhNRTogaXQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG8g
c3RvcmUgdGhpcy4KIAotICAgICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShTdHJp
bmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQorICAgICAgICBpbmxpbmUgQ29k
ZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+IGN0aUZvclZhbHVlKGNvbnN0IFVubGlua2Vk
U3RyaW5nSnVtcFRhYmxlJiB1bmxpbmtlZFRhYmxlLCBTdHJpbmdJbXBsKiB2YWx1ZSkgY29uc3QK
ICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG9mZnNldFRhYmxlLmVuZCgpOwotICAgICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6
OmNvbnN0X2l0ZXJhdG9yIGxvYyA9IG9mZnNldFRhYmxlLmZpbmQodmFsdWUpOwotICAgICAgICAg
ICAgaWYgKGxvYyA9PSBlbmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7
Ci0gICAgICAgICAgICByZXR1cm4gbG9jLT52YWx1ZS5icmFuY2hPZmZzZXQ7Ci0gICAgICAgIH0K
LQotI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIGlubGluZSBDb2RlTG9jYXRpb25MYWJlbDxKU1N3
aXRjaFB0clRhZz4gY3RpRm9yVmFsdWUoU3RyaW5nSW1wbCogdmFsdWUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBvZmZzZXRU
YWJsZS5lbmQoKTsKLSAgICAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRv
ciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKLSAgICAgICAgICAgIGlmIChsb2MgPT0g
ZW5kKQotICAgICAgICAgICAgICAgIHJldHVybiBjdGlEZWZhdWx0OwotICAgICAgICAgICAgcmV0
dXJuIGxvYy0+dmFsdWUuY3RpT2Zmc2V0OwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgCi0g
ICAgICAgIHZvaWQgY2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBvZmZzZXRUYWJsZS5j
bGVhcigpOworICAgICAgICAgICAgYXV0byBsb2MgPSB1bmxpbmtlZFRhYmxlLm1fb2Zmc2V0VGFi
bGUuZmluZCh2YWx1ZSk7CisgICAgICAgICAgICBpZiAobG9jID09IHVubGlua2VkVGFibGUubV9v
ZmZzZXRUYWJsZS5lbmQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jdGlEZWZhdWx0Owor
ICAgICAgICAgICAgcmV0dXJuIG1fY3RpT2Zmc2V0c1tsb2MtPnZhbHVlLm1faW5kZXhJblRhYmxl
XTsKICAgICAgICAgfQogICAgIH07CisjZW5kaWYKIAogICAgIHN0cnVjdCBTaW1wbGVKdW1wVGFi
bGUgewogICAgICAgICAvLyBGSVhNRTogVGhlIHR3byBWZWN0b3JzIGNhbiBiZSBjb21iaW5lZCBp
bnRvIG9uZSBWZWN0b3I8T2Zmc2V0TG9jYXRpb24+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaAppbmRleCA0
ZDA3MTZlNzc1YmYzYzYxNDNmYjM3ODM1NmU3ZDU2N2JmMzE2MTAzLi4zYmRhOWJiNDA5N2Q2Y2Ey
OWJiYzljOGU4MmI0NzdlNWI3ZjMzNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKQEAgLTc3LDEx
ICs3Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0gXAogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0
cmluZzogeyBcCiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BTd2l0
Y2hTdHJpbmc+KCk7IFwKLSAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3
aXRjaEp1bXBUYWJsZShieXRlY29kZS5tX3RhYmxlSW5kZXgpOyBcCi0gICAgICAgIGF1dG8gaXRl
ciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7IFwKLSAgICAgICAgYXV0byBlbmQgPSB0YWJs
ZS5vZmZzZXRUYWJsZS5lbmQoKTsgXAotICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRl
cikgXAotICAgICAgICAgICAgU1dJVENIX0NBU0UoaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsg
XAorICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+dW5saW5rZWRTdHJpbmdTd2l0Y2hK
dW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KTsgXAorICAgICAgICBmb3IgKGF1dG8mIGVu
dHJ5IDogdGFibGUubV9vZmZzZXRUYWJsZSkgXAorICAgICAgICAgICAgU1dJVENIX0NBU0UoZW50
cnkudmFsdWUubV9icmFuY2hPZmZzZXQpOyBcCiAgICAgICAgIFNXSVRDSF9ERUZBVUxUX09GRlNF
VChPcFN3aXRjaFN0cmluZyk7IFwKICAgICAgICAgYnJlYWs7IFwKICAgICB9IFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXgg
MTU5NTVkM2EyZjU5ZDhiMzhjNDVhMjIyMWE4NzI4Y2NhZWY4OWEwZS4uNDY5ZjFjOWM0ODdlMGI0
NjcxODNhMzQwYjZlMmJhOWJiM2Q2NzYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTc3LDE5ICs3NywxOSBAQCB0eXBl
ZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBVbmxpbmtl
ZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAgc3RydWN0IE9mZnNldExvY2F0aW9uIHsKLSAgICAgICAg
aW50MzJfdCBicmFuY2hPZmZzZXQ7CisgICAgICAgIGludDMyX3QgbV9icmFuY2hPZmZzZXQ7Cisg
ICAgICAgIHVuc2lnbmVkIG1faW5kZXhJblRhYmxlOwogICAgIH07CiAKICAgICB1c2luZyBTdHJp
bmdPZmZzZXRUYWJsZSA9IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxS
ZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPjsKLSAgICBTdHJpbmdPZmZzZXRUYWJs
ZSBvZmZzZXRUYWJsZTsKKyAgICBTdHJpbmdPZmZzZXRUYWJsZSBtX29mZnNldFRhYmxlOwogCi0g
ICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoU3RyaW5nSW1wbCogdmFsdWUsIGludDMy
X3QgZGVmYXVsdE9mZnNldCkKKyAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShTdHJp
bmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KSBjb25zdAogICAgIHsKLSAgICAg
ICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG9mZnNldFRhYmxlLmVu
ZCgpOwotICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgbG9jID0gb2Zm
c2V0VGFibGUuZmluZCh2YWx1ZSk7Ci0gICAgICAgIGlmIChsb2MgPT0gZW5kKQorICAgICAgICBh
dXRvIGxvYyA9IG1fb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7CisgICAgICAgIGlmIChsb2MgPT0g
bV9vZmZzZXRUYWJsZS5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0Owot
ICAgICAgICByZXR1cm4gbG9jLT52YWx1ZS5icmFuY2hPZmZzZXQ7CisgICAgICAgIHJldHVybiBs
b2MtPnZhbHVlLm1fYnJhbmNoT2Zmc2V0OwogICAgIH0KIAogfTsKQEAgLTE4OCw4ICsxODgsOCBA
QCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHNpemVfdCBu
dW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9y
YXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNpemUoKSA6IDA7IH0KICAgICBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZSYgc3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFTU0VSVCht
X3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlc1t0YWJsZUlu
ZGV4XTsgfQogCi0gICAgc2l6ZV90IG51bWJlck9mU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXMuc2l6ZSgpIDogMDsgfQotICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdT
d2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1
cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9Cisg
ICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fdW5saW5rZWRTdHJpbmdTd2l0Y2hK
dW1wVGFibGVzLnNpemUoKSA6IDA7IH0KKyAgICBjb25zdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJs
ZSYgdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgQVNTRVJU
KG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1
bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkRlY2woaW50IGluZGV4KSB7IHJldHVybiBtX2Z1bmN0aW9uRGVjbHNbaW5kZXhd
LmdldCgpOyB9CiAgICAgc2l6ZV90IG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1f
ZnVuY3Rpb25EZWNscy5zaXplKCk7IH0KQEAgLTQwMCw3ICs0MDAsNyBAQCBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgICAgIC8vIEp1bXAgVGFibGVzCiAg
ICAgICAgIEZpeGVkVmVjdG9yPFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBU
YWJsZXM7Ci0gICAgICAgIEZpeGVkVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXM7CisgICAgICAgIEZpeGVkVmVjdG9yPFVubGlua2VkU3RyaW5n
SnVtcFRhYmxlPiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAogICAgICAgICBG
aXhlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlvbj4gbV9leHByZXNzaW9u
SW5mb0ZhdFBvc2l0aW9uczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKaW5kZXggMDA2MDQz
YTI1YjQ5ZjZmNWNlMjdkNmU0Y2JkODU1MDRjNDhhZTlkNC4uZjk2YzYwMDI2YzZmMmRlYzg2ODNh
ZGExNmRkYWU3ZWZhNTBhNzVjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCkBAIC0xMzMs
NyArMTMzLDcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpemUoc3Rk
Ojp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiBpbnMKICAgICAgICAgaWYgKCFtX2NvZGVC
bG9jay0+bV9yYXJlRGF0YSkgewogICAgICAgICAgICAgaWYgKCFtX2V4Y2VwdGlvbkhhbmRsZXJz
LmlzRW1wdHkoKQogICAgICAgICAgICAgICAgIHx8ICFtX3N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0
eSgpCi0gICAgICAgICAgICAgICAgfHwgIW1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5
KCkKKyAgICAgICAgICAgICAgICB8fCAhbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMu
aXNFbXB0eSgpCiAgICAgICAgICAgICAgICAgfHwgIW1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlv
bnMuaXNFbXB0eSgpCiAgICAgICAgICAgICAgICAgfHwgIW1fdHlwZVByb2ZpbGVySW5mb01hcC5p
c0VtcHR5KCkKICAgICAgICAgICAgICAgICB8fCAhbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVj
b2RlT2Zmc2V0cy5pc0VtcHR5KCkKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFVubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yOjpmaW5hbGl6ZShzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJl
YW0+IGlucwogICAgICAgICBpZiAobV9jb2RlQmxvY2stPm1fcmFyZURhdGEpIHsKICAgICAgICAg
ICAgIG1fY29kZUJsb2NrLT5tX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzID0gV1RGTW92
ZShtX2V4Y2VwdGlvbkhhbmRsZXJzKTsKICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX3JhcmVE
YXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBXVEZNb3ZlKG1fc3dpdGNoSnVtcFRhYmxlcyk7Ci0g
ICAgICAgICAgICBtX2NvZGVCbG9jay0+bV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzID0gV1RGTW92ZShtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMpOworICAgICAgICAgICAgbV9j
b2RlQmxvY2stPm1fcmFyZURhdGEtPm1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0g
V1RGTW92ZShtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyk7CiAgICAgICAgICAgICBt
X2NvZGVCbG9jay0+bV9yYXJlRGF0YS0+bV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucyA9IFdU
Rk1vdmUobV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucyk7CiAgICAgICAgICAgICBtX2NvZGVC
bG9jay0+bV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwID0gV1RGTW92ZShtX3R5cGVQ
cm9maWxlckluZm9NYXApOwogICAgICAgICAgICAgbV9jb2RlQmxvY2stPm1fcmFyZURhdGEtPm1f
b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMgPSBXVEZNb3ZlKG1fb3BQcm9maWxl
Q29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCBk
M2U2YzMyNzBiNmNhOGJkM2FmNTJkYjkxYWM0MWRiN2E5MjA3MmJmLi4xMTE0OTA0YzJmN2FiZGFi
NjUwZmNhYjE3ZDlhNDdmMDc3NGQ4ZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtOTQs
OSArOTQsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciB7CiAgICAgVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGUmIGFkZFN3aXRjaEp1bXBUYWJsZSgpIHsgbV9zd2l0Y2hKdW1wVGFi
bGVzLmFwcGVuZChVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSgpKTsgcmV0dXJuIG1fc3dpdGNoSnVt
cFRhYmxlcy5sYXN0KCk7IH0KICAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgc3dpdGNoSnVt
cFRhYmxlKGludCB0YWJsZUluZGV4KSB7IHJldHVybiBtX3N3aXRjaEp1bXBUYWJsZXNbdGFibGVJ
bmRleF07IH0KIAotICAgIHNpemVfdCBudW1iZXJPZlN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpOyB9Ci0gICAgVW5s
aW5rZWRTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgbV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0
dXJuIG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KLSAgICBVbmxpbmtlZFN0cmlu
Z0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IHJldHVy
biBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KKyAgICBzaXplX3QgbnVt
YmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3Vu
bGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCk7IH0KKyAgICBVbmxpbmtlZFN0cmlu
Z0p1bXBUYWJsZSYgYWRkVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IG1fdW5saW5r
ZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSgp
KTsgcmV0dXJuIG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQorICAg
IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiB1bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZShp
bnQgdGFibGVJbmRleCkgeyByZXR1cm4gbV91bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXNb
dGFibGVJbmRleF07IH0KIAogICAgIHNpemVfdCBudW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9leGNlcHRpb25IYW5kbGVycy5zaXplKCk7IH0KICAgICBVbmxpbmtl
ZEhhbmRsZXJJbmZvJiBleGNlcHRpb25IYW5kbGVyKGludCBpbmRleCkgeyByZXR1cm4gbV9leGNl
cHRpb25IYW5kbGVyc1tpbmRleF07IH0KQEAgLTIwNSw3ICsyMDUsNyBAQCBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvciB7CiAgICAgLy8gSW4gUmFyZURhdGEuCiAgICAgVmVjdG9yPFVu
bGlua2VkSGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7CiAgICAgVmVjdG9yPFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7Ci0gICAgVmVjdG9yPFVubGlu
a2VkU3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CisgICAgVmVjdG9y
PFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxl
czsKICAgICBWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24+IG1fZXhwcmVz
c2lvbkluZm9GYXRQb3NpdGlvbnM7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgVW5saW5rZWRDb2Rl
QmxvY2s6OlJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IG1fdHlwZVByb2Zp
bGVySW5mb01hcDsKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFBy
b2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNTUz
ZmQwZTMxZDNlODU3YjkxYmE0ODYzNTY0ODVmZDUxMzBmNzRiNS4uODY1MzI4ZGFkZDljNjQ0OTRj
MDY1ZGMxNzNlOGMzYjAxMDYwMzBjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQwNDgsOCArNDA0
OCw4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2luU3dpdGNoKFJlZ2lzdGVySUQqIHNj
cnV0aW5lZVJlZ2lzdGVyLCBTd2l0Y2hJbmZvOjpTCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIFN3aXRjaEluZm86OlN3aXRjaFN0cmluZzogewotICAgICAgICBzaXplX3QgdGFibGVJ
bmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKTsKLSAg
ICAgICAgbV9jb2RlQmxvY2stPmFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpOworICAgICAgICBz
aXplX3QgdGFibGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlVubGlua2VkU3RyaW5nU3dp
dGNoSnVtcFRhYmxlcygpOworICAgICAgICBtX2NvZGVCbG9jay0+YWRkVW5saW5rZWRTdHJpbmdT
d2l0Y2hKdW1wVGFibGUoKTsKICAgICAgICAgT3BTd2l0Y2hTdHJpbmc6OmVtaXQodGhpcywgdGFi
bGVJbmRleCwgQm91bmRMYWJlbCgpLCBzY3J1dGluZWVSZWdpc3Rlcik7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTQxMTEsNyArNDExMSw5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFi
bGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIGp1bXBUYWJsZSwKICAg
ICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tpXS0+aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0
cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZh
bHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwg
VW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Ok9mZnNldExvY2F0aW9uIHsgbGFiZWxzW2ldLT5iaW5k
KHN3aXRjaEFkZHJlc3MpIH0pOworICAgICAgICBhdXRvIHJlc3VsdCA9IGp1bXBUYWJsZS5tX29m
ZnNldFRhYmxlLmFkZChjbGF1c2UsIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpPZmZzZXRMb2Nh
dGlvbiB7IGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzKSwgMCB9KTsKKyAgICAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5t
X2luZGV4SW5UYWJsZSA9IGp1bXBUYWJsZS5tX29mZnNldFRhYmxlLnNpemUoKSAtIDE7CiAgICAg
fQogfQogCkBAIC00MTUyLDcgKzQxNTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbmRT
d2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIGNvbnN0IFZlY3RvcjxSZWY8TGFiZWw+LAogICAg
ICAgICAgICAgcmV0dXJuIEJvdW5kTGFiZWwoKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgVW5s
aW5rZWRTdHJpbmdKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5zdHJpbmdTd2l0
Y2hKdW1wVGFibGUocmVmLT5hczxPcFN3aXRjaFN0cmluZz4oKS5tX3RhYmxlSW5kZXgpOworICAg
ICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPnVu
bGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKHJlZi0+YXM8T3BTd2l0Y2hTdHJpbmc+KCkubV90
YWJsZUluZGV4KTsKICAgICAgICAgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaChqdW1w
VGFibGUsIHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQsIGNsYXVzZUNvdW50LCBsYWJlbHMsIG5v
ZGVzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAxMTczMzQzYjZkOWMwN2MyZTI0NzlkNjVi
YzhmYzRjMzVjOWZhNDA5Li4zZTMwOWNkOTEyNTFkNzlkNDIxZmRjMjI1MWZlNzMxZWY3MWU3MGIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtNjkxMywxNSArNjkxMywxMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgZGF0YS5raW5kID0gU3dpdGNoU3RyaW5nOwog
ICAgICAgICAgICAgZGF0YS5zd2l0Y2hUYWJsZUluZGV4ID0gYnl0ZWNvZGUubV90YWJsZUluZGV4
OwogICAgICAgICAgICAgZGF0YS5mYWxsVGhyb3VnaC5zZXRCeXRlY29kZUluZGV4KG1fY3VycmVu
dEluZGV4Lm9mZnNldCgpICsganVtcFRhcmdldChieXRlY29kZS5tX2RlZmF1bHRPZmZzZXQpKTsK
LSAgICAgICAgICAgIFN0cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBtX2NvZGVCbG9jay0+c3RyaW5n
U3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFibGVJbmRleCk7Ci0gICAgICAgICAgICBTdHJp
bmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBpdGVyOwotICAgICAgICAg
ICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGFi
bGUub2Zmc2V0VGFibGUuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKGl0ZXIgPSB0YWJsZS5vZmZz
ZXRUYWJsZS5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgICAgICAgICAg
dW5zaWduZWQgdGFyZ2V0ID0gbV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBpdGVyLT52YWx1ZS5i
cmFuY2hPZmZzZXQ7CisgICAgICAgICAgICBjb25zdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYg
dGFibGUgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoZGF0YS5z
d2l0Y2hUYWJsZUluZGV4KTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB0
YWJsZS5tX29mZnNldFRhYmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0ID0g
bV9jdXJyZW50SW5kZXgub2Zmc2V0KCkgKyBlbnRyeS52YWx1ZS5tX2JyYW5jaE9mZnNldDsKICAg
ICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09IGRhdGEuZmFsbFRocm91Z2guYnl0ZWNvZGVJbmRl
eCgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBkYXRh
LmNhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgU3dpdGNoQ2FzZTo6d2l0aEJ5dGVj
b2RlSW5kZXgoTGF6eUpTVmFsdWU6Omtub3duU3RyaW5nSW1wbChpdGVyLT5rZXkuZ2V0KCkpLCB0
YXJnZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgU3dpdGNoQ2FzZTo6d2l0aEJ5dGVjb2RlSW5k
ZXgoTGF6eUpTVmFsdWU6Omtub3duU3RyaW5nSW1wbChlbnRyeS5rZXkuZ2V0KCkpLCB0YXJnZXQp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGFkZFRvR3JhcGgoU3dpdGNoLCBPcEluZm8o
JmRhdGEpLCBnZXQoYnl0ZWNvZGUubV9zY3J1dGluZWUpKTsKICAgICAgICAgICAgIGZsdXNoSWZU
ZXJtaW5hbChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAKaW5kZXggNzgyNjRjZWEwMTc1YzRkNjJhNDJlYTBjMTU3ZTA0NDFiNWI1ODFiNS4uMzE4
ZjAxNTZjMTRmZDg2MzYzZmIyOWZlOWVhZmZkMWMyOTg4M2YxNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTE3Niw2ICsxNzYsMTEgQEAgdm9p
ZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIAogICAgIG1f
Z3JhcGgucmVnaXN0ZXJGcm96ZW5WYWx1ZXMoKTsKIAorICAgIGlmIChtX2NvZGVCbG9jay0+bnVt
YmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSkgeworICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICBtX2NvZGVC
bG9jay0+ZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IEZp
eGVkVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4obV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRT
dHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpOworICAgIH0KKwogICAgIEJpdFZlY3RvciB1c2VkSnVt
cFRhYmxlczsKICAgICBmb3IgKEJhZzxTd2l0Y2hEYXRhPjo6aXRlcmF0b3IgaXRlciA9IG1fZ3Jh
cGgubV9zd2l0Y2hEYXRhLmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7CiAgICAgICAgIFN3aXRj
aERhdGEmIGRhdGEgPSAqKml0ZXI7CkBAIC0yMTgsMTggKzIyMywxOCBAQCB2b2lkIEpJVENvbXBp
bGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgICAgIGlmIChkYXRhLmtpbmQg
IT0gU3dpdGNoU3RyaW5nKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAg
ICBTdHJpbmdKdW1wVGFibGUmIHRhYmxlID0gbV9jb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBU
YWJsZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOworICAgICAgICBjb25zdCBVbmxpbmtlZFN0cmlu
Z0p1bXBUYWJsZSYgdW5saW5rZWRUYWJsZSA9IG1fY29kZUJsb2NrLT51bmxpbmtlZFN0cmluZ1N3
aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOworICAgICAgICBTdHJpbmdKdW1w
VGFibGUmIGxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShk
YXRhLnN3aXRjaFRhYmxlSW5kZXgpOworICAgICAgICBsaW5rZWRUYWJsZS5tX2N0aURlZmF1bHQg
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1fYmxvY2tIZWFkc1tkYXRh
LmZhbGxUaHJvdWdoLmJsb2NrLT5pbmRleF0pOworICAgICAgICBsaW5rZWRUYWJsZS5tX2N0aU9m
ZnNldHMgPSBGaXhlZFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4+KHVu
bGlua2VkVGFibGUubV9vZmZzZXRUYWJsZS5zaXplKCkpOwogCi0gICAgICAgIHRhYmxlLmN0aURl
ZmF1bHQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1fYmxvY2tIZWFk
c1tkYXRhLmZhbGxUaHJvdWdoLmJsb2NrLT5pbmRleF0pOwotICAgICAgICBTdHJpbmdKdW1wVGFi
bGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBpdGVyOwotICAgICAgICBTdHJpbmdKdW1w
VGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJs
ZS5lbmQoKTsKLSAgICAgICAgZm9yIChpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsg
aXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgICAgIGl0ZXItPnZhbHVlLmN0aU9mZnNldCA9
IHRhYmxlLmN0aURlZmF1bHQ7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsaW5rZWRUYWJs
ZS5tX2N0aU9mZnNldHMpCisgICAgICAgICAgICBlbnRyeSA9IGxpbmtlZFRhYmxlLm1fY3RpRGVm
YXVsdDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gZGF0YS5jYXNlcy5zaXplKCk7IGotLTsp
IHsKICAgICAgICAgICAgIFN3aXRjaENhc2UmIG15Q2FzZSA9IGRhdGEuY2FzZXNbal07Ci0gICAg
ICAgICAgICBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuZmluZChteUNhc2UudmFsdWUuc3RyaW5n
SW1wbCgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gZW5kKTsKLSAgICAg
ICAgICAgIGl0ZXItPnZhbHVlLmN0aU9mZnNldCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU1N3
aXRjaFB0clRhZz4obV9ibG9ja0hlYWRzW215Q2FzZS50YXJnZXQuYmxvY2stPmluZGV4XSk7Cisg
ICAgICAgICAgICBhdXRvIGl0ZXIgPSB1bmxpbmtlZFRhYmxlLm1fb2Zmc2V0VGFibGUuZmluZCht
eUNhc2UudmFsdWUuc3RyaW5nSW1wbCgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0
ZXIgIT0gdW5saW5rZWRUYWJsZS5tX29mZnNldFRhYmxlLmVuZCgpKTsKKyAgICAgICAgICAgIGxp
bmtlZFRhYmxlLm1fY3RpT2Zmc2V0c1tpdGVyLT52YWx1ZS5tX2luZGV4SW5UYWJsZV0gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1fYmxvY2tIZWFkc1tteUNhc2UudGFy
Z2V0LmJsb2NrLT5pbmRleF0pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAxOGJiOWQyYTE4MjMxMmU2M2NlYmM4
YTZkNWNhOWUzOTNlMjg4ODNjLi5jZDEzNzEyYTQ1M2Y1ZjUyMjU1NTY5NGQxNmMzOWVhNDA0YzI0
ZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAg
LTI3MTYsOCArMjcxNiwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3dp
dGNoU3RyaW5nLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIFN0cmluZ0lt
cGwqIHN0ckltcGwgPSBzdHJpbmctPnZhbHVlKGdsb2JhbE9iamVjdCkuaW1wbCgpOwogCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKLQotICAgIHJldHVybiBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCku
Y3RpRm9yVmFsdWUoc3RySW1wbCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIGNvbnN0IFN0
cmluZ0p1bXBUYWJsZSYgbGlua2VkVGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBU
YWJsZSh0YWJsZUluZGV4KTsKKyAgICBjb25zdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYgdW5s
aW5rZWRUYWJsZSA9IGNvZGVCbG9jay0+dW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFi
bGVJbmRleCk7CisgICAgcmV0dXJuIGxpbmtlZFRhYmxlLmN0aUZvclZhbHVlKHVubGlua2VkVGFi
bGUsIHN0ckltcGwpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogfQogCiBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ29tcGFyZVN0cmluZ0ltcGxMZXNzLCB1aW50cHRyX3Qs
IChTdHJpbmdJbXBsKiBhLCBTdHJpbmdJbXBsKiBiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBmODE1OWI3NGIzMDUzMDA5ZmNkYWU2OTdh
ZDNlYjRmZDg4M2FlOTEzLi41MThjMDQzYWFlZmY5ZWVkZjdlYThjMDVhNGFiMjA0MGJmMDc2YTNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC0xNjc0Nyw3ICsxNjc0Nyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBJ
bnQzMiwgb3BlcmF0aW9uU3dpdGNoU3RyaW5nQW5kR2V0QnJhbmNoT2Zmc2V0LAogICAgICAgICAg
ICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuY29uc3RJbnRQdHIoZGF0YS0+c3dp
dGNoVGFibGVJbmRleCksIHN0cmluZyk7CiAgICAgICAgIAotICAgICAgICBTdHJpbmdKdW1wVGFi
bGUmIHRhYmxlID0gY29kZUJsb2NrKCktPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShkYXRhLT5zd2l0
Y2hUYWJsZUluZGV4KTsKKyAgICAgICAgY29uc3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIHRh
YmxlID0gY29kZUJsb2NrKCktPnVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKGRhdGEtPnN3
aXRjaFRhYmxlSW5kZXgpOwogICAgICAgICAKICAgICAgICAgVmVjdG9yPFN3aXRjaENhc2U+IGNh
c2VzOwogICAgICAgICAvLyBUaGVzZSBtYXkgYmUgbmVnYXRpdmUsIG9yIHplcm8sIG9yIHByb2Jh
Ymx5IG90aGVyIHN0dWZmLCB0b28uIFdlIGRvbid0IHdhbnQgdG8gbWVzcyB3aXRoIEhhc2hTZXQn
cyBjb3JuZXIgY2FzZXMgYW5kIHdlIGRvbid0IHJlYWxseSBjYXJlIGFib3V0IHRocm91Z2hwdXQg
aGVyZS4KQEAgLTE2Nzg1LDE1ICsxNjc4NSwxNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDYz
NQogICAgICAgICAgICAgCiAgICAgICAgICAgICBERkc6OlN3aXRjaENhc2UgbXlDYXNlID0gZGF0
YS0+Y2FzZXNbaV07Ci0gICAgICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRh
YmxlOjppdGVyYXRvciBpdGVyID0KLSAgICAgICAgICAgICAgICB0YWJsZS5vZmZzZXRUYWJsZS5m
aW5kKG15Q2FzZS52YWx1ZS5zdHJpbmdJbXBsKCkpOwotICAgICAgICAgICAgREZHX0FTU0VSVCht
X2dyYXBoLCBtX25vZGUsIGl0ZXIgIT0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCkpOworICAgICAg
ICAgICAgYXV0byBpdGVyID0gdGFibGUubV9vZmZzZXRUYWJsZS5maW5kKG15Q2FzZS52YWx1ZS5z
dHJpbmdJbXBsKCkpOworICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGl0
ZXIgIT0gdGFibGUubV9vZmZzZXRUYWJsZS5lbmQoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmICghYWxyZWFkeUhhbmRsZWQuaW5zZXJ0KGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCku
c2Vjb25kKQorICAgICAgICAgICAgaWYgKCFhbHJlYWR5SGFuZGxlZC5pbnNlcnQoaXRlci0+dmFs
dWUubV9icmFuY2hPZmZzZXQpLnNlY29uZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2UoCi0gICAgICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQzMihpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpLAorICAgICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50MzIoaXRlci0+dmFsdWUubV9icmFuY2hPZmZzZXQpLAogICAgICAgICAg
ICAgICAgIGxvd0Jsb2NrKG15Q2FzZS50YXJnZXQuYmxvY2spLCBXZWlnaHQobXlDYXNlLnRhcmdl
dC5jb3VudCkpKTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCmluZGV4IDZhMDJlODA3YTgyMDg3MmQ0MmFiNmE3NjhjZGYz
MWQ2ZDJkMTllNGUuLmE1NTE2YzkwNGU1OGJmOWFjNjhjOTg5Y2E2ZjY2MDFlOTE5NjZhY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApAQCAtNzA5LDcg
KzcwOSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Td2l0Y2hTdHJpbmdB
bmRHZXRCcmFuY2hPZmZzZXQsIGludDMyX3QsIChKU0dsCiAKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIDApOwogCi0gICAgcmV0dXJuIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
PnN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5vZmZzZXRGb3JWYWx1ZShzdHJJbXBs
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgcmV0dXJuIGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCktPnVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5k
ZXgpLm9mZnNldEZvclZhbHVlKHN0ckltcGwsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1pbigpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblR5cGVPZk9i
amVjdEFzVHlwZW9mVHlwZSwgaW50MzJfdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsbCogb2JqZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA3NzIxZGY1
YTg0Y2FkYzNhNjUzYTRiZTg1NjY3MGUyYzBiMDRjM2MyLi44OGQzZmQyYTU2OWFhNGRhZGVmMTU1
ZTBkMWVlOWU3NGE3ZjMyYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC04NTcs
NiArODU3LDExIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgaWYgKHBhdGNo
QnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpCiAgICAgICAgIHJldHVybiBDb21waWxhdGlvbkZh
aWxlZDsKIAorICAgIGlmIChtX2NvZGVCbG9jay0+bnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRj
aEp1bXBUYWJsZXMoKSkgeworICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fY29k
ZUJsb2NrLT5tX2xvY2spOworICAgICAgICBtX2NvZGVCbG9jay0+ZW5zdXJlSklURGF0YShsb2Nr
ZXIpLm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IEZpeGVkVmVjdG9yPFN0cmluZ0p1bXBUYWJs
ZT4obV9jb2RlQmxvY2stPm51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkp
OworICAgIH0KKwogICAgIC8vIFRyYW5zbGF0ZSB2UEMgb2Zmc2V0cyBpbnRvIGFkZHJlc3NlcyBp
biBKSVQgZ2VuZXJhdGVkIGNvZGUsIGZvciBzd2l0Y2ggdGFibGVzLgogICAgIGZvciAoYXV0byYg
cmVjb3JkIDogbV9zd2l0Y2hlcykgewogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9
IHJlY29yZC5ieXRlY29kZUluZGV4Lm9mZnNldCgpOwpAQCAtODc3LDE1ICs4ODIsMTcgQEAgQ29t
cGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IEFTU0VSVChyZWNvcmQudHlwZSA9PSBTd2l0Y2hSZWNvcmQ6OlN0cmluZyk7CiAKLSAgICAgICAg
ICAgIGF1dG8qIHN0cmluZ0p1bXBUYWJsZSA9IHJlY29yZC5qdW1wVGFibGUuc3RyaW5nSnVtcFRh
YmxlOwotICAgICAgICAgICAgc3RyaW5nSnVtcFRhYmxlLT5jdGlEZWZhdWx0ID0KLSAgICAgICAg
ICAgICAgICBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTU3dpdGNoUHRyVGFnPihtX2xhYmVsc1ti
eXRlY29kZU9mZnNldCArIHJlY29yZC5kZWZhdWx0T2Zmc2V0XSk7CisgICAgICAgICAgICB1bnNp
Z25lZCB0YWJsZUluZGV4ID0gcmVjb3JkLmp1bXBUYWJsZS50YWJsZUluZGV4OworICAgICAgICAg
ICAgY29uc3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIHVubGlua2VkVGFibGUgPSBtX2NvZGVC
bG9jay0+dW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgICAg
ICAgICBTdHJpbmdKdW1wVGFibGUmIGxpbmtlZFRhYmxlID0gbV9jb2RlQmxvY2stPnN0cmluZ1N3
aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICAgICAgICAgIGxpbmtlZFRhYmxlLm1fY3Rp
RGVmYXVsdCA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNTd2l0Y2hQdHJUYWc+KG1fbGFiZWxz
W2J5dGVjb2RlT2Zmc2V0ICsgcmVjb3JkLmRlZmF1bHRPZmZzZXRdKTsKKyAgICAgICAgICAgIGxp
bmtlZFRhYmxlLm1fY3RpT2Zmc2V0cyA9IEZpeGVkVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEpT
U3dpdGNoUHRyVGFnPj4odW5saW5rZWRUYWJsZS5tX29mZnNldFRhYmxlLnNpemUoKSk7CiAKLSAg
ICAgICAgICAgIGZvciAoYXV0byYgbG9jYXRpb24gOiBzdHJpbmdKdW1wVGFibGUtPm9mZnNldFRh
YmxlLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbG9jYXRp
b24uYnJhbmNoT2Zmc2V0OwotICAgICAgICAgICAgICAgIGxvY2F0aW9uLmN0aU9mZnNldCA9IG9m
ZnNldAorICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhdGlvbiA6IHVubGlua2VkVGFibGUubV9v
ZmZzZXRUYWJsZS52YWx1ZXMoKSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9
IGxvY2F0aW9uLm1fYnJhbmNoT2Zmc2V0OworICAgICAgICAgICAgICAgIGxpbmtlZFRhYmxlLm1f
Y3RpT2Zmc2V0c1tsb2NhdGlvbi5tX2luZGV4SW5UYWJsZV0gPSBvZmZzZXQKICAgICAgICAgICAg
ICAgICAgICAgPyBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTU3dpdGNoUHRyVGFnPihtX2xhYmVs
c1tieXRlY29kZU9mZnNldCArIG9mZnNldF0pCi0gICAgICAgICAgICAgICAgICAgIDogc3RyaW5n
SnVtcFRhYmxlLT5jdGlEZWZhdWx0OworICAgICAgICAgICAgICAgICAgICA6IGxpbmtlZFRhYmxl
Lm1fY3RpRGVmYXVsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IGQ1MzliMGEyMDNjNjA5ZWM5ZjhkZjg5N2U5ODIwZDczMDYzOWI2
MzguLjIxZDJhNmM3ZjcwY2E2ZTE2ZjFiZDlmZjdkY2YzOGE2M2FjMjkzOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtMTI4LDcgKzEyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSogc2ltcGxlSnVtcFRhYmxl
OwotICAgICAgICAgICAgU3RyaW5nSnVtcFRhYmxlKiBzdHJpbmdKdW1wVGFibGU7CisgICAgICAg
ICAgICB1bnNpZ25lZCB0YWJsZUluZGV4OwogICAgICAgICB9IGp1bXBUYWJsZTsKIAogICAgICAg
ICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7CkBAIC0xNDIsMTIgKzE0MiwxMiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHRoaXMtPmp1bXBUYWJsZS5zaW1wbGVKdW1wVGFibGUg
PSBqdW1wVGFibGU7CiAgICAgICAgIH0KIAotICAgICAgICBTd2l0Y2hSZWNvcmQoU3RyaW5nSnVt
cFRhYmxlKiBqdW1wVGFibGUsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQg
ZGVmYXVsdE9mZnNldCkKLSAgICAgICAgICAgIDogdHlwZShTdHJpbmcpCisgICAgICAgIFN3aXRj
aFJlY29yZCh1bnNpZ25lZCB0YWJsZUluZGV4LCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgs
IHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQsIFR5cGUgdHlwZSkKKyAgICAgICAgICAgIDogdHlwZSh0
eXBlKQogICAgICAgICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCiAgICAgICAg
ICAgICAsIGRlZmF1bHRPZmZzZXQoZGVmYXVsdE9mZnNldCkKICAgICAgICAgewotICAgICAgICAg
ICAgdGhpcy0+anVtcFRhYmxlLnN0cmluZ0p1bXBUYWJsZSA9IGp1bXBUYWJsZTsKKyAgICAgICAg
ICAgIHRoaXMtPmp1bXBUYWJsZS50YWJsZUluZGV4ID0gdGFibGVJbmRleDsKICAgICAgICAgfQog
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGUz
OWE3ZWJiYjNhZjAwMDA2NTZiMWJkYTU3OTNkNTE1OTEzZjRiY2QuLjEwMjU2NTUwODlkZDgzOTkz
NWZjOWY1Y2EwYWNiMjRjOWU2ZjMzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcApAQCAtOTM0LDggKzkzNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9z
dHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgc2NydXRpbmVlID0gYnl0ZWNvZGUubV9zY3J1dGluZWU7CiAKICAgICAvLyBjcmVh
dGUganVtcCB0YWJsZSBmb3Igc3dpdGNoIGRlc3RpbmF0aW9ucywgdHJhY2sgdGhpcyBzd2l0Y2gg
c3RhdGVtZW50LgotICAgIFN0cmluZ0p1bXBUYWJsZSoganVtcFRhYmxlID0gJm1fY29kZUJsb2Nr
LT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7Ci0gICAgbV9zd2l0Y2hlcy5hcHBl
bmQoU3dpdGNoUmVjb3JkKGp1bXBUYWJsZSwgbV9ieXRlY29kZUluZGV4LCBkZWZhdWx0T2Zmc2V0
KSk7CisgICAgbV9zd2l0Y2hlcy5hcHBlbmQoU3dpdGNoUmVjb3JkKHRhYmxlSW5kZXgsIG1fYnl0
ZWNvZGVJbmRleCwgZGVmYXVsdE9mZnNldCwgU3dpdGNoUmVjb3JkOjpTdHJpbmcpKTsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc2NydXRpbmVlLCByZWdUMCk7CiAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmdXaXRoVW5rbm93bktleVR5cGUsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHRhYmxlSW5kZXgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDg5YzQx
NzNlMjgyYTc1MTZiM2Q1YjY1NmQ4NGE0MTU4OGVlMDU0OWUuLmVkYTI2M2U0NGM1ZmM5MTIxY2E4
MmNkYzMyYjBmNWU1ZDk4ZjE2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKQEAgLTEwMjgsOCArMTAyOCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3N3aXRjaF9zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgc2NydXRpbmVlID0gYnl0ZWNvZGUubV9zY3J1dGluZWU7CiAKICAg
ICAvLyBjcmVhdGUganVtcCB0YWJsZSBmb3Igc3dpdGNoIGRlc3RpbmF0aW9ucywgdHJhY2sgdGhp
cyBzd2l0Y2ggc3RhdGVtZW50LgotICAgIFN0cmluZ0p1bXBUYWJsZSoganVtcFRhYmxlID0gJm1f
Y29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7Ci0gICAgbV9zd2l0
Y2hlcy5hcHBlbmQoU3dpdGNoUmVjb3JkKGp1bXBUYWJsZSwgbV9ieXRlY29kZUluZGV4LCBkZWZh
dWx0T2Zmc2V0KSk7CisgICAgbV9zd2l0Y2hlcy5hcHBlbmQoU3dpdGNoUmVjb3JkKHRhYmxlSW5k
ZXgsIG1fYnl0ZWNvZGVJbmRleCwgZGVmYXVsdE9mZnNldCwgU3dpdGNoUmVjb3JkOjpTdHJpbmcp
KTsKIAogICAgIGVtaXRMb2FkKHNjcnV0aW5lZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZ1dpdGhVbmtub3duS2V5VHlwZSwgbV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCB0YWJsZUluZGV4
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDM1
YmZiY2NhM2U1ZDZlNjFkNGVmNTdlZjI4MWY0MzhiNWQ4MDhmYmIuLmIyNTAwZjBlNjIwOThjYjZi
ZWVjYmE3YzViZjMzYzcwMTlmNWI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtMjg0NSwxNiArMjg0NSwxNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uU3dpdGNoU3RyaW5nV2l0aFVua25vd25LZXlUeXBlLCBjaGFyKiwg
KEpTR2xvYgogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgdm9pZCogcmVzdWx0OwotICAgIFN0cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlID0gY29k
ZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgY29uc3QgU3Ry
aW5nSnVtcFRhYmxlJiBsaW5rZWRUYWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRh
YmxlKHRhYmxlSW5kZXgpOwogCiAgICAgaWYgKGtleS5pc1N0cmluZygpKSB7CiAgICAgICAgIFN0
cmluZ0ltcGwqIHZhbHVlID0gYXNTdHJpbmcoa2V5KS0+dmFsdWUoZ2xvYmFsT2JqZWN0KS5pbXBs
KCk7CiAKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsK
IAotICAgICAgICByZXN1bHQgPSBqdW1wVGFibGUuY3RpRm9yVmFsdWUodmFsdWUpLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7CisgICAgICAgIGNvbnN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiB1bmxp
bmtlZFRhYmxlID0gY29kZUJsb2NrLT51bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJs
ZUluZGV4KTsKKyAgICAgICAgcmVzdWx0ID0gbGlua2VkVGFibGUuY3RpRm9yVmFsdWUodW5saW5r
ZWRUYWJsZSwgdmFsdWUpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgfSBlbHNlCi0gICAgICAg
IHJlc3VsdCA9IGp1bXBUYWJsZS5jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAg
ICAgIHJlc3VsdCA9IGxpbmtlZFRhYmxlLm1fY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzcygp
OwogCiAgICAgYXNzZXJ0SXNUYWdnZWRXaXRoPEpTU3dpdGNoUHRyVGFnPihyZXN1bHQpOwogICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNDNjZWQ3ZmQxMzk0ZmQ0
NGVhOTlhYzc4YWNkYjhlOWExYTJhZjY0MS4uNzhiNmY2NmZjYTA5YTE1NjQ0NTk1ZGUyNTc1Mzc3
ODFjN2UxNjFhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCkBAIC0xNjMwLDcgKzE2MzAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfc3dpdGNoX3N0cmluZykKIAogICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
IAotICAgICAgICBKVU1QX1RPKGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGJ5dGVj
b2RlLm1fdGFibGVJbmRleCkub2Zmc2V0Rm9yVmFsdWUoc2NydXRpbmVlU3RyaW5nSW1wbCwgZGVm
YXVsdE9mZnNldCkpOworICAgICAgICBKVU1QX1RPKGNvZGVCbG9jay0+dW5saW5rZWRTdHJpbmdT
d2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUubV90YWJsZUluZGV4KS5vZmZzZXRGb3JWYWx1ZShzY3J1
dGluZWVTdHJpbmdJbXBsLCBkZWZhdWx0T2Zmc2V0KSk7CiAgICAgfQogICAgIExMSU5UX0VORCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmlu
ZGV4IGViMDU1M2FmYTQxOGJmOGY5Y2QyZjRiZjJlNzNmOTA4OTNhNzJmZTMuLjQzZmQ0NDc0NGMy
MGJkMDM1MTM1OTI2NTIxNTcyZDMyZjEwMmU0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTg4NCwxMiArODg0LDEyIEBAIGNsYXNzIENh
Y2hlZFN0cmluZ0p1bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRTdHJpbmdK
dW1wVGFibGU+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlKQogICAgIHsKLSAgICAgICAg
bV9vZmZzZXRUYWJsZS5lbmNvZGUoZW5jb2RlciwganVtcFRhYmxlLm9mZnNldFRhYmxlKTsKKyAg
ICAgICAgbV9vZmZzZXRUYWJsZS5lbmNvZGUoZW5jb2RlciwganVtcFRhYmxlLm1fb2Zmc2V0VGFi
bGUpOwogICAgIH0KIAogICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVubGlua2Vk
U3RyaW5nSnVtcFRhYmxlJiBqdW1wVGFibGUpIGNvbnN0CiAgICAgewotICAgICAgICBtX29mZnNl
dFRhYmxlLmRlY29kZShkZWNvZGVyLCBqdW1wVGFibGUub2Zmc2V0VGFibGUpOworICAgICAgICBt
X29mZnNldFRhYmxlLmRlY29kZShkZWNvZGVyLCBqdW1wVGFibGUubV9vZmZzZXRUYWJsZSk7CiAg
ICAgfQogCiBwcml2YXRlOgpAQCAtOTUxLDcgKzk1MSw3IEBAIGNsYXNzIENhY2hlZENvZGVCbG9j
a1JhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZENvZGVCbG9jazo6UmFyZURh
dGE+CiAgICAgewogICAgICAgICBtX2V4Y2VwdGlvbkhhbmRsZXJzLmVuY29kZShlbmNvZGVyLCBy
YXJlRGF0YS5tX2V4Y2VwdGlvbkhhbmRsZXJzKTsKICAgICAgICAgbV9zd2l0Y2hKdW1wVGFibGVz
LmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3N3aXRjaEp1bXBUYWJsZXMpOwotICAgICAgICBt
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fc3RyaW5n
U3dpdGNoSnVtcFRhYmxlcyk7CisgICAgICAgIG1fdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRh
Ymxlcyk7CiAgICAgICAgIG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnMuZW5jb2RlKGVuY29k
ZXIsIHJhcmVEYXRhLm1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnMpOwogICAgICAgICBtX3R5
cGVQcm9maWxlckluZm9NYXAuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fdHlwZVByb2ZpbGVy
SW5mb01hcCk7CiAgICAgICAgIG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMu
ZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9m
ZnNldHMpOwpAQCAtOTY2LDcgKzk2Niw3IEBAIGNsYXNzIENhY2hlZENvZGVCbG9ja1JhcmVEYXRh
IDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE+CiAgICAg
ICAgIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YSogcmFyZURhdGEgPSBuZXcgVW5saW5rZWRD
b2RlQmxvY2s6OlJhcmVEYXRhIHsgfTsKICAgICAgICAgbV9leGNlcHRpb25IYW5kbGVycy5kZWNv
ZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMpOwogICAgICAgICBtX3N3
aXRjaEp1bXBUYWJsZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJs
ZXMpOwotICAgICAgICBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuZGVjb2RlKGRlY29kZXIsIHJh
cmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMpOworICAgICAgICBtX3VubGlua2VkU3Ry
aW5nU3dpdGNoSnVtcFRhYmxlcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fdW5saW5rZWRT
dHJpbmdTd2l0Y2hKdW1wVGFibGVzKTsKICAgICAgICAgbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0
aW9ucy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlv
bnMpOwogICAgICAgICBtX3R5cGVQcm9maWxlckluZm9NYXAuZGVjb2RlKGRlY29kZXIsIHJhcmVE
YXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXApOwogICAgICAgICBtX29wUHJvZmlsZUNvbnRyb2xG
bG93Qnl0ZWNvZGVPZmZzZXRzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9vcFByb2ZpbGVD
b250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cyk7CkBAIC05ODAsNyArOTgwLDcgQEAgY2xhc3MgQ2Fj
aGVkQ29kZUJsb2NrUmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkQ29kZUJs
b2NrOjpSYXJlRGF0YT4KIHByaXZhdGU6CiAgICAgQ2FjaGVkVmVjdG9yPFVubGlua2VkSGFuZGxl
ckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZFNpbXBs
ZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwotICAgIENhY2hlZFZlY3RvcjxDYWNoZWRT
dHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKKyAgICBDYWNoZWRWZWN0
b3I8Q2FjaGVkU3RyaW5nSnVtcFRhYmxlPiBtX3VubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxl
czsKICAgICBDYWNoZWRWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24+IG1f
ZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CiAgICAgQ2FjaGVkSGFzaE1hcDx1bnNpZ25lZCwg
VW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+
IG1fdHlwZVByb2ZpbGVySW5mb01hcDsKICAgICBDYWNoZWRWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsK
</data>
<flag name="review"
          id="445735"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>