<?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>147657</bug_id>
          
          <creation_ts>2015-08-04 15:35:00 -0700</creation_ts>
          <short_desc>Replace JSFunctionNameScope with JSLexicalEnvironment for the function name scope.</short_desc>
          <delta_ts>2015-08-05 11:30:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147666</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114820</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-04 15:35:00 -0700</bug_when>
    <thetext>We can just implement this as a &quot;const&quot;-like scope :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114938</commentid>
    <comment_count>1</comment_count>
      <attachid>258257</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-04 19:05:51 -0700</bug_when>
    <thetext>Created attachment 258257
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115034</commentid>
    <comment_count>2</comment_count>
      <attachid>258257</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-05 09:44:43 -0700</bug_when>
    <thetext>Comment on attachment 258257
patch

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

r=me with fixes.

Do we already have test coverage for all the aspects of the function name scope behavior?  If not, please add the missing pieces.

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        this variable like a &quot;const&quot; because 

You&apos;re cut off here mid thought.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115065</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-05 11:16:44 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 258257 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258257&amp;action=review
&gt; 
&gt; r=me with fixes.
&gt; 
&gt; Do we already have test coverage for all the aspects of the function name
&gt; scope behavior?  If not, please add the missing pieces.
&gt; 
We do have tests. I broke them and then fixed them :)

&gt; &gt; Source/JavaScriptCore/ChangeLog:14
&gt; &gt; +        this variable like a &quot;const&quot; because 
&gt; 
&gt; You&apos;re cut off here mid thought.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115072</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-05 11:30:20 -0700</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/187969</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258257</attachid>
            <date>2015-08-04 19:05:51 -0700</date>
            <delta_ts>2015-08-05 09:44:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>62642</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBA
CisyMDE1LTA4LTA0ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBSZXBsYWNlIEpTRnVuY3Rpb25OYW1lU2NvcGUgd2l0aCBKU0xleGljYWxFbnZpcm9ubWVu
dCBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgc2NvcGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc2NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGtpbGxzIHRoZSBsYXN0IG9mIHRoZSBuYW1lIHNj
b3BlIG9iamVjdHMuIEZ1bmN0aW9uIG5hbWUgc2NvcGVzIGFyZQorICAgICAgICBub3cgYnVpbHQg
b24gdG9wIG9mIHRoZSBzY29waW5nIG1lY2hhbmlzbXMgaW50cm9kdWNlZCB3aXRoIEVTNiBibG9j
ayBzY29waW5nLgorICAgICAgICBBIG5hbWUgc2NvcGUgaXMgbm93IGp1c3QgYSBKU0xleGljYWxF
bnZpcm9ubWVudC4gIFdlIHRyZWF0IGFzc2lnbm1lbnRzIHRvIHRoZQorICAgICAgICBmdW5jdGlv
biBuYW1lIHNjb3BlZCB2YXJpYWJsZSBjYXJlZnVsbHkgZGVwZW5kaW5nIG9uIGlmIHRoZSBmdW5j
dGlvbiBpcyBpbgorICAgICAgICBzdHJpY3QgbW9kZS4gSWYgd2UncmUgaW4gc3RyaWN0IG1vZGUs
IHRoZW4gd2UgdHJlYXQgdGhlIHZhcmlhYmxlIGV4YWN0bHkKKyAgICAgICAgbGlrZSBhICJjb25z
dCIgdmFyaWFibGUuIElmIHdlJ3JlIG5vdCBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuJ3QgdHJlYXQK
KyAgICAgICAgdGhpcyB2YXJpYWJsZSBsaWtlIGEgImNvbnN0IiBiZWNhdXNlIAorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpT
Qzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6aW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2Nv
cGVTdGFjayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoTGV4aWNhbFNj
b3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hMZXhpY2FsU2NvcGVJ
bnRlcm5hbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjp2YXJpYWJsZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlVHlwZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoU2NvcGVkQ29udHJvbEZsb3dDb250ZXh0KToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoQ2F0Y2hTY29wZSk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfdG9fc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1c2hfbmFtZV9zY29wZSk6IERlbGV0ZWQuCisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfdG9fc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1c2hfbmFtZV9zY29wZSk6IERlbGV0ZWQuCisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXNoTmFtZVNjb3Bl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbk5hbWVTY29wZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uTmFtZVNjb3BlLmg6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OndpdGhT
Y29wZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdHJpY3RFdmFs
QWN0aXZhdGlvblN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3Rp
dmF0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRpcmVjdEFy
Z3VtZW50c1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzY29wZWRB
cmd1bWVudHNTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6b3V0T2ZC
YW5kQXJndW1lbnRzU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmZ1
bmN0aW9uTmFtZVNjb3BlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
TmFtZVNjb3BlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTTmFtZVNjb3BlLmg6
IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0Ojp0b1RoaXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2VhbCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojppc0Z1bmN0aW9uTmFtZVNjb3BlT2JqZWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Njb3Bl
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6aXNDYXRjaFNjb3BlKToKKyAgICAgICAgKEpT
Qzo6SlNTY29wZTo6aXNGdW5jdGlvbk5hbWVTY29wZU9iamVjdCk6CisgICAgICAgIChKU0M6OnJl
c29sdmVNb2RlTmFtZSk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgICog
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bFRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisKIDIwMTUtMDgtMDQgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVXBkYXRlIEFw
cGxlIFdpbmRvd3MgYnVpbGQgZm9yIFZTMjAxNQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTg3ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MTEsNyArNTExLDYgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKICAg
ICBydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAotICAgIHJ1bnRpbWUvSlNGdW5jdGlvbk5hbWVTY29wZS5jcHAKICAgICBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNw
cAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC01MjAsNyArNTE5
LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNM
b2NrLmNwcAogICAgIHJ1bnRpbWUvSlNNYXAuY3BwCiAgICAgcnVudGltZS9KU01hcEl0ZXJhdG9y
LmNwcAotICAgIHJ1bnRpbWUvSlNOYW1lU2NvcGUuY3BwCiAgICAgcnVudGltZS9KU05vdEFuT2Jq
ZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHAKICAgICBydW50aW1lL0pTT2JqZWN0
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lv
biAxODc4ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03NjQsMTQgKzc2NCwx
MiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGFWaWV3UHJvdG90
eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNEYXRlTWF0
aC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24u
Y3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uTmFt
ZVNjb3BlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9i
YWxPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTSm9iLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNMb2NrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9y
LmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOYW1lU2NvcGUu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT2JqZWN0LmNwcCIg
Lz4KQEAgLTE1OTQsNyArMTU5Miw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTRmxvYXQzMkFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTRmxvYXQ2NEFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTRnVuY3Rpb24uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNGdW5jdGlvbk5hbWVTY29wZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmgiIC8+CkBAIC0xNjEwLDcgKzE2MDcsNiBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xvY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU05hbWVTY29wZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU05vdEFuT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTT05PYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNPYmplY3QuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE4Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cwkod29ya2luZyBjb3B5KQpAQCAtNzA4LDkgKzcwOCw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNOYW1lU2NvcGUuY3BwIj4KLSAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgotICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2Jq
ZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KQEAgLTE3OTgsNyArMTc5NSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdc
REZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cZnRsXEZUTEpTQ2FsbEJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
ZnRsXEZUTEpTQ2FsbFZhcmFyZ3MuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Z1bmN0aW9uTmFtZVNjb3BlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGppdFxFeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIj4KICAgICAgIDxG
aWx0ZXI+aml0PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yODA3LDkgKzI4MDMsNiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xvY2suaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOYW1lU2NvcGUuaCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtNDMzMSw3ICs0MzI0LDYgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGRmZ1xERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTEpTQ2FsbEJhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGZ0bFxGVExKU0NhbGxWYXJhcmdzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb25OYW1lU2NvcGUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0aENvbW1vbi5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVLaWxscy5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuaCIgLz4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODc4ODApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNjE4LDggKzYxOCw2IEBACiAJCTBGRDhBMzJBMTdENTFGNTcwMENB
MkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEzMjIxN0Q1MUY1NzAwQ0Ey
QzQwIC8qIERGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEOEEzMkIxN0Q1MUY1NzAw
Q0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEz
MjMxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suY3BwICovOyB9OwogCQkwRkQ4QTMyQzE3RDUxRjU3MDBDQTJDNDAgLyogREZH
VG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEzMjQxN0Q1MUY1NzAwQ0Ey
QzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkQ5NDk4
NDFBOTdEQjk2MDBFMjg5NjYgLyogSlNGdW5jdGlvbk5hbWVTY29wZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ5NDk4MDFBOTdEQjk2MDBFMjg5
NjYgLyogSlNGdW5jdGlvbk5hbWVTY29wZS5jcHAgKi87IH07Ci0JCTBGRDk0OTg1MUE5N0RCOTYw
MEUyODk2NiAvKiBKU0Z1bmN0aW9uTmFtZVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ5NDk4MTFBOTdEQjk2MDBFMjg5NjYgLyogSlNGdW5j
dGlvbk5hbWVTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGREIyQ0M5MTczREE1MjAwMDdCM0MxQiAvKiBGVExBYmJyZXZpYXRlZFR5cGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRCMkND
NzE3M0RBNTFFMDA3QjNDMUIgLyogRlRMQWJicmV2aWF0ZWRUeXBlcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGREIyQ0NBMTczREE1MjMwMDdC
M0MxQiAvKiBGVExWYWx1ZUZyb21CbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZEQjJDQzgxNzNEQTUxRTAwN0IzQzFCIC8qIEZUTFZhbHVlRnJv
bUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZEQjJDRTcxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dvcmtsaXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREIyQ0U1MTc0ODMwQTIwMDdC
M0MxQiAvKiBERkdXb3JrbGlzdC5jcHAgKi87IH07CkBAIC04NzgsOCArODc2LDYgQEAKIAkJMTQ3
RjM5RDcxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTRW52aXJvbm1lbnRSZWNvcmQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMkEzOUEwRTE2RTE0ODAw
QUYyMUM4IC8qIEpTRW52aXJvbm1lbnRSZWNvcmQuY3BwICovOyB9OwogCQkxNDgyQjc0RTBBNDMw
MzI4MDA1MTdDRkMgLyogSlNTdHJpbmdSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MkI3NEMwQTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3RyaW5n
UmVmLmNwcCAqLzsgfTsKIAkJMTQ4MkI3RTQwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVm
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODJC
N0UyMEE0MzA3NjAwMDUxN0NGQyAvKiBKU09iamVjdFJlZi5jcHAgKi87IH07Ci0JCTE0ODc0QUUz
MTVFQkRFNEEwMDJFMzU4NyAvKiBKU05hbWVTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDg3NEFERjE1RUJERTRBMDAyRTM1ODcgLyogSlNO
YW1lU2NvcGUuY3BwICovOyB9OwotCQkxNDg3NEFFNDE1RUJERTRBMDAyRTM1ODcgLyogSlNOYW1l
U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
ODc0QUUwMTVFQkRFNEEwMDJFMzU4NyAvKiBKU05hbWVTY29wZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0ODc0QUU1MTVFQkRFNEEwMDJFMzU4
NyAvKiBKU1Njb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0ODc0QUUxMTVFQkRFNEEwMDJFMzU4NyAvKiBKU1Njb3BlLmNwcCAqLzsgfTsKIAkJ
MTQ4NzRBRTYxNUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODc0QUUyMTVFQkRFNEEwMDJFMzU4NyAvKiBK
U1Njb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMTQ4Q0QxRDgxMDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4dFJlZlByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OENEMUQ3MTA4Q0Y5
MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0MTUsOCArMjQxMSw2IEBACiAJCTBGRDhB
MzIyMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdUb0ZUTERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oOyBwYXRoID0gZGZnL0RGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDhBMzIzMTdENTFG
NTcwMENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1RvRlRMRm9y
T1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwOyBwYXRoID0gZGZnL0RGR1Rv
RlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkQ4QTMyNDE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExG
b3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmg7IHBhdGggPSBkZmcvREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkQ5NDk4MDFBOTdE
Qjk2MDBFMjg5NjYgLyogSlNGdW5jdGlvbk5hbWVTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0Z1bmN0aW9uTmFtZVNjb3BlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMEZEOTQ5ODExQTk3REI5NjAwRTI4OTY2IC8qIEpTRnVuY3Rpb25O
YW1lU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGdW5jdGlvbk5h
bWVTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkRCMkNDNzE3M0RBNTFF
MDA3QjNDMUIgLyogRlRMQWJicmV2aWF0ZWRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExBYmJy
ZXZpYXRlZFR5cGVzLmg7IHBhdGggPSBmdGwvRlRMQWJicmV2aWF0ZWRUeXBlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkRCMkNDODE3M0RBNTFFMDA3QjNDMUIgLyogRlRMVmFs
dWVGcm9tQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMVmFsdWVGcm9tQmxvY2suaDsgcGF0aCA9
IGZ0bC9GVExWYWx1ZUZyb21CbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkRCMkNFNTE3NDgzMEEyMDA3QjNDMUIgLyogREZHV29ya2xpc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHV29ya2xpc3QuY3BwOyBwYXRoID0gZGZnL0RGR1dv
cmtsaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MTQsOCArMjYwOCw2
IEBACiAJCTE0ODJCNzhBMEE0MzA1QUIwMDUxN0NGQyAvKiBBUElDYXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUNhc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTQ4MkI3RTEwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT2JqZWN0UmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0ODJCN0UyMEE0MzA3NjAwMDUxN0NGQyAvKiBKU09iamVjdFJlZi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09iamVjdFJlZi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0ODc0QURGMTVFQkRFNEEwMDJFMzU4NyAvKiBK
U05hbWVTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05h
bWVTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0ODc0QUUwMTVFQkRF
NEEwMDJFMzU4NyAvKiBKU05hbWVTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU05hbWVTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDg3NEFF
MTE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1Njb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ4NzRBRTIxNUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NDhDRDFENzEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0UmVmUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NvbnRleHRSZWZQcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjUxLDggKzQ2NDMsNiBAQAogCQkJCUY2OTJBODVFMDI1
NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdE
MDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAogCQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4
QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAotCQkJCTBGRDk0OTgwMUE5N0RCOTYwMEUyODk2
NiAvKiBKU0Z1bmN0aW9uTmFtZVNjb3BlLmNwcCAqLywKLQkJCQkwRkQ5NDk4MTFBOTdEQjk2MDBF
Mjg5NjYgLyogSlNGdW5jdGlvbk5hbWVTY29wZS5oICovLAogCQkJCTBGMkI2NkMzMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oICovLAogCQkJCTBGMkI2NkM0MTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggKi8s
CiAJCQkJMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmggKi8sCkBAIC00Njc4LDggKzQ2NjgsNiBAQAogCQkJCUE3MDA4
NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oICovLAogCQkJCUE3NERFRjhGMTgyRDk5MTQw
MDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1
MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovLAotCQkJCTE0ODc0QURGMTVFQkRFNEEwMDJFMzU4
NyAvKiBKU05hbWVTY29wZS5jcHAgKi8sCi0JCQkJMTQ4NzRBRTAxNUVCREU0QTAwMkUzNTg3IC8q
IEpTTmFtZVNjb3BlLmggKi8sCiAJCQkJQTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90
QW5PYmplY3QuY3BwICovLAogCQkJCUE3MjcwMDc3MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFu
T2JqZWN0LmggKi8sCiAJCQkJQkMyMkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNw
cCAqLywKQEAgLTYwNDMsNyArNjAzMSw2IEBACiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURC
IC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5
NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRDk0OTg1MUE5N0RCOTYwMEUyODk2NiAvKiBKU0Z1
bmN0aW9uTmFtZVNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1
NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY0Q0VENUYxOENFQTdBQjAwODAyRkUwIC8qIFBvbHltb3JwaGljR2V0QnlJZExpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjM1QkVFMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJl
cGFyYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtNjM1OCw3ICs2MzQ1LDYgQEAKIAkJCQlBNzAw
ODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NERF
Rjk2MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTg0MEUyQjE4N0NBNzVCMDA4NDNCMTAgLyoganNtaW4ucHkgaW4gSGVhZGVycyAqLywKLQkJ
CQkxNDg3NEFFNDE1RUJERTRBMDAyRTM1ODcgLyogSlNOYW1lU2NvcGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDI0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU09iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzA5RkI4NkExQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjUwRTE2RjVDRDAwQjM0NDYwIC8qIEpTT2JqZWN0
UmVmLmggaW4gSGVhZGVycyAqLywKQEAgLTc1OTQsNyArNzU4MCw2IEBACiAJCQkJQzI1RDcwOUIx
NkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTcwMDg3NDExN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3NERFRjk1MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTE0ODc0QUUzMTVFQkRFNEEwMDJFMzU4NyAvKiBKU05hbWVTY29wZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzI3MDA5MDBEQUM2QkJDMDBFNTQ4RDcgLyogSlNOb3RBbk9iamVj
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlENDEwN0VDMzc2MDA0MjdBNDggLyogSlNP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4MkI3RTQwQTQzMDc2MDAwNTE3Q0ZDIC8q
IEpTT2JqZWN0UmVmLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY1Miw3ICs3NjM3LDYgQEAKIAkJ
CQkwRjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMzkyQzg5MUI0NjE4ODQwMDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRF
eGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGRDk0OTg0MUE5N0RCOTYwMEUyODk2
NiAvKiBKU0Z1bmN0aW9uTmFtZVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE0
MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZDRUZBQ0QxODA1RTc1NTAwNDcyQ0U0IC8qIExMVk1BUEkuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uCShyZXZpc2lvbiAxODc4ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgs
NiBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2Zyb21fYXJndW1lbnRzIiwgImxl
bmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fYXJndW1lbnRz
IiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX3dpdGhf
c2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1c2hf
bmFtZV9zY29wZSIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2dldF9wYXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAkocmV2aXNp
b24gMTg3ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNiBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6Ci0g
ICAgY2FzZSBvcF9wdXNoX25hbWVfc2NvcGU6CiAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6
CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jl
c29sdmVfc2NvcGU6CkBAIC0yOTQsNyArMjkzLDYgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KENvZGVCbAogICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWU6
CiAgICAgY2FzZSBvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWU6CiAgICAgY2FzZSBvcF9nZXRf
cGFyZW50X3Njb3BlOgotICAgIGNhc2Ugb3BfcHVzaF9uYW1lX3Njb3BlOgogICAgIGNhc2Ugb3Bf
cHVzaF93aXRoX3Njb3BlOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4Nzg4MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgotI2luY2x1ZGUgIkpTTmFt
ZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTE0NDEsMTUgKzE0
NDAsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocGFy
ZW50U2NvcGUpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIG9wX3B1c2hfbmFtZV9zY29wZTogewotICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBpbnQgazAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIEpTTmFt
ZVNjb3BlOjpUeXBlIHNjb3BlVHlwZSA9IChKU05hbWVTY29wZTo6VHlwZSkoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1c2hfbmFtZV9zY29wZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVz
LCAlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0
YSgpLCBjb25zdGFudE5hbWUoazApLmRhdGEoKSwgKHNjb3BlVHlwZSA9PSBKU05hbWVTY29wZTo6
RnVuY3Rpb25OYW1lU2NvcGUpID8gImZ1bmN0aW9uU2NvcGUiIDogInVua25vd25TY29wZVR5cGUi
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRl
X2xleGljYWxfZW52aXJvbm1lbnQ6IHsKICAgICAgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBzY29wZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE4Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKLSNpbmNsdWRlICJK
U05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0y
NTAsMTMgKzI0OSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYK
ICAgICAKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQo
KSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkKICAgICAgICAgJiYgZnVuY3Rpb25OYW1l
U2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKSkgewotICAgICAgICAvLyBXaGVuIHdlIGRvIHRoaXMsIHdlIHNob3VsZCBtYWtlIG91
ciBsb2NhbCBzY29wZSBzdGFjayBrbm93IGFib3V0IHRoZSBmdW5jdGlvbiBuYW1lIHN5bWJvbAot
ICAgICAgICAvLyB0YWJsZS4gQ3VycmVudGx5IHRoaXMgd29ya3MgYmVjYXVzZSBieXRlY29kZSBs
aW5raW5nIGNyZWF0ZXMgYSBwaG9ueSBuYW1lIHNjb3BlLgotICAgICAgICAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTg4NQotICAgICAgICAvLyBB
bHNvLCB3ZSBjb3VsZCBjcmVhdGUgdGhlIHNjb3BlIG9uY2UgcGVyIEpTRnVuY3Rpb24gaW5zdGFu
Y2UgdGhhdCBuZWVkcyBpdC4gVGhhdCB3b3VsZG4ndAotICAgICAgICAvLyBiZSBhbnkgbW9yZSBj
b3JyZWN0LCBidXQgaXQgd291bGQgYmUgbW9yZSBwZXJmb3JtYW50LgotICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTg4NwotICAgICAg
ICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKG1fc2NvcGVSZWdpc3RlciwgZnVuY3Rpb25Ob2Rl
LT5pZGVudCgpLCAmbV9jYWxsZWVSZWdpc3RlciwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAg
ICAgICAgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksICZt
X2NhbGxlZVJlZ2lzdGVyKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHNob3VsZENhcHR1cmVTb21l
T2ZUaGVUaGluZ3MpIHsKQEAgLTU3Nyw3ICs1NzAsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
Ojppbml0aWFsaXplRGVmYXVsCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMg
aW1wbGVtZW50cyBzdGVwIDI1IG9mIHNlY3Rpb24gOS4yLjEyLgotICAgICAgICBwdXNoTGV4aWNh
bFNjb3BlSW50ZXJuYWwoZW52aXJvbm1lbnQsIHRydWUsIG51bGxwdHIsIFREWlJlcXVpcmVtZW50
OjpVbmRlclREWiwgU2NvcGVUeXBlOjpMZXRDb25zdFNjb3BlKTsKKyAgICAgICAgcHVzaExleGlj
YWxTY29wZUludGVybmFsKGVudmlyb25tZW50LCB0cnVlLCBudWxscHRyLCBURFpSZXF1aXJlbWVu
dDo6VW5kZXJURFosIFNjb3BlVHlwZTo6TGV0Q29uc3RTY29wZSwgU2NvcGVSZWdpc3RlclR5cGU6
OkJsb2NrKTsKIAogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcCA9IG5ld1RlbXBvcmFy
eSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7
IGkrKykgewpAQCAtMTQxNywxMCArMTQxMCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdExvYWRHCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoTGV4aWNhbFNjb3Bl
KFZhcmlhYmxlRW52aXJvbm1lbnROb2RlKiBub2RlLCBib29sIGNhbk9wdGltaXplVERaQ2hlY2tz
LCBSZWdpc3RlcklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCkKIHsKICAgICBWYXJpYWJs
ZUVudmlyb25tZW50JiBlbnZpcm9ubWVudCA9IG5vZGUtPmxleGljYWxWYXJpYWJsZXMoKTsKLSAg
ICBwdXNoTGV4aWNhbFNjb3BlSW50ZXJuYWwoZW52aXJvbm1lbnQsIGNhbk9wdGltaXplVERaQ2hl
Y2tzLCBjb25zdGFudFN5bWJvbFRhYmxlUmVzdWx0LCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFos
IFNjb3BlVHlwZTo6TGV0Q29uc3RTY29wZSk7CisgICAgcHVzaExleGljYWxTY29wZUludGVybmFs
KGVudmlyb25tZW50LCBjYW5PcHRpbWl6ZVREWkNoZWNrcywgY29uc3RhbnRTeW1ib2xUYWJsZVJl
c3VsdCwgVERaUmVxdWlyZW1lbnQ6OlVuZGVyVERaLCBTY29wZVR5cGU6OkxldENvbnN0U2NvcGUs
IFNjb3BlUmVnaXN0ZXJUeXBlOjpCbG9jayk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OnB1c2hMZXhpY2FsU2NvcGVJbnRlcm5hbChWYXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVu
dCwgYm9vbCBjYW5PcHRpbWl6ZVREWkNoZWNrcywgUmVnaXN0ZXJJRCoqIGNvbnN0YW50U3ltYm9s
VGFibGVSZXN1bHQsIFREWlJlcXVpcmVtZW50IHRkelJlcXVpcmVtZW50LCBTY29wZVR5cGUgc2Nv
cGVUeXBlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaExleGljYWxTY29wZUludGVybmFs
KFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LCBib29sIGNhbk9wdGltaXplVERaQ2hl
Y2tzLCAKKyAgICBSZWdpc3RlcklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCwgVERaUmVx
dWlyZW1lbnQgdGR6UmVxdWlyZW1lbnQsIFNjb3BlVHlwZSBzY29wZVR5cGUsIFNjb3BlUmVnaXN0
ZXJUeXBlIHNjb3BlUmVnaXN0ZXJUeXBlKQogewogICAgIGlmICghZW52aXJvbm1lbnQuc2l6ZSgp
KQogICAgICAgICByZXR1cm47CkBAIC0xNDM2LDYgKzE0MzAsOSBAQCB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpwdXNoTGV4aWNhbFNjb3BlCiAgICAgY2FzZSBTY29wZVR5cGU6OkxldENvbnN0U2Nv
cGU6CiAgICAgICAgIHN5bWJvbFRhYmxlLT5zZXRTY29wZVR5cGUoU3ltYm9sVGFibGU6OlNjb3Bl
VHlwZTo6TGV4aWNhbFNjb3BlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTY29wZVR5cGU6
OkZ1bmN0aW9uTmFtZVNjb3BlOgorICAgICAgICBzeW1ib2xUYWJsZS0+c2V0U2NvcGVUeXBlKFN5
bWJvbFRhYmxlOjpTY29wZVR5cGU6OkZ1bmN0aW9uTmFtZVNjb3BlKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogCiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcyA9IGZhbHNlOwpAQCAtMTQ3
Miw4ICsxNDY5LDExIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hMZXhpY2FsU2NvcGUK
ICAgICAgICAgc3ltYm9sVGFibGVDb25zdGFudEluZGV4ID0gY29uc3RhbnRTeW1ib2xUYWJsZS0+
aW5kZXgoKTsKICAgICB9CiAgICAgaWYgKGhhc0NhcHR1cmVkVmFyaWFibGVzKSB7Ci0gICAgICAg
IG5ld1Njb3BlID0gbmV3QmxvY2tTY29wZVZhcmlhYmxlKCk7Ci0gICAgICAgIG5ld1Njb3BlLT5y
ZWYoKTsKKyAgICAgICAgaWYgKHNjb3BlUmVnaXN0ZXJUeXBlID09IFNjb3BlUmVnaXN0ZXJUeXBl
OjpCbG9jaykgeworICAgICAgICAgICAgbmV3U2NvcGUgPSBuZXdCbG9ja1Njb3BlVmFyaWFibGUo
KTsKKyAgICAgICAgICAgIG5ld1Njb3BlLT5yZWYoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBuZXdTY29wZSA9IGFkZFZhcigpOwogICAgICAgICBpZiAoIWNvbnN0YW50U3ltYm9sVGFi
bGUpIHsKICAgICAgICAgICAgIEFTU0VSVCghdm0oKS0+dHlwZVByb2ZpbGVyKCkpOwogICAgICAg
ICAgICAgY29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0YW50VmFsdWUoc3ltYm9sVGFibGUt
PmNsb25lU2NvcGVQYXJ0KCptX3ZtKSk7CkBAIC0xNjY0LDcgKzE2NjQsMTEgQEAgVmFyaWFibGUg
Qnl0ZWNvZGVHZW5lcmF0b3I6OnZhcmlhYmxlKGNvbgogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
IHN5bWJvbFRhYmxlRW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KHByb3BlcnR5LmltcGwoKSk7CiAg
ICAgICAgIGlmIChzeW1ib2xUYWJsZUVudHJ5LmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIAorICAgICAgICBpZiAoc3ltYm9sVGFibGUtPnNjb3BlVHlwZSgpID09IFN5
bWJvbFRhYmxlOjpTY29wZVR5cGU6OkZ1bmN0aW9uTmFtZVNjb3BlICYmIG1fdXNlc05vblN0cmlj
dEV2YWwpIHsKKyAgICAgICAgICAgIC8vIFdlIGRvbid0IGtub3cgaWYgYW4gZXZhbCBoYXMgaW50
cm9kdWNlZCBhICJ2YXIiIG5hbWVkIHRoZSBzYW1lIHRoaW5nIGFzIHRoZSBmdW5jdGlvbiBuYW1l
IHNjb3BlIHZhcmlhYmxlIG5hbWUuCisgICAgICAgICAgICAvLyBXZSByZXNvcnQgdG8gZHluYW1p
YyBsb29rdXAgdG8gYW5zd2VyIHRoaXMgcXVlc3Rpb24uCisgICAgICAgICAgICByZXR1cm4gVmFy
aWFibGUocHJvcGVydHkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiB2YXJpYWJsZUZvckxv
Y2FsRW50cnkocHJvcGVydHksIHN5bWJvbFRhYmxlRW50cnksIHN0YWNrRW50cnkubV9zeW1ib2xU
YWJsZUNvbnN0YW50SW5kZXgsIHN5bWJvbFRhYmxlLT5zY29wZVR5cGUoKSA9PSBTeW1ib2xUYWJs
ZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOwogICAgIH0KIApAQCAtMTc0NSw2ICsxNzQ5LDgg
QEAgUmVzb2x2ZVR5cGUgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmVUeQogICAgIGZvciAodW5z
aWduZWQgaSA9IG1fc3ltYm9sVGFibGVTdGFjay5zaXplKCk7IGktLTsgKSB7CiAgICAgICAgIGlm
IChtX3N5bWJvbFRhYmxlU3RhY2tbaV0ubV9pc1dpdGhTY29wZSkKICAgICAgICAgICAgIHJldHVy
biBEeW5hbWljOworICAgICAgICBpZiAobV91c2VzTm9uU3RyaWN0RXZhbCAmJiBtX3N5bWJvbFRh
YmxlU3RhY2tbaV0ubV9zeW1ib2xUYWJsZS0+c2NvcGVUeXBlKCkgPT0gU3ltYm9sVGFibGU6OlNj
b3BlVHlwZTo6RnVuY3Rpb25OYW1lU2NvcGUpCisgICAgICAgICAgICByZXR1cm4gRHluYW1pYzsK
ICAgICB9CiAKICAgICBpZiAobV91c2VzTm9uU3RyaWN0RXZhbCkKQEAgLTMwNjQsMTMgKzMwNzAs
MjcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93VHlwZUVycgogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChmYWxzZSk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiBjYWxsZWUpCiB7Ci0gICAgZW1pdE9wY29kZShv
cF9wdXNoX25hbWVfc2NvcGUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7Ci0gICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoU3ltYm9sVGFibGU6OmNyZWF0ZU5h
bWVTY29wZVRhYmxlKCp2bSgpLCBwcm9wZXJ0eSwgYXR0cmlidXRlcykpLT5pbmRleCgpKTsKLSAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoSlNOYW1lU2NvcGU6OkZ1bmN0aW9uTmFtZVNjb3BlKTsK
KyAgICAvLyBUaGVyZSBpcyBzb21lIG51YW5jZSBoZXJlOgorICAgIC8vIElmIHdlJ3JlIGluIHN0
cmljdCBtb2RlIGNvZGUsIHRoZSBmdW5jdGlvbiBuYW1lIHNjb3BlIHZhcmlhYmxlIGFjdHMgZXhh
Y3RseSBsaWtlIGEgImNvbnN0IiB2YXJpYWJsZS4KKyAgICAvLyBJZiB3ZSdyZSBub3QgaW4gc3Ry
aWN0IG1vZGUgY29kZSwgd2Ugd2FudCB0byBhbGxvdyBib2d1cyBhc3NpZ25tZW50cyB0byB0aGUg
bmFtZSBzY29wZWQgdmFyaWFibGUuCisgICAgLy8gVGhpcyBtZWFucyBhbnkgYXNzaWdubWVudCB0
byB0aGUgdmFyaWFibGUgd29uJ3QgdGhyb3csIGJ1dCBpdCB3b24ndCBhY3R1YWxseSBhc3NpZ24g
YSBuZXcgdmFsdWUgdG8gaXQuCisgICAgLy8gVG8gYWNjb21wbGlzaCB0aGlzLCB3ZSBkb24ndCBy
ZXBvcnQgdGhhdCB0aGlzIHNjb3BlIGlzIGEgbGV4aWNhbCBzY29wZS4gVGhpcyB3aWxsIHByZXZl
bnQKKyAgICAvLyBhbnkgdGhyb3dzIHdoZW4gdHJ5aW5nIHRvIGFzc2lnbiB0byB0aGUgdmFyaWFi
bGUgKHdoaWxlIHN0aWxsIGVuc3VyaW5nIGl0IGtlZXBzIGl0cyBvcmlnaW5hbAorICAgIC8vIHZh
bHVlKS4gVGhlcmUgaXMgc29tZSB1Z2xpbmVzcyBhbmQgZXhwbG9pdGF0aW9uIG9mIGEgbGVha3kg
YWJzdHJhY3Rpb24gaGVyZSwgYnV0IGl0J3MgYmV0dGVyIHRoYW4gCisgICAgLy8gaGF2aW5nIGEg
Y29tcGxldGVseSBuZXcgb3AgY29kZSBhbmQgYSBjbGFzcyB0byBoYW5kbGUgbmFtZSBzY29wZXMg
d2hpY2ggYXJlIHNvIGNsb3NlIGluIGZ1bmN0aW9uYWxpdHkKKyAgICAvLyB0byBsZXhpY2FsIGVu
dmlyb25tZW50cy4KKyAgICBWYXJpYWJsZUVudmlyb25tZW50IG5hbWVTY29wZUVudmlyb25tZW50
OworICAgIGF1dG8gYWRkUmVzdWx0ID0gbmFtZVNjb3BlRW52aXJvbm1lbnQuYWRkKHByb3BlcnR5
KTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNldElzQ2FwdHVyZWQoKTsKKyAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNldElzQ29uc3QoKTsgLy8gVGhlIGZ1bmN0aW9uIG5h
bWUgc2NvcGUgbmFtZSBhY3RzIGxpa2UgYSBjb25zdCB2YXJpYWJsZS4KKyAgICB1bnNpZ25lZCBu
dW1WYXJzID0gbV9jb2RlQmxvY2stPm1fbnVtVmFyczsKKyAgICBwdXNoTGV4aWNhbFNjb3BlSW50
ZXJuYWwobmFtZVNjb3BlRW52aXJvbm1lbnQsIHRydWUsIG51bGxwdHIsIFREWlJlcXVpcmVtZW50
OjpOb3RVbmRlclREWiwgU2NvcGVUeXBlOjpGdW5jdGlvbk5hbWVTY29wZSwgU2NvcGVSZWdpc3Rl
clR5cGU6OlZhcik7CisgICAgQVNTRVJUX1VOVVNFRChudW1WYXJzLCBtX2NvZGVCbG9jay0+bV9u
dW1WYXJzID09IHN0YXRpY19jYXN0PGludD4obnVtVmFycyArIDEpKTsgLy8gU2hvdWxkIGhhdmUg
b25seSBjcmVhdGVkIG9uZSBuZXcgInZhciIgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIHNjb3BlLgor
ICAgIGJvb2wgc2hvdWxkVHJlYXRBc0xleGljYWxWYXJpYWJsZSA9IGlzU3RyaWN0TW9kZSgpOwor
ICAgIFZhcmlhYmxlIGZ1bmN0aW9uVmFyID0gdmFyaWFibGVGb3JMb2NhbEVudHJ5KHByb3BlcnR5
LCBtX3N5bWJvbFRhYmxlU3RhY2subGFzdCgpLm1fc3ltYm9sVGFibGUtPmdldChwcm9wZXJ0eS5p
bXBsKCkpLCBtX3N5bWJvbFRhYmxlU3RhY2subGFzdCgpLm1fc3ltYm9sVGFibGVDb25zdGFudElu
ZGV4LCBzaG91bGRUcmVhdEFzTGV4aWNhbFZhcmlhYmxlKTsKKyAgICBlbWl0UHV0VG9TY29wZSht
X3N5bWJvbFRhYmxlU3RhY2subGFzdCgpLm1fc2NvcGUsIGZ1bmN0aW9uVmFyLCBjYWxsZWUsIFRo
cm93SWZOb3RGb3VuZCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hTY29wZWRD
b250cm9sRmxvd0NvbnRleHQoKQpAQCAtMzA5Miw3ICszMTEyLDcgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6cG9wU2NvcGVkQ29udHJvbAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
c2hDYXRjaFNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiBleGNl
cHRpb25WYWx1ZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoZW52aXJvbm1lbnQuY29udGFpbnMocHJvcGVydHkuaW1wbCgpKSk7Ci0gICAg
cHVzaExleGljYWxTY29wZUludGVybmFsKGVudmlyb25tZW50LCB0cnVlLCBudWxscHRyLCBURFpS
ZXF1aXJlbWVudDo6Tm90VW5kZXJURFosIFNjb3BlVHlwZTo6Q2F0Y2hTY29wZSk7CisgICAgcHVz
aExleGljYWxTY29wZUludGVybmFsKGVudmlyb25tZW50LCB0cnVlLCBudWxscHRyLCBURFpSZXF1
aXJlbWVudDo6Tm90VW5kZXJURFosIFNjb3BlVHlwZTo6Q2F0Y2hTY29wZSwgU2NvcGVSZWdpc3Rl
clR5cGU6OkJsb2NrKTsKICAgICBWYXJpYWJsZSBleGNlcHRpb25WYXIgPSB2YXJpYWJsZShwcm9w
ZXJ0eSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhjZXB0aW9uVmFyLmlzUmVzb2x2ZWQoKSk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCBl
eGNlcHRpb25WYXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTg3ODgwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01ODgsNyArNTg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAg
ICAgdm9pZCBlbWl0VGhyb3dUeXBlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAotICAg
ICAgICB2b2lkIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOworICAgICAgICB2b2lkIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgdm9pZCBlbWl0
UHVzaENhdGNoU2NvcGUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIGV4
Y2VwdGlvblZhbHVlLCBWYXJpYWJsZUVudmlyb25tZW50Jik7CiAgICAgICAgIHZvaWQgZW1pdFBv
cENhdGNoU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogCkBAIC02MzIsOCArNjMyLDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBlbnVtIGNsYXNzIFREWlJl
cXVpcmVtZW50IHsgVW5kZXJURFosIE5vdFVuZGVyVERaIH07Ci0gICAgICAgIGVudW0gY2xhc3Mg
U2NvcGVUeXBlIHsgQ2F0Y2hTY29wZSwgTGV0Q29uc3RTY29wZSB9OwotICAgICAgICB2b2lkIHB1
c2hMZXhpY2FsU2NvcGVJbnRlcm5hbChWYXJpYWJsZUVudmlyb25tZW50JiwgYm9vbCBjYW5PcHRp
bWl6ZVREWkNoZWNrcywgUmVnaXN0ZXJJRCoqIGNvbnN0YW50U3ltYm9sVGFibGVSZXN1bHQsIFRE
WlJlcXVpcmVtZW50LCBTY29wZVR5cGUpOworICAgICAgICBlbnVtIGNsYXNzIFNjb3BlVHlwZSB7
IENhdGNoU2NvcGUsIExldENvbnN0U2NvcGUsIEZ1bmN0aW9uTmFtZVNjb3BlIH07CisgICAgICAg
IGVudW0gY2xhc3MgU2NvcGVSZWdpc3RlclR5cGUgeyBWYXIsIEJsb2NrIH07CisgICAgICAgIHZv
aWQgcHVzaExleGljYWxTY29wZUludGVybmFsKFZhcmlhYmxlRW52aXJvbm1lbnQmLCBib29sIGNh
bk9wdGltaXplVERaQ2hlY2tzLCBSZWdpc3RlcklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3Vs
dCwgVERaUmVxdWlyZW1lbnQsIFNjb3BlVHlwZSwgU2NvcGVSZWdpc3RlclR5cGUpOwogICAgICAg
ICB2b2lkIHBvcExleGljYWxTY29wZUludGVybmFsKFZhcmlhYmxlRW52aXJvbm1lbnQmLCBURFpS
ZXF1aXJlbWVudCk7CiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHB1c2hMZXhpY2FsU2NvcGUo
VmFyaWFibGVFbnZpcm9ubWVudE5vZGUqLCBib29sIGNhbk9wdGltaXplVERaQ2hlY2tzLCBSZWdp
c3RlcklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCA9IG51bGxwdHIpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAkocmV2aXNpb24gMTg3ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0
LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCShy
ZXZpc2lvbiAxODc4ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUg
IkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1
ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDE4Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJK
SVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTGV4
aWNhbEVudmlyb25tZW50LmgiCi0jaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJP
YmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJlcGF0Y2guaCIKICNpbmNsdWRlICJTY29w
ZWRBcmd1bWVudHMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTg3ODgwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgotI2luY2x1ZGUg
IkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpT
U3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE4Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY5LDcgKzI2OSw2IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVf
d2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV90eXBlKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHJvZmlsZV9jb250cm9sX2Zsb3cpCi0gICAgICAgIERFRklORV9PUChvcF9w
dXNoX25hbWVfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3dpdGhfc2NvcGUpCiAg
ICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKICAgICAgICAg
REVGSU5FX09QKG9wX2dldF9wYXJlbnRfc2NvcGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDE4Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzMCw3ICs1MzAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVfd2lsbF9jYWxsKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9wcm9maWxlX3R5cGUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9wdXNoX25hbWVfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX3B1c2hfd2l0aF9zY29wZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2dldF9wYXJlbnRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE4Nzg4MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUg
IkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVk
ZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwuaCIKQEAgLTgwMCwxNCArNzk5LDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Rv
X3N0cmluZyhJbnN0cnVjdAogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX3B1c2hfbmFtZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQotewotICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAg
IGVtaXRMb2FkKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QxLCByZWdUMCk7
Ci0gICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9PSBK
U05hbWVTY29wZTo6RnVuY3Rpb25OYW1lU2NvcGUpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uUHVzaEZ1bmN0aW9uTmFtZVNjb3BlLCBkc3QsIGpzQ2FzdDxTeW1ib2xUYWJsZSo+KGdldENv
bnN0YW50T3BlcmFuZChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSksIHJlZ1QxLCBy
ZWdUMCk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fdm0pLCByZWdUMyk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE4
Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTTmFtZVNj
b3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgi
CkBAIC00OTMsMTQgKzQ5Miw2IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3N0cmluZyhJbnN0cnVj
dGlvbioKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXNoX25hbWVfc2NvcGUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBpbnQgZHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKLSAgICBSRUxFQVNFX0FTU0VSVChjdXJy
ZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kID09IEpTTmFtZVNjb3BlOjpGdW5jdGlvbk5hbWVT
Y29wZSk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXNoRnVuY3Rpb25OYW1lU2NvcGUs
IGRzdCwganNDYXN0PFN5bWJvbFRhYmxlKj4oZ2V0Q29uc3RhbnRPcGVyYW5kKGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQpKSwgcmVnVDApOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9j
YXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIC8vIEdvdHRhIHJl
c3RvcmUgdGhlIHRhZyByZWdpc3RlcnMuIFdlIGNvdWxkIGJlIHRocm93aW5nIGZyb20gRlRMLCB3
aGljaCBtYXkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMTg3ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDggQEAKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uTmFtZVNjb3Bl
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xl
eGljYWxFbnZpcm9ubWVudC5oIgotI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAi
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgpAQCAtNjMsMjQgKzYxLDYgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFNjb3BlVHlwZT4KLXZvaWQgcHVzaE5hbWVTY29w
ZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZHN0LCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICAKLSAg
ICBBU1NFUlQoIUpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChleGVjLT5jb2RlQmxvY2soKS0+aml0
VHlwZSgpKSk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGlmIHRoaXMgb3BlcmF0
aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBERkcgb3IgRlRMLgotICAgIC8vIFRoaXMgc2hvdWxkIGJl
IGNoYW5nZWQgdG8gcGFzcyBpbiB0aGUgbmV3IHNjb3BlLgotICAgIEpTU2NvcGUqIGN1cnJlbnRT
Y29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIoZHN0KS5SZWdpc3Rlcjo6c2NvcGUoKTsKLSAgICBKU05h
bWVTY29wZSogc2NvcGUgPSBTY29wZVR5cGU6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGlmIHRoaXMgb3Bl
cmF0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBERkcgb3IgRlRMLgotICAgIC8vIFRoaXMgc2hvdWxk
IGJlIGNoYW5nZWQgdG8gcmV0dXJuIHRoZSBuZXcgc2NvcGUuCi0gICAgZXhlYy0+dW5jaGVja2Vk
Uihkc3QpID0gc2NvcGU7Ci19Ci0KIGV4dGVybiAiQyIgewogCiAjaWYgQ09NUElMRVIoTVNWQykK
QEAgLTEzNjMsMTEgKzEzNDMsNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0
dGVyU2V0CiB9CiAjZW5kaWYKIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hGdW5j
dGlvbk5hbWVTY29wZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZHN0LCBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBwdXNoTmFt
ZVNjb3BlPEpTRnVuY3Rpb25OYW1lU2NvcGU+KGV4ZWMsIGRzdCwgc3ltYm9sVGFibGUsIGVuY29k
ZWRWYWx1ZSk7Ci19Ci0KIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3Bl
KEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBkc3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxODc4ODApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgotI2lu
Y2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNs
dWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCkBAIC0xMjc4LDE5ICsx
Mjc3LDYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aAogICAgIExM
SU5UX0VORCgpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHVzaF9uYW1l
X3Njb3BlKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgaW50IHNjb3BlUmVnID0gcGNbMV0u
dS5vcGVyYW5kOwotICAgIEpTU2NvcGUqIGN1cnJlbnRTY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIo
c2NvcGVSZWcpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKTsKLSAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBqc0Nhc3Q8
U3ltYm9sVGFibGUqPihMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSk7Ci0gICAgSlNOYW1lU2NvcGU6
OlR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PEpTTmFtZVNjb3BlOjpUeXBlPihwY1s0XS51Lm9wZXJh
bmQpOwotICAgIEpTTmFtZVNjb3BlKiBzY29wZSA9IEpTTmFtZVNjb3BlOjpjcmVhdGUodm0sIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSwgdmFs
dWUsIHR5cGUpOwotICAgIGV4ZWMtPnVuY2hlY2tlZFIoc2NvcGVSZWcpID0gc2NvcGU7Ci0gICAg
TExJTlRfRU5EKCk7Ci19Ci0KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90aHJvdykK
IHsKICAgICBMTElOVF9CRUdJTigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDE4Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyAr
MTA3LDYgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90ZQogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwotTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX25hbWVfc2NvcGUpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF90aHJvdyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Rocm93X3N0YXRpY19lcnJvcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2hhbmRsZV93YXRjaGRvZ190aW1lcik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lv
biAxODc4ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEyODcsMTIgKzEyODcsNiBAQCBfbGxpbnRfb3Bf
cHVzaF93aXRoX3Njb3BlOgogICAgIGRpc3BhdGNoKDMpCiAKIAotX2xsaW50X29wX3B1c2hfbmFt
ZV9zY29wZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfcHVzaF9uYW1lX3Njb3BlKQotICAgIGRpc3BhdGNoKDUpCi0KLQogX2xsaW50X29w
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lvbiAxODc4ODApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgi
CiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxODc4ODApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKLSNp
bmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZp
c2lvbiAxODc4ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkRGR0RyaXZl
ci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRl
ICJKU0Z1bmN0aW9uTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAj
aW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgpAQCAtMjQ3
LDE5ICsyNDYsNiBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIC8vIFBhcnNpbmcgcmV2ZWFscyB3
aGV0aGVyIG91ciBmdW5jdGlvbiB1c2VzIGZlYXR1cmVzIHRoYXQgcmVxdWlyZSBhIHNlcGFyYXRl
IGZ1bmN0aW9uIG5hbWUgb2JqZWN0IGluIHRoZSBzY29wZSBjaGFpbi4KLSAgICAvLyBCZSBzdXJl
IHRvIGFkZCB0aGlzIHNjb3BlIGJlZm9yZSBsaW5raW5nIHRoZSBieXRlY29kZSBiZWNhdXNlIHRo
aXMgc2NvcGUgd2lsbCBjaGFuZ2UgdGhlIHJlc29sdXRpb24gZGVwdGggb2Ygbm9uLWxvY2FsIHZh
cmlhYmxlcy4KLSAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGV4ZWN1dGFibGUtPm5hbWUo
KSwgZXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCkpCi0gICAgICAgICYmIGZ1bmN0aW9uTmFtZVNj
b3BlSXNEeW5hbWljKGV4ZWN1dGFibGUtPnVzZXNFdmFsKCksIGV4ZWN1dGFibGUtPmlzU3RyaWN0
TW9kZSgpKSkgewotICAgICAgICAvLyBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlzLiBCdXQg
d2UgZG8sIGJlY2F1c2UgYnl0ZWNvZGUgbGlua2luZyByZXF1aXJlcyBhIHJlYWwgc2NvcGUKLSAg
ICAgICAgLy8gY2hhaW4uCi0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQxODg1Ci0gICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSA9Ci0gICAgICAgICAgICBTeW1ib2xUYWJsZTo6Y3JlYXRlTmFtZVNjb3BlVGFibGUoKnZtLCBl
eGVjdXRhYmxlLT5uYW1lKCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7Ci0gICAgICAgIHNjb3Bl
ID0gSlNGdW5jdGlvbk5hbWVTY29wZTo6Y3JlYXRlKAotICAgICAgICAgICAgKnZtLCBzY29wZS0+
Z2xvYmFsT2JqZWN0KCksIHNjb3BlLCBzeW1ib2xUYWJsZSwgZnVuY3Rpb24pOwotICAgIH0KLSAg
ICAKICAgICBTb3VyY2VQcm92aWRlciogcHJvdmlkZXIgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5w
cm92aWRlcigpOwogICAgIHVuc2lnbmVkIHNvdXJjZU9mZnNldCA9IGV4ZWN1dGFibGUtPnNvdXJj
ZSgpLnN0YXJ0T2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBleGVjdXRhYmxl
LT5zb3VyY2UoKS5zdGFydENvbHVtbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbk5hbWVTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbk5hbWVTY29wZS5jcHAJKHJldmlzaW9uIDE4Nzg4
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25OYW1lU2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkpTRnVuY3Rpb25OYW1lU2NvcGUuaCIKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBKU0Z1bmN0aW9uTmFtZVNjb3BlOjpzX2lu
Zm8gPSB7ICJGdW5jdGlvbk5hbWVTY29wZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNGdW5jdGlvbk5hbWVTY29wZSkgfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25OYW1lU2NvcGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
TmFtZVNjb3BlLmgJKHJldmlzaW9uIDE4Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb25OYW1lU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5k
ZWYgSlNGdW5jdGlvbk5hbWVTY29wZV9oCi0jZGVmaW5lIEpTRnVuY3Rpb25OYW1lU2NvcGVfaAot
Ci0jaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpT
RnVuY3Rpb25OYW1lU2NvcGUgOiBwdWJsaWMgSlNOYW1lU2NvcGUgewotcHVibGljOgotICAgIHR5
cGVkZWYgSlNOYW1lU2NvcGUgQmFzZTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgSlNO
YW1lU2NvcGU7Ci0gICAgCi0gICAgSlNGdW5jdGlvbk5hbWVTY29wZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIG5leHQsIFN5bWJvbFRhYmxlKiBzeW1ib2xU
YWJsZSkKLSAgICAgICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uTmFtZVNjb3Bl
U3RydWN0dXJlKCksIG5leHQsIHN5bWJvbFRhYmxlKQotICAgIHsKLSAgICB9Ci0gICAgCi1wdWJs
aWM6Ci0gICAgc3RhdGljIEpTRnVuY3Rpb25OYW1lU2NvcGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJh
c2U6OmNyZWF0ZTxKU0Z1bmN0aW9uTmFtZVNjb3BlPih2bSwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50
U2NvcGUsIHN5bWJvbFRhYmxlLCB2YWx1ZSk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG8pCi0gICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE5hbWVTY29wZU9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0gICAgCi0gICAgREVDTEFSRV9JTkZP
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBKU0Z1bmN0aW9uTmFtZVNj
b3BlX2gKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTg3ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw2
IEBACiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgogI2luY2x1ZGUgIkpTRG9sbGFyVk1Qcm90b3R5
cGUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbk5hbWVT
Y29wZS5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgiCkBAIC0zMDIs
NyArMzAxLDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV90eXBl
ZEFycmF5c1t0b0luZGV4KFR5cGVGbG9hdDY0KV0uc3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNG
bG9hdDY0QXJyYXk6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV90eXBlZEFycmF5c1t0b0lu
ZGV4KFR5cGVGbG9hdDY0KV0ucHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV90eXBlZEFycmF5c1t0
b0luZGV4KFR5cGVEYXRhVmlldyldLnN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTRGF0YVZpZXc6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVEYXRh
VmlldyldLnByb3RvdHlwZS5nZXQoKSkpOwogICAgIAotICAgIG1fZnVuY3Rpb25OYW1lU2NvcGVT
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uTmFtZVNjb3BlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzKSk7CiAgICAgbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVs
bCgpKSk7CiAgICAgbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnNldChtX3ZtLCB0aGlzLCBEZWJ1
Z2dlclNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUobV92bSwgdGhpcykpOwpAQCAtNzc2LDcgKzc3NCw2
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1
cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uTmFtZVNjb3Bl
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kaXJlY3RBcmd1
bWVudHNTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3Bl
ZEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
b3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTg3ODgwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjExLDcgKzIxMSw2IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlOwotICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZnVuY3Rpb25OYW1lU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmU7CkBAIC00MjUsNyArNDI0LDYg
QEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmlj
dEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0
aXZhdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdldCgp
OyB9Ci0gICAgU3RydWN0dXJlKiBmdW5jdGlvbk5hbWVTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnVuY3Rpb25OYW1lU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIGRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0QXJn
dW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVudHNT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29wZS5jcHAJKHJldmlzaW9u
IDE4Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5LCAyMDEyLCAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJKU05hbWVTY29wZS5oIgotCi0jaW5jbHVkZSAiRXJyb3IuaCIKLSNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbk5hbWVTY29wZS5oIgot
Ci1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEpTTmFtZVNjb3BlOjpzX2luZm8g
PSB7ICJOYW1lU2NvcGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
TmFtZVNjb3BlKSB9OwotCi1KU05hbWVTY29wZSogSlNOYW1lU2NvcGU6OmNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIHZhbHVlLCBUeXBlIHR5cGUpCi17Ci0gICAg
UkVMRUFTRV9BU1NFUlQodHlwZSA9PSBGdW5jdGlvbk5hbWVTY29wZSk7Ci0gICAgcmV0dXJuIEpT
RnVuY3Rpb25OYW1lU2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50U2NvcGUs
IHN5bWJvbFRhYmxlLCB2YWx1ZSk7Ci19Ci0KLUpTVmFsdWUgSlNOYW1lU2NvcGU6OnRvVGhpcyhK
U0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIEVDTUFNb2RlIGVjbWFNb2RlKQotewotICAgIGlmIChl
Y21hTW9kZSA9PSBTdHJpY3RNb2RlKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAg
ICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7Ci19Ci0KLXZvaWQgSlNOYW1lU2NvcGU6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQotewotICAgIEpTTmFt
ZVNjb3BlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTmFtZVNjb3BlKj4oY2VsbCk7Ci0gICAgaWYg
KHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgLy8gRG91YmxlIGxvb2t1cCBpbiBzdHJp
Y3QgbW9kZSwgYnV0IHRoaXMgb25seSBvY2N1cnMgd2hlbgotICAgICAgICAvLyBhKSBpbmRpcmVj
dGx5IHdyaXRpbmcgdG8gYW4gZXhjZXB0aW9uIHNsb3QKLSAgICAgICAgLy8gYikgd3JpdGluZyB0
byBhIGZ1bmN0aW9uIGV4cHJlc3Npb24gbmFtZQotICAgICAgICAvLyAoYSkgaXMgdW5saWtlbHks
IGFuZCAoYikgaXMgYW4gZXJyb3IuCi0gICAgICAgIC8vIEFsc28gd2l0aCBhIHNpbmdsZSBlbnRy
eSB0aGUgc3ltYm9sIHRhYmxlIGxvb2t1cCBzaG91bGQgc2ltcGx5IGJlCi0gICAgICAgIC8vIGEg
cG9pbnRlciBjb21wYXJlLgotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsK
LSAgICAgICAgYm9vbCBpc1dyaXRhYmxlID0gdHJ1ZTsKLSAgICAgICAgc3ltYm9sVGFibGVHZXQo
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90LCBpc1dyaXRhYmxlKTsKLSAgICAgICAgaWYg
KCFpc1dyaXRhYmxlKSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAo
c3ltYm9sVGFibGVQdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dC5pc1N0cmljdE1vZGUoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1ib29sIEpTTmFtZVNjb3BlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIHJldHVybiBzeW1ib2xUYWJsZUdldChq
c0Nhc3Q8SlNOYW1lU2NvcGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TmFtZVNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNOYW1lU2NvcGUuaAkocmV2aXNpb24gMTg3ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNOYW1lU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpZm5kZWYgSlNOYW1lU2NvcGVfaAotI2RlZmluZSBKU05hbWVTY29wZV9oCi0KLSNpbmNsdWRl
ICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLS8vIFVzZWQgZm9yIHNjb3BlcyB3aXRoIGEgc2luZ2xlIG5hbWVk
IHZhcmlhYmxlOiBjYXRjaCBhbmQgbmFtZWQgZnVuY3Rpb24gZXhwcmVzc2lvbi4KLWNsYXNzIEpT
TmFtZVNjb3BlIDogcHVibGljIEpTRW52aXJvbm1lbnRSZWNvcmQgewotcHVibGljOgotICAgIHR5
cGVkZWYgSlNFbnZpcm9ubWVudFJlY29yZCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzfCBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3Q7Ci0KLSAgICBlbnVtIFR5cGUgewotICAgICAgICBGdW5jdGlvbk5hbWVTY29w
ZQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBUKiBjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50
U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0g
ICAgICAgIFQqIHNjb3BlT2JqZWN0ID0gbmV3ICgKLSAgICAgICAgICAgIE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxUPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvclNjb3BlU2l6ZSgxKSkpCi0gICAg
ICAgICAgICBUKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUpOwot
ICAgICAgICBzY29wZU9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHZhbHVlKTsKLSAgICAgICAg
cmV0dXJuIHNjb3BlT2JqZWN0OwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgSlNOYW1lU2NvcGUq
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1i
b2xUYWJsZSosIEpTVmFsdWUsIFR5cGUpOwotCi0gICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotCi0gICAgREVDTEFSRV9JTkZPOwotCi0g
ICAgSlNWYWx1ZSB2YWx1ZSgpIHsgcmV0dXJuIHZhcmlhYmxlQXQoU2NvcGVPZmZzZXQoMCkpLmdl
dCgpOyB9Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNW
YWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uVW5pbml0aWFs
aXplZCh2bSk7Ci0gICAgICAgIHZhcmlhYmxlQXQoU2NvcGVPZmZzZXQoMCkpLnNldCh2bSwgdGhp
cywgdmFsdWUpOwotICAgIH0KLQotICAgIEpTTmFtZVNjb3BlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTU2NvcGUqIG5leHQsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKLSAgICAg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIG5leHQsIHN5bWJvbFRhYmxlKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKHN5bWJvbFRhYmxlLT5zY29wZVNpemUoKSA9PSAxKTsKLSAgICB9Ci19OwotCi19
Ci0KLSNlbmRpZiAvLyBKU05hbWVTY29wZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxODc4ODApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDYgQEAKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRl
cklubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlv
bk5hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiTG9v
a3VwLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgpAQCAtMTYwMSwxMSAr
MTYwMCw2IEBAIEpTVmFsdWUgSlNPYmplY3Q6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEUKICAgICBy
ZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmlzRnVu
Y3Rpb25OYW1lU2NvcGVPYmplY3QoKSBjb25zdAotewotICAgIHJldHVybiBpbmhlcml0cyhKU0Z1
bmN0aW9uTmFtZVNjb3BlOjppbmZvKCkpOwotfQotCiB2b2lkIEpTT2JqZWN0OjpzZWFsKFZNJiB2
bSkKIHsKICAgICBpZiAoaXNTZWFsZWQodm0pKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxODc4ODApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDEsNyArNjAxLDYg
QEAgcHVibGljOgogICAgIGJvb2wgaXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0OwogICAgIGJvb2wg
aXNTdGF0aWNTY29wZU9iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNOYW1lU2NvcGVPYmplY3Qo
KSBjb25zdDsKLSAgICBib29sIGlzRnVuY3Rpb25OYW1lU2NvcGVPYmplY3QoKSBjb25zdDsKICAg
ICBib29sIGlzQWN0aXZhdGlvbk9iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNFcnJvckluc3Rh
bmNlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1dpdGhTY29wZSgpIGNvbnN0OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDE4Nzg4MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCi0jaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNp
bmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIApAQCAtMjE3
LDYgKzIxNiwxMyBAQCBib29sIEpTU2NvcGU6OmlzQ2F0Y2hTY29wZSgpCiAgICAgcmV0dXJuIGxl
eGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+c2NvcGVUeXBlKCkgPT0gU3ltYm9sVGFi
bGU6OlNjb3BlVHlwZTo6Q2F0Y2hTY29wZTsKIH0KIAorYm9vbCBKU1Njb3BlOjppc0Z1bmN0aW9u
TmFtZVNjb3BlT2JqZWN0KCkKK3sKKyAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVu
dmlyb25tZW50ID0ganNEeW5hbWljQ2FzdDxKU0xleGljYWxFbnZpcm9ubWVudCo+KHRoaXMpOwor
ICAgIGlmICghbGV4aWNhbEVudmlyb25tZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+c2NvcGVUeXBlKCkgPT0g
U3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6RnVuY3Rpb25OYW1lU2NvcGU7Cit9CiAKIGNvbnN0IGNo
YXIqIHJlc29sdmVNb2RlTmFtZShSZXNvbHZlTW9kZSBtb2RlKQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAkocmV2aXNpb24gMTg3ODgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYs
NiArMTY2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0xleGljYWxTY29wZSgpOwogICAgIGJv
b2wgaXNDYXRjaFNjb3BlKCk7CisgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZVNjb3BlT2JqZWN0KCk7
CiAKICAgICBTY29wZUNoYWluSXRlcmF0b3IgYmVnaW4oKTsKICAgICBTY29wZUNoYWluSXRlcmF0
b3IgZW5kKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAkocmV2aXNpb24gMTg3ODgwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKLSNpbmNsdWRlICJKU05hbWVTY29wZS5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJl
dmlzaW9uIDE4Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1Miw3ICs2NTIsOCBAQCBwdWJsaWM6CiAgICAgZW51
bSBTY29wZVR5cGUgewogICAgICAgICBWYXJTY29wZSwKICAgICAgICAgTGV4aWNhbFNjb3BlLAot
ICAgICAgICBDYXRjaFNjb3BlCisgICAgICAgIENhdGNoU2NvcGUsCisgICAgICAgIEZ1bmN0aW9u
TmFtZVNjb3BlCiAgICAgfTsKICAgICB2b2lkIHNldFNjb3BlVHlwZShTY29wZVR5cGUgdHlwZSkg
eyBtX3Njb3BlVHlwZSA9IHR5cGU7IH0KICAgICBTY29wZVR5cGUgc2NvcGVUeXBlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8U2NvcGVUeXBlPihtX3Njb3BlVHlwZSk7IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE4Nzg4MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyAr
NjEsNiBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAi
SlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKLSNpbmNsdWRlICJK
U05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJKU1By
b21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgo=
</data>
<flag name="review"
          id="283431"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="283441"
          type_id="3"
          status="-"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>