<?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>234184</bug_id>
          
          <creation_ts>2021-12-10 15:56:05 -0800</creation_ts>
          <short_desc>ContextDestructionObserver::m_scriptExecutionContext should be private</short_desc>
          <delta_ts>2021-12-11 16:31:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1823056</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-10 15:56:05 -0800</bug_when>
    <thetext>ContextDestructionObserver::m_scriptExecutionContext should be private. It is poor encapsulation to have protected data members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823060</commentid>
    <comment_count>1</comment_count>
      <attachid>446836</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-10 15:58:02 -0800</bug_when>
    <thetext>Created attachment 446836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823225</commentid>
    <comment_count>2</comment_count>
      <attachid>446836</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-11 09:16:03 -0800</bug_when>
    <thetext>Comment on attachment 446836
Patch

Some pre-existing places are using *scriptExecutionContext() and it is not clear whether it is guaranteed to not be null.

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

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySystemRequest.cpp:65
&gt; +    auto context = scriptExecutionContext();

auto*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823269</commentid>
    <comment_count>3</comment_count>
      <attachid>446908</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-11 15:26:04 -0800</bug_when>
    <thetext>Created attachment 446908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823278</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-11 16:30:17 -0800</bug_when>
    <thetext>Committed r286918 (245144@main): &lt;https://commits.webkit.org/245144@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446908.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823279</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-11 16:31:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/86370839&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446836</attachid>
            <date>2021-12-10 15:58:02 -0800</date>
            <delta_ts>2021-12-11 15:26:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234184-20211210155801.patch</filename>
            <type>text/plain</type>
            <size>32658</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJmNzg4ZDVkOTU5ZDFi
YWRhZDQ0YTAxZTkxMDVlMjExOGE1OWUwZi4uYmY2ZGZhMmQ3NmFmZTdmNzY4OGQ0OWZkMzkyOGY5
NTdlZDBlYWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTEyLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXI6Om1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCBzaG91bGQgYmUgcHJpdmF0ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTg0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXI6Om1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCBzaG91bGQgYmUgcHJpdmF0
ZS4gSXQgaXMgcG9vciBlbmNhcHN1bGF0aW9uCisgICAgICAgIHRvIGhhdmUgcHJvdGVjdGVkIGRh
dGEgbWVtYmVycy4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbVJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTeXN0ZW1SZXF1ZXN0Ojp0b3BMZXZlbERvY3VtZW50
T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3lzdGVtUmVxdWVzdDo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTeXN0ZW1SZXF1ZXN0OjpkZW55KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3lzdGVtUmVxdWVzdDo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleVN5c3RlbVJlcXVlc3Q6OmRvY3VtZW50IGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEdGxzVHJhbnNwb3J0Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VU
cmFuc3BvcnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1NjdHBUcmFuc3Bv
cnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dXNlck1lZGlhRG9jdW1lbnRP
cmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dG9wTGV2
ZWxEb2N1bWVudE9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1
ZXN0OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjphbGxvdyk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpkZW55KToKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdDo6ZG9jdW1lbnQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWVkaWFT
ZXNzaW9uR3JvdXBJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0Jhc2VBdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4
dDo6ZG9jdW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6
b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OmFkZENv
bnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OmFsbG93RGF0YWJh
c2VBY2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpkYXRh
YmFzZUV4Y2VlZGVkUXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0Ojpz
ZWN1cml0eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6
OmlzQ29udGV4dFRocmVhZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5
c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZp
Y2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6On5BY3RpdmVET01PYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpzdXNwZW5kSWZOZWVkZWQpOgorICAgICAg
ICAqIGRvbS9Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oOgorICAgICAgICAqIGRvbS9NZXNz
YWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6TWVzc2FnZVBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6On5NZXNzYWdlUG9ydCk6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpk
aXNlbnRhbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6bWVzc2FnZUF2YWls
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6c3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6
OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
VlRUUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6Z2V0RGlzcGxheVRy
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjpwcmVwYXJlUmVnaW9uRGlzcGxheVRy
ZWUpOgorCiAyMDIxLTEyLTEwICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4K
IAogICAgICAgICBKU0Vycm9ySGFuZGxlciBzaG91bGQgbm90IHNldCB3aW5kb3cuZXZlbnQgaWYg
aW52b2NhdGlvbiB0YXJnZXQgaXMgaW4gc2hhZG93IHRyZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCAyODUwZGJhMWUzYmZhMTFmNDg5YjQ0
NDAzNTEzZDUxYWUxYmVhZDNhLi4zNDlhNTlkZWMyZGFjYTM4YzhhMzI1MWIxOWJmZGFhMmY1NWY3
YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKE1l
ZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpCiAgICAgLy8gVzNDIEVk
aXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBDRE1Q
cml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKCkKIAotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIGlmICghZG9jdW1lbnQgfHwgIW1fcHJpdmF0ZSkgewogICAgICAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVt
UmVxdWVzdC5jcHAKaW5kZXggMmEyZmVjMzI0YjBkMTI0NTA3MGEwYzc0MDMzNWE4NDgyMjAyMGQx
Zi4uMzI5MTRiMDFhODM2ZDdlZjUzNmFhZjg5ZDgwNzg4NTBmNTFkODhiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbVJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTeXN0ZW1SZXF1ZXN0LmNwcApAQCAtNjIsMjAgKzYyLDIwIEBAIE1lZGlhS2V5U3lzdGVtUmVx
dWVzdDo6fk1lZGlhS2V5U3lzdGVtUmVxdWVzdCgpCiAKIFNlY3VyaXR5T3JpZ2luKiBNZWRpYUtl
eVN5c3RlbVJlcXVlc3Q6OnRvcExldmVsRG9jdW1lbnRPcmlnaW4oKSBjb25zdAogewotICAgIGlm
ICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gJm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+dG9wT3JpZ2luKCk7CisgICAgYXV0
byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJldHVybiBjb250ZXh0
ID8gJmNvbnRleHQtPnRvcE9yaWdpbigpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBNZWRpYUtleVN5
c3RlbVJlcXVlc3Q6OnN0YXJ0KCkKIHsKLSAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KTsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeworICAgIGF1dG8qIGNv
bnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgQVNTRVJUKGNvbnRleHQpOwor
ICAgIGlmICghY29udGV4dCkgewogICAgICAgICBkZW55KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50
PigqY29udGV4dCk7CiAgICAgYXV0byogY29udHJvbGxlciA9IE1lZGlhS2V5U3lzdGVtQ29udHJv
bGxlcjo6ZnJvbShkb2N1bWVudC5wYWdlKCkpOwogICAgIGlmICghY29udHJvbGxlcikgewogICAg
ICAgICBkZW55KCk7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgTWVkaWFLZXlTeXN0ZW1SZXF1ZXN0
OjphbGxvdyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAK
IHZvaWQgTWVkaWFLZXlTeXN0ZW1SZXF1ZXN0OjpkZW55KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBpZiAoIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBj
b2RlID0gTm90U3VwcG9ydGVkRXJyb3I7CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBNZWRpYUtl
eVN5c3RlbVJlcXVlc3Q6OmRlbnkoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIE1lZGlh
S2V5U3lzdGVtUmVxdWVzdDo6c3RvcCgpCiB7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
aWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBNZWRpYUtleVN5c3RlbUNvbnRyb2xsZXI6OmZyb20oZG9j
dW1lbnQucGFnZSgpKSkKICAgICAgICAgY29udHJvbGxlci0+Y2FuY2VsTWVkaWFLZXlTeXN0ZW1S
ZXF1ZXN0KCp0aGlzKTsKIH0KQEAgLTEyMCw3ICsxMjAsNyBAQCBjb25zdCBjaGFyKiBNZWRpYUtl
eVN5c3RlbVJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogCiBEb2N1bWVudCog
TWVkaWFLZXlTeXN0ZW1SZXF1ZXN0Ojpkb2N1bWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRv
d25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIHJldHVybiBk
b3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBlMjcyZWNkZWYyYTdkMDY2YTEyMWVjMzY2YTk5MDZk
NGI4ZGIxNGM3Li5kYTMyMWU0MWY0NDFmM2E0MTc2NWE0NzkxNTlmNGRjNzE0NTkyYWVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNw
cApAQCAtMzMyLDcgKzMzMiw3IEBAIGludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihSZWY8
UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxQCiAgICAgaW50IHdh
dGNoSUQ7CiAgICAgLy8gS2VlcCBhc2tpbmcgZm9yIHRoZSBuZXh0IGlkIHVudGlsIHdlJ3JlIGdp
dmVuIG9uZSB0aGF0IHdlIGRvbid0IGFscmVhZHkgaGF2ZS4KICAgICBkbyB7Ci0gICAgICAgIHdh
dGNoSUQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNpcmN1bGFyU2VxdWVudGlhbElEKCk7
CisgICAgICAgIHdhdGNoSUQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNpcmN1bGFyU2Vx
dWVudGlhbElEKCk7CiAgICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdhdGNoSUQsIG5vdGlm
aWVyLmNvcHlSZWYoKSkpOwogICAgIHJldHVybiB3YXRjaElEOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCmluZGV4IGNhMGM1
NTZiODkwZjUyYzk4OGVkYWFkZjdiMmY5OTYxYmZiMmU5Y2EuLjY5NGZhZjQwOGU2ZjUyYzRiNDQ4
NDNjZDRhZGFkNzRmZmQ1NWY4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlbW92ZUZyb21EYXRhQ2hhbm5lbExvY2FsTWFwSWZOZWVkZWQoKTsKIAogICAg
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gUlRDRGF0YUNoYW5uZWxFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEdGxzVHJhbnNwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0R0bHNUcmFuc3BvcnQuaAppbmRleCBlODcwN2YwYmU5YmZkNmUx
Y2I4YmQ1MmVhZjNiNTlhMzg4M2NlMTBlLi4yZDQyN2QwM2Q5NzY0YzAzZGE4YTBkMjdlMzcxZDFj
YzE0MmU0MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0R0bHNUcmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0R0bHNUcmFuc3BvcnQuaApAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YQogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUlRDRHRsc1RyYW5zcG9y
dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZVRyYW5zcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VU
cmFuc3BvcnQuaAppbmRleCAyYzEzYmJmZDMwNWEyMTc4ZjMyYWIwOTFkNDUyYTA0ZDgyNTlkYWMz
Li4yODI2ZDMzYmU1YjgyZGI1NDEwZTE3ZWUwZjIzYTUzZThmOGU5ZWY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZVRyYW5zcG9ydC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlVHJhbnNwb3J0LmgKQEAg
LTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIFJUQ0ljZVRyYW5zcG9ydEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsg
fQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAg
ICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1NjdHBUcmFuc3BvcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2N0cFRyYW5zcG9ydC5oCmluZGV4IGUwN2E1ZmFj
ZDYyYjY2YWI2OTc2OGYzZTkxYjQ1MTY0ZjUyOTY0ZDkuLjdiMDA0ZjVmMDNjMzdmZjJjNjRmNGRj
NGYyNTVhNTJhN2FkNzgxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDU2N0cFRyYW5zcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDU2N0cFRyYW5zcG9ydC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6
CiAKICAgICAvLyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSVENTY3Rw
VHJhbnNwb3J0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBk
ZXJlZigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDg1MjVlN2Q4OGM3Y2U1NWNjOTAxMTcwZjFk
ODRiYzIwNmNiNDFkMjIuLmUwNmNkZTA4OWJhZTM3MjcwZWIyYmQxMjVmYzA2ODFkNWJjNjdkZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcApAQCAtNzUsMTYgKzc1LDE0IEBAIFVzZXJNZWRpYVJlcXVlc3Q6On5V
c2VyTWVkaWFSZXF1ZXN0KCkKIAogU2VjdXJpdHlPcmlnaW4qIFVzZXJNZWRpYVJlcXVlc3Q6OnVz
ZXJNZWRpYURvY3VtZW50T3JpZ2luKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvKiBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJldHVybiBjb250ZXh0ID8gY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7CiB9CiAKIFNlY3VyaXR5T3JpZ2luKiBVc2VyTWVk
aWFSZXF1ZXN0Ojp0b3BMZXZlbERvY3VtZW50T3JpZ2luKCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdpbigpOworICAgIGF1dG8qIGNv
bnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgcmV0dXJuIGNvbnRleHQgPyAm
Y29udGV4dC0+dG9wT3JpZ2luKCkgOiBudWxscHRyOwogfQogCiBzdGF0aWMgYm9vbCBoYXNJbnZh
bGlkR2V0RGlzcGxheU1lZGlhQ29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25z
dHJhaW50cykKQEAgLTE1Nyw4ICsxNTUsOSBAQCBzdGF0aWMgYm9vbCBoYXNJbnZhbGlkR2V0RGlz
cGxheU1lZGlhQ29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaQogCiB2
b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KCkKIHsKLSAgICBBU1NFUlQobV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KTsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeworICAg
IGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgQVNTRVJUKGNv
bnRleHQpOworICAgIGlmICghY29udGV4dCkgewogICAgICAgICBkZW55KE1lZGlhQWNjZXNzRGVu
aWFsUmVhc29uOjpVc2VyTWVkaWFEaXNhYmxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0xODUsNyArMTg0LDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCgpCiAgICAgLy8g
NC4gSWYgdGhlIGN1cnJlbnQgc2V0dGluZ3Mgb2JqZWN0J3MgcmVzcG9uc2libGUgZG9jdW1lbnQg
aXMgTk9UIGFsbG93ZWQgdG8gdXNlIHRoZSBmZWF0dXJlIGluZGljYXRlZCBieQogICAgIC8vICAg
IGF0dHJpYnV0ZSBuYW1lIGFsbG93dXNlcm1lZGlhLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVk
IHdpdGggYSBET01FeGNlcHRpb24gb2JqZWN0IHdob3NlIG5hbWUKICAgICAvLyAgICBhdHRyaWJ1
dGUgaGFzIHRoZSB2YWx1ZSBTZWN1cml0eUVycm9yLgotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGF1dG8mIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKICAgICBhdXRvKiBjb250cm9s
bGVyID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC5wYWdlKCkpOwogICAgIGlm
ICghY29udHJvbGxlcikgewogICAgICAgICBkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpV
c2VyTWVkaWFEaXNhYmxlZCk7CkBAIC0yNTQsNyArMjUzLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1
ZXN0OjphbGxvdyhDYXB0dXJlRGV2aWNlJiYgYXVkaW9EZXZpY2UsIENhcHR1cmVEZXZpY2UmJiB2
aWRlb0QKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gcHJpdmF0ZVN0cmVhbSA9IFdU
Rk1vdmUocHJpdmF0ZVN0cmVhbU9yRXJyb3IpLnZhbHVlKCk7CiAKLSAgICAgICAgICAgIGF1dG8m
IGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OworICAgICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgICAgICBwcml2YXRlU3RyZWFtLT5tb25pdG9y
T3JpZW50YXRpb24oZG9jdW1lbnQub3JpZW50YXRpb25Ob3RpZmllcigpKTsKIAogICAgICAgICAg
ICAgYXV0byBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3ZlKHBy
aXZhdGVTdHJlYW0pKTsKQEAgLTI3Myw3ICsyNzIsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6
OmFsbG93KENhcHR1cmVEZXZpY2UmJiBhdWRpb0RldmljZSwgQ2FwdHVyZURldmljZSYmIHZpZGVv
RAogICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2lu
Z2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0oZG9jdW1lbnQubG9nZ2VyKCksIFdURk1vdmUoY2Fs
bGJhY2spLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIFdURk1vdmUoYXVkaW9E
ZXZpY2UpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgbV9yZXF1ZXN0KTsKIAotICAgICAgICBpZiAo
IW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoV0VCX1JUQykKQEAg
LTI4NSw3ICsyODQsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93KENhcHR1cmVEZXZp
Y2UmJiBhdWRpb0RldmljZSwgQ2FwdHVyZURldmljZSYmIHZpZGVvRAogCiB2b2lkIFVzZXJNZWRp
YVJlcXVlc3Q6OmRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24gcmVhc29uLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAg
aWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4
Y2VwdGlvbkNvZGUgY29kZTsKQEAgLTMzNiw3ICszMzUsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVl
c3Q6OmRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24gcmVhc29uLCBjb25zdCBTdHJpbmcmIG1l
c3NhZwogCiB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0b3AoKQogewotICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAg
IGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIGlmIChhdXRvKiBjb250cm9sbGVyID0gVXNlck1lZGlhQ29udHJvbGxlcjo6
ZnJvbShkb2N1bWVudC5wYWdlKCkpKQogICAgICAgICBjb250cm9sbGVyLT5jYW5jZWxVc2VyTWVk
aWFBY2Nlc3NSZXF1ZXN0KCp0aGlzKTsKIH0KQEAgLTM0OCw3ICszNDcsNyBAQCBjb25zdCBjaGFy
KiBVc2VyTWVkaWFSZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKIAogRG9jdW1l
bnQqIFVzZXJNZWRpYVJlcXVlc3Q6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG93
bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIGRv
d25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogfQogCiB2b2lkIFVz
ZXJNZWRpYVJlcXVlc3Q6Om1lZGlhU3RyZWFtRGlkRmFpbChSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKaW5kZXggYWQ3MjhjMzY5NTJiMzBkMDU3NGU3MThmODlkMzRjZGE4NjMyZGYxMy4u
YTM3MzQ4NThlOWNmM2VmNDgzYzIwNjE4NmE1NGQzMzY5MTZmNGM2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNDc2LDcgKzQ3
Niw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kUGxheWJhY2soKQogCiBNZWRpYVNlc3Np
b25Hcm91cElkZW50aWZpZXIgQXVkaW9Db250ZXh0OjptZWRpYVNlc3Npb25Hcm91cElkZW50aWZp
ZXIoKSBjb25zdAogewotICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gZG9jdW1lbnQg
JiYgZG9jdW1lbnQtPnBhZ2UoKSA/IGRvY3VtZW50LT5wYWdlKCktPm1lZGlhU2Vzc2lvbkdyb3Vw
SWRlbnRpZmllcigpIDogTWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyIHsgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5j
cHAKaW5kZXggNjRlM2QxNjY4MGEzZTEyOGQwZmIxMzM0MWMwYWUyZTU1N2RiYmFiNC4uNDlhODRh
MmZjYjM1Nzc0OTViZjczZDE3ZTc0ZmZhYjJlY2EyMTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwCkBAIC0yNjIsNyAr
MjYyLDcgQEAgdm9pZCBCYXNlQXVkaW9Db250ZXh0OjpzdG9wKCkKIAogRG9jdW1lbnQqIEJhc2VB
dWRpb0NvbnRleHQ6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8RG9j
dW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIGRvd25jYXN0PERv
Y3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogfQogCiBib29sIEJhc2VBdWRpb0Nv
bnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJiB1cmwpIGNvbnN0CkBAIC04NjgsMTMg
Kzg2OCwxNCBAQCB2b2lkIEJhc2VBdWRpb0NvbnRleHQ6OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQo
KT4mJiB0YXNrKQogCiBjb25zdCBTZWN1cml0eU9yaWdpbiogQmFzZUF1ZGlvQ29udGV4dDo6b3Jp
Z2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID8gbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKKyAgICBh
dXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJldHVybiBjb250
ZXh0ID8gY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgQmFz
ZUF1ZGlvQ29udGV4dDo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSk7CisgICAgaWYgKGF1dG8q
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGNvbnRleHQtPmFk
ZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOwogfQogCiBQZXJpb2RpY1dh
dmUmIEJhc2VBdWRpb0NvbnRleHQ6OnBlcmlvZGljV2F2ZShPc2NpbGxhdG9yVHlwZSB0eXBlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNv
bnRleHQuY3BwCmluZGV4IGEzY2U3MGM4OGQ0OTgwMjE3ODI2Njk4Njk1YzdiNDQ1MDU4M2VkOTYu
LjE3MDg0NDE2ODQzNGM0YTczMjRkN2M4MjcxZTdiZDI0ZGZmNTIxM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAK
QEAgLTE3OSwzNiArMTc5LDM4IEBAIGJvb2wgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2Vz
KERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyKQogCiBib29sIERhdGFiYXNl
Q29udGV4dDo6YWxsb3dEYXRhYmFzZUFjY2VzcygpIGNvbnN0CiB7Ci0gICAgaWYgKGlzPERvY3Vt
ZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSkgewotICAgICAgICBEb2N1bWVudCYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoaXM8
RG9jdW1lbnQ+KCpjb250ZXh0KSkgeworICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0
PERvY3VtZW50PigqY29udGV4dCk7CiAgICAgICAgIGlmICghZG9jdW1lbnQucGFnZSgpIHx8IChk
b2N1bWVudC5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgJiYgIUxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjphbGxvd3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCkucHJvdG9jb2woKSkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAvLyBhbGxvd0RhdGFiYXNlQWNjZXNzIGlzIG5vdCB5
ZXQgaW1wbGVtZW50ZWQgZm9yIHdvcmtlcnMuCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQg
RGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1l
LCBEYXRhYmFzZURldGFpbHMgZGV0YWlscykKIHsKLSAgICBpZiAoaXM8RG9jdW1lbnQ+KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpKSB7Ci0gICAgICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBhdXRvKiBj
b250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChpczxEb2N1bWVudD4o
KmNvbnRleHQpKSB7CisgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KCpjb250ZXh0KTsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCiAg
ICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5leGNlZWRlZERhdGFiYXNlUXVvdGEo
KmRvY3VtZW50LmZyYW1lKCksIG5hbWUsIGRldGFpbHMpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2Nv
cGUoKSk7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiB9CiAK
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgRGF0YWJhc2VDb250ZXh0OjpzZWN1cml0eU9yaWdp
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKS0+ZGF0YSgpOworICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKTsKIH0KIAogYm9vbCBEYXRhYmFzZUNvbnRleHQ6Omlz
Q29udGV4dFRocmVhZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNDb250ZXh0VGhyZWFkKCk7CisgICAgcmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNDb250ZXh0VGhyZWFkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKaW5kZXggYzY0NjFk
YTMzMzBmMGFiNTExZDI0OTRlMzliMDJlZDk4MzhhMTBlZC4uOTc3MWI5ODQ1YzY0NjQ3ODJlZThk
NWI0YWEwZWU5MDI5Y2Q5ZDE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5jcHAKQEAgLTU2NCw3ICs1NjQsNyBAQCB2b2lkIFdlYlhSU3lzdGVtOjpEdW1t
eUlubGluZURldmljZTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZy
YQogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmFmID0g
SW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s6OmNyZWF0ZSgqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICBhdXRvIHJhZiA9IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOjpjcmVh
dGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKCkgbXV0YWJsZSB7CiAgICAgICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIGRh
dGE7CiAgICAgICAgIGRhdGEuaXNUcmFja2luZ1ZhbGlkID0gdHJ1ZTsKICAgICAgICAgZGF0YS5p
c1Bvc2l0aW9uVmFsaWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Fj
dGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNw
cAppbmRleCA0NGQyZTQ0MDZmZGFiZmJjYjY5NTkzZGUyMTEzNjE0NjZiODM0MTAyLi4wMWZiYjFh
MjkyMTEyNjQ3YWUwYWI1MGY0NzRhMjZkMzJmNzk5ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0
aXZlRE9NT2JqZWN0LmNwcApAQCAtNzYsMTIgKzc2LDEzIEBAIEFjdGl2ZURPTU9iamVjdDo6fkFj
dGl2ZURPTU9iamVjdCgpCiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRl
eHREZXN0cm95ZWQoKSAod2hpY2ggd2UgaW1wbGVtZW50IC8KICAgICAvLyBpbmhlcml0KS4gSGVu
Y2UsIHdlIHNob3VsZCBlbnN1cmUgdGhhdCB0aGlzIGlzIG5vdCAwIGJlZm9yZSB1c2UgaXQKICAg
ICAvLyBoZXJlLgotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIGF1dG8q
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQog
ICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9zdXNwZW5kSWZOZWVkZWRXYXNDYWxsZWQp
OwotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgp
KTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPndpbGxEZXN0cm95QWN0aXZlRE9NT2Jq
ZWN0KCp0aGlzKTsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOworICAg
IGNvbnRleHQtPndpbGxEZXN0cm95QWN0aXZlRE9NT2JqZWN0KCp0aGlzKTsKIH0KIAogdm9pZCBB
Y3RpdmVET01PYmplY3Q6OnN1c3BlbmRJZk5lZWRlZCgpCkBAIC05MCwxMCArOTEsOCBAQCB2b2lk
IEFjdGl2ZURPTU9iamVjdDo6c3VzcGVuZElmTmVlZGVkKCkKICAgICBBU1NFUlQoIW1fc3VzcGVu
ZElmTmVlZGVkV2FzQ2FsbGVkKTsKICAgICBtX3N1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCA9IHRy
dWU7CiAjZW5kaWYKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zdXNwZW5kQWN0aXZlRE9N
T2JqZWN0SWZOZWVkZWQoKnRoaXMpOworICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICBjb250ZXh0LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0
SWZOZWVkZWQoKnRoaXMpOwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgKaW5kZXggMzU2YWFkMGIzNGVi
ZGFhNmQzOWQxYjJlNWFjZDg2N2M5ZTc3Y2EzZi4uMjA4OWE0ZjA4OWMzYTE4NjQwYjBiZWFkZmYw
Y2ZlN2JiODU2MjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLmgKQEAgLTMyLDE1ICszMiwxNiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogCiBjbGFzcyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBj
b250ZXh0RGVzdHJveWVkKCk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OyB9CiAKIHByb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB+Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoKTsKICAgICB2b2lkIG9i
c2VydmVDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAorcHJpdmF0ZToKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA4ZGEyMDc2MTgzMWY3MjIzYzhiMzRiNzFi
ZGFmNjUzNjIxNmFlMTNkLi5mNDNjMDAwOGZkMjhhOWU5MWYxNzA1MWNkYzZmNmZhNWE4NmZmMjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBNZXNz
YWdlUG9ydDo6TWVzc2FnZVBvcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgY29uc3QgTQogICAgIC8vIE1ha2Ugc3VyZSB0aGUgV2Vha1B0ckZhY3Rvcnkg
Z2V0cyBpbml0aWFsaXplZCBlYWdlcmx5IG9uIHRoZSB0aHJlYWQgdGhlIE1lc3NhZ2VQb3J0IGdl
dHMgY29uc3RydWN0ZWQgb24gZm9yIHRocmVhZC1zYWZldHkgcmVhc29ucy4KICAgICBpbml0aWFs
aXplV2Vha1B0ckZhY3RvcnkoKTsKIAotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+Y3Jl
YXRlZE1lc3NhZ2VQb3J0KCp0aGlzKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmNyZWF0
ZWRNZXNzYWdlUG9ydCgqdGhpcyk7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiAKICAgICAvLyBE
b24ndCBuZWVkIHRvIGNhbGwgcHJvY2Vzc01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzU29vbigpIGhl
cmUsIGJlY2F1c2UgdGhlIHBvcnQgd2lsbCBub3QgYmUgb3BlbmVkIHVudGlsIHN0YXJ0KCkgaXMg
aW52b2tlZC4KQEAgLTEyNCwxMyArMTI0LDEzIEBAIE1lc3NhZ2VQb3J0Ojp+TWVzc2FnZVBvcnQo
KQogICAgIGlmIChtX2VudGFuZ2xlZCkKICAgICAgICAgY2xvc2UoKTsKIAotICAgIGlmIChtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
ZGVzdHJveWVkTWVzc2FnZVBvcnQoKnRoaXMpOworICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBjb250ZXh0LT5kZXN0cm95ZWRNZXNzYWdl
UG9ydCgqdGhpcyk7CiB9CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlKCkKIHsKLSAgICBN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQoKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkuZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUobV9pZGVudGlm
aWVyLCBtX3JlbW90ZUlkZW50aWZpZXIpOworICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
Ojpmcm9tQ29udGV4dCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5lbnRhbmdsZUxvY2FsUG9y
dEluVGhpc1Byb2Nlc3NUb1JlbW90ZShtX2lkZW50aWZpZXIsIG1fcmVtb3RlSWRlbnRpZmllcik7
CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgU3RydWN0dXJl
ZFNlcmlhbGl6ZU9wdGlvbnMmJiBvcHRpb25zKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBz
dGF0ZSwgSlNDOjpKU1ZhCiAKICAgICBpZiAoIWlzRW50YW5nbGVkKCkpCiAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
QXJyYXkgdHJhbnNmZXJyZWRQb3J0czsKICAgICAvLyBNYWtlIHN1cmUgd2UgYXJlbid0IGNvbm5l
Y3RlZCB0byBhbnkgb2YgdGhlIHBhc3NlZC1pbiBwb3J0cy4KQEAgLTE2Niw3ICsxNjYsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9i
amVjdCYgc3RhdGUsIEpTQzo6SlNWYQogCiAgICAgTE9HKE1lc3NhZ2VQb3J0cywgIkFjdHVhbGx5
IHBvc3RpbmcgbWVzc2FnZSB0byBwb3J0ICVzICh0byBiZSByZWNlaXZlZCBieSBwb3J0ICVzKSIs
IG1faWRlbnRpZmllci5sb2dTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3JlbW90ZUlkZW50aWZp
ZXIubG9nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6ZnJvbUNvbnRleHQoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdE1lc3Nh
Z2VUb1JlbW90ZShXVEZNb3ZlKG1lc3NhZ2UpLCBtX3JlbW90ZUlkZW50aWZpZXIpOworICAgIE1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKS5wb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2FnZSksIG1fcmVtb3RlSWRl
bnRpZmllcik7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMTc3LDE0ICsxNzcsMTUgQEAgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUoKQogCiAgICAgcmVn
aXN0ZXJMb2NhbEFjdGl2aXR5KCk7CiAKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
ZnJvbUNvbnRleHQoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkubWVzc2FnZVBvcnREaXNlbnRh
bmdsZWQobV9pZGVudGlmaWVyKTsKKyAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQo
Y29udGV4dCkubWVzc2FnZVBvcnREaXNlbnRhbmdsZWQobV9pZGVudGlmaWVyKTsKIAogICAgIC8v
IFdlIGNhbid0IHJlY2VpdmUgYW55IG1lc3NhZ2VzIG9yIGdlbmVyYXRlIGFueSBldmVudHMgYWZ0
ZXIgdGhpcywgc28gcmVtb3ZlIG91cnNlbHZlcyBmcm9tIHRoZSBsaXN0IG9mIGFjdGl2ZSBwb3J0
cy4KLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRlc3Ryb3llZE1lc3NhZ2VQb3J0KCp0
aGlzKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPndpbGxEZXN0cm95QWN0aXZlRE9N
T2JqZWN0KCp0aGlzKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPndpbGxEZXN0cm95
RGVzdHJ1Y3Rpb25PYnNlcnZlcigqdGhpcyk7CisgICAgY29udGV4dC5kZXN0cm95ZWRNZXNzYWdl
UG9ydCgqdGhpcyk7CisgICAgY29udGV4dC53aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdCgqdGhp
cyk7CisgICAgY29udGV4dC53aWxsRGVzdHJveURlc3RydWN0aW9uT2JzZXJ2ZXIoKnRoaXMpOwog
Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbnVsbHB0cjsKKyAgICBvYnNlcnZlQ29u
dGV4dChudWxscHRyKTsKIAogICAgIHJldHVybiB7IGlkZW50aWZpZXIoKSwgcmVtb3RlSWRlbnRp
ZmllcigpIH07CiB9CkBAIC0yMDIsMTAgKzIwMywxMSBAQCB2b2lkIE1lc3NhZ2VQb3J0OjptZXNz
YWdlQXZhaWxhYmxlKCkKIHsKICAgICAvLyBUaGlzIE1lc3NhZ2VQb3J0IG9iamVjdCBtaWdodCBi
ZSBkaXNlbnRhbmdsZWQgYmVjYXVzZSB0aGUgcG9ydCBpcyBiZWluZyB0cmFuc2ZlcnJlZCwKICAg
ICAvLyBpbiB3aGljaCBjYXNlIHdlJ2xsIG5vdGlmeSBpdCB0aGF0IG1lc3NhZ2VzIGFyZSBhdmFp
bGFibGUgb25jZSBhIG5ldyBlbmQgcG9pbnQgaXMgY3JlYXRlZC4KLSAgICBpZiAoIW1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCB8fCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFjdGl2ZURPTU9i
amVjdHNBcmVTdXNwZW5kZWQoKSkKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOworICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0LT5hY3RpdmVET01PYmplY3Rz
QXJlU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cHJvY2Vzc01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzU29vbigpOworICAgIGNvbnRl
eHQtPnByb2Nlc3NNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0c1Nvb24oKTsKIH0KIAogdm9pZCBNZXNz
YWdlUG9ydDo6c3RhcnQoKQpAQCAtMjE2LDEyICsyMTgsMTIgQEAgdm9pZCBNZXNzYWdlUG9ydDo6
c3RhcnQoKQogCiAgICAgcmVnaXN0ZXJMb2NhbEFjdGl2aXR5KCk7CiAKLSAgICBBU1NFUlQobV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBpZiAobV9zdGFydGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3N0YXJ0
ZWQgPSB0cnVlOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHJvY2Vzc01lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzU29vbigpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cHJv
Y2Vzc01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzU29vbigpOwogfQogCiB2b2lkIE1lc3NhZ2VQb3J0
OjpjbG9zZSgpCkBAIC0yNDEsMTAgKzI0MywxMCBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpjbG9zZSgp
CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQoKQogewotICAgIEFTU0VSVCht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogCiAgICAgY2xvc2UoKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBu
dWxscHRyOworICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwogfQogCiB2
b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKQEAgLTI1Myw3ICsyNTUsOCBAQCB2
b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICAvLyBUaGUgSFRNTDUgc3Bl
YyBzcGVjaWZpZXMgdGhhdCBhbnkgbWVzc2FnZXMgc2VudCB0byBhIGRvY3VtZW50IHRoYXQgaXMg
bm90IGZ1bGx5IGFjdGl2ZSBzaG91bGQgYmUgZHJvcHBlZCwgc28gdGhpcyBiZWhhdmlvciBpcyBP
Sy4KICAgICBBU1NFUlQoc3RhcnRlZCgpKTsKIAotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0IHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1
c3BlbmRlZCgpIHx8ICFpc0VudGFuZ2xlZCgpKQorICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQtPmFjdGl2ZURP
TU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCAhaXNFbnRhbmdsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgYXV0byBtZXNzYWdlc1Rha2VuSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XShWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2Fn
ZXMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uQ2FsbGJhY2spIG11dGFibGUgewpAQCAt
MjY0LDI2ICsyNjcsMjcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAK
ICAgICAgICAgTE9HKE1lc3NhZ2VQb3J0cywgIk1lc3NhZ2VQb3J0ICVzICglcCkgZGlzcGF0Y2hp
bmcgJXp1IG1lc3NhZ2VzIiwgbV9pZGVudGlmaWVyLmxvZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IHRoaXMsIG1lc3NhZ2VzLnNpemUoKSk7CiAKLSAgICAgICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCisgICAgICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CisgICAgICAgIGlmICghY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBpZiAoIW1lc3NhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlZ2lzdGVyTG9jYWxBY3Rp
dml0eSgpOwogCi0gICAgICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29u
dGV4dFRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgp
KTsKIAotICAgICAgICBib29sIGNvbnRleHRJc1dvcmtlciA9IGlzPFdvcmtlckdsb2JhbFNjb3Bl
PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgYm9vbCBjb250ZXh0SXNXb3Jr
ZXIgPSBpczxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpOwogICAgICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtZXNzYWdlcykgewogICAgICAgICAgICAgLy8gY2xvc2UoKSBpbiBXb3JrZXIg
b25tZXNzYWdlIGhhbmRsZXIgc2hvdWxkIHByZXZlbnQgbmV4dCBtZXNzYWdlIGZyb20gZGlzcGF0
Y2hpbmcuCi0gICAgICAgICAgICBpZiAoY29udGV4dElzV29ya2VyICYmIGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS5pc0Nsb3NpbmcoKSkKKyAg
ICAgICAgICAgIGlmIChjb250ZXh0SXNXb3JrZXIgJiYgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KCpjb250ZXh0KS5pc0Nsb3NpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKKyAg
ICAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqY29udGV4
dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKICAgICAgICAgICAgIC8vIFBl
ciBzcGVjaWZpY2F0aW9uLCBlYWNoIE1lc3NhZ2VQb3J0IG9iamVjdCBoYXMgYSB0YXNrIHNvdXJj
ZSBjYWxsZWQgdGhlIHBvcnQgbWVzc2FnZSBxdWV1ZS4KICAgICAgICAgICAgIHF1ZXVlVGFza1Rv
RGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNz
YWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VO
b25OdWxsKCkpKTsKICAgICAgICAgfQogICAgIH07CiAKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6ZnJvbUNvbnRleHQoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGFrZUFsbE1l
c3NhZ2VzRm9yUG9ydChtX2lkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZXNUYWtlbkhhbmRsZXIp
KTsKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQoKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkudGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChtX2lkZW50aWZpZXIsIFdU
Rk1vdmUobWVzc2FnZXNUYWtlbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBNZXNzYWdlUG9ydDo6ZGlz
cGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCkBAIC0yOTEsNyArMjk1LDggQEAgdm9pZCBNZXNzYWdl
UG9ydDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1fY2xvc2VkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KS5pc0Nsb3NpbmcoKSkKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRl
eHQpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkuaXNDbG9zaW5nKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50
KTsKQEAgLTMxNiw3ICszMjEsOCBAQCBib29sIE1lc3NhZ2VQb3J0Ojp2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKICAgICBtX21pZ2h0QmVFbGlnaWJsZUZvckdDID0gdHJ1ZTsKIAog
ICAgIC8vIElmIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGhhcyBiZWVuIHNodXQgZG93biBv
biB0aGlzIG9iamVjdCBjbG9zZSgpJ2VkLCB3ZSBjYW4gR0MuCi0gICAgaWYgKCFtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgfHwgbV9jbG9zZWQpCisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQgfHwgbV9jbG9zZWQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIC8vIElmIHRoaXMgb2JqZWN0IGhhcyBiZWVuIGlkbGUgc2lu
Y2UgdGhlIHJlbW90ZSBwb3J0IGRlY2xhcmVkIGl0c2VsZiBlbGdpYmlsZSBmb3IgR0MsIHdlIGNh
biBHQy4KQEAgLTMzMCw4ICszMzYsOCBAQCBib29sIE1lc3NhZ2VQb3J0Ojp2aXJ0dWFsSGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICAvLyBJZiB3ZSdyZSBub3QgaW4gdGhlIG1pZGRsZSBv
ZiBhc2tpbmcgdGhlIHJlbW90ZSBwb3J0IGFib3V0IGNvbGxlY3RhYmlsaXR5LCBkbyBzbyBub3cu
CiAgICAgaWYgKCFtX2lzQXNraW5nUmVtb3RlQWJvdXRHQykgewogICAgICAgICBSZWZQdHI8V29y
a2VyT3JXb3JrbGV0VGhyZWFkPiB3b3JrZXJPcldvcmtsZXRUaHJlYWQ7Ci0gICAgICAgIGlmIChp
czxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkp
Ci0gICAgICAgICAgICB3b3JrZXJPcldvcmtsZXRUaHJlYWQgPSBkb3duY2FzdDxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkud29ya2VyT3JXb3Jr
bGV0VGhyZWFkKCk7CisgICAgICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4o
KmNvbnRleHQpKQorICAgICAgICAgICAgd29ya2VyT3JXb3JrbGV0VGhyZWFkID0gZG93bmNhc3Q8
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCpjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJl
YWQoKTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZW1vdGVJZGVudGlmaWVyID0gbV9y
ZW1vdGVJZGVudGlmaWVyLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3b3JrZXJPcldv
cmtsZXRUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlck9yV29ya2xldFRocmVhZCldKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkuY2hl
Y2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkocmVtb3RlSWRlbnRpZmllciwgW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIHdvcmtlck9yV29ya2xldFRocmVhZCA9IFdURk1vdmUod29ya2VyT3JX
b3JrbGV0VGhyZWFkKV0oYXV0byBoYXNBY3Rpdml0eSkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKaW5kZXggODNmNWY3OTQ1Mjg2MDJlZWQyMWYwZTU5OTg4
MTA3YWQ0ODVjZDA2MS4uNjM5YmJmMTI4M2E1MjYwNjMyYjYxMjhjMGJjMDFlZDFiMDZjYzE4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMzI4LDcgKzMyOCw3
IEBAIHZvaWQgVlRUUmVnaW9uOjp3aWxsUmVtb3ZlVGV4dFRyYWNrQ3VlQm94KFZUVEN1ZUJveCog
Ym94KQogSFRNTERpdkVsZW1lbnQmIFZUVFJlZ2lvbjo6Z2V0RGlzcGxheVRyZWUoKQogewogICAg
IGlmICghbV9yZWdpb25EaXNwbGF5VHJlZSkgewotICAgICAgICBtX3JlZ2lvbkRpc3BsYXlUcmVl
ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkpOworICAgICAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkpOwogICAgICAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlLT5zZXRQc2V1ZG8oU2hhZG93UHNldWRv
SWRzOjp3ZWJraXRNZWRpYVRleHRUcmFja1JlZ2lvbigpKTsKICAgICAgICAgbV9yZWNhbGN1bGF0
ZVN0eWxlcyA9IHRydWU7CiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgVlRUUmVnaW9u
OjpwcmVwYXJlUmVnaW9uRGlzcGxheVRyZWUoKQogICAgIC8vIFRoZSBjdWUgY29udGFpbmVyIGlz
IHVzZWQgdG8gd3JhcCB0aGUgY3VlcyBhbmQgaXQgaXMgdGhlIG9iamVjdCB3aGljaCBpcwogICAg
IC8vIGdyYWR1YWxseSBzY3JvbGxlZCBvdXQgYXMgbXVsdGlwbGUgY3VlcyBhcmUgYXBwZW5kZWQg
dG8gdGhlIHJlZ2lvbi4KICAgICBpZiAoIW1fY3VlQ29udGFpbmVyKSB7Ci0gICAgICAgIG1fY3Vl
Q29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKm1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOworICAgICAgICBtX2N1ZUNvbnRhaW5lciA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpKTsKICAgICAgICAgbV9jdWVDb250YWluZXItPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9J
ZHM6OndlYmtpdE1lZGlhVGV4dFRyYWNrUmVnaW9uQ29udGFpbmVyKCkpOwogICAgICAgICBtX3Jl
Z2lvbkRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZCgqbV9jdWVDb250YWluZXIpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446908</attachid>
            <date>2021-12-11 15:26:04 -0800</date>
            <delta_ts>2021-12-11 16:30:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234184-20211211152603.patch</filename>
            <type>text/plain</type>
            <size>32658</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJmNzg4ZDVkOTU5ZDFi
YWRhZDQ0YTAxZTkxMDVlMjExOGE1OWUwZi4uOTI1Y2JlMWJjMjBmNWQ4YjM4ODBlYzM0YTAzOGIy
MWUxNjIxZTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTEyLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXI6Om1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCBzaG91bGQgYmUgcHJpdmF0ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTg0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcjo6bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHNob3VsZCBiZSBwcml2YXRl
LiBJdCBpcyBwb29yIGVuY2Fwc3VsYXRpb24KKyAgICAgICAgdG8gaGF2ZSBwcm90ZWN0ZWQgZGF0
YSBtZW1iZXJzLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN5c3RlbVJlcXVlc3Q6OnRvcExldmVsRG9jdW1lbnRP
cmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTeXN0ZW1SZXF1ZXN0Ojpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN5c3RlbVJlcXVlc3Q6OmRlbnkpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTeXN0ZW1SZXF1ZXN0OjpzdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5U3lzdGVtUmVxdWVzdDo6ZG9jdW1lbnQgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0R0bHNUcmFuc3BvcnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZVRy
YW5zcG9ydC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2N0cFRyYW5zcG9y
dC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Ojp1c2VyTWVkaWFEb2N1bWVudE9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Ojp0b3BMZXZl
bERvY3VtZW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVl
c3Q6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93KToK
KyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRlbnkpOgorICAgICAgICAoV2Vi
Q29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0Ojpkb2N1bWVudCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjptZWRpYVNl
c3Npb25Hcm91cElkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QmFzZUF1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0
Ojpkb2N1bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0Ojpv
cmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6YWxsb3dEYXRhYmFz
ZUFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OmRhdGFi
YXNlRXhjZWVkZWRRdW90YSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OnNl
Y3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6
aXNDb250ZXh0VGhyZWFkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU3lz
dGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmlj
ZTo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6fkFjdGl2ZURPTU9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6OnN1c3BlbmRJZk5lZWRlZCk6CisgICAgICAg
ICogZG9tL0NvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmg6CisgICAgICAgICogZG9tL01lc3Nh
Z2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6fk1lc3NhZ2VQb3J0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRp
c2VudGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjptZXNzYWdlQXZhaWxh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpzdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6
dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICogaHRtbC90cmFjay9W
VFRSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjpnZXREaXNwbGF5VHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb246OnByZXBhcmVSZWdpb25EaXNwbGF5VHJl
ZSk6CisKIDIwMjEtMTItMTAgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgog
CiAgICAgICAgIEpTRXJyb3JIYW5kbGVyIHNob3VsZCBub3Qgc2V0IHdpbmRvdy5ldmVudCBpZiBp
bnZvY2F0aW9uIHRhcmdldCBpcyBpbiBzaGFkb3cgdHJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDI4NTBkYmExZTNiZmExMWY0ODliNDQ0
MDM1MTNkNTFhZTFiZWFkM2EuLjM0OWE1OWRlYzJkYWNhMzhjOGEzMjUxYjE5YmZkYWEyZjU1Zjdi
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAK
QEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmkKICAgICAvLyBXM0MgRWRp
dG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgogICAgIC8vIEltcGxlbWVudGVkIGluIENETVBy
aXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oKQogCi0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhbV9wcml2YXRlKSB7CiAgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1SZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1S
ZXF1ZXN0LmNwcAppbmRleCAyYTJmZWMzMjRiMGQxMjQ1MDcwYTBjNzQwMzM1YTg0ODIyMDIwZDFm
Li5kMTk4YWNhOGQ3N2MxYjE0ZmZiMDYwNjFiMjI3OWNhYTFhYTQ3YmU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN5c3RlbVJlcXVlc3QuY3BwCkBAIC02MiwyMCArNjIsMjAgQEAgTWVkaWFLZXlTeXN0ZW1SZXF1
ZXN0Ojp+TWVkaWFLZXlTeXN0ZW1SZXF1ZXN0KCkKIAogU2VjdXJpdHlPcmlnaW4qIE1lZGlhS2V5
U3lzdGVtUmVxdWVzdDo6dG9wTGV2ZWxEb2N1bWVudE9yaWdpbigpIGNvbnN0CiB7Ci0gICAgaWYg
KCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiAmbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT50b3BPcmlnaW4oKTsKKyAgICBhdXRv
KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJldHVybiBjb250ZXh0
ID8gJmNvbnRleHQtPnRvcE9yaWdpbigpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBNZWRpYUtleVN5
c3RlbVJlcXVlc3Q6OnN0YXJ0KCkKIHsKLSAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KTsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeworICAgIGF1dG8qIGNv
bnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgQVNTRVJUKGNvbnRleHQpOwor
ICAgIGlmICghY29udGV4dCkgewogICAgICAgICBkZW55KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50
PigqY29udGV4dCk7CiAgICAgYXV0byogY29udHJvbGxlciA9IE1lZGlhS2V5U3lzdGVtQ29udHJv
bGxlcjo6ZnJvbShkb2N1bWVudC5wYWdlKCkpOwogICAgIGlmICghY29udHJvbGxlcikgewogICAg
ICAgICBkZW55KCk7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgTWVkaWFLZXlTeXN0ZW1SZXF1ZXN0
OjphbGxvdyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAK
IHZvaWQgTWVkaWFLZXlTeXN0ZW1SZXF1ZXN0OjpkZW55KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBpZiAoIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBj
b2RlID0gTm90U3VwcG9ydGVkRXJyb3I7CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBNZWRpYUtl
eVN5c3RlbVJlcXVlc3Q6OmRlbnkoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIE1lZGlh
S2V5U3lzdGVtUmVxdWVzdDo6c3RvcCgpCiB7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
aWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBNZWRpYUtleVN5c3RlbUNvbnRyb2xsZXI6OmZyb20oZG9j
dW1lbnQucGFnZSgpKSkKICAgICAgICAgY29udHJvbGxlci0+Y2FuY2VsTWVkaWFLZXlTeXN0ZW1S
ZXF1ZXN0KCp0aGlzKTsKIH0KQEAgLTEyMCw3ICsxMjAsNyBAQCBjb25zdCBjaGFyKiBNZWRpYUtl
eVN5c3RlbVJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogCiBEb2N1bWVudCog
TWVkaWFLZXlTeXN0ZW1SZXF1ZXN0Ojpkb2N1bWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRv
d25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIHJldHVybiBk
b3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBlMjcyZWNkZWYyYTdkMDY2YTEyMWVjMzY2YTk5MDZk
NGI4ZGIxNGM3Li5kYTMyMWU0MWY0NDFmM2E0MTc2NWE0NzkxNTlmNGRjNzE0NTkyYWVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNw
cApAQCAtMzMyLDcgKzMzMiw3IEBAIGludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihSZWY8
UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxQCiAgICAgaW50IHdh
dGNoSUQ7CiAgICAgLy8gS2VlcCBhc2tpbmcgZm9yIHRoZSBuZXh0IGlkIHVudGlsIHdlJ3JlIGdp
dmVuIG9uZSB0aGF0IHdlIGRvbid0IGFscmVhZHkgaGF2ZS4KICAgICBkbyB7Ci0gICAgICAgIHdh
dGNoSUQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNpcmN1bGFyU2VxdWVudGlhbElEKCk7
CisgICAgICAgIHdhdGNoSUQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNpcmN1bGFyU2Vx
dWVudGlhbElEKCk7CiAgICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdhdGNoSUQsIG5vdGlm
aWVyLmNvcHlSZWYoKSkpOwogICAgIHJldHVybiB3YXRjaElEOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCmluZGV4IGNhMGM1
NTZiODkwZjUyYzk4OGVkYWFkZjdiMmY5OTYxYmZiMmU5Y2EuLjY5NGZhZjQwOGU2ZjUyYzRiNDQ4
NDNjZDRhZGFkNzRmZmQ1NWY4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlbW92ZUZyb21EYXRhQ2hhbm5lbExvY2FsTWFwSWZOZWVkZWQoKTsKIAogICAg
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gUlRDRGF0YUNoYW5uZWxFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEdGxzVHJhbnNwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0R0bHNUcmFuc3BvcnQuaAppbmRleCBlODcwN2YwYmU5YmZkNmUx
Y2I4YmQ1MmVhZjNiNTlhMzg4M2NlMTBlLi4yZDQyN2QwM2Q5NzY0YzAzZGE4YTBkMjdlMzcxZDFj
YzE0MmU0MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0R0bHNUcmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0R0bHNUcmFuc3BvcnQuaApAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YQogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUlRDRHRsc1RyYW5zcG9y
dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZVRyYW5zcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VU
cmFuc3BvcnQuaAppbmRleCAyYzEzYmJmZDMwNWEyMTc4ZjMyYWIwOTFkNDUyYTA0ZDgyNTlkYWMz
Li4yODI2ZDMzYmU1YjgyZGI1NDEwZTE3ZWUwZjIzYTUzZThmOGU5ZWY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZVRyYW5zcG9ydC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlVHJhbnNwb3J0LmgKQEAg
LTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIFJUQ0ljZVRyYW5zcG9ydEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsg
fQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAg
ICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1NjdHBUcmFuc3BvcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2N0cFRyYW5zcG9ydC5oCmluZGV4IGUwN2E1ZmFj
ZDYyYjY2YWI2OTc2OGYzZTkxYjQ1MTY0ZjUyOTY0ZDkuLjdiMDA0ZjVmMDNjMzdmZjJjNjRmNGRj
NGYyNTVhNTJhN2FkNzgxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDU2N0cFRyYW5zcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDU2N0cFRyYW5zcG9ydC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6
CiAKICAgICAvLyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSVENTY3Rw
VHJhbnNwb3J0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBk
ZXJlZigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDg1MjVlN2Q4OGM3Y2U1NWNjOTAxMTcwZjFk
ODRiYzIwNmNiNDFkMjIuLmUwNmNkZTA4OWJhZTM3MjcwZWIyYmQxMjVmYzA2ODFkNWJjNjdkZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcApAQCAtNzUsMTYgKzc1LDE0IEBAIFVzZXJNZWRpYVJlcXVlc3Q6On5V
c2VyTWVkaWFSZXF1ZXN0KCkKIAogU2VjdXJpdHlPcmlnaW4qIFVzZXJNZWRpYVJlcXVlc3Q6OnVz
ZXJNZWRpYURvY3VtZW50T3JpZ2luKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvKiBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJldHVybiBjb250ZXh0ID8gY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7CiB9CiAKIFNlY3VyaXR5T3JpZ2luKiBVc2VyTWVk
aWFSZXF1ZXN0Ojp0b3BMZXZlbERvY3VtZW50T3JpZ2luKCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdpbigpOworICAgIGF1dG8qIGNv
bnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgcmV0dXJuIGNvbnRleHQgPyAm
Y29udGV4dC0+dG9wT3JpZ2luKCkgOiBudWxscHRyOwogfQogCiBzdGF0aWMgYm9vbCBoYXNJbnZh
bGlkR2V0RGlzcGxheU1lZGlhQ29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25z
dHJhaW50cykKQEAgLTE1Nyw4ICsxNTUsOSBAQCBzdGF0aWMgYm9vbCBoYXNJbnZhbGlkR2V0RGlz
cGxheU1lZGlhQ29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaQogCiB2
b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KCkKIHsKLSAgICBBU1NFUlQobV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KTsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeworICAg
IGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgQVNTRVJUKGNv
bnRleHQpOworICAgIGlmICghY29udGV4dCkgewogICAgICAgICBkZW55KE1lZGlhQWNjZXNzRGVu
aWFsUmVhc29uOjpVc2VyTWVkaWFEaXNhYmxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0xODUsNyArMTg0LDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCgpCiAgICAgLy8g
NC4gSWYgdGhlIGN1cnJlbnQgc2V0dGluZ3Mgb2JqZWN0J3MgcmVzcG9uc2libGUgZG9jdW1lbnQg
aXMgTk9UIGFsbG93ZWQgdG8gdXNlIHRoZSBmZWF0dXJlIGluZGljYXRlZCBieQogICAgIC8vICAg
IGF0dHJpYnV0ZSBuYW1lIGFsbG93dXNlcm1lZGlhLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVk
IHdpdGggYSBET01FeGNlcHRpb24gb2JqZWN0IHdob3NlIG5hbWUKICAgICAvLyAgICBhdHRyaWJ1
dGUgaGFzIHRoZSB2YWx1ZSBTZWN1cml0eUVycm9yLgotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGF1dG8mIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKICAgICBhdXRvKiBjb250cm9s
bGVyID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC5wYWdlKCkpOwogICAgIGlm
ICghY29udHJvbGxlcikgewogICAgICAgICBkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpV
c2VyTWVkaWFEaXNhYmxlZCk7CkBAIC0yNTQsNyArMjUzLDcgQEAgdm9pZCBVc2VyTWVkaWFSZXF1
ZXN0OjphbGxvdyhDYXB0dXJlRGV2aWNlJiYgYXVkaW9EZXZpY2UsIENhcHR1cmVEZXZpY2UmJiB2
aWRlb0QKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gcHJpdmF0ZVN0cmVhbSA9IFdU
Rk1vdmUocHJpdmF0ZVN0cmVhbU9yRXJyb3IpLnZhbHVlKCk7CiAKLSAgICAgICAgICAgIGF1dG8m
IGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OworICAgICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgICAgICBwcml2YXRlU3RyZWFtLT5tb25pdG9y
T3JpZW50YXRpb24oZG9jdW1lbnQub3JpZW50YXRpb25Ob3RpZmllcigpKTsKIAogICAgICAgICAg
ICAgYXV0byBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3ZlKHBy
aXZhdGVTdHJlYW0pKTsKQEAgLTI3Myw3ICsyNzIsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6
OmFsbG93KENhcHR1cmVEZXZpY2UmJiBhdWRpb0RldmljZSwgQ2FwdHVyZURldmljZSYmIHZpZGVv
RAogICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2lu
Z2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0oZG9jdW1lbnQubG9nZ2VyKCksIFdURk1vdmUoY2Fs
bGJhY2spLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIFdURk1vdmUoYXVkaW9E
ZXZpY2UpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgbV9yZXF1ZXN0KTsKIAotICAgICAgICBpZiAo
IW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoV0VCX1JUQykKQEAg
LTI4NSw3ICsyODQsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93KENhcHR1cmVEZXZp
Y2UmJiBhdWRpb0RldmljZSwgQ2FwdHVyZURldmljZSYmIHZpZGVvRAogCiB2b2lkIFVzZXJNZWRp
YVJlcXVlc3Q6OmRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24gcmVhc29uLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAg
aWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4
Y2VwdGlvbkNvZGUgY29kZTsKQEAgLTMzNiw3ICszMzUsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVl
c3Q6OmRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24gcmVhc29uLCBjb25zdCBTdHJpbmcmIG1l
c3NhZwogCiB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0b3AoKQogewotICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAg
IGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIGlmIChhdXRvKiBjb250cm9sbGVyID0gVXNlck1lZGlhQ29udHJvbGxlcjo6
ZnJvbShkb2N1bWVudC5wYWdlKCkpKQogICAgICAgICBjb250cm9sbGVyLT5jYW5jZWxVc2VyTWVk
aWFBY2Nlc3NSZXF1ZXN0KCp0aGlzKTsKIH0KQEAgLTM0OCw3ICszNDcsNyBAQCBjb25zdCBjaGFy
KiBVc2VyTWVkaWFSZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKIAogRG9jdW1l
bnQqIFVzZXJNZWRpYVJlcXVlc3Q6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG93
bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIGRv
d25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogfQogCiB2b2lkIFVz
ZXJNZWRpYVJlcXVlc3Q6Om1lZGlhU3RyZWFtRGlkRmFpbChSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKaW5kZXggYWQ3MjhjMzY5NTJiMzBkMDU3NGU3MThmODlkMzRjZGE4NjMyZGYxMy4u
YTM3MzQ4NThlOWNmM2VmNDgzYzIwNjE4NmE1NGQzMzY5MTZmNGM2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNDc2LDcgKzQ3
Niw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kUGxheWJhY2soKQogCiBNZWRpYVNlc3Np
b25Hcm91cElkZW50aWZpZXIgQXVkaW9Db250ZXh0OjptZWRpYVNlc3Npb25Hcm91cElkZW50aWZp
ZXIoKSBjb25zdAogewotICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gZG9jdW1lbnQg
JiYgZG9jdW1lbnQtPnBhZ2UoKSA/IGRvY3VtZW50LT5wYWdlKCktPm1lZGlhU2Vzc2lvbkdyb3Vw
SWRlbnRpZmllcigpIDogTWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyIHsgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5j
cHAKaW5kZXggNjRlM2QxNjY4MGEzZTEyOGQwZmIxMzM0MWMwYWUyZTU1N2RiYmFiNC4uNDlhODRh
MmZjYjM1Nzc0OTViZjczZDE3ZTc0ZmZhYjJlY2EyMTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwCkBAIC0yNjIsNyAr
MjYyLDcgQEAgdm9pZCBCYXNlQXVkaW9Db250ZXh0OjpzdG9wKCkKIAogRG9jdW1lbnQqIEJhc2VB
dWRpb0NvbnRleHQ6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8RG9j
dW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIGRvd25jYXN0PERv
Y3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogfQogCiBib29sIEJhc2VBdWRpb0Nv
bnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJiB1cmwpIGNvbnN0CkBAIC04NjgsMTMg
Kzg2OCwxNCBAQCB2b2lkIEJhc2VBdWRpb0NvbnRleHQ6OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQo
KT4mJiB0YXNrKQogCiBjb25zdCBTZWN1cml0eU9yaWdpbiogQmFzZUF1ZGlvQ29udGV4dDo6b3Jp
Z2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID8gbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKKyAgICBh
dXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJldHVybiBjb250
ZXh0ID8gY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgQmFz
ZUF1ZGlvQ29udGV4dDo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSk7CisgICAgaWYgKGF1dG8q
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGNvbnRleHQtPmFk
ZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOwogfQogCiBQZXJpb2RpY1dh
dmUmIEJhc2VBdWRpb0NvbnRleHQ6OnBlcmlvZGljV2F2ZShPc2NpbGxhdG9yVHlwZSB0eXBlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNv
bnRleHQuY3BwCmluZGV4IGEzY2U3MGM4OGQ0OTgwMjE3ODI2Njk4Njk1YzdiNDQ1MDU4M2VkOTYu
LjE3MDg0NDE2ODQzNGM0YTczMjRkN2M4MjcxZTdiZDI0ZGZmNTIxM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAK
QEAgLTE3OSwzNiArMTc5LDM4IEBAIGJvb2wgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2Vz
KERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyKQogCiBib29sIERhdGFiYXNl
Q29udGV4dDo6YWxsb3dEYXRhYmFzZUFjY2VzcygpIGNvbnN0CiB7Ci0gICAgaWYgKGlzPERvY3Vt
ZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSkgewotICAgICAgICBEb2N1bWVudCYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoaXM8
RG9jdW1lbnQ+KCpjb250ZXh0KSkgeworICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0
PERvY3VtZW50PigqY29udGV4dCk7CiAgICAgICAgIGlmICghZG9jdW1lbnQucGFnZSgpIHx8IChk
b2N1bWVudC5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgJiYgIUxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjphbGxvd3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCkucHJvdG9jb2woKSkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAvLyBhbGxvd0RhdGFiYXNlQWNjZXNzIGlzIG5vdCB5
ZXQgaW1wbGVtZW50ZWQgZm9yIHdvcmtlcnMuCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQg
RGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1l
LCBEYXRhYmFzZURldGFpbHMgZGV0YWlscykKIHsKLSAgICBpZiAoaXM8RG9jdW1lbnQ+KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpKSB7Ci0gICAgICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBhdXRvKiBj
b250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChpczxEb2N1bWVudD4o
KmNvbnRleHQpKSB7CisgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KCpjb250ZXh0KTsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCiAg
ICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5leGNlZWRlZERhdGFiYXNlUXVvdGEo
KmRvY3VtZW50LmZyYW1lKCksIG5hbWUsIGRldGFpbHMpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2Nv
cGUoKSk7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiB9CiAK
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgRGF0YWJhc2VDb250ZXh0OjpzZWN1cml0eU9yaWdp
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKS0+ZGF0YSgpOworICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKTsKIH0KIAogYm9vbCBEYXRhYmFzZUNvbnRleHQ6Omlz
Q29udGV4dFRocmVhZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNDb250ZXh0VGhyZWFkKCk7CisgICAgcmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNDb250ZXh0VGhyZWFkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKaW5kZXggYzY0NjFk
YTMzMzBmMGFiNTExZDI0OTRlMzliMDJlZDk4MzhhMTBlZC4uOTc3MWI5ODQ1YzY0NjQ3ODJlZThk
NWI0YWEwZWU5MDI5Y2Q5ZDE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5jcHAKQEAgLTU2NCw3ICs1NjQsNyBAQCB2b2lkIFdlYlhSU3lzdGVtOjpEdW1t
eUlubGluZURldmljZTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZy
YQogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmFmID0g
SW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s6OmNyZWF0ZSgqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICBhdXRvIHJhZiA9IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOjpjcmVh
dGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKCkgbXV0YWJsZSB7CiAgICAgICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIGRh
dGE7CiAgICAgICAgIGRhdGEuaXNUcmFja2luZ1ZhbGlkID0gdHJ1ZTsKICAgICAgICAgZGF0YS5p
c1Bvc2l0aW9uVmFsaWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Fj
dGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNw
cAppbmRleCA0NGQyZTQ0MDZmZGFiZmJjYjY5NTkzZGUyMTEzNjE0NjZiODM0MTAyLi4wMWZiYjFh
MjkyMTEyNjQ3YWUwYWI1MGY0NzRhMjZkMzJmNzk5ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0
aXZlRE9NT2JqZWN0LmNwcApAQCAtNzYsMTIgKzc2LDEzIEBAIEFjdGl2ZURPTU9iamVjdDo6fkFj
dGl2ZURPTU9iamVjdCgpCiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRl
eHREZXN0cm95ZWQoKSAod2hpY2ggd2UgaW1wbGVtZW50IC8KICAgICAvLyBpbmhlcml0KS4gSGVu
Y2UsIHdlIHNob3VsZCBlbnN1cmUgdGhhdCB0aGlzIGlzIG5vdCAwIGJlZm9yZSB1c2UgaXQKICAg
ICAvLyBoZXJlLgotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIGF1dG8q
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQog
ICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9zdXNwZW5kSWZOZWVkZWRXYXNDYWxsZWQp
OwotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgp
KTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPndpbGxEZXN0cm95QWN0aXZlRE9NT2Jq
ZWN0KCp0aGlzKTsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOworICAg
IGNvbnRleHQtPndpbGxEZXN0cm95QWN0aXZlRE9NT2JqZWN0KCp0aGlzKTsKIH0KIAogdm9pZCBB
Y3RpdmVET01PYmplY3Q6OnN1c3BlbmRJZk5lZWRlZCgpCkBAIC05MCwxMCArOTEsOCBAQCB2b2lk
IEFjdGl2ZURPTU9iamVjdDo6c3VzcGVuZElmTmVlZGVkKCkKICAgICBBU1NFUlQoIW1fc3VzcGVu
ZElmTmVlZGVkV2FzQ2FsbGVkKTsKICAgICBtX3N1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCA9IHRy
dWU7CiAjZW5kaWYKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zdXNwZW5kQWN0aXZlRE9N
T2JqZWN0SWZOZWVkZWQoKnRoaXMpOworICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICBjb250ZXh0LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0
SWZOZWVkZWQoKnRoaXMpOwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgKaW5kZXggMzU2YWFkMGIzNGVi
ZGFhNmQzOWQxYjJlNWFjZDg2N2M5ZTc3Y2EzZi4uMjA4OWE0ZjA4OWMzYTE4NjQwYjBiZWFkZmYw
Y2ZlN2JiODU2MjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLmgKQEAgLTMyLDE1ICszMiwxNiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogCiBjbGFzcyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBj
b250ZXh0RGVzdHJveWVkKCk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OyB9CiAKIHByb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB+Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoKTsKICAgICB2b2lkIG9i
c2VydmVDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAorcHJpdmF0ZToKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA4ZGEyMDc2MTgzMWY3MjIzYzhiMzRiNzFi
ZGFmNjUzNjIxNmFlMTNkLi5mNDNjMDAwOGZkMjhhOWU5MWYxNzA1MWNkYzZmNmZhNWE4NmZmMjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBNZXNz
YWdlUG9ydDo6TWVzc2FnZVBvcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgY29uc3QgTQogICAgIC8vIE1ha2Ugc3VyZSB0aGUgV2Vha1B0ckZhY3Rvcnkg
Z2V0cyBpbml0aWFsaXplZCBlYWdlcmx5IG9uIHRoZSB0aHJlYWQgdGhlIE1lc3NhZ2VQb3J0IGdl
dHMgY29uc3RydWN0ZWQgb24gZm9yIHRocmVhZC1zYWZldHkgcmVhc29ucy4KICAgICBpbml0aWFs
aXplV2Vha1B0ckZhY3RvcnkoKTsKIAotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+Y3Jl
YXRlZE1lc3NhZ2VQb3J0KCp0aGlzKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmNyZWF0
ZWRNZXNzYWdlUG9ydCgqdGhpcyk7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiAKICAgICAvLyBE
b24ndCBuZWVkIHRvIGNhbGwgcHJvY2Vzc01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzU29vbigpIGhl
cmUsIGJlY2F1c2UgdGhlIHBvcnQgd2lsbCBub3QgYmUgb3BlbmVkIHVudGlsIHN0YXJ0KCkgaXMg
aW52b2tlZC4KQEAgLTEyNCwxMyArMTI0LDEzIEBAIE1lc3NhZ2VQb3J0Ojp+TWVzc2FnZVBvcnQo
KQogICAgIGlmIChtX2VudGFuZ2xlZCkKICAgICAgICAgY2xvc2UoKTsKIAotICAgIGlmIChtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
ZGVzdHJveWVkTWVzc2FnZVBvcnQoKnRoaXMpOworICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBjb250ZXh0LT5kZXN0cm95ZWRNZXNzYWdl
UG9ydCgqdGhpcyk7CiB9CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlKCkKIHsKLSAgICBN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQoKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkuZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUobV9pZGVudGlm
aWVyLCBtX3JlbW90ZUlkZW50aWZpZXIpOworICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
Ojpmcm9tQ29udGV4dCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5lbnRhbmdsZUxvY2FsUG9y
dEluVGhpc1Byb2Nlc3NUb1JlbW90ZShtX2lkZW50aWZpZXIsIG1fcmVtb3RlSWRlbnRpZmllcik7
CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgU3RydWN0dXJl
ZFNlcmlhbGl6ZU9wdGlvbnMmJiBvcHRpb25zKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBz
dGF0ZSwgSlNDOjpKU1ZhCiAKICAgICBpZiAoIWlzRW50YW5nbGVkKCkpCiAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
QXJyYXkgdHJhbnNmZXJyZWRQb3J0czsKICAgICAvLyBNYWtlIHN1cmUgd2UgYXJlbid0IGNvbm5l
Y3RlZCB0byBhbnkgb2YgdGhlIHBhc3NlZC1pbiBwb3J0cy4KQEAgLTE2Niw3ICsxNjYsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9i
amVjdCYgc3RhdGUsIEpTQzo6SlNWYQogCiAgICAgTE9HKE1lc3NhZ2VQb3J0cywgIkFjdHVhbGx5
IHBvc3RpbmcgbWVzc2FnZSB0byBwb3J0ICVzICh0byBiZSByZWNlaXZlZCBieSBwb3J0ICVzKSIs
IG1faWRlbnRpZmllci5sb2dTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3JlbW90ZUlkZW50aWZp
ZXIubG9nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6ZnJvbUNvbnRleHQoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdE1lc3Nh
Z2VUb1JlbW90ZShXVEZNb3ZlKG1lc3NhZ2UpLCBtX3JlbW90ZUlkZW50aWZpZXIpOworICAgIE1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKS5wb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2FnZSksIG1fcmVtb3RlSWRl
bnRpZmllcik7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMTc3LDE0ICsxNzcsMTUgQEAgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUoKQogCiAgICAgcmVn
aXN0ZXJMb2NhbEFjdGl2aXR5KCk7CiAKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
ZnJvbUNvbnRleHQoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkubWVzc2FnZVBvcnREaXNlbnRh
bmdsZWQobV9pZGVudGlmaWVyKTsKKyAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQo
Y29udGV4dCkubWVzc2FnZVBvcnREaXNlbnRhbmdsZWQobV9pZGVudGlmaWVyKTsKIAogICAgIC8v
IFdlIGNhbid0IHJlY2VpdmUgYW55IG1lc3NhZ2VzIG9yIGdlbmVyYXRlIGFueSBldmVudHMgYWZ0
ZXIgdGhpcywgc28gcmVtb3ZlIG91cnNlbHZlcyBmcm9tIHRoZSBsaXN0IG9mIGFjdGl2ZSBwb3J0
cy4KLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRlc3Ryb3llZE1lc3NhZ2VQb3J0KCp0
aGlzKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPndpbGxEZXN0cm95QWN0aXZlRE9N
T2JqZWN0KCp0aGlzKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPndpbGxEZXN0cm95
RGVzdHJ1Y3Rpb25PYnNlcnZlcigqdGhpcyk7CisgICAgY29udGV4dC5kZXN0cm95ZWRNZXNzYWdl
UG9ydCgqdGhpcyk7CisgICAgY29udGV4dC53aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdCgqdGhp
cyk7CisgICAgY29udGV4dC53aWxsRGVzdHJveURlc3RydWN0aW9uT2JzZXJ2ZXIoKnRoaXMpOwog
Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbnVsbHB0cjsKKyAgICBvYnNlcnZlQ29u
dGV4dChudWxscHRyKTsKIAogICAgIHJldHVybiB7IGlkZW50aWZpZXIoKSwgcmVtb3RlSWRlbnRp
ZmllcigpIH07CiB9CkBAIC0yMDIsMTAgKzIwMywxMSBAQCB2b2lkIE1lc3NhZ2VQb3J0OjptZXNz
YWdlQXZhaWxhYmxlKCkKIHsKICAgICAvLyBUaGlzIE1lc3NhZ2VQb3J0IG9iamVjdCBtaWdodCBi
ZSBkaXNlbnRhbmdsZWQgYmVjYXVzZSB0aGUgcG9ydCBpcyBiZWluZyB0cmFuc2ZlcnJlZCwKICAg
ICAvLyBpbiB3aGljaCBjYXNlIHdlJ2xsIG5vdGlmeSBpdCB0aGF0IG1lc3NhZ2VzIGFyZSBhdmFp
bGFibGUgb25jZSBhIG5ldyBlbmQgcG9pbnQgaXMgY3JlYXRlZC4KLSAgICBpZiAoIW1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCB8fCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFjdGl2ZURPTU9i
amVjdHNBcmVTdXNwZW5kZWQoKSkKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOworICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0LT5hY3RpdmVET01PYmplY3Rz
QXJlU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cHJvY2Vzc01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzU29vbigpOworICAgIGNvbnRl
eHQtPnByb2Nlc3NNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0c1Nvb24oKTsKIH0KIAogdm9pZCBNZXNz
YWdlUG9ydDo6c3RhcnQoKQpAQCAtMjE2LDEyICsyMTgsMTIgQEAgdm9pZCBNZXNzYWdlUG9ydDo6
c3RhcnQoKQogCiAgICAgcmVnaXN0ZXJMb2NhbEFjdGl2aXR5KCk7CiAKLSAgICBBU1NFUlQobV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBpZiAobV9zdGFydGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3N0YXJ0
ZWQgPSB0cnVlOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHJvY2Vzc01lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzU29vbigpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cHJv
Y2Vzc01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzU29vbigpOwogfQogCiB2b2lkIE1lc3NhZ2VQb3J0
OjpjbG9zZSgpCkBAIC0yNDEsMTAgKzI0MywxMCBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpjbG9zZSgp
CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQoKQogewotICAgIEFTU0VSVCht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogCiAgICAgY2xvc2UoKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBu
dWxscHRyOworICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwogfQogCiB2
b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKQEAgLTI1Myw3ICsyNTUsOCBAQCB2
b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICAvLyBUaGUgSFRNTDUgc3Bl
YyBzcGVjaWZpZXMgdGhhdCBhbnkgbWVzc2FnZXMgc2VudCB0byBhIGRvY3VtZW50IHRoYXQgaXMg
bm90IGZ1bGx5IGFjdGl2ZSBzaG91bGQgYmUgZHJvcHBlZCwgc28gdGhpcyBiZWhhdmlvciBpcyBP
Sy4KICAgICBBU1NFUlQoc3RhcnRlZCgpKTsKIAotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0IHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1
c3BlbmRlZCgpIHx8ICFpc0VudGFuZ2xlZCgpKQorICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQtPmFjdGl2ZURP
TU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCAhaXNFbnRhbmdsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgYXV0byBtZXNzYWdlc1Rha2VuSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XShWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2Fn
ZXMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uQ2FsbGJhY2spIG11dGFibGUgewpAQCAt
MjY0LDI2ICsyNjcsMjcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAK
ICAgICAgICAgTE9HKE1lc3NhZ2VQb3J0cywgIk1lc3NhZ2VQb3J0ICVzICglcCkgZGlzcGF0Y2hp
bmcgJXp1IG1lc3NhZ2VzIiwgbV9pZGVudGlmaWVyLmxvZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IHRoaXMsIG1lc3NhZ2VzLnNpemUoKSk7CiAKLSAgICAgICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCisgICAgICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CisgICAgICAgIGlmICghY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBpZiAoIW1lc3NhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlZ2lzdGVyTG9jYWxBY3Rp
dml0eSgpOwogCi0gICAgICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29u
dGV4dFRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgp
KTsKIAotICAgICAgICBib29sIGNvbnRleHRJc1dvcmtlciA9IGlzPFdvcmtlckdsb2JhbFNjb3Bl
PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgYm9vbCBjb250ZXh0SXNXb3Jr
ZXIgPSBpczxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpOwogICAgICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtZXNzYWdlcykgewogICAgICAgICAgICAgLy8gY2xvc2UoKSBpbiBXb3JrZXIg
b25tZXNzYWdlIGhhbmRsZXIgc2hvdWxkIHByZXZlbnQgbmV4dCBtZXNzYWdlIGZyb20gZGlzcGF0
Y2hpbmcuCi0gICAgICAgICAgICBpZiAoY29udGV4dElzV29ya2VyICYmIGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS5pc0Nsb3NpbmcoKSkKKyAg
ICAgICAgICAgIGlmIChjb250ZXh0SXNXb3JrZXIgJiYgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KCpjb250ZXh0KS5pc0Nsb3NpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKKyAg
ICAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqY29udGV4
dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKICAgICAgICAgICAgIC8vIFBl
ciBzcGVjaWZpY2F0aW9uLCBlYWNoIE1lc3NhZ2VQb3J0IG9iamVjdCBoYXMgYSB0YXNrIHNvdXJj
ZSBjYWxsZWQgdGhlIHBvcnQgbWVzc2FnZSBxdWV1ZS4KICAgICAgICAgICAgIHF1ZXVlVGFza1Rv
RGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNz
YWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VO
b25OdWxsKCkpKTsKICAgICAgICAgfQogICAgIH07CiAKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6ZnJvbUNvbnRleHQoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGFrZUFsbE1l
c3NhZ2VzRm9yUG9ydChtX2lkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZXNUYWtlbkhhbmRsZXIp
KTsKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQoKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkudGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChtX2lkZW50aWZpZXIsIFdU
Rk1vdmUobWVzc2FnZXNUYWtlbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBNZXNzYWdlUG9ydDo6ZGlz
cGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCkBAIC0yOTEsNyArMjk1LDggQEAgdm9pZCBNZXNzYWdl
UG9ydDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1fY2xvc2VkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KS5pc0Nsb3NpbmcoKSkKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRl
eHQpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkuaXNDbG9zaW5nKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50
KTsKQEAgLTMxNiw3ICszMjEsOCBAQCBib29sIE1lc3NhZ2VQb3J0Ojp2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKICAgICBtX21pZ2h0QmVFbGlnaWJsZUZvckdDID0gdHJ1ZTsKIAog
ICAgIC8vIElmIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGhhcyBiZWVuIHNodXQgZG93biBv
biB0aGlzIG9iamVjdCBjbG9zZSgpJ2VkLCB3ZSBjYW4gR0MuCi0gICAgaWYgKCFtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgfHwgbV9jbG9zZWQpCisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQgfHwgbV9jbG9zZWQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIC8vIElmIHRoaXMgb2JqZWN0IGhhcyBiZWVuIGlkbGUgc2lu
Y2UgdGhlIHJlbW90ZSBwb3J0IGRlY2xhcmVkIGl0c2VsZiBlbGdpYmlsZSBmb3IgR0MsIHdlIGNh
biBHQy4KQEAgLTMzMCw4ICszMzYsOCBAQCBib29sIE1lc3NhZ2VQb3J0Ojp2aXJ0dWFsSGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICAvLyBJZiB3ZSdyZSBub3QgaW4gdGhlIG1pZGRsZSBv
ZiBhc2tpbmcgdGhlIHJlbW90ZSBwb3J0IGFib3V0IGNvbGxlY3RhYmlsaXR5LCBkbyBzbyBub3cu
CiAgICAgaWYgKCFtX2lzQXNraW5nUmVtb3RlQWJvdXRHQykgewogICAgICAgICBSZWZQdHI8V29y
a2VyT3JXb3JrbGV0VGhyZWFkPiB3b3JrZXJPcldvcmtsZXRUaHJlYWQ7Ci0gICAgICAgIGlmIChp
czxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkp
Ci0gICAgICAgICAgICB3b3JrZXJPcldvcmtsZXRUaHJlYWQgPSBkb3duY2FzdDxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkud29ya2VyT3JXb3Jr
bGV0VGhyZWFkKCk7CisgICAgICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4o
KmNvbnRleHQpKQorICAgICAgICAgICAgd29ya2VyT3JXb3JrbGV0VGhyZWFkID0gZG93bmNhc3Q8
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCpjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJl
YWQoKTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZW1vdGVJZGVudGlmaWVyID0gbV9y
ZW1vdGVJZGVudGlmaWVyLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3b3JrZXJPcldv
cmtsZXRUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlck9yV29ya2xldFRocmVhZCldKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkuY2hl
Y2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkocmVtb3RlSWRlbnRpZmllciwgW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIHdvcmtlck9yV29ya2xldFRocmVhZCA9IFdURk1vdmUod29ya2VyT3JX
b3JrbGV0VGhyZWFkKV0oYXV0byBoYXNBY3Rpdml0eSkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKaW5kZXggODNmNWY3OTQ1Mjg2MDJlZWQyMWYwZTU5OTg4
MTA3YWQ0ODVjZDA2MS4uNjM5YmJmMTI4M2E1MjYwNjMyYjYxMjhjMGJjMDFlZDFiMDZjYzE4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMzI4LDcgKzMyOCw3
IEBAIHZvaWQgVlRUUmVnaW9uOjp3aWxsUmVtb3ZlVGV4dFRyYWNrQ3VlQm94KFZUVEN1ZUJveCog
Ym94KQogSFRNTERpdkVsZW1lbnQmIFZUVFJlZ2lvbjo6Z2V0RGlzcGxheVRyZWUoKQogewogICAg
IGlmICghbV9yZWdpb25EaXNwbGF5VHJlZSkgewotICAgICAgICBtX3JlZ2lvbkRpc3BsYXlUcmVl
ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkpOworICAgICAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkpOwogICAgICAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlLT5zZXRQc2V1ZG8oU2hhZG93UHNldWRv
SWRzOjp3ZWJraXRNZWRpYVRleHRUcmFja1JlZ2lvbigpKTsKICAgICAgICAgbV9yZWNhbGN1bGF0
ZVN0eWxlcyA9IHRydWU7CiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgVlRUUmVnaW9u
OjpwcmVwYXJlUmVnaW9uRGlzcGxheVRyZWUoKQogICAgIC8vIFRoZSBjdWUgY29udGFpbmVyIGlz
IHVzZWQgdG8gd3JhcCB0aGUgY3VlcyBhbmQgaXQgaXMgdGhlIG9iamVjdCB3aGljaCBpcwogICAg
IC8vIGdyYWR1YWxseSBzY3JvbGxlZCBvdXQgYXMgbXVsdGlwbGUgY3VlcyBhcmUgYXBwZW5kZWQg
dG8gdGhlIHJlZ2lvbi4KICAgICBpZiAoIW1fY3VlQ29udGFpbmVyKSB7Ci0gICAgICAgIG1fY3Vl
Q29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKm1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOworICAgICAgICBtX2N1ZUNvbnRhaW5lciA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpKTsKICAgICAgICAgbV9jdWVDb250YWluZXItPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9J
ZHM6OndlYmtpdE1lZGlhVGV4dFRyYWNrUmVnaW9uQ29udGFpbmVyKCkpOwogICAgICAgICBtX3Jl
Z2lvbkRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZCgqbV9jdWVDb250YWluZXIpOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>