<?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>126439</bug_id>
          
          <creation_ts>2014-01-03 10:32:00 -0800</creation_ts>
          <short_desc>Explicitly use the std:: nested name specifier when using std::pair, std::make_pair</short_desc>
          <delta_ts>2014-01-04 09:23:08 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>andersca</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>964164</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-03 10:32:00 -0800</bug_when>
    <thetext>Explicitly use the std:: nested name specifier when using std::pair, std::make_pair</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964386</commentid>
    <comment_count>1</comment_count>
      <attachid>220371</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-04 01:26:19 -0800</bug_when>
    <thetext>Created attachment 220371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964387</commentid>
    <comment_count>2</comment_count>
      <attachid>220371</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-01-04 01:41:24 -0800</bug_when>
    <thetext>Comment on attachment 220371
Patch

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964408</commentid>
    <comment_count>3</comment_count>
      <attachid>220371</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-04 09:23:03 -0800</bug_when>
    <thetext>Comment on attachment 220371
Patch

Clearing flags on attachment: 220371

Committed r161309: &lt;http://trac.webkit.org/changeset/161309&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964409</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-04 09:23:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220371</attachid>
            <date>2014-01-04 01:26:19 -0800</date>
            <delta_ts>2014-01-04 09:23:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126439-20140104102617.patch</filename>
            <type>text/plain</type>
            <size>91853</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxMzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MzcwODM4ZDc4YjM0ZWM4ZWQ4MWQxMmZhODQ5YjViZWQ0OTNjYmQ5Li5mNWYyZWI3ZWUzMmJkNjcy
NzRmM2Y4NmZiYTEyYjBjNWZlZTU5NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxNC0wMS0wMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgRXhwbGljaXRseSB1c2UgdGhlIHN0ZDo6IG5lc3RlZCBuYW1lIHNwZWNp
ZmllciB3aGVuIHVzaW5nIHN0ZDo6cGFpciwgc3RkOjptYWtlX3BhaXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjQzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgcmVseWluZyBvbiBz
dGQ6OnBhaXIgYW5kIHN0ZDo6bWFrZV9wYWlyIHN5bWJvbHMgYmVpbmcgcHJlc2VudCBpbiB0aGUg
Y3VycmVudCBzY29wZQorICAgICAgICB0aHJvdWdoIHRoZSBwYWlyIGFuZCBtYWtlX3BhaXIgc3lt
Ym9scywgdGhlIHN0ZDo6IHNwZWNpZmllciBzaG91bGQgYmUgdXNlZCBleHBsaWNpdGx5LgorCisg
ICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcGFyZU9wY29k
ZVBhaXJJbmRpY2VzKToKKyAgICAgICAgKEpTQzo6T3Bjb2RlU3RhdHM6On5PcGNvZGVTdGF0cyk6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBw
YXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQmluYXJ5
Tm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6Y29udGFp
bnMpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmdldCk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6YWRkKToKKwogMjAxNC0wMS0wMyAg
RGF2aWQgRmFybGVyICA8ZGZhcmxlckBhcHBsZS5jb20+CiAKICAgICAgICAgW3N1cGVyIGRlYWxs
b2NdIG1pc3NpbmcgaW4gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1t
LCBmYWlscyB0byBidWlsZCB3aXRoIC1XZXJyb3IsLVdvYmpjLW1pc3Npbmctc3VwZXItY2FsbHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOTYwZDM1MGI2MDRlYmFlOTUxZjZkMWM0MTM1OWRmNWVkZDYyNDQ3Yi4uOGZiYjUxZmIz
NWQwMzdlMzMyOGYyYWZjMmJiYzYxMTcwYzNkZTVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
NC0wMS0wMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAg
RXhwbGljaXRseSB1c2UgdGhlIHN0ZDo6IG5lc3RlZCBuYW1lIHNwZWNpZmllciB3aGVuIHVzaW5n
IHN0ZDo6cGFpciwgc3RkOjptYWtlX3BhaXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL1ZlY3RvclRyYWl0cy5oOiBTdG9wIGJyaW5naW5nIHN0
ZDo6cGFpciBpbnRvIHRoZSBjdXJyZW50IHNjb3BlLgorCiAyMDE0LTAxLTAyICBHYXZpbiBCYXJy
YWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBOU0Fj
dGl2aXR5IGhhbmRsaW5nIGNvZGUgZnJvbSBDaGlsZFByb2Nlc3MgdG8gVXNlckFjdGl2aXR5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMDI1NGEyNmZmMGNjMWFmMzYzYWI3NDU2YTFmZjMyNDFiZjUzMDkwMC4uMDg4
YjcxNzFhYTE2NDVhODdkMTg3YzAwMDI1ODNlN2ZlNzI5NGI0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDExNSBAQAorMjAxNC0wMS0wMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgRXhwbGljaXRseSB1c2UgdGhlIHN0ZDo6IG5lc3RlZCBuYW1lIHNwZWNp
ZmllciB3aGVuIHVzaW5nIHN0ZDo6cGFpciwgc3RkOjptYWtlX3BhaXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjQzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgcmVseWluZyBvbiBz
dGQ6OnBhaXIgYW5kIHN0ZDo6bWFrZV9wYWlyIHN5bWJvbHMgYmVpbmcgcHJlc2VudCBpbiB0aGUg
Y3VycmVudCBzY29wZQorICAgICAgICB0aHJvdWdoIHRoZSBwYWlyIGFuZCBtYWtlX3BhaXIgc3lt
Ym9scywgdGhlIHN0ZDo6IHNwZWNpZmllciBzaG91bGQgYmUgdXNlZCBleHBsaWNpdGx5LgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdl
ZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmg6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhQcmVzY3JpcHRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhQb3N0c2NyaXB0cyk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3Bw
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1uQXRJbmRleCk6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dBdEluZGV4KToKKyAgICAgICAgKHdlYmtp
dEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkV4dGVudEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vz
c2libGVUYWJsZUdldFJvd0V4dGVudEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJs
ZUdldENvbHVtbkhlYWRlcik6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dI
ZWFkZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBhY2Nlc3NpYmlsaXR5SGVhZGVyRWxlbWVudHNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVJvd1JhbmdlXSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlDb2x1bW5SYW5nZV0pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5tbToKKyAgICAgICAgKGNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgICogZG9t
L1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXR0cmlidXRlTmFtZVNvcnQp
OgorICAgICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZVRpbWVGcmFnbWVudCk6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
U2VhcmNoVXRpbHM6OmdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlYXJjaFV0aWxzOjpzZWFyY2hJblRleHRCeUxpbmVzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVBhdGNoU3VwcG9ydDo6ZGlmZik6CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBv
cnQ6OmlubmVyUGF0Y2hDaGlsZHJlbik6CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3Vw
cG9ydC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckFnZW50OjpldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEltYWdlOjpicm9rZW5JbWFnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRI
b3N0bmFtZXNJbk1haWxUb1VSTCk6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVIb3N0bmFtZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llRGF0YWJhc2VCYWNraW5nU3Rv
cmUvQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNo
ZWRGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmFkb3B0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VDYWNoZUhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9BdG9t
aWNTdHJpbmdLZXllZE1SVUNhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9MaW5lQnJl
YWtJdGVyYXRvclBvb2xJQ1UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6aW1hZ2VTaXplRm9yRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWNo
ZWRDb2xsYXBzZWRCb3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpnbHlw
aERhdGFGb3JDaGFyYWN0ZXIpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y29uc3RydWN0RnJv
bVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmFk
ZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRJ
bnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
SW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9y
OjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdl
ck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6OmNvbnN0cnVj
dEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25h
bE51bWJlckFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXJPcHRpb25hbEludGVnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVOdW1iZXJPcHRpb25hbE51bWJl
cik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVkVHlwZTo6bnVtYmVyT3B0aW9uYWxOdW1iZXIpOgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRUeXBlQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21CYXNlVmFsdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpyZXNldEZyb21CYXNlVmFsdWVzKToKKyAgICAg
ICAgKiBzdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmg6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9T
TUlMVGltZUNvbnRhaW5lci5oOgorCiAyMDE0LTAxLTAzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEF0dGVtcHQgdG8gZml4IEVGTCBidWlsZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCBlOTNjMTRmNTE4MmNhNTk1YTYyZGMzZjJmYjQzNTU4NjNjZDJiYzRh
Li4zMTM5NjM0NDNiN2ZlZWZiNmQ4NzdhZTFhYWU5OWNkY2FmOGRlYjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMDEtMDMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgorCisgICAgICAgIEV4cGxpY2l0bHkgdXNlIHRoZSBzdGQ6OiBuZXN0ZWQg
bmFtZSBzcGVjaWZpZXIgd2hlbiB1c2luZyBzdGQ6OnBhaXIsIHN0ZDo6bWFrZV9wYWlyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY0MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIHJl
bHlpbmcgb24gc3RkOjpwYWlyIGFuZCBzdGQ6Om1ha2VfcGFpciBzeW1ib2xzIGJlaW5nIHByZXNl
bnQgaW4gdGhlIGN1cnJlbnQgc2NvcGUKKyAgICAgICAgdGhyb3VnaCB0aGUgcGFpciBhbmQgbWFr
ZV9wYWlyIHN5bWJvbHMsIHRoZSBzdGQ6OiBzcGVjaWZpZXIgc2hvdWxkIGJlIHVzZWQgZXhwbGlj
aXRseS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5oOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpM
b2NhbE9iamVjdE1hcDo6aWRGb3JPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpyZXRhaW4pOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpyZWxlYXNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9i
amVjdE1hcDo6Zm9yZ2V0KToKKwogMjAxNC0wMS0wMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJy
YWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFdpbmRvd0lzVmlzaWJsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDNjMTMzN2EzYWUxYmVlMmFhYzA0NTk4MjMwMjEyNjU3MDhjN2U0ODcuLjI0YThm
YzAwZmQxYzhhYjYyYjFlZmI0NDlmNzc3NWQwMGJlMGJkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNCBAQAorMjAxNC0wMS0wMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
CisKKyAgICAgICAgRXhwbGljaXRseSB1c2UgdGhlIHN0ZDo6IG5lc3RlZCBuYW1lIHNwZWNpZmll
ciB3aGVuIHVzaW5nIHN0ZDo6cGFpciwgc3RkOjptYWtlX3BhaXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjQzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgcmVseWluZyBvbiBzdGQ6
OnBhaXIgYW5kIHN0ZDo6bWFrZV9wYWlyIHN5bWJvbHMgYmVpbmcgcHJlc2VudCBpbiB0aGUgY3Vy
cmVudCBzY29wZQorICAgICAgICB0aHJvdWdoIHRoZSBwYWlyIGFuZCBtYWtlX3BhaXIgc3ltYm9s
cywgdGhlIHN0ZDo6IHNwZWNpZmllciBzaG91bGQgYmUgdXNlZCBleHBsaWNpdGx5LgorCisgICAg
ICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6ZW5j
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVOZXdX
ZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorCiAyMDE0LTAx
LTAzICBQaW90ciBHcmFkICA8cC5ncmFkQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEJ1aWxkIGJy
YWtlIGFmdGVyIDE2MTA0NSBvbiBFRkwgcG9ydCB3aXRoIFdlYktpdDIgYW5kIGdjYyA0LjYuMwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcAppbmRleCA5MmNlOGJiMzFk
MGUwZjI3YWFlYjQ4ODNmMTI5ODI1YTRjMTg3MDQ3Li4yNmY1MzUxMWFlNTdmY2I1ZmU5YTJkNThj
MTZkNGY0MzVmODY1OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2Rl
LmNwcApAQCAtNzgsOSArNzgsOSBAQCBzdGF0aWMgaW50IGNvbXBhcmVPcGNvZGVJbmRpY2VzKGNv
bnN0IHZvaWQqIGxlZnQsIGNvbnN0IHZvaWQqIHJpZ2h0KQogCiBzdGF0aWMgaW50IGNvbXBhcmVP
cGNvZGVQYWlySW5kaWNlcyhjb25zdCB2b2lkKiBsZWZ0LCBjb25zdCB2b2lkKiByaWdodCkKIHsK
LSAgICBwYWlyPGludCwgaW50PiBsZWZ0UGFpciA9ICoocGFpcjxpbnQsIGludD4qKSBsZWZ0Owor
ICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gbGVmdFBhaXIgPSAqKHBhaXI8aW50LCBpbnQ+KikgbGVm
dDsKICAgICBsb25nIGxvbmcgbGVmdFZhbHVlID0gT3Bjb2RlU3RhdHM6Om9wY29kZVBhaXJDb3Vu
dHNbbGVmdFBhaXIuZmlyc3RdW2xlZnRQYWlyLnNlY29uZF07Ci0gICAgcGFpcjxpbnQsIGludD4g
cmlnaHRQYWlyID0gKihwYWlyPGludCwgaW50PiopIHJpZ2h0OworICAgIHN0ZDo6cGFpcjxpbnQs
IGludD4gcmlnaHRQYWlyID0gKihwYWlyPGludCwgaW50PiopIHJpZ2h0OwogICAgIGxvbmcgbG9u
ZyByaWdodFZhbHVlID0gT3Bjb2RlU3RhdHM6Om9wY29kZVBhaXJDb3VudHNbcmlnaHRQYWlyLmZp
cnN0XVtyaWdodFBhaXIuc2Vjb25kXTsKICAgICAKICAgICBpZiAobGVmdFZhbHVlIDwgcmlnaHRW
YWx1ZSkKQEAgLTEwNywxMiArMTA3LDEyIEBAIE9wY29kZVN0YXRzOjp+T3Bjb2RlU3RhdHMoKQog
ICAgICAgICBzb3J0ZWRJbmRpY2VzW2ldID0gaTsKICAgICBxc29ydChzb3J0ZWRJbmRpY2VzLmRh
dGEoKSwgbnVtT3Bjb2RlSURzLCBzaXplb2YoaW50KSwgY29tcGFyZU9wY29kZUluZGljZXMpOwog
ICAgIAotICAgIHBhaXI8aW50LCBpbnQ+IHNvcnRlZFBhaXJJbmRpY2VzW251bU9wY29kZUlEcyAq
IG51bU9wY29kZUlEc107Ci0gICAgcGFpcjxpbnQsIGludD4qIGN1cnJlbnRQYWlySW5kZXggPSBz
b3J0ZWRQYWlySW5kaWNlczsKKyAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+IHNvcnRlZFBhaXJJbmRp
Y2VzW251bU9wY29kZUlEcyAqIG51bU9wY29kZUlEc107CisgICAgc3RkOjpwYWlyPGludCwgaW50
PiogY3VycmVudFBhaXJJbmRleCA9IHNvcnRlZFBhaXJJbmRpY2VzOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCiAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwg
bnVtT3Bjb2RlSURzOyArK2opCi0gICAgICAgICAgICAqKGN1cnJlbnRQYWlySW5kZXgrKykgPSBt
YWtlX3BhaXIoaSwgaik7Ci0gICAgcXNvcnQoc29ydGVkUGFpckluZGljZXMsIG51bU9wY29kZUlE
cyAqIG51bU9wY29kZUlEcywgc2l6ZW9mKHBhaXI8aW50LCBpbnQ+KSwgY29tcGFyZU9wY29kZVBh
aXJJbmRpY2VzKTsKKyAgICAgICAgICAgICooY3VycmVudFBhaXJJbmRleCsrKSA9IHN0ZDo6bWFr
ZV9wYWlyKGksIGopOworICAgIHFzb3J0KHNvcnRlZFBhaXJJbmRpY2VzLCBudW1PcGNvZGVJRHMg
KiBudW1PcGNvZGVJRHMsIHNpemVvZihzdGQ6OnBhaXI8aW50LCBpbnQ+KSwgY29tcGFyZU9wY29k
ZVBhaXJJbmRpY2VzKTsKICAgICAKICAgICBkYXRhTG9nRigiXG5FeGVjdXRlZCBvcGNvZGUgc3Rh
dGlzdGljc1xuIik7IAogICAgIApAQCAtMTI5LDcgKzEyOSw3IEBAIE9wY29kZVN0YXRzOjp+T3Bj
b2RlU3RhdHMoKQogICAgIGRhdGFMb2dGKCIyLW9wY29kZSBzZXF1ZW5jZXMgYnkgZnJlcXVlbmN5
OiAlbGxkXG5cbiIsIHRvdGFsSW5zdHJ1Y3Rpb25zKTsKICAgICAKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bU9wY29kZUlEcyAqIG51bU9wY29kZUlEczsgKytpKSB7Ci0gICAgICAgIHBhaXI8
aW50LCBpbnQ+IGluZGV4UGFpciA9IHNvcnRlZFBhaXJJbmRpY2VzW2ldOworICAgICAgICBzdGQ6
OnBhaXI8aW50LCBpbnQ+IGluZGV4UGFpciA9IHNvcnRlZFBhaXJJbmRpY2VzW2ldOwogICAgICAg
ICBsb25nIGxvbmcgY291bnQgPSBvcGNvZGVQYWlyQ291bnRzW2luZGV4UGFpci5maXJzdF1baW5k
ZXhQYWlyLnNlY29uZF07CiAgICAgICAgIAogICAgICAgICBpZiAoIWNvdW50KQpAQCAtMTUwLDcg
KzE1MCw3IEBAIE9wY29kZVN0YXRzOjp+T3Bjb2RlU3RhdHMoKQogICAgICAgICBkYXRhTG9nRigi
XG4lczolcyAlbGxkIC0gJS4yZiUlXG4iLCBvcGNvZGVOYW1lc1tpbmRleF0sIHBhZE9wY29kZU5h
bWUoKE9wY29kZUlEKWluZGV4LCAyOCksIG9wY29kZUNvdW50LCBvcGNvZGVQcm9wb3J0aW9uICog
MTAwLjApOwogCiAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtT3Bjb2RlSURzICogbnVt
T3Bjb2RlSURzOyArK2opIHsKLSAgICAgICAgICAgIHBhaXI8aW50LCBpbnQ+IGluZGV4UGFpciA9
IHNvcnRlZFBhaXJJbmRpY2VzW2pdOworICAgICAgICAgICAgc3RkOjpwYWlyPGludCwgaW50PiBp
bmRleFBhaXIgPSBzb3J0ZWRQYWlySW5kaWNlc1tqXTsKICAgICAgICAgICAgIGxvbmcgbG9uZyBw
YWlyQ291bnQgPSBvcGNvZGVQYWlyQ291bnRzW2luZGV4UGFpci5maXJzdF1baW5kZXhQYWlyLnNl
Y29uZF07CiAgICAgICAgICAgICBkb3VibGUgcGFpclByb3BvcnRpb24gPSAoKGRvdWJsZSkgcGFp
ckNvdW50KSAvICgoZG91YmxlKSB0b3RhbEluc3RydWN0aW9uUGFpcnMpOwogICAgICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggNDU0ODEwMTZiYzEzYWY5NTk5YWUyOTRlYmYwZWUxY2M4ZjM2OTQy
ZS4uODkxYjVkZWU5ODI2YzA2ZjhiODY4MTdkNDlkOTFhYWQ3NWEzMzVjMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTM4MSw3ICszODEsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAgICAg
ICAgICAgbV9jb2RlQmxvY2stPmFkZFBhcmFtZXRlcigpOwogICAgICAgICAgICAgUmVnaXN0ZXJJ
RCYgcGFyYW1ldGVyID0gcmVnaXN0ZXJGb3IoaW5kZXgpOwogICAgICAgICAgICAgcGFyYW1ldGVy
LnNldEluZGV4KGluZGV4KTsKLSAgICAgICAgICAgIGRlY29uc3RydWN0ZWRQYXJhbWV0ZXJzLmFw
cGVuZChtYWtlX3BhaXIoJnBhcmFtZXRlciwgcGF0dGVybikpOworICAgICAgICAgICAgZGVjb25z
dHJ1Y3RlZFBhcmFtZXRlcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCZwYXJhbWV0ZXIsIHBhdHRl
cm4pKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gc2lt
cGxlUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmluZGluZ05vZGUqPihwYXR0ZXJuKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYzZhMTIyOWFi
ZDAzMjJjOWI0MjI4NDhiNDlmZGU2NDcwM2Y2YWFjZS4uNTg3MTM4NjRlODUyYjZjYjkyMDc3NzNl
NWFkMDYwZmE2ODcyYTdkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKQEAgLTcyMCw4ICs3MjAsOCBAQCBwcml2YXRlOgogICAgIFNjb3BlIG1fc2NvcGU7CiAg
ICAgVmVjdG9yPEJpbmFyeU9wZXJhbmQsIDEwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9iaW5h
cnlPcGVyYW5kU3RhY2s7CiAgICAgVmVjdG9yPEFzc2lnbm1lbnRJbmZvLCAxMCwgVW5zYWZlVmVj
dG9yT3ZlcmZsb3c+IG1fYXNzaWdubWVudEluZm9TdGFjazsKLSAgICBWZWN0b3I8cGFpcjxpbnQs
IGludD4sIDEwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9iaW5hcnlPcGVyYXRvclN0YWNrOwot
ICAgIFZlY3RvcjxwYWlyPGludCwgSlNUZXh0UG9zaXRpb24+LCAxMCwgVW5zYWZlVmVjdG9yT3Zl
cmZsb3c+IG1fdW5hcnlUb2tlblN0YWNrOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+
LCAxMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fYmluYXJ5T3BlcmF0b3JTdGFjazsKKyAgICBW
ZWN0b3I8c3RkOjpwYWlyPGludCwgSlNUZXh0UG9zaXRpb24+LCAxMCwgVW5zYWZlVmVjdG9yT3Zl
cmZsb3c+IG1fdW5hcnlUb2tlblN0YWNrOwogICAgIGludCBtX2V2YWxDb3VudDsKIH07CiAKQEAg
LTg5OCw3ICs4OTgsNyBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9u
Q2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIHJldHVybiBub2Rl
OwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpbmFyeU5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IHRva2VuLCBwYWlyPEV4cHJlc3Npb25Ob2Rl
KiwgQmluYXJ5T3BJbmZvPiBsaHMsIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+
IHJocykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQgdG9rZW4sIHN0ZDo6cGFpcjxFeHByZXNzaW9u
Tm9kZSosIEJpbmFyeU9wSW5mbz4gbGhzLCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5h
cnlPcEluZm8+IHJocykKIHsKICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgY2FzZSBPUjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzOTViMmM2NmNlMDdlMGZl
NTdhMWEzNmM1YmUwNjkwODJlYTVhYTY2Li5lMmZhOTNkZTA0YWJlNDczZDgyODhhYjc3NWQ5MTdh
ZjNlNjI3YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0x
NDI3LDcgKzE0MjcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChpZkxvY2F0aW9uLCBjb25kaXRpb24sIHRydWVCbG9j
aywgMCwgc3RhcnQsIGVuZCk7CiAKICAgICBWZWN0b3I8VHJlZUV4cHJlc3Npb24+IGV4cHJTdGFj
azsKLSAgICBWZWN0b3I8cGFpcjxpbnQsIGludD4+IHBvc1N0YWNrOworICAgIFZlY3RvcjxzdGQ6
OnBhaXI8aW50LCBpbnQ+PiBwb3NTdGFjazsKICAgICBWZWN0b3I8SlNUb2tlbkxvY2F0aW9uPiB0
b2tlbkxvY2F0aW9uU3RhY2s7CiAgICAgVmVjdG9yPFRyZWVTdGF0ZW1lbnQ+IHN0YXRlbWVudFN0
YWNrOwogICAgIGJvb2wgdHJhaWxpbmdFbHNlID0gZmFsc2U7CkBAIC0xNDU2LDcgKzE0NTYsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBmYWlsSWZGYWxzZShpbm5lclRydWVC
bG9jaywgIkV4cGVjdGVkIGEgc3RhdGVtZW50IGFzIHRoZSBib2R5IG9mIGFuIGlmIGJsb2NrIik7
CiAgICAgICAgIHRva2VuTG9jYXRpb25TdGFjay5hcHBlbmQodGVtcExvY2F0aW9uKTsKICAgICAg
ICAgZXhwclN0YWNrLmFwcGVuZChpbm5lckNvbmRpdGlvbik7Ci0gICAgICAgIHBvc1N0YWNrLmFw
cGVuZChtYWtlX3BhaXIoaW5uZXJTdGFydCwgaW5uZXJFbmQpKTsKKyAgICAgICAgcG9zU3RhY2su
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlubmVyU3RhcnQsIGlubmVyRW5kKSk7CiAgICAgICAgIHN0
YXRlbWVudFN0YWNrLmFwcGVuZChpbm5lclRydWVCbG9jayk7CiAgICAgfSB3aGlsZSAobWF0Y2go
RUxTRSkpOwogCkBAIC0xNDY1LDcgKzE0NjUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAog
ICAgICAgICBleHByU3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBUcmVlU3RhdGVtZW50IHRy
dWVCbG9jayA9IHN0YXRlbWVudFN0YWNrLmxhc3QoKTsKICAgICAgICAgc3RhdGVtZW50U3RhY2su
cmVtb3ZlTGFzdCgpOwotICAgICAgICBwYWlyPGludCwgaW50PiBwb3MgPSBwb3NTdGFjay5sYXN0
KCk7CisgICAgICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gcG9zID0gcG9zU3RhY2subGFzdCgpOwog
ICAgICAgICBwb3NTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBl
bHNlTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uU3RhY2subGFzdCgpOwogICAgICAgICB0b2tlbkxv
Y2F0aW9uU3RhY2sucmVtb3ZlTGFzdCgpOwpAQCAtMTQ3OSw3ICsxNDc5LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlmU3RhdGVtZW50KFQKICAgICAgICAgc3RhdGVtZW50U3RhY2sucmVtb3ZlTGFzdCgpOwogICAg
ICAgICBUcmVlU3RhdGVtZW50IHRydWVCbG9jayA9IHN0YXRlbWVudFN0YWNrLmxhc3QoKTsKICAg
ICAgICAgc3RhdGVtZW50U3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBwYWlyPGludCwgaW50
PiBwb3MgPSBwb3NTdGFjay5sYXN0KCk7CisgICAgICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gcG9z
ID0gcG9zU3RhY2subGFzdCgpOwogICAgICAgICBwb3NTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAg
ICAgIEpTVG9rZW5Mb2NhdGlvbiBlbHNlTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uU3RhY2subGFz
dCgpOwogICAgICAgICB0b2tlbkxvY2F0aW9uU3RhY2sucmVtb3ZlTGFzdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggOWU5YmZiNThjYjhhOTlh
ZDkwYmY1ZWRhZGRmOWJlYjM3MmMyM2Q4Ni4uMjE5MWIyZWVmNDFhMDUwODNmM2MyOTRlMzZhYjJj
ZGQyNDcwYmEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpjb250
YWlucyhTdHJpbmdJbXBsKiByZXAsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpIGNvCiAgICAgICAgIFN0
cnVjdHVyZSogdHJhbnNpdGlvbiA9IHNpbmdsZVRyYW5zaXRpb24oKTsKICAgICAgICAgcmV0dXJu
IHRyYW5zaXRpb24gJiYgdHJhbnNpdGlvbi0+bV9uYW1lSW5QcmV2aW91cyA9PSByZXAgJiYgdHJh
bnNpdGlvbi0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyA9PSBhdHRyaWJ1dGVzOwogICAgIH0KLSAg
ICByZXR1cm4gbWFwKCktPmdldChtYWtlX3BhaXIocmVwLCBhdHRyaWJ1dGVzKSk7CisgICAgcmV0
dXJuIG1hcCgpLT5nZXQoc3RkOjptYWtlX3BhaXIocmVwLCBhdHRyaWJ1dGVzKSk7CiB9CiAKIGlu
bGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6Z2V0KFN0cmluZ0ltcGwq
IHJlcCwgdW5zaWduZWQgYXR0cmlidXRlcykgY29uc3QKQEAgLTgwLDcgKzgwLDcgQEAgaW5saW5l
IFN0cnVjdHVyZSogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpnZXQoU3RyaW5nSW1wbCogcmVw
LCB1bnNpZ25lZCBhdHRyaWIKICAgICAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gc2luZ2xl
VHJhbnNpdGlvbigpOwogICAgICAgICByZXR1cm4gKHRyYW5zaXRpb24gJiYgdHJhbnNpdGlvbi0+
bV9uYW1lSW5QcmV2aW91cyA9PSByZXAgJiYgdHJhbnNpdGlvbi0+bV9hdHRyaWJ1dGVzSW5QcmV2
aW91cyA9PSBhdHRyaWJ1dGVzKSA/IHRyYW5zaXRpb24gOiAwOwogICAgIH0KLSAgICByZXR1cm4g
bWFwKCktPmdldChtYWtlX3BhaXIocmVwLCBhdHRyaWJ1dGVzKSk7CisgICAgcmV0dXJuIG1hcCgp
LT5nZXQoc3RkOjptYWtlX3BhaXIocmVwLCBhdHRyaWJ1dGVzKSk7CiB9CiAKIGlubGluZSB2b2lk
IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6YWRkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkBAIC0xMDUsNyArMTA1LDcgQEAgaW5saW5lIHZvaWQgU3RydWN0dXJlVHJhbnNpdGlvblRh
YmxlOjphZGQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAvLyBOZXdlciB2ZXJz
aW9ucyBvZiB0aGUgU1RMIGhhdmUgYW4gc3RkOjptYWtlX3BhaXIgZnVuY3Rpb24gdGhhdCB0YWtl
cyBydmFsdWUgcmVmZXJlbmNlcy4KICAgICAvLyBXaGVuIGVpdGhlciBvZiB0aGUgcGFyYW1ldGVy
cyBhcmUgYml0ZmllbGRzLCB0aGUgQysrIGNvbXBpbGVyIHdpbGwgdHJ5IHRvIGJpbmQgdGhlbSBh
cyBsdmFsdWVzLCB3aGljaCBpcyBpbnZhbGlkLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCB1c2UgdW5h
cnkgIisiIHRvIG1ha2UgdGhlIHBhcmFtZXRlciBhbiBydmFsdWUuCiAgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTI2MSBmb3IgbW9yZSBkZXRhaWxz
Ci0gICAgbWFwKCktPnNldChtYWtlX3BhaXIoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLmdl
dCgpLCArc3RydWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzKSwgc3RydWN0dXJlKTsKKyAg
ICBtYXAoKS0+c2V0KHN0ZDo6bWFrZV9wYWlyKHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5n
ZXQoKSwgK3N0cnVjdHVyZS0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyksIHN0cnVjdHVyZSk7CiB9
CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wU3RhdGlzdGljcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9WZWN0b3JUcmFpdHMuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCmlu
ZGV4IDNmMmQ3YzI3MjU1NmE3ZDNhMGI4NmVmOWM1OTQwYTlhNGFjMGQ3NzkuLmUzNTk1Y2RlMWM2
M2Y2M2EzODNiY2VkZDA3ZDNhNmJjODM5NTI1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1ZlY3RvclRyYWl0cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCkBAIC0y
Nyw4ICsyNyw2IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDxtZW1vcnk+CiAKLXVz
aW5nIHN0ZDo6cGFpcjsKLQogbmFtZXNwYWNlIFdURiB7CiAKICAgICBjbGFzcyBBdG9taWNTdHJp
bmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVHJhY2tlci5jcHAKaW5kZXggZjRlOWIwYzA3NWRkMGZlMWQ0MDYwNGU4OWFmN2JmNTRiY2Q1
ZmUyZC4uMzhlYzFjNTcyMTAyZWY0ZDRkZjE4OTNjZjI5NGVhYjJhNjhlNjIzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2Vy
LmNwcApAQCAtMTEyNCw3ICsxMTI0LDcgQEAgc3RhdGljIE11dGV4JiBub3RpZmljYXRpb25NdXRl
eCgpCiAgICAgcmV0dXJuIG11dGV4OwogfQogCi10eXBlZGVmIFZlY3RvcjxwYWlyPFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIFN0cmluZz4+IE5vdGlmaWNhdGlvblF1ZXVlOwordHlwZWRlZiBWZWN0
b3I8c3RkOjpwYWlyPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFN0cmluZz4+IE5vdGlmaWNhdGlv
blF1ZXVlOwogCiBzdGF0aWMgTm90aWZpY2F0aW9uUXVldWUmIG5vdGlmaWNhdGlvblF1ZXVlKCkK
IHsKQEAgLTExMzYsNyArMTEzNiw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzY2hlZHVsZU5v
dGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zCiB7CiAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG5vdGlmaWNhdGlvbk11dGV4KCkpOwogCi0gICAgbm90aWZpY2F0
aW9uUXVldWUoKS5hcHBlbmQocGFpcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTdHJpbmc+KG9y
aWdpbi0+aXNvbGF0ZWRDb3B5KCksIG5hbWUuaXNvbGF0ZWRDb3B5KCkpKTsKKyAgICBub3RpZmlj
YXRpb25RdWV1ZSgpLmFwcGVuZChzdGQ6OnBhaXI8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU3Ry
aW5nPihvcmlnaW4tPmlzb2xhdGVkQ29weSgpLCBuYW1lLmlzb2xhdGVkQ29weSgpKSk7CiAgICAg
c2NoZWR1bGVGb3JOb3RpZmljYXRpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBjMTQzMjk3ZTgzNjIxYmRlM2M2N2UwZjY2N2Iz
NjE3ODM3YjQzZDg0Li45NmIwZjg1ODg1YjFlNDNjNGExNzZmNjc4NmZjYWFjZTM3OTgzZDRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMjM1
LDcgKzIzNSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxBWElEPiBtX2lkc0luVXNlOwogICAg
IAogICAgIFRpbWVyPEFYT2JqZWN0Q2FjaGU+IG1fbm90aWZpY2F0aW9uUG9zdFRpbWVyOwotICAg
IFZlY3RvcjxwYWlyPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiwgQVhOb3RpZmljYXRpb24+
PiBtX25vdGlmaWNhdGlvbnNUb1Bvc3Q7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QWNj
ZXNzaWJpbGl0eU9iamVjdD4sIEFYTm90aWZpY2F0aW9uPj4gbV9ub3RpZmljYXRpb25zVG9Qb3N0
OwogICAgIHZvaWQgbm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQoVGltZXI8QVhPYmplY3RDYWNo
ZT4qKTsKICAgICAKICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogZm9jdXNlZEltYWdl
TWFwVUlFbGVtZW50KEhUTUxBcmVhRWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKaW5kZXgg
ZjU3YTVmYTk3YjkwZWYwNGQ4NGE1ODUzZjY5ZDE4MjFlN2RjMmMzZS4uN2ZlMzFjNzhkZGVhZDBi
MDBjNzA4NTlmNDYxZTIzZGE1YjgzZmUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCkBAIC02OCw3
ICs2OCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6
OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gcGFyZW50OwogfQogICAgIAotdm9pZCBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiYgcm93UmFuZ2UpCit2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0lu
ZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1JhbmdlKQogewogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwog
ICAgIGlmICghcGFyZW50KQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklB
R3JpZENlbGw6OnJvd0luZGV4UmFuZ2UocGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiByb3dSYW5n
ZQogICAgIHJvd1JhbmdlLnNlY29uZCA9IDE7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIGNvbHVt
blJhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdl
KHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkKIHsKICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBp
ZiAoIXBhcmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgKaW5kZXggY2Y5NzhiNGZhZjE5NDNhOWI4OWU1OWM5
MDk2MzhhZGFjYzYwYzEwOS4uNmQzMDBlMWYwNTZlYjAxZWI2YjIzYmM5YzZkNTFhNDhjM2UxYzM2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
QVJJQUdyaWRDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsLmgKQEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwoKTsKICAgICAKICAgICAvLyBmaWxscyBpbiB0
aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQg
cm93SW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1JhbmdlKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiYgcm93UmFuZ2UpIE9WRVJSSURFOwogICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBs
b2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgY2VsbAotICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5J
bmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkgT1ZFUlJJREU7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRUYWJsZSgpIGNvbnN0IE9WRVJSSURF
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAppbmRleCAyMzU3YjRmY2QwOGQwMTk4YjgyNGZkNGRjOTg0YTVlNDM0YzliZWE0Li43NjFk
ZjNkMjIyYmY2NTBjNjc0MGRhY2ZkZWM0YzQ3YTIxNjYyYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtODU4LDcgKzg1
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBtYXRoTGluZVRoaWNrbmVzcygpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KICAgICAKICAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9uZW50cy4KLSAg
ICB0eXBlZGVmIFZlY3RvcjxwYWlyPEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4+IEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlyczsKKyAgICB0eXBlZGVm
IFZlY3RvcjxzdGQ6OnBhaXI8QWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqPj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzOwogICAgIHZpcnR1YWwgdm9p
ZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlz
Y3JpcHRQYWlycyYpIHsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYTUzY2JiZWY0
YmFmMmMxOGRlNjFhOGNhY2I5NGNjNzMwNzY1ZjliYi4uYzMxOTk3ODBkM2RhNGEwZjIyY2ExYjZh
NmMxZThiZDA0ZGExNjllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zNzE2LDcgKzM3MTYs
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhQcmVzY3JpcHRzKEFjY2Vz
c2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
Ym9vbCBmb3VuZFByZXNjcmlwdCA9IGZhbHNlOwotICAgIHBhaXI8QWNjZXNzaWJpbGl0eU9iamVj
dCosIEFjY2Vzc2liaWxpdHlPYmplY3QqPiBwcmVzY3JpcHRQYWlyOworICAgIHN0ZDo6cGFpcjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eU9iamVjdCo+IHByZXNjcmlwdFBhaXI7
CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoZm91bmRQcmVzY3JpcHQp
IHsKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4Q2hpbGQgPSBheE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKGNoaWxkKTsKQEAgLTM3NDYsNyArMzc0Niw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRo
TXVsdGlzY3JpcHRQYWlyCiAKICAgICAvLyBJbiBNdWx0aXNjcmlwdHMsIHRoZSBwb3N0LXNjcmlw
dCBlbGVtZW50cyBzdGFydCBhZnRlciB0aGUgZmlyc3QgZWxlbWVudCAod2hpY2ggaXMgdGhlIGJh
c2UpCiAgICAgLy8gYW5kIGNvbnRpbnVlIHVudGlsIGEgPG1wcmVzY3JpcHRzPiB0YWcgaXMgZm91
bmQKLSAgICBwYWlyPEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4g
cG9zdHNjcmlwdFBhaXI7CisgICAgc3RkOjpwYWlyPEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Kj4gcG9zdHNjcmlwdFBhaXI7CiAgICAgYm9vbCBmb3VuZEJhc2VFbGVt
ZW50ID0gZmFsc2U7CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUoKS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hp
bGQtPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1wcmVzY3JpcHRzVGFnKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCA0
MmM3ZGU3ODc5NDc5Yjc5M2QzYzNmYjVkODk3ZmIxODQ0MWQ2NjAzLi4zNmJhZjFjOWJlNTZjZjdj
YTljMDIzYmUyOTQ3MzU3MzM4YmI1MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC01MTksOCArNTE5LDggQEAgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5k
Um93KHVuc2lnbmVkIGNvbHVtbiwKICAgICAgICAgICAgIGlmICghY2hpbGQtPmlzVGFibGVDZWxs
KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKLSAgICAgICAgICAgIHBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKKyAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNp
Z25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOworICAgICAgICAgICAgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsKiB0YWJsZUNlbGxDaGlsZCA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChjaGlsZCk7CiAg
ICAgICAgICAgICB0YWJsZUNlbGxDaGlsZC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7
CiAgICAgICAgICAgICB0YWJsZUNlbGxDaGlsZC0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsLmNwcAppbmRleCA4YTJjZDU3NTllMWEwOGIxMmVhNjQ5ZjE3NGVkMzdkNGY4YzRjMWRi
Li4wYzZlNjg1ZDJkYmRhZGNhNzNiNTgyOWNjNjkxMzQ3YWRlNDk3MTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5j
cHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAgcmV0dXJuIENlbGxSb2xl
OwogfQogICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKHBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw6OnJvd0luZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1Jh
bmdlKQogewogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZUNlbGwo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1Jh
bmdlKQogICAgIHJvd1JhbmdlLmZpcnN0ICs9IHJvd09mZnNldDsKIH0KICAgICAKLXZvaWQgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4mIGNvbHVtblJhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5J
bmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkKIHsK
ICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGVDZWxsKCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDZWxsLmgKaW5kZXggYjgxNWUzMTc4MzZhNGNlZDhlMTYzM2M2YTVjMjRj
NGU2MDRiYTM4Yi4uM2FiMWMzMjAzYzE1NGQ4N2ZjNDI5ODk0YTZkMWNlMTQyNTFjY2MxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Rh
YmxlQ2VsbCgpIGNvbnN0IE9WRVJSSURFOwogICAgIAogICAgIC8vIGZpbGxzIGluIHRoZSBzdGFy
dCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgY2VsbAotICAgIHZpcnR1YWwgdm9pZCByb3dJbmRl
eFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpOworICAgIHZpcnR1YWwg
dm9pZCByb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiByb3dSYW5n
ZSk7CiAgICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBv
ZiBjZWxsCi0gICAgdmlydHVhbCB2b2lkIGNvbHVtbkluZGV4UmFuZ2UocGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+JiBjb2x1bW5SYW5nZSk7CisgICAgdmlydHVhbCB2b2lkIGNvbHVtbkluZGV4UmFu
Z2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIGNvbHVtblJhbmdlKTsKICAgICAKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFRhYmxlKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAppbmRleCBkZThlODM0
ZTUyZjYzMGE2NzllYTdkNGFhODQ1NDVkZWFkNzE4ODQ5Li5jYjdmZDg5MGEwNjBmZDExOGQ1MmU3
MDczMzVjYTQxNDgwNWUzN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlVGFibGVH
ZXRDb2x1bW5BdEluZGV4KEF0a1RhYmxlKiB0YWJsZSwgZ2ludCBpbmRleCkKIAogICAgIEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGxBdEluZGV4KHRhYmxlLCBpbmRleCk7CiAg
ICAgaWYgKGF4Q2VsbCkgewotICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1u
UmFuZ2U7CisgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdl
OwogICAgICAgICBheENlbGwtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwogICAgICAg
ICByZXR1cm4gY29sdW1uUmFuZ2UuZmlyc3Q7CiAgICAgfQpAQCAtMTM5LDcgKzEzOSw3IEBAIHN0
YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0F0SW5kZXgoQXRrVGFibGUqIHRh
YmxlLCBnaW50IGluZGV4KQogCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0g
Y2VsbEF0SW5kZXgodGFibGUsIGluZGV4KTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAgICAgIHBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKKyAgICAgICAgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgICAgIGF4Q2VsbC0+cm93SW5kZXhSYW5nZShy
b3dSYW5nZSk7CiAgICAgICAgIHJldHVybiByb3dSYW5nZS5maXJzdDsKICAgICB9CkBAIC0xNzUs
NyArMTc1LDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1uRXh0
ZW50QXQoQXRrVGFibGUqIHRhYmxlLCBnaW50IHJvdywgZ2kKIAogICAgIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGwodGFibGUsIHJvdywgY29sdW1uKTsKICAgICBpZiAoYXhD
ZWxsKSB7Ci0gICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKKyAg
ICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CiAgICAgICAg
IGF4Q2VsbC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgICAgIHJldHVybiBj
b2x1bW5SYW5nZS5zZWNvbmQ7CiAgICAgfQpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBnaW50
IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0V4dGVudEF0KEF0a1RhYmxlKiB0YWJsZSwgZ2lu
dCByb3csIGdpbnQKIAogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGwo
dGFibGUsIHJvdywgY29sdW1uKTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAgICAgIHBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKKyAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgICAgIGF4Q2VsbC0+cm93SW5kZXhSYW5nZShyb3dSYW5n
ZSk7CiAgICAgICAgIHJldHVybiByb3dSYW5nZS5zZWNvbmQ7CiAgICAgfQpAQCAtMjA3LDcgKzIw
Nyw3IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkhl
YWRlcihBdGtUYWJsZSogdGFibGUsIGdpbnQgY29sCiAgICAgICAgIHRvQWNjZXNzaWJpbGl0eVRh
YmxlKGFjY1RhYmxlKS0+Y29sdW1uSGVhZGVycyhhbGxDb2x1bW5IZWFkZXJzKTsKICAgICAgICAg
dW5zaWduZWQgY29sdW1uQ291bnQgPSBhbGxDb2x1bW5IZWFkZXJzLnNpemUoKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNvbHVtbkNvdW50OyArK2spIHsKLSAgICAgICAgICAg
IHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKKyAgICAgICAgICAgIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwogICAgICAgICAgICAgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbCogY2VsbCA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChhbGxDb2x1
bW5IZWFkZXJzLmF0KGspLmdldCgpKTsKICAgICAgICAgICAgIGNlbGwtPmNvbHVtbkluZGV4UmFu
Z2UoY29sdW1uUmFuZ2UpOwogICAgICAgICAgICAgaWYgKGNvbHVtblJhbmdlLmZpcnN0IDw9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb2x1bW4pICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2x1
bW4pIDwgY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5zZWNvbmQpCkBAIC0yMjgsNyAr
MjI4LDcgQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Um93SGVh
ZGVyKEF0a1RhYmxlKiB0YWJsZSwgZ2ludCByb3cpCiAgICAgICAgIHRvQWNjZXNzaWJpbGl0eVRh
YmxlKGFjY1RhYmxlKS0+cm93SGVhZGVycyhhbGxSb3dIZWFkZXJzKTsKICAgICAgICAgdW5zaWdu
ZWQgcm93Q291bnQgPSBhbGxSb3dIZWFkZXJzLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBrID0gMDsgayA8IHJvd0NvdW50OyArK2spIHsKLSAgICAgICAgICAgIHBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiByb3dSYW5nZTsKKyAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IHJvd1JhbmdlOwogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2Vs
bCA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChhbGxSb3dIZWFkZXJzLmF0KGspLmdldCgpKTsK
ICAgICAgICAgICAgIGNlbGwtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwogICAgICAgICAgICAg
aWYgKHJvd1JhbmdlLmZpcnN0IDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb3cpICYmIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihyb3cpIDwgcm93UmFuZ2UuZmlyc3QgKyByb3dSYW5nZS5zZWNvbmQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDVhODMyMzIyMTVj
OGNiMzZiOWFiYWU0ZTdhYThmOGQ5MmJlODk4NGQuLmIzMmRjMGRiNmEwODEyNTM5ZjQ2Y2Y0NjRi
Y2E4MjdkMThhZTY5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CkBAIC04MTMsOCArODEzLDggQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNN
dXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgCiAgICAgLy8gR2V0IHRoZSByb3cgYW5kIGNvbHVtbiByYW5nZSwgc28gd2UgY2Fu
IHVzZSB0aGVtIHRvIGZpbmQgdGhlIGhlYWRlcnMuCi0gICAgcGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IHJvd1JhbmdlOwotICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsK
KyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKKyAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKICAgICB0YWJsZUNlbGwtPnJvd0lu
ZGV4UmFuZ2Uocm93UmFuZ2UpOwogICAgIHRhYmxlQ2VsbC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1
bW5SYW5nZSk7CiAgICAgCkBAIC04NzcsNyArODc3LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3Ry
aW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAg
ICAgaWYgKCF0YWJsZUNlbGwpCiAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5k
LCAwKTsKICAgICAKLSAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CisgICAg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgdGFibGVDZWxsLT5y
b3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKICAgICByZXR1cm4gTlNNYWtlUmFuZ2Uocm93UmFuZ2Uu
Zmlyc3QsIHJvd1JhbmdlLnNlY29uZCk7CiB9CkBAIC04OTEsNyArODkxLDcgQEAgc3RhdGljIHZv
aWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5n
ICpzdHJpbmcpCiAgICAgaWYgKCF0YWJsZUNlbGwpCiAgICAgICAgIHJldHVybiBOU01ha2VSYW5n
ZShOU05vdEZvdW5kLCAwKTsKICAgICAKLSAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29s
dW1uUmFuZ2U7CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7
CiAgICAgdGFibGVDZWxsLT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdlKTsKICAgICByZXR1
cm4gTlNNYWtlUmFuZ2UoY29sdW1uUmFuZ2UuZmlyc3QsIGNvbHVtblJhbmdlLnNlY29uZCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXggMWNhZjRiM2Fl
ZDU2ZTAxNGZmZDU0MmEyN2UyMGNkYTRmNGUwZmFhMS4uOTI2YTRmOTE5ZDgzMTVmZDY5ODgwZWI3
MDRjYWJjOTdhOThiMDQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5tbQpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29udmVydE1hdGhQYWlyc1Rv
TlNBcnJheShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaQogICAgIE5TTXV0
YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpsZW5n
dGhdOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICpwYWlyRGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9u
YXJ5IGRpY3Rpb25hcnldOwotICAgICAgICBwYWlyPEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Kj4gcGFpciA9IHBhaXJzW2ldOworICAgICAgICBzdGQ6OnBhaXI8QWNj
ZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlPYmplY3QqPiBwYWlyID0gcGFpcnNbaV07
CiAgICAgICAgIGlmIChwYWlyLmZpcnN0ICYmIHBhaXIuZmlyc3QtPndyYXBwZXIoKSAmJiAhcGFp
ci5maXJzdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAgICAgICAgICAgW3BhaXJEaWN0
aW9uYXJ5IHNldE9iamVjdDpwYWlyLmZpcnN0LT53cmFwcGVyKCkgZm9yS2V5OnN1YnNjcmlwdEtl
eV07CiAgICAgICAgIGlmIChwYWlyLnNlY29uZCAmJiBwYWlyLnNlY29uZC0+d3JhcHBlcigpICYm
ICFwYWlyLnNlY29uZC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA3NGQyMWY2MjU1NTgxMWQ3MDVjNmViZTkyOGEw
MjM5YjIzNjAwODA0Li4xNWFiMWYzNzliY2M5MzE0Njk2ZTk2M2FkNDc5ZGQ4YTUwNjY1ZjAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMjQ4MCwxMiArMjQ4
MCwxMiBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0
eVJvbGUgdmFsdWUpCiAgICAgCiAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYmxlQ2VsbCgpKSB7CiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
Um93SW5kZXhSYW5nZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIHBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiByb3dSYW5nZTsKKyAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IHJvd1JhbmdlOwogICAgICAgICAgICAgdG9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsKG1fb2Jq
ZWN0KS0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CiAgICAgICAgICAgICByZXR1cm4gW05TVmFs
dWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2Uocm93UmFuZ2UuZmlyc3QsIHJvd1JhbmdlLnNl
Y29uZCldOwogICAgICAgICB9CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZV0pIHsKLSAgICAg
ICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKKyAgICAgICAgICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwogICAgICAgICAgICAg
dG9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsKG1fb2JqZWN0KS0+Y29sdW1uSW5kZXhSYW5nZShjb2x1
bW5SYW5nZSk7CiAgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNN
YWtlUmFuZ2UoY29sdW1uUmFuZ2UuZmlyc3QsIGNvbHVtblJhbmdlLnNlY29uZCldOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCAyYTBhZmJkOGM3NTZiZmExNDRiZGQyZjA5YzU2MzE3MjAwNzExMjJl
Li44OTRmYTg4ODAyMjhlMTYzNTkyNDgxNzk3ZTRlMTYwZmMzNDdhZDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm9uSW5kZXhQcm9wZXJ0aWVz
VGFnID0gMHhGRkZGRkZGRDsKICAqICAgIDxmYWN0b3JTaXplOnVpbnQzMl90PiA8ZmFjdG9yOmJ5
dGV7ZmFjdG9yU2l6ZX0+IDxjcnRFeHBvbmVudFNpemU6dWludDMyX3Q+IDxjcnRFeHBvbmVudDpi
eXRle2NydEV4cG9uZW50U2l6ZX0+IDxjcnRDb2VmZmljaWVudFNpemU6dWludDMyX3Q+IDxjcnRD
b2VmZmljaWVudDpieXRle2NydENvZWZmaWNpZW50U2l6ZX0+CiAgKi8KIAotdHlwZWRlZiBwYWly
PEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU+IERlc2VyaWFsaXphdGlvblJl
c3VsdDsKK3R5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlvblJldHVy
bkNvZGU+IERlc2VyaWFsaXphdGlvblJlc3VsdDsKIAogY2xhc3MgQ2xvbmVCYXNlIHsKIHByb3Rl
Y3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCA3Yzc5NjgxOTI3MzY5
ODUyNzJjNjc5YWY0MGI3ZjNkZTk3N2QzYzkyLi4yZjc0NDk2ZDUwNjNjNWUwM2VlODNkMjQ3MmFm
NGYwMjI1NWFhMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC02Myw4
ICs2Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRJ
bnNlcnRpb25FdmVudHMoTm9kZSYpOwogc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZFJlbW92YWxF
dmVudHMoTm9kZSYpOwogCi10eXBlZGVmIHBhaXI8UmVmUHRyPE5vZGU+LCB1bnNpZ25lZD4gQ2Fs
bGJhY2tQYXJhbWV0ZXJzOwotdHlwZWRlZiBwYWlyPE5vZGVDYWxsYmFjaywgQ2FsbGJhY2tQYXJh
bWV0ZXJzPiBDYWxsYmFja0luZm87Cit0eXBlZGVmIHN0ZDo6cGFpcjxSZWZQdHI8Tm9kZT4sIHVu
c2lnbmVkPiBDYWxsYmFja1BhcmFtZXRlcnM7Cit0eXBlZGVmIHN0ZDo6cGFpcjxOb2RlQ2FsbGJh
Y2ssIENhbGxiYWNrUGFyYW1ldGVycz4gQ2FsbGJhY2tJbmZvOwogdHlwZWRlZiBWZWN0b3I8Q2Fs
bGJhY2tJbmZvPiBOb2RlQ2FsbGJhY2tRdWV1ZTsKIAogc3RhdGljIE5vZGVDYWxsYmFja1F1ZXVl
KiBzX3Bvc3RBdHRhY2hDYWxsYmFja1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwCmluZGV4IDkyMWE5NGZjNmNjMDlmMmIxNDYyMjc4MGExMjA0ZDE0YTA3ZTcxZTYuLjA4MjY4
MmFiNjdhN2Q5ODY2ZmViNmJiYzFjOWFhODNhYTkwNDUyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFByZXNlbnRhdGlvbkF0dHJp
YnV0ZUNhY2hlS2V5IHsKICAgICBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUtleSgpIDogdGFn
TmFtZSgwKSB7IH0KICAgICBBdG9taWNTdHJpbmdJbXBsKiB0YWdOYW1lOwogICAgIC8vIE9ubHkg
dGhlIHZhbHVlcyBuZWVkIHJlZmNvdW50aW5nLgotICAgIFZlY3RvcjxwYWlyPEF0b21pY1N0cmlu
Z0ltcGwqLCBBdG9taWNTdHJpbmc+LCAzPiBhdHRyaWJ1dGVzQW5kVmFsdWVzOworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZz4sIDM+IGF0dHJpYnV0
ZXNBbmRWYWx1ZXM7CiB9OwogCiBzdHJ1Y3QgUHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVFbnRy
eSB7CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKICAgICAgICAgaW5s
aW5lU3R5bGUtPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsICZkb2N1bWVudCgpLmVsZW1l
bnRTaGVldCgpLmNvbnRlbnRzKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgYXR0cmlidXRl
TmFtZVNvcnQoY29uc3QgcGFpcjxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nPiYgcDEs
IGNvbnN0IHBhaXI8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZz4mIHAyKQorc3RhdGlj
IGlubGluZSBib29sIGF0dHJpYnV0ZU5hbWVTb3J0KGNvbnN0IHN0ZDo6cGFpcjxBdG9taWNTdHJp
bmdJbXBsKiwgQXRvbWljU3RyaW5nPiYgcDEsIGNvbnN0IHN0ZDo6cGFpcjxBdG9taWNTdHJpbmdJ
bXBsKiwgQXRvbWljU3RyaW5nPiYgcDIpCiB7CiAgICAgLy8gU29ydCBiYXNlZCBvbiB0aGUgYXR0
cmlidXRlIG5hbWUgcG9pbnRlcnMuIEl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIG9yZGVyIGlz
IGFzIGxvbmcgYXMgaXQgaXMgYWx3YXlzIHRoZSBzYW1lLiAKICAgICByZXR1cm4gcDEuZmlyc3Qg
PCBwMi5maXJzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVu
dFVSSVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJz
ZXIuY3BwCmluZGV4IDg3Nzc5YTBhZThjN2UxNDcxMzVhNzA4OWEwN2MzZDMyNzgwODI3YmEuLjM1
MDQ2ZjlhMjQwYTk2NmE0MzY1NTM3YTYzMDNmNDY1M2E2OTliZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBA
IHZvaWQgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VUaW1lRnJhZ21lbnQoKQogICAgIG1f
dGltZUZvcm1hdCA9IEludmFsaWQ7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9m
cmFnbWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgcGFpcjxTdHJpbmcsIFN0cmluZz4mIGZy
YWdtZW50ID0gbV9mcmFnbWVudHNbaV07CisgICAgICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4mIGZyYWdtZW50ID0gbV9mcmFnbWVudHNbaV07CiAKICAgICAgICAgQVNTRVJUKGZyYWdtZW50
LmZpcnN0LmlzOEJpdCgpKTsKICAgICAgICAgQVNTRVJUKGZyYWdtZW50LnNlY29uZC5pczhCaXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJz
ZXRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBh
cnNlci5oCmluZGV4IDIxM2NmOWQ1OGQwODEwODFmZGU5ZjIyYzc1NjI0ZmJjODdlZGJiYWIuLmJk
NjZlMzQ0ZTU3ZTcxNDRmZWY3YWI4MDgwZTUwYjI5ZWI1MmZkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcoKSB7IHJl
dHVybiBtX2VuY29kaW5nOyB9CiAKLSAgICB0eXBlZGVmIFZlY3RvcjxwYWlyPFN0cmluZywgU3Ry
aW5nPj4gQXR0cmlidXRlTGlzdDsKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+PiBBdHRyaWJ1dGVMaXN0OwogICAgIC8vIFRoZSByZXR1cm5lZCBlbmNvZGluZyBt
aWdodCBub3QgYmUgdmFsaWQuCiAgICAgc3RhdGljIFRleHRFbmNvZGluZyBlbmNvZGluZ0Zyb21N
ZXRhQXR0cmlidXRlcyhjb25zdCBBdHRyaWJ1dGVMaXN0JgogKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKaW5kZXggZDhiZDkzOGFlZTRmZGY0
ZDVjZGFiYmY4MWVlNDgyNmRhNzM2MDliNS4uZTlkZDA3MGYxNTJiYjgzNjkwNTUzYzJmZmQ3N2E1
MGM3NzljOTQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFy
Y2hVdGlscy5jcHAKQEAgLTc5LDkgKzc5LDkgQEAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbkZy
b21PZmZzZXQoc2l6ZV90IG9mZnNldCwgY29uc3QgVmVjdG9yPHNpemVfdD4mIGxpbmVFbmQKICAg
ICByZXR1cm4gVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21aZXJvQmFzZWRJbnQobGlu
ZUluZGV4KSwgT3JkaW5hbE51bWJlcjo6ZnJvbVplcm9CYXNlZEludChjb2x1bW4pKTsKIH0KIAot
c3RhdGljIFZlY3RvcjxwYWlyPGludCwgU3RyaW5nPj4gZ2V0UmVndWxhckV4cHJlc3Npb25NYXRj
aGVzQnlMaW5lcyhjb25zdCBSZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgsIGNvbnN0IFN0cmluZyYg
dGV4dCkKK3N0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPGludCwgU3RyaW5nPj4gZ2V0UmVndWxhckV4
cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhjb25zdCBSZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgsIGNv
bnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBWZWN0b3I8cGFpcjxpbnQsIFN0cmluZz4+IHJlc3Vs
dDsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPGludCwgU3RyaW5nPj4gcmVzdWx0OwogICAgIGlmICh0
ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtOTYsNyArOTYsNyBA
QCBzdGF0aWMgVmVjdG9yPHBhaXI8aW50LCBTdHJpbmc+PiBnZXRSZWd1bGFyRXhwcmVzc2lvbk1h
dGNoZXNCeUxpbmVzKGNvbnN0IFJlZ3VsYQogCiAgICAgICAgIGludCBtYXRjaExlbmd0aDsKICAg
ICAgICAgaWYgKHJlZ2V4Lm1hdGNoKGxpbmUsIDAsICZtYXRjaExlbmd0aCkgIT0gLTEpCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKHBhaXI8aW50LCBTdHJpbmc+KGxpbmVOdW1iZXIsIGxpbmUp
KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjpwYWlyPGludCwgU3RyaW5nPihsaW5l
TnVtYmVyLCBsaW5lKSk7CiAKICAgICAgICAgc3RhcnQgPSBsaW5lRW5kICsgMTsKICAgICB9CkBA
IC0xNTksOSArMTU5LDkgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6OlMKICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJp
Y1R5cGVzOjpTZWFyY2hNYXRjaD4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+Ojpj
cmVhdGUoKTsKIAogICAgIFJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4ID0gQ29udGVudFNlYXJjaFV0
aWxzOjpjcmVhdGVTZWFyY2hSZWdleChxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCk7Ci0g
ICAgVmVjdG9yPHBhaXI8aW50LCBTdHJpbmc+PiBtYXRjaGVzID0gZ2V0UmVndWxhckV4cHJlc3Np
b25NYXRjaGVzQnlMaW5lcyhyZWdleCwgdGV4dCk7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxpbnQs
IFN0cmluZz4+IG1hdGNoZXMgPSBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKHJl
Z2V4LCB0ZXh0KTsKIAotICAgIGZvciAoVmVjdG9yPHBhaXI8aW50LCBTdHJpbmc+Pjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtYXRjaGVzLmJlZ2luKCk7IGl0ICE9IG1hdGNoZXMuZW5kKCk7ICsraXQp
CisgICAgZm9yIChWZWN0b3I8c3RkOjpwYWlyPGludCwgU3RyaW5nPj46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbWF0Y2hlcy5iZWdpbigpOyBpdCAhPSBtYXRjaGVzLmVuZCgpOyArK2l0KQogICAgICAg
ICByZXN1bHQtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChpdC0+Zmlyc3QsIGl0
LT5zZWNvbmQpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IGNjZTU0N2FmYTZmNjdmNTQ4YjJmNmZjNDU2
NTRhN2M3NTI5Y2QzZDcuLjNhNTRkMzZlMjI5OTExMGJmMGU3M2EzYjIwZWI1MGY3YjRlODQ0Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgYm9vbCBET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hOb2RlKERpZ2Vz
dCogb2xkRGlnZXN0LCBEaWdlc3QqIG5ld0RpZ2VzdCwgRXhjZXAKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1wYWlyPERPTVBhdGNoU3VwcG9ydDo6UmVzdWx0TWFwLCBET01QYXRjaFN1cHBvcnQ6
OlJlc3VsdE1hcD4KK3N0ZDo6cGFpcjxET01QYXRjaFN1cHBvcnQ6OlJlc3VsdE1hcCwgRE9NUGF0
Y2hTdXBwb3J0OjpSZXN1bHRNYXA+CiBET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9y
PE93blB0cjxEaWdlc3Q+PiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYg
bmV3TGlzdCkKIHsKICAgICBSZXN1bHRNYXAgbmV3TWFwKG5ld0xpc3Quc2l6ZSgpKTsKQEAgLTI5
NiwxMiArMjk2LDEyIEBAIERPTVBhdGNoU3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8T3duUHRy
PERpZ2VzdD4+JiBvbGRMaXN0LCBjb25zdCBWZWN0b3I8T3duUHRyCiAgICAgZHVtcE1hcChuZXdN
YXAsICJORVciKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIG1ha2VfcGFpcihvbGRNYXAsIG5ld01h
cCk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG9sZE1hcCwgbmV3TWFwKTsKIH0KIAogYm9v
bCBET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbihDb250YWluZXJOb2RlKiBwYXJl
bnROb2RlLCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBvbGRMaXN0LCBjb25zdCBWZWN0
b3I8T3duUHRyPERpZ2VzdD4+JiBuZXdMaXN0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBw
YWlyPFJlc3VsdE1hcCwgUmVzdWx0TWFwPiByZXN1bHRNYXBzID0gZGlmZihvbGRMaXN0LCBuZXdM
aXN0KTsKKyAgICBzdGQ6OnBhaXI8UmVzdWx0TWFwLCBSZXN1bHRNYXA+IHJlc3VsdE1hcHMgPSBk
aWZmKG9sZExpc3QsIG5ld0xpc3QpOwogICAgIFJlc3VsdE1hcCYgb2xkTWFwID0gcmVzdWx0TWFw
cy5maXJzdDsKICAgICBSZXN1bHRNYXAmIG5ld01hcCA9IHJlc3VsdE1hcHMuc2Vjb25kOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmgKaW5kZXggNWEyY2EwNTU4
ZjRjYjQ3ZThmNzBjOWExOTY4OTAwY2IwNTU4NjFhZi4uYWQ1NDQ4NDg3NjRkYjc5YzViYjA5MmNl
N2QxZmNiNDg3YTExZmI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TVBhdGNoU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RydWN0
IERpZ2VzdDsKLSAgICB0eXBlZGVmIFZlY3RvcjxwYWlyPERpZ2VzdCosIHNpemVfdD4+IFJlc3Vs
dE1hcDsKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8RGlnZXN0Kiwgc2l6ZV90Pj4gUmVz
dWx0TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIERpZ2VzdCo+IFVudXNlZE5vZGVz
TWFwOwogCiAgICAgYm9vbCBpbm5lclBhdGNoTm9kZShEaWdlc3QqIG9sZE5vZGUsIERpZ2VzdCog
bmV3Tm9kZSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5jcHAKaW5kZXggYmNhZTQxYzQ1ZDE3ZjI0MDc1MDFkZWE5MjM2MTc2Yzc0YWY3
NWMzYy4uNDE3NjdjZjRhZmY0ZGQ2NGUzNTAxYzM5NzY0ZGNjNjA0NjIyN2MwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC04NSw3ICs4NSw3IEBA
IHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiAgICAgaWYgKG1fcGVu
ZGluZ0luc3BlY3REYXRhLmZpcnN0KQogICAgICAgICBpbnNwZWN0KG1fcGVuZGluZ0luc3BlY3RE
YXRhLmZpcnN0LCBtX3BlbmRpbmdJbnNwZWN0RGF0YS5zZWNvbmQpOwogCi0gICAgZm9yIChWZWN0
b3I8cGFpcjxsb25nLCBTdHJpbmc+Pjo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdFdmFsdWF0ZVRl
c3RDb21tYW5kcy5iZWdpbigpOyBtX2Zyb250ZW5kRGlzcGF0Y2hlciAmJiBpdCAhPSBtX3BlbmRp
bmdFdmFsdWF0ZVRlc3RDb21tYW5kcy5lbmQoKTsgKytpdCkKKyAgICBmb3IgKFZlY3RvcjxzdGQ6
OnBhaXI8bG9uZywgU3RyaW5nPj46Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nRXZhbHVhdGVUZXN0
Q29tbWFuZHMuYmVnaW4oKTsgbV9mcm9udGVuZERpc3BhdGNoZXIgJiYgaXQgIT0gbV9wZW5kaW5n
RXZhbHVhdGVUZXN0Q29tbWFuZHMuZW5kKCk7ICsraXQpCiAgICAgICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKHN0YXRpY19jYXN0PGludD4oKCppdCku
Zmlyc3QpLCAoKml0KS5zZWNvbmQpOwogICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRz
LmNsZWFyKCk7CiB9CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZXZh
bHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQK
ICAgICBpZiAobV9lbmFibGVkICYmIG1fZnJvbnRlbmREaXNwYXRjaGVyKQogICAgICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChzdGF0aWNfY2FzdDxp
bnQ+KGNhbGxJZCksIHNjcmlwdCk7CiAgICAgZWxzZQotICAgICAgICBtX3BlbmRpbmdFdmFsdWF0
ZVRlc3RDb21tYW5kcy5hcHBlbmQocGFpcjxsb25nLCBTdHJpbmc+KGNhbGxJZCwgc2NyaXB0KSk7
CisgICAgICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmFwcGVuZChzdGQ6OnBhaXI8
bG9uZywgU3RyaW5nPihjYWxsSWQsIHNjcmlwdCkpOwogfQogCiB2b2lkIEluc3BlY3RvckFnZW50
OjppbnNwZWN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBo
aW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggOTZk
OGYyNTA2N2ExMWYxODE3NGE0MjE1NTk4MDJlMmM1NWJmOGQ1OC4uZWI5ZWY3ZmJkMjZmZDhiMWZk
NDIzOGMzNzUzZmM5YzAyZDAyNGE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50LmgKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvckluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogCi0gICAgVmVjdG9yPHBh
aXI8bG9uZywgU3RyaW5nPj4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHM7Ci0gICAgcGFp
cjxSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERhdGE7
CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxsb25nLCBTdHJpbmc+PiBtX3BlbmRpbmdFdmFsdWF0ZVRl
c3RDb21tYW5kczsKKyAgICBzdGQ6OnBhaXI8UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4+IG1fcGVuZGluZ0luc3BlY3REYXRhOwogCiAgICAgYm9vbCBtX2VuYWJsZWQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggZjI1OTMxYjE3MWE5YWZj
OWY5NDBkZTEyNTk2M2M5NTJmNTExZDQ2OS4uNGQxYTZlODViZmMwOWY4Y2ZkNzY0Y2FhM2JiYWQz
MjQxZDQyOWE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBA
IC0xODEsNyArMTgxLDcgQEAgUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Np
b246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEEKIAogICAgIFRleHRFbmNv
ZGluZyBkYXRhRW5jb2RpbmcgPSBpc01haWx0b0Zvcm0gPyBVVEY4RW5jb2RpbmcoKSA6IEZvcm1E
YXRhQnVpbGRlcjo6ZW5jb2RpbmdGcm9tQWNjZXB0Q2hhcnNldChjb3BpZWRBdHRyaWJ1dGVzLmFj
Y2VwdENoYXJzZXQoKSwgZG9jdW1lbnQpOwogICAgIFJlZlB0cjxET01Gb3JtRGF0YT4gZG9tRm9y
bURhdGEgPSBET01Gb3JtRGF0YTo6Y3JlYXRlKGRhdGFFbmNvZGluZy5lbmNvZGluZ0ZvckZvcm1T
dWJtaXNzaW9uKCkpOwotICAgIFZlY3RvcjxwYWlyPFN0cmluZywgU3RyaW5nPj4gZm9ybVZhbHVl
czsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gZm9ybVZhbHVlczsKIAog
ICAgIGJvb2wgY29udGFpbnNQYXNzd29yZERhdGEgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZm9ybS0+YXNzb2NpYXRlZEVsZW1lbnRzKCkuc2l6ZSgpOyArK2kpIHsKQEAg
LTE5Miw3ICsxOTIsNyBAQCBQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBGb3JtU3VibWlzc2lv
bjo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3QgQQogICAgICAgICBpZiAoaXNI
VE1MSW5wdXRFbGVtZW50KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50
JiBpbnB1dCA9IHRvSFRNTElucHV0RWxlbWVudChlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChp
bnB1dC5pc1RleHRGaWVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgZm9ybVZhbHVlcy5hcHBlbmQo
cGFpcjxTdHJpbmcsIFN0cmluZz4oaW5wdXQubmFtZSgpLnN0cmluZygpLCBpbnB1dC52YWx1ZSgp
KSk7CisgICAgICAgICAgICAgICAgZm9ybVZhbHVlcy5hcHBlbmQoc3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPihpbnB1dC5uYW1lKCkuc3RyaW5nKCksIGlucHV0LnZhbHVlKCkpKTsKICAgICAgICAg
ICAgICAgICBpbnB1dC5hZGRTZWFyY2hSZXN1bHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChpbnB1dC5pc1Bhc3N3b3JkRmllbGQoKSAmJiAhaW5wdXQudmFsdWUoKS5pc0VtcHR5
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBk
MDgwYjFmOGNmODUxNmVlYTliM2NmMTdkY2YwMWIwNTM1M2M5YTVlLi41NTI1ZmIxZjM0ZWE2MjYy
NTE0NmMxMTU5ZmU3MTcwNmYzMWIxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIENhY2hlZEltYWdlOjph
bGxDbGllbnRzUmVtb3ZlZCgpCiAgICAgICAgIG1faW1hZ2UtPnJlc2V0QW5pbWF0aW9uKCk7CiB9
CiAKLXBhaXI8SW1hZ2UqLCBmbG9hdD4gQ2FjaGVkSW1hZ2U6OmJyb2tlbkltYWdlKGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yKSBjb25zdAorc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+IENhY2hlZElt
YWdlOjpicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QKIHsKICAgICBp
ZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMikgewogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEltYWdlKiwgYnJva2VuSW1hZ2VIaVJlcywgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgi
bWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCmluZGV4IDdlOWQzYjQwZDcwOWEzZmIyOTM5MzBmYzZlOGU5MDUwNjQ2
YmMzMWIuLjkyNjIwYWZhZmQ3OGZkYThjNDNiMjRmMzQyY2ZkMDgxYjA3ZDdiZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMzUsNyArMTM1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgYWRkSW5jcmVtZW50YWxEYXRhQnVmZmVyKFJlc291cmNlQnVm
ZmVyKik7CiAKLSAgICB0eXBlZGVmIHBhaXI8SW50U2l6ZSwgZmxvYXQ+IFNpemVBbmRab29tOwor
ICAgIHR5cGVkZWYgc3RkOjpwYWlyPEludFNpemUsIGZsb2F0PiBTaXplQW5kWm9vbTsKICAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBTaXplQW5kWm9vbT4gQ29u
dGFpbmVyU2l6ZVJlcXVlc3RzOwogICAgIENvbnRhaW5lclNpemVSZXF1ZXN0cyBtX3BlbmRpbmdD
b250YWluZXJTaXplUmVxdWVzdHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmluZGV4IDQ2YWJi
ODBhYWM1ZmIzZmExMGI3YzkzZWU5MWIxYzlkMTZkZTQ0MGMuLjViN2NkM2E1NWFhNjAzMTZhZDg5
YmQ2YTA0YzRmYTAwNDM4YTYxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcApAQCAtMTQ5OCw3
ICsxNDk4LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKFVDaGFyQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFVDaGFyKiBzdHIsIHVuc2lnbmUKICNlbmRpZgogfQogCi1zdGF0aWMg
dm9pZCBmaW5kSG9zdG5hbWVzSW5NYWlsVG9VUkwoY29uc3QgVUNoYXIqIHN0ciwgaW50IHN0ckxl
biwgVmVjdG9yPHBhaXI8aW50LCBpbnQ+PiYgbmFtZVJhbmdlcykKK3N0YXRpYyB2b2lkIGZpbmRI
b3N0bmFtZXNJbk1haWxUb1VSTChjb25zdCBVQ2hhciogc3RyLCBpbnQgc3RyTGVuLCBWZWN0b3I8
c3RkOjpwYWlyPGludCwgaW50Pj4mIG5hbWVSYW5nZXMpCiB7CiAgICAgLy8gSW4gYSBtYWlsdG86
IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0AnIGNoYXJhY3RlciBhbmQgZW5kIHdpdGgg
YSAnPicgb3IgJywnIG9yICc/JyBvciBlbmQgb2Ygc3RyaW5nIGNoYXJhY3Rlci4KICAgICAvLyBT
a2lwIHF1b3RlZCBzdHJpbmdzIHNvIHRoYXQgY2hhcmFjdGVycyBpbiB0aGVtIGRvbid0IGNvbmZ1
c2UgdXMuCkBAIC0xNjE0LDEyICsxNjE0LDEyIEBAIHN0YXRpYyB2b2lkIGVuY29kZUhvc3RuYW1l
cyhjb25zdCBTdHJpbmcmIHN0ciwgVUNoYXJCdWZmZXImIG91dHB1dCkKICAgICBvdXRwdXQuY2xl
YXIoKTsKIAogICAgIGlmIChwcm90b2NvbElzKHN0ciwgIm1haWx0byIpKSB7Ci0gICAgICAgIFZl
Y3RvcjxwYWlyPGludCwgaW50Pj4gaG9zdG5hbWVSYW5nZXM7CisgICAgICAgIFZlY3RvcjxzdGQ6
OnBhaXI8aW50LCBpbnQ+PiBob3N0bmFtZVJhbmdlczsKICAgICAgICAgZmluZEhvc3RuYW1lc0lu
TWFpbFRvVVJMKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSwgaG9zdG5hbWVSYW5nZXMp
OwogICAgICAgICBpbnQgbiA9IGhvc3RuYW1lUmFuZ2VzLnNpemUoKTsKICAgICAgICAgaW50IHAg
PSAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAgICAgICAg
Y29uc3QgcGFpcjxpbnQsIGludD4mIHIgPSBob3N0bmFtZVJhbmdlc1tpXTsKKyAgICAgICAgICAg
IGNvbnN0IHN0ZDo6cGFpcjxpbnQsIGludD4mIHIgPSBob3N0bmFtZVJhbmdlc1tpXTsKICAgICAg
ICAgICAgIG91dHB1dC5hcHBlbmQoJnN0ci5jaGFyYWN0ZXJzKClbcF0sIHIuZmlyc3QgLSBwKTsK
ICAgICAgICAgICAgIGFwcGVuZEVuY29kZWRIb3N0bmFtZShvdXRwdXQsICZzdHIuY2hhcmFjdGVy
cygpW3IuZmlyc3RdLCByLnNlY29uZCAtIHIuZmlyc3QpOwogICAgICAgICAgICAgcCA9IHIuc2Vj
b25kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29r
aWVEYXRhYmFzZUJhY2tpbmdTdG9yZS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9y
ZS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS5oCmluZGV4IGIwYTAwNjRlYThmOTk4MWE0NjY1
N2FiNTU3NTE5YzEwYmNhZGRiZmYuLjgyZGY4ZTZiNTg1ODU1NWI2NWYwMWY5ZTgzODliMWMxNDc5
YTcwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29v
a2llRGF0YWJhc2VCYWNraW5nU3RvcmUvQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZURhdGFiYXNlQmFja2lu
Z1N0b3JlL0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIHR5cGVkZWYgcGFpcjxjb25zdCBSZWZQ
dHI8UGFyc2VkQ29va2llPiwgVXBkYXRlUGFyYW1ldGVyPiBDb29raWVBY3Rpb247CisgICAgdHlw
ZWRlZiBzdGQ6OnBhaXI8Y29uc3QgUmVmUHRyPFBhcnNlZENvb2tpZT4sIFVwZGF0ZVBhcmFtZXRl
cj4gQ29va2llQWN0aW9uOwogICAgIFZlY3RvcjxDb29raWVBY3Rpb24+IG1fY2hhbmdlZENvb2tp
ZXM7CiAgICAgTXV0ZXggbV9tdXRleDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggOTFlYjMxODM2ZWViYzcxMzAyNzFhMjYxMTk5ZGY1
MzdhOTA2MDcwYy4uZWQ3YTIwMmRjZDA5ODk2MWNjZjhmNjRhMGVmN2Y0ZDA4MTNkYmYxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC0z
MTMsNyArMzEzLDcgQEAgc3RydWN0IEZvbnREYXRhQ2FjaGVLZXlUcmFpdHMgOiBXVEY6OkdlbmVy
aWNIYXNoVHJhaXRzPEZvbnRQbGF0Zm9ybURhdGE+IHsKICAgICB9CiB9OwogCi10eXBlZGVmIEhh
c2hNYXA8Rm9udFBsYXRmb3JtRGF0YSwgcGFpcjxSZWZQdHI8U2ltcGxlRm9udERhdGE+LCB1bnNp
Z25lZD4sIEZvbnREYXRhQ2FjaGVLZXlIYXNoLCBGb250RGF0YUNhY2hlS2V5VHJhaXRzPiBGb250
RGF0YUNhY2hlOwordHlwZWRlZiBIYXNoTWFwPEZvbnRQbGF0Zm9ybURhdGEsIHN0ZDo6cGFpcjxS
ZWZQdHI8U2ltcGxlRm9udERhdGE+LCB1bnNpZ25lZD4sIEZvbnREYXRhQ2FjaGVLZXlIYXNoLCBG
b250RGF0YUNhY2hlS2V5VHJhaXRzPiBGb250RGF0YUNhY2hlOwogCiBzdGF0aWMgRm9udERhdGFD
YWNoZSogZ0ZvbnREYXRhQ2FjaGUgPSAwOwogCkBAIC0zNDcsNyArMzQ3LDcgQEAgUGFzc1JlZlB0
cjxTaW1wbGVGb250RGF0YT4gRm9udENhY2hlOjpnZXRDYWNoZWRGb250RGF0YShjb25zdCBGb250
UGxhdGZvcm1EYXRhKgogCiAgICAgRm9udERhdGFDYWNoZTo6aXRlcmF0b3IgcmVzdWx0ID0gZ0Zv
bnREYXRhQ2FjaGUtPmZpbmQoKnBsYXRmb3JtRGF0YSk7CiAgICAgaWYgKHJlc3VsdCA9PSBnRm9u
dERhdGFDYWNoZS0+ZW5kKCkpIHsKLSAgICAgICAgcGFpcjxSZWZQdHI8U2ltcGxlRm9udERhdGE+
LCB1bnNpZ25lZD4gbmV3VmFsdWUoU2ltcGxlRm9udERhdGE6OmNyZWF0ZSgqcGxhdGZvcm1EYXRh
KSwgc2hvdWxkUmV0YWluID09IFJldGFpbiA/IDEgOiAwKTsKKyAgICAgICAgc3RkOjpwYWlyPFJl
ZlB0cjxTaW1wbGVGb250RGF0YT4sIHVuc2lnbmVkPiBuZXdWYWx1ZShTaW1wbGVGb250RGF0YTo6
Y3JlYXRlKCpwbGF0Zm9ybURhdGEpLCBzaG91bGRSZXRhaW4gPT0gUmV0YWluID8gMSA6IDApOwog
ICAgICAgICBnRm9udERhdGFDYWNoZS0+c2V0KCpwbGF0Zm9ybURhdGEsIG5ld1ZhbHVlKTsKICAg
ICAgICAgaWYgKHNob3VsZFJldGFpbiA9PSBEb05vdFJldGFpbikKICAgICAgICAgICAgIGdJbmFj
dGl2ZUZvbnREYXRhLT5hZGQobmV3VmFsdWUuZmlyc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCA5YzNjNGViNjQ4ZTcx
ZDQxOTA2YTY0Y2IwNGM2MmE0MzkyZDdlMTQ1Li40YzQ0YjZlMGZiMjc0M2ExNjM1OTVjOTVlM2Vi
ODgyNzQyOWFlMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aEl0ZXJhdG9yLmNwcApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
YWR2YW5jZUF0Q2hhcmFjdGVyOwogfTsKIAotdHlwZWRlZiBWZWN0b3I8cGFpcjxpbnQsIE9yaWdp
bmFsQWR2YW5jZXNGb3JDaGFyYWN0ZXJUcmVhdGVkQXNTcGFjZT4sIDY0PiBDaGFyYWN0ZXJzVHJl
YXRlZEFzU3BhY2U7Cit0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8aW50LCBPcmlnaW5hbEFkdmFu
Y2VzRm9yQ2hhcmFjdGVyVHJlYXRlZEFzU3BhY2U+LCA2ND4gQ2hhcmFjdGVyc1RyZWF0ZWRBc1Nw
YWNlOwogCiBzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5Rm9udFRyYW5zZm9ybXMoR2x5cGhCdWZm
ZXIqIGdseXBoQnVmZmVyLCBib29sIGx0ciwgaW50JiBsYXN0R2x5cGhDb3VudCwgY29uc3QgU2lt
cGxlRm9udERhdGEqIGZvbnREYXRhLCBXaWR0aEl0ZXJhdG9yJiBpdGVyYXRvciwgVHlwZXNldHRp
bmdGZWF0dXJlcyB0eXBlc2V0dGluZ0ZlYXR1cmVzLCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2Um
IGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCmluZGV4IDNlYTMyYTdmOWI5ODBiNzBiMmVm
NDkzODViZGRlMGRlYTcwMzZiMjYuLmE0NTkzYjVlMmVjNDM2NjBjOGJlNjFkYzhhZjhkNGQzZjBl
MjQzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhl
YWRlck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEhUVFBIZWFkZXJNYXA6OmFkb3B0KFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gZGF0YSkKICAgICBjbGVhcigp
OwogICAgIHNpemVfdCBkYXRhU2l6ZSA9IGRhdGEtPnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgZGF0YVNpemU7ICsraW5kZXgpIHsKLSAgICAgICAgcGFpcjxTdHJp
bmcsIFN0cmluZz4mIGhlYWRlciA9ICgqZGF0YSlbaW5kZXhdOworICAgICAgICBzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+JiBoZWFkZXIgPSAoKmRhdGEpW2luZGV4XTsKICAgICAgICAgc2V0KGhl
YWRlci5maXJzdCwgaGVhZGVyLnNlY29uZCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRl
eCBmYmE4YzM3ZTdiNThjOTRhZDE3NTE5MTMwODY1MzNkMzY5ZWU0OTJjLi44MTdhYThmNmRhNzAx
MTc4ZjMxZWY3Y2YzYmQwN2MwMzgzMDcwMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtMzUsNyAr
MzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHBhcnNlQ2FjaGVI
ZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFZlY3RvcjxwYWlyPFN0cmluZywgU3RyaW5nPj4m
IHJlc3VsdCk7CitzdGF0aWMgdm9pZCBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVh
ZGVyLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHJlc3VsdCk7CiAKIGlubGlu
ZSBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YXNSZXNvdXJj
ZVJlc3BvbnNlKCkgY29uc3QKIHsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKSBjb25zdAogCiAgICAgU3Ry
aW5nIGNhY2hlQ29udHJvbFZhbHVlID0gbV9odHRwSGVhZGVyRmllbGRzLmdldChjYWNoZUNvbnRy
b2xTdHJpbmcpOwogICAgIGlmICghY2FjaGVDb250cm9sVmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFZlY3RvcjxwYWlyPFN0cmluZywgU3RyaW5nPj4gZGlyZWN0aXZlczsKKyAgICAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IGRpcmVjdGl2ZXM7CiAgICAgICAgIHBhcnNl
Q2FjaGVIZWFkZXIoY2FjaGVDb250cm9sVmFsdWUsIGRpcmVjdGl2ZXMpOwogCiAgICAgICAgIHNp
emVfdCBkaXJlY3RpdmVzU2l6ZSA9IGRpcmVjdGl2ZXMuc2l6ZSgpOwpAQCAtNjM2LDcgKzYzNiw3
IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRyaW1Ub05leHRTZXBhcmF0b3IoY29uc3QgU3RyaW5n
JiBzdHIpCiAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgc3RyLmZpbmQoaXNDYWNoZUhlYWRl
clNlcGFyYXRvcikpOwogfQogCi1zdGF0aWMgdm9pZCBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0
cmluZyYgaGVhZGVyLCBWZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4+JiByZXN1bHQpCitzdGF0
aWMgdm9pZCBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHJlc3VsdCkKIHsKICAgICBjb25zdCBTdHJpbmcgc2Fm
ZUhlYWRlciA9IGhlYWRlci5yZW1vdmVDaGFyYWN0ZXJzKGlzQ29udHJvbENoYXJhY3Rlcik7CiAg
ICAgdW5zaWduZWQgbWF4ID0gc2FmZUhlYWRlci5sZW5ndGgoKTsKQEAgLTY1NCw3ICs2NTQsNyBA
QCBzdGF0aWMgdm9pZCBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBWZWN0
b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4+JgogICAgICAgICAgICAgICAgIHNpemVfdCBuZXh0RG91
YmxlUXVvdGVQb3NpdGlvbiA9IHZhbHVlLmZpbmQoJyInLCAxKTsKICAgICAgICAgICAgICAgICBp
ZiAobmV4dERvdWJsZVF1b3RlUG9zaXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gU3RvcmUgdGhlIHZhbHVlIGFzIGEgcXVvdGVkIHN0cmluZyB3aXRob3V0IHF1b3Rl
cwotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBhaXI8U3RyaW5nLCBTdHJpbmc+
KGRpcmVjdGl2ZSwgdmFsdWUuc3Vic3RyaW5nKDEsIG5leHREb3VibGVRdW90ZVBvc2l0aW9uIC0g
MSkuc3RyaXBXaGl0ZVNwYWNlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+KGRpcmVjdGl2ZSwgdmFsdWUuc3Vic3RyaW5nKDEs
IG5leHREb3VibGVRdW90ZVBvc2l0aW9uIC0gMSkuc3RyaXBXaGl0ZVNwYWNlKCkpKTsKICAgICAg
ICAgICAgICAgICAgICAgcG9zICs9IChzYWZlSGVhZGVyLmZpbmQoJyInLCBwb3MpIC0gcG9zKSAr
IG5leHREb3VibGVRdW90ZVBvc2l0aW9uICsgMTsKICAgICAgICAgICAgICAgICAgICAgLy8gTW92
ZSBwYXN0IG5leHQgY29tbWEsIGlmIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbmV4dENvbW1hUG9zaXRpb24yID0gc2FmZUhlYWRlci5maW5kKCcsJywgcG9zKTsKQEAg
LTY2NCw3ICs2NjQsNyBAQCBzdGF0aWMgdm9pZCBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmlu
ZyYgaGVhZGVyLCBWZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4+JgogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOyAvLyBQYXJzZSBlcnJvciBpZiB0aGVyZSBpcyBhbnl0aGluZyBsZWZ0
IHdpdGggbm8gY29tbWEKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAvLyBQYXJzZSBlcnJvcjsganVzdCB1c2UgdGhlIHJlc3QgYXMgdGhlIHZhbHVlCi0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocGFpcjxTdHJpbmcsIFN0cmluZz4oZGlyZWN0
aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9yKHZhbHVlLnN1YnN0cmluZygxLCB2YWx1ZS5sZW5ndGgo
KSAtIDEpLnN0cmlwV2hpdGVTcGFjZSgpKSkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4oZGlyZWN0aXZlLCB0cmltVG9OZXh0U2Vw
YXJhdG9yKHZhbHVlLnN1YnN0cmluZygxLCB2YWx1ZS5sZW5ndGgoKSAtIDEpLnN0cmlwV2hpdGVT
cGFjZSgpKSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTY3MiwyMSArNjcyLDIxIEBAIHN0YXRpYyB2b2lk
IHBhcnNlQ2FjaGVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFZlY3RvcjxwYWlyPFN0cmlu
ZywgU3RyaW5nPj4mCiAgICAgICAgICAgICAgICAgc2l6ZV90IG5leHRDb21tYVBvc2l0aW9uMiA9
IHZhbHVlLmZpbmQoJywnKTsKICAgICAgICAgICAgICAgICBpZiAobmV4dENvbW1hUG9zaXRpb24y
ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBpcyBkZWxp
bWl0ZWQgYnkgdGhlIG5leHQgY29tbWEKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChwYWlyPFN0cmluZywgU3RyaW5nPihkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFs
dWUuc3Vic3RyaW5nKDAsIG5leHRDb21tYVBvc2l0aW9uMikuc3RyaXBXaGl0ZVNwYWNlKCkpKSk7
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPihkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFsdWUuc3Vic3RyaW5nKDAsIG5l
eHRDb21tYVBvc2l0aW9uMikuc3RyaXBXaGl0ZVNwYWNlKCkpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHBvcyArPSAoc2FmZUhlYWRlci5maW5kKCcsJywgcG9zKSAtIHBvcykgKyAxOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSByZXN0IGlzIHRo
ZSB2YWx1ZTsgbm8gY2hhbmdlIHRvIHZhbHVlIG5lZWRlZAotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHBhaXI8U3RyaW5nLCBTdHJpbmc+KGRpcmVjdGl2ZSwgdHJpbVRvTmV4dFNl
cGFyYXRvcih2YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+KGRpcmVjdGl2ZSwgdHJpbVRvTmV4dFNlcGFyYXRvcih2YWx1
ZSkpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChuZXh0Q29tbWFQb3NpdGlvbiAhPSBub3RG
b3VuZCAmJiAobmV4dENvbW1hUG9zaXRpb24gPCBuZXh0RXF1YWxTaWduUG9zaXRpb24gfHwgbmV4
dEVxdWFsU2lnblBvc2l0aW9uID09IG5vdEZvdW5kKSkgewogICAgICAgICAgICAgLy8gQWRkIGRp
cmVjdGl2ZSB0byBtYXAgd2l0aCBlbXB0eSBzdHJpbmcgYXMgdmFsdWUKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQocGFpcjxTdHJpbmcsIFN0cmluZz4odHJpbVRvTmV4dFNlcGFyYXRvcihzYWZl
SGVhZGVyLnN1YnN0cmluZyhwb3MsIG5leHRDb21tYVBvc2l0aW9uIC0gcG9zKS5zdHJpcFdoaXRl
U3BhY2UoKSksICIiKSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4odHJpbVRvTmV4dFNlcGFyYXRvcihzYWZlSGVhZGVyLnN1YnN0cmluZyhwb3Ms
IG5leHRDb21tYVBvc2l0aW9uIC0gcG9zKS5zdHJpcFdoaXRlU3BhY2UoKSksICIiKSk7CiAgICAg
ICAgICAgICBwb3MgKz0gbmV4dENvbW1hUG9zaXRpb24gLSBwb3MgKyAxOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgLy8gQWRkIGxhc3QgZGlyZWN0aXZlIHRvIG1hcCB3aXRoIGVtcHR5
IHN0cmluZyBhcyB2YWx1ZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChwYWlyPFN0cmluZywg
U3RyaW5nPih0cmltVG9OZXh0U2VwYXJhdG9yKHNhZmVIZWFkZXIuc3Vic3RyaW5nKHBvcywgbWF4
IC0gcG9zKS5zdHJpcFdoaXRlU3BhY2UoKSksICIiKSk7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4odHJpbVRvTmV4dFNlcGFyYXRvcihzYWZlSGVh
ZGVyLnN1YnN0cmluZyhwb3MsIG1heCAtIHBvcykuc3RyaXBXaGl0ZVNwYWNlKCkpLCAiIikpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaAppbmRl
eCBiMzAwNGY3OTZkYWQwZGNiMmUwNWI2MTkzYjc1NGJlMmE1OWNkY2MxLi4yNjJmZTE5MGVjYTFi
NzljZGQzODNmNmRhYzQ5Yzk5MDY5ZjNjYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaApAQCAtNjMsNyAr
NjMsNyBAQCBwcml2YXRlOgogICAgIFQgY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCk7CiAgICAgVCBj
cmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAgIHR5cGVkZWYgcGFp
cjxBdG9taWNTdHJpbmcsIFQ+IEVudHJ5OworICAgIHR5cGVkZWYgc3RkOjpwYWlyPEF0b21pY1N0
cmluZywgVD4gRW50cnk7CiAgICAgdHlwZWRlZiBWZWN0b3I8RW50cnksIGNhcGFjaXR5PiBDYWNo
ZTsKICAgICBDYWNoZSBtX2NhY2hlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCmluZGV4IDdlNGMyZDhjNTVi
MzNlNGFlYzdjMjkyZDFhZGNlODUzMjZlMjMzOTAuLmQyZWIyNmQ2MzQyNzRlODg3M2YxNTM1N2Q4
NGNhY2UyMzFkMDdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaApAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRl
OgogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjYXBhY2l0eSA9IDQ7CiAKLSAgICB0eXBlZGVm
IHBhaXI8QXRvbWljU3RyaW5nLCBVQnJlYWtJdGVyYXRvcio+IEVudHJ5OworICAgIHR5cGVkZWYg
c3RkOjpwYWlyPEF0b21pY1N0cmluZywgVUJyZWFrSXRlcmF0b3IqPiBFbnRyeTsKICAgICB0eXBl
ZGVmIFZlY3RvcjxFbnRyeSwgY2FwYWNpdHk+IFBvb2w7CiAgICAgUG9vbCBtX3Bvb2w7CiAgICAg
SGFzaE1hcDxVQnJlYWtJdGVyYXRvciosIEF0b21pY1N0cmluZz4gbV92ZW5kZWRJdGVyYXRvcnM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAppbmRleCBkMDZmM2JjMjIx
OTFjNmI5NmRmNzdlMjhlMTUxMmE5NjE1YzQ1ZGNiLi5jODQ2ZDNjODU4MDcxZjQwM2MwMmFiMzcx
MGQzNDI4YzA5M2RiMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgVmVydGljYWxQb3NpdGlvbkNhY2hlOwogCiBzdHJ1
Y3QgR2x5cGhPdmVyZmxvdzsKIAotdHlwZWRlZiBIYXNoTWFwPGNvbnN0IElubGluZVRleHRCb3gq
LCBwYWlyPFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+LCBHbHlwaE92ZXJmbG93Pj4gR2x5
cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA7Cit0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSW5s
aW5lVGV4dEJveCosIHN0ZDo6cGFpcjxWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqPiwgR2x5
cGhPdmVyZmxvdz4+IEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOwogCiBjbGFzcyBJ
bmxpbmVGbG93Qm94IDogcHVibGljIElubGluZUJveCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA3OWI1Njg3YzIyZWRlOGQwZjA4ZDQ3Y2E3
NDBhMDA3YmVhMDk0MzEyLi44OTE5MDZjNDhjYzUxZjRlOTJhNjQwZjgxNDAwZTk0MThjMjdkYmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTE3Myw3ICsx
NzMsNyBAQCBJbnRTaXplIFJlbmRlckltYWdlOjppbWFnZVNpemVGb3JFcnJvcihDYWNoZWRJbWFn
ZSogbmV3SW1hZ2UpIGNvbnN0CiAgICAgSW50U2l6ZSBpbWFnZVNpemU7CiAgICAgaWYgKG5ld0lt
YWdlLT53aWxsUGFpbnRCcm9rZW5JbWFnZSgpKSB7CiAgICAgICAgIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yID0gV2ViQ29yZTo6ZGV2aWNlU2NhbGVGYWN0b3IoJmZyYW1lKCkpOwotICAgICAgICBw
YWlyPEltYWdlKiwgZmxvYXQ+IGJyb2tlbkltYWdlQW5kSW1hZ2VTY2FsZUZhY3RvciA9IG5ld0lt
YWdlLT5icm9rZW5JbWFnZShkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgIHN0ZDo6cGFpcjxJ
bWFnZSosIGZsb2F0PiBicm9rZW5JbWFnZUFuZEltYWdlU2NhbGVGYWN0b3IgPSBuZXdJbWFnZS0+
YnJva2VuSW1hZ2UoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICBpbWFnZVNpemUgPSBicm9r
ZW5JbWFnZUFuZEltYWdlU2NhbGVGYWN0b3IuZmlyc3QtPnNpemUoKTsKICAgICAgICAgaW1hZ2VT
aXplLnNjYWxlKDEgLyBicm9rZW5JbWFnZUFuZEltYWdlU2NhbGVGYWN0b3Iuc2Vjb25kKTsKICAg
ICB9IGVsc2UKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxh
Y2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAg
ICAgICAgICAgaWYgKG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmICFpbWFnZS0+
aXNOdWxsKCkgJiYgdXNhYmxlV2lkdGggPj0gaW1hZ2UtPndpZHRoKCkgJiYgdXNhYmxlSGVpZ2h0
ID49IGltYWdlLT5oZWlnaHQoKSkgewogICAgICAgICAgICAgICAgIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yID0gV2ViQ29yZTo6ZGV2aWNlU2NhbGVGYWN0b3IoJmZyYW1lKCkpOwogICAgICAgICAg
ICAgICAgIC8vIENhbGwgYnJva2VuSW1hZ2UoKSBleHBsaWNpdGx5IHRvIGVuc3VyZSB3ZSBnZXQg
dGhlIGJyb2tlbiBpbWFnZSBpY29uIGF0IHRoZSBhcHByb3ByaWF0ZSByZXNvbHV0aW9uLgotICAg
ICAgICAgICAgICAgIHBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2VBbmRJbWFnZVNjYWxl
RmFjdG9yID0gbV9pbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpLT5icm9rZW5JbWFnZShkZXZp
Y2VTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICAgICAgc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+
IGJyb2tlbkltYWdlQW5kSW1hZ2VTY2FsZUZhY3RvciA9IG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVk
SW1hZ2UoKS0+YnJva2VuSW1hZ2UoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgICAg
IGltYWdlID0gYnJva2VuSW1hZ2VBbmRJbWFnZVNjYWxlRmFjdG9yLmZpcnN0OwogICAgICAgICAg
ICAgICAgIEludFNpemUgaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKICAgICAgICAgICAgICAg
ICBpbWFnZVNpemUuc2NhbGUoMSAvIGJyb2tlbkltYWdlQW5kSW1hZ2VTY2FsZUZhY3Rvci5zZWNv
bmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cAppbmRleCAzMWVjMjBiNGE1ZjI3Y2ViMTgyNjUzZTVkNGNkMGRhMGQ3YzE5ZDA0Li4zOWY1OTRj
ODRiMjQ4ZDI1YTEwYTY5ODk5ZjQ1MjY0OGVhZDI5YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtMTU2NSw3ICsxNTY1LDcgQEAg
dm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnNldENhY2hlZENvbGxhcHNlZEJvcmRlcihjb25zdCBS
ZW5kZXJUYWJsZUNlbGwqIGNlbGwsIEMKIENvbGxhcHNlZEJvcmRlclZhbHVlJiBSZW5kZXJUYWJs
ZVNlY3Rpb246OmNhY2hlZENvbGxhcHNlZEJvcmRlcihjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNl
bGwsIENvbGxhcHNlZEJvcmRlclNpZGUgc2lkZSkKIHsKICAgICBBU1NFUlQodGFibGUoKS0+Y29s
bGFwc2VCb3JkZXJzKCkpOwotICAgIEhhc2hNYXA8cGFpcjxjb25zdCBSZW5kZXJUYWJsZUNlbGwq
LCBpbnQ+LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZT46Oml0ZXJhdG9yIGl0ID0gbV9jZWxsc0NvbGxh
cHNlZEJvcmRlcnMuZmluZChzdGQ6Om1ha2VfcGFpcihjZWxsLCBzaWRlKSk7CisgICAgSGFzaE1h
cDxzdGQ6OnBhaXI8Y29uc3QgUmVuZGVyVGFibGVDZWxsKiwgaW50PiwgQ29sbGFwc2VkQm9yZGVy
VmFsdWU+OjppdGVyYXRvciBpdCA9IG1fY2VsbHNDb2xsYXBzZWRCb3JkZXJzLmZpbmQoc3RkOjpt
YWtlX3BhaXIoY2VsbCwgc2lkZSkpOwogICAgIEFTU0VSVChpdCAhPSBtX2NlbGxzQ29sbGFwc2Vk
Qm9yZGVycy5lbmQoKSk7CiAgICAgcmV0dXJuIGl0LT52YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAppbmRleCBmOGU2OWZkZTkyYzlkNTE0
NTA4OWQwOGE3NWJjNjk2OGNhZDYxMWQwLi40YzhjMDVhYzBkN2QyMDM3YTU3OGMzMzBjMWZjOGRl
YzFhOTQ0Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5oCkBAIC0zMDYsNyArMzA2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRoaXMgbWFwIGhv
bGRzIHRoZSBjb2xsYXBzZWQgYm9yZGVyIHZhbHVlcyBmb3IgY2VsbHMgd2l0aCBjb2xsYXBzZWQg
Ym9yZGVycy4KICAgICAvLyBJdCBpcyBoZWxkIGF0IFJlbmRlclRhYmxlU2VjdGlvbiBsZXZlbCB0
byBzcGFyZSBtZW1vcnkgY29uc3VtcHRpb24gYnkgdGFibGUgY2VsbHMuCi0gICAgSGFzaE1hcDxw
YWlyPGNvbnN0IFJlbmRlclRhYmxlQ2VsbCosIGludD4sIENvbGxhcHNlZEJvcmRlclZhbHVlID4g
bV9jZWxsc0NvbGxhcHNlZEJvcmRlcnM7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8Y29uc3QgUmVu
ZGVyVGFibGVDZWxsKiwgaW50PiwgQ29sbGFwc2VkQm9yZGVyVmFsdWUgPiBtX2NlbGxzQ29sbGFw
c2VkQm9yZGVyczsKIH07CiAKIHRlbXBsYXRlPD4gaW5saW5lIGJvb2wgaXNSZW5kZXJlck9mVHlw
ZTxjb25zdCBSZW5kZXJUYWJsZVNlY3Rpb24+KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIp
IHsgcmV0dXJuIHJlbmRlcmVyLmlzVGFibGVTZWN0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggMGMxOTc0MDEyMDQ5NGRlZDljN2M4OWRlYTU0YzBmM2U2ZjM3ZTExNC4uNDg4MWJh
ZjhkNDQyMTRjOTgyOWFlZTdhZTQ5Mjc1MmJmYjE3MDQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTE4NSw3ICsxODUsNyBAQCBHbHlwaERhdGEgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQ6OmdseXBoRGF0YUZvckNoYXJhY3Rlcihjb25zdCBGb250JiBmb250LCBXaQogICAgIGNvbnN0
IFNpbXBsZUZvbnREYXRhKiBwcmltYXJ5Rm9udCA9IGZvbnQucHJpbWFyeUZvbnQoKTsKICAgICBB
U1NFUlQocHJpbWFyeUZvbnQpOwogCi0gICAgcGFpcjxHbHlwaERhdGEsIEdseXBoUGFnZSo+IHBh
aXIgPSBmb250LmdseXBoRGF0YUFuZFBhZ2VGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBtaXJyb3Is
IEF1dG9WYXJpYW50KTsKKyAgICBzdGQ6OnBhaXI8R2x5cGhEYXRhLCBHbHlwaFBhZ2UqPiBwYWly
ID0gZm9udC5nbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgbWlycm9yLCBB
dXRvVmFyaWFudCk7CiAgICAgR2x5cGhEYXRhIGdseXBoRGF0YSA9IHBhaXIuZmlyc3Q7CiAKICAg
ICAvLyBDaGVjayBpZiB3ZSBoYXZlIHRoZSBtaXNzaW5nIGdseXBoIGRhdGEsIGluIHdoaWNoIGNh
c2Ugd2UgY2FuIGp1c3QgcmV0dXJuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkQW5nbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUu
Y3BwCmluZGV4IDIwOGNlN2MxZmYwYzk4OTlmYjNmNzc5ZDlkODI3MTFlOTgxNWMxMzcuLmYzZTNi
MmVjOTgwZmIzNDc3NDYzYjY0OWFiZmJiMTY2ZDQyYjA5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRBbmdsZS5jcHAKQEAgLTM0LDggKzM0LDggQEAgU1ZHQW5pbWF0ZWRBbmdsZUFu
aW1hdG9yOjpTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5p
bWF0aW8KIAogc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRBbmds
ZUFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewot
ICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVBbmdsZUFuZEVu
dW1lcmF0aW9uKHN0ZDo6bWFrZV91bmlxdWU8cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+PigpKTsK
LSAgICBwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4mIGFuaW1hdGVkUGFpciA9IGFuaW1hdGVkVHlw
ZS0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5p
bWF0ZWRUeXBlOjpjcmVhdGVBbmdsZUFuZEVudW1lcmF0aW9uKHN0ZDo6bWFrZV91bmlxdWU8c3Rk
OjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4+KCkpOworICAgIHN0ZDo6cGFpcjxTVkdBbmdsZSwg
dW5zaWduZWQ+JiBhbmltYXRlZFBhaXIgPSBhbmltYXRlZFR5cGUtPmFuZ2xlQW5kRW51bWVyYXRp
b24oKTsKIAogICAgIFNWR0FuZ2xlIGFuZ2xlOwogICAgIFNWR01hcmtlck9yaWVudFR5cGUgb3Jp
ZW50VHlwZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+Ojpmcm9tU3Ry
aW5nKHN0cmluZywgIGFuZ2xlKTsKQEAgLTc3LDggKzc3LDggQEAgdm9pZCBTVkdBbmltYXRlZEFu
Z2xlQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdB
bmltYXQKICAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkQW5nbGUpOwogICAgIEFT
U0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKLSAgICBjb25zdCBwYWlyPFNWR0Fu
Z2xlLCB1bnNpZ25lZD4mIGZyb21BbmdsZUFuZEVudW1lcmF0aW9uID0gZnJvbS0+YW5nbGVBbmRF
bnVtZXJhdGlvbigpOwotICAgIHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgdG9BbmdsZUFuZEVu
dW1lcmF0aW9uID0gdG8tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKKyAgICBjb25zdCBzdGQ6OnBh
aXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24gPSBmcm9tLT5h
bmdsZUFuZEVudW1lcmF0aW9uKCk7CisgICAgc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4m
IHRvQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CiAgICAg
Ly8gT25seSByZXNwZWN0IGJ5IGFuaW1hdGlvbnMsIGlmIGZyb20gYW5kIGJ5IGFyZSBib3RoIHNw
ZWNpZmllZCBpbiBhbmdsZXMgKGFuZCBub3QgZWcuICdhdXRvJykuCiAgICAgaWYgKGZyb21Bbmds
ZUFuZEVudW1lcmF0aW9uLnNlY29uZCAhPSB0b0FuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kIHx8
IGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCAhPSBTVkdNYXJrZXJPcmllbnRBbmdsZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTIsMTAgKzkyLDEwIEBAIHZvaWQgU1ZHQW5pbWF0ZWRBbmds
ZUFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4
dEVsZW1lbnQpOwogCi0gICAgY29uc3QgcGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+JiBmcm9tQW5n
bGVBbmRFbnVtZXJhdGlvbiA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpID09
IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPmFuZ2xlQW5kRW51bWVyYXRpb24oKSA6IGZyb20tPmFu
Z2xlQW5kRW51bWVyYXRpb24oKTsKLSAgICBjb25zdCBwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4m
IHRvQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7Ci0gICAg
Y29uc3QgcGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+JiB0b0F0RW5kT2ZEdXJhdGlvbkFuZ2xlQW5k
RW51bWVyYXRpb24gPSB0b0F0RW5kT2ZEdXJhdGlvbi0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOwot
ICAgIHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9u
ID0gYW5pbWF0ZWQtPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKKyAgICBjb25zdCBzdGQ6OnBhaXI8
U1ZHQW5nbGUsIHVuc2lnbmVkPiYgZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24gPSBtX2FuaW1hdGlv
bkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5hbmds
ZUFuZEVudW1lcmF0aW9uKCkgOiBmcm9tLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CisgICAgY29u
c3Qgc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4mIHRvQW5nbGVBbmRFbnVtZXJhdGlvbiA9
IHRvLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CisgICAgY29uc3Qgc3RkOjpwYWlyPFNWR0FuZ2xl
LCB1bnNpZ25lZD4mIHRvQXRFbmRPZkR1cmF0aW9uQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvQXRF
bmRPZkR1cmF0aW9uLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CisgICAgc3RkOjpwYWlyPFNWR0Fu
Z2xlLCB1bnNpZ25lZD4mIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbiA9IGFuaW1hdGVkLT5h
bmdsZUFuZEVudW1lcmF0aW9uKCk7CiAKICAgICBpZiAoZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24u
c2Vjb25kICE9IHRvQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQpIHsKICAgICAgICAgLy8gQW5p
bWF0aW5nIGZyb20gZWcuIGF1dG8gdG8gOTBkZWcsIG9yIGF1dG8gdG8gOTBkZWcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVn
ZXIuY3BwCmluZGV4IDcwMDU5ZWY1ZTAwNTdkZGQ4MWUwNTUzNWU4YWQ4MmFhZjhhMDMyNzAuLjlm
MGJlOGNkYzZlZThjNzZmMjJmOTY4ODE5MTM5N2NmMmE3NGRiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3Bw
CkBAIC0zNSw4ICszNSw4IEBAIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1h
dG9yOjpTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltCiAKIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFu
aW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAg
IGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVJbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyKHN0ZDo6bWFrZV91bmlxdWU8cGFpcjxpbnQsIGludD4+KCkpOwotICAgIHBhaXI8
aW50LCBpbnQ+JiBhbmltYXRlZEludGVnZXIgPSBhbmltYXRlZFR5cGUtPmludGVnZXJPcHRpb25h
bEludGVnZXIoKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3Jl
YXRlSW50ZWdlck9wdGlvbmFsSW50ZWdlcihzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6cGFpcjxpbnQs
IGludD4+KCkpOworICAgIHN0ZDo6cGFpcjxpbnQsIGludD4mIGFuaW1hdGVkSW50ZWdlciA9IGFu
aW1hdGVkVHlwZS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwogICAgIGZsb2F0IGZpcnN0TnVt
YmVyID0gMDsKICAgICBmbG9hdCBzZWNvbmROdW1iZXIgPSAwOwogICAgIGlmICghcGFyc2VOdW1i
ZXJPcHRpb25hbE51bWJlcihzdHJpbmcsIGZpcnN0TnVtYmVyLCBzZWNvbmROdW1iZXIpKSB7CkBA
IC03OSw4ICs3OSw4IEBAIHZvaWQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5p
bWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlCiAgICAgQVNTRVJUKGZyb20t
PnR5cGUoKSA9PSBBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIpOwogICAgIEFTU0VSVChm
cm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKLSAgICBjb25zdCBwYWlyPGludCwgaW50PiYg
ZnJvbUludGVnZXJQYWlyID0gZnJvbS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwotICAgIHBh
aXI8aW50LCBpbnQ+JiB0b0ludGVnZXJQYWlyID0gdG8tPmludGVnZXJPcHRpb25hbEludGVnZXIo
KTsKKyAgICBjb25zdCBzdGQ6OnBhaXI8aW50LCBpbnQ+JiBmcm9tSW50ZWdlclBhaXIgPSBmcm9t
LT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7CisgICAgc3RkOjpwYWlyPGludCwgaW50PiYgdG9J
bnRlZ2VyUGFpciA9IHRvLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7CiAKICAgICB0b0ludGVn
ZXJQYWlyLmZpcnN0ICs9IGZyb21JbnRlZ2VyUGFpci5maXJzdDsKICAgICB0b0ludGVnZXJQYWly
LnNlY29uZCArPSBmcm9tSW50ZWdlclBhaXIuc2Vjb25kOwpAQCAtOTEsMTAgKzkxLDEwIEBAIHZv
aWQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAg
ICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAgY29uc3QgcGFpcjxpbnQsIGludD4m
IGZyb21JbnRlZ2VyUGFpciA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpID09
IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPmludGVnZXJPcHRpb25hbEludGVnZXIoKSA6IGZyb20t
PmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKLSAgICBjb25zdCBwYWlyPGludCwgaW50PiYgdG9J
bnRlZ2VyUGFpciA9IHRvLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7Ci0gICAgY29uc3QgcGFp
cjxpbnQsIGludD4mIHRvQXRFbmRPZkR1cmF0aW9uSW50ZWdlclBhaXIgPSB0b0F0RW5kT2ZEdXJh
dGlvbi0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwotICAgIHBhaXI8aW50LCBpbnQ+JiBhbmlt
YXRlZEludGVnZXJQYWlyID0gYW5pbWF0ZWQtPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKKyAg
ICBjb25zdCBzdGQ6OnBhaXI8aW50LCBpbnQ+JiBmcm9tSW50ZWdlclBhaXIgPSBtX2FuaW1hdGlv
bkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5pbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyKCkgOiBmcm9tLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7Cisg
ICAgY29uc3Qgc3RkOjpwYWlyPGludCwgaW50PiYgdG9JbnRlZ2VyUGFpciA9IHRvLT5pbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyKCk7CisgICAgY29uc3Qgc3RkOjpwYWlyPGludCwgaW50PiYgdG9BdEVu
ZE9mRHVyYXRpb25JbnRlZ2VyUGFpciA9IHRvQXRFbmRPZkR1cmF0aW9uLT5pbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyKCk7CisgICAgc3RkOjpwYWlyPGludCwgaW50PiYgYW5pbWF0ZWRJbnRlZ2VyUGFp
ciA9IGFuaW1hdGVkLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7CiAKICAgICBTVkdBbmltYXRl
ZEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKG1fYW5pbWF0aW9uRWxl
bWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21JbnRlZ2VyUGFpci5maXJzdCwgdG9J
bnRlZ2VyUGFpci5maXJzdCwgdG9BdEVuZE9mRHVyYXRpb25JbnRlZ2VyUGFpci5maXJzdCwgYW5p
bWF0ZWRJbnRlZ2VyUGFpci5maXJzdCk7CiAgICAgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6
OmNhbGN1bGF0ZUFuaW1hdGVkSW50ZWdlcihtX2FuaW1hdGlvbkVsZW1lbnQsIHBlcmNlbnRhZ2Us
IHJlcGVhdENvdW50LCBmcm9tSW50ZWdlclBhaXIuc2Vjb25kLCB0b0ludGVnZXJQYWlyLnNlY29u
ZCwgdG9BdEVuZE9mRHVyYXRpb25JbnRlZ2VyUGFpci5zZWNvbmQsIGFuaW1hdGVkSW50ZWdlclBh
aXIuc2Vjb25kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyLmNwcAppbmRleCBlN2RiNjg3MTc5MDcwMTBiMmIwZDZjYjU4YzAw
MGU4YzUwZTEyN2JmLi43MjlhNWQ4MGRlYmI5YjcyNDFlMmM2MjRhMWQzOWMxOWVhYTY2NjU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51
bWJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXIuY3BwCkBAIC0zNSw4ICszNSw4IEBAIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yCiAK
IHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXJBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKLSAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVt
YmVyT3B0aW9uYWxOdW1iZXIoc3RkOjptYWtlX3VuaXF1ZTxwYWlyPGZsb2F0LCBmbG9hdD4+KCkp
OwotICAgIHBhaXI8ZmxvYXQsIGZsb2F0PiYgYW5pbWF0ZWROdW1iZXIgPSBhbmltYXRlZFR5cGUt
Pm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmlt
YXRlZFR5cGU6OmNyZWF0ZU51bWJlck9wdGlvbmFsTnVtYmVyKHN0ZDo6bWFrZV91bmlxdWU8c3Rk
OjpwYWlyPGZsb2F0LCBmbG9hdD4+KCkpOworICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+JiBh
bmltYXRlZE51bWJlciA9IGFuaW1hdGVkVHlwZS0+bnVtYmVyT3B0aW9uYWxOdW1iZXIoKTsKICAg
ICBpZiAoIXBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoc3RyaW5nLCBhbmltYXRlZE51bWJlci5m
aXJzdCwgYW5pbWF0ZWROdW1iZXIuc2Vjb25kKSkgewogICAgICAgICBhbmltYXRlZE51bWJlci5m
aXJzdCA9IDA7CiAgICAgICAgIGFuaW1hdGVkTnVtYmVyLnNlY29uZCA9IDA7CkBAIC03NCw4ICs3
NCw4IEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjphZGRB
bmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSoKICAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09
IEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwogICAgIEFTU0VSVChmcm9tLT50eXBlKCkg
PT0gdG8tPnR5cGUoKSk7CiAKLSAgICBjb25zdCBwYWlyPGZsb2F0LCBmbG9hdD4mIGZyb21OdW1i
ZXJQYWlyID0gZnJvbS0+bnVtYmVyT3B0aW9uYWxOdW1iZXIoKTsKLSAgICBwYWlyPGZsb2F0LCBm
bG9hdD4mIHRvTnVtYmVyUGFpciA9IHRvLT5udW1iZXJPcHRpb25hbE51bWJlcigpOworICAgIGNv
bnN0IHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+JiBmcm9tTnVtYmVyUGFpciA9IGZyb20tPm51bWJl
ck9wdGlvbmFsTnVtYmVyKCk7CisgICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4mIHRvTnVtYmVy
UGFpciA9IHRvLT5udW1iZXJPcHRpb25hbE51bWJlcigpOwogCiAgICAgdG9OdW1iZXJQYWlyLmZp
cnN0ICs9IGZyb21OdW1iZXJQYWlyLmZpcnN0OwogICAgIHRvTnVtYmVyUGFpci5zZWNvbmQgKz0g
ZnJvbU51bWJlclBhaXIuc2Vjb25kOwpAQCAtODYsMTAgKzg2LDEwIEBAIHZvaWQgU1ZHQW5pbWF0
ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZs
b2F0IHBlcmNlCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1f
Y29udGV4dEVsZW1lbnQpOwogCi0gICAgY29uc3QgcGFpcjxmbG9hdCwgZmxvYXQ+JiBmcm9tTnVt
YmVyUGFpciA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpID09IFRvQW5pbWF0
aW9uID8gYW5pbWF0ZWQtPm51bWJlck9wdGlvbmFsTnVtYmVyKCkgOiAgZnJvbS0+bnVtYmVyT3B0
aW9uYWxOdW1iZXIoKTsKLSAgICBjb25zdCBwYWlyPGZsb2F0LCBmbG9hdD4mIHRvTnVtYmVyUGFp
ciA9IHRvLT5udW1iZXJPcHRpb25hbE51bWJlcigpOwotICAgIGNvbnN0IHBhaXI8ZmxvYXQsIGZs
b2F0PiYgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXJQYWlyID0gdG9BdEVuZE9mRHVyYXRpb24tPm51
bWJlck9wdGlvbmFsTnVtYmVyKCk7Ci0gICAgcGFpcjxmbG9hdCwgZmxvYXQ+JiBhbmltYXRlZE51
bWJlclBhaXIgPSBhbmltYXRlZC0+bnVtYmVyT3B0aW9uYWxOdW1iZXIoKTsKKyAgICBjb25zdCBz
dGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiYgZnJvbU51bWJlclBhaXIgPSBtX2FuaW1hdGlvbkVsZW1l
bnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5udW1iZXJPcHRp
b25hbE51bWJlcigpIDogIGZyb20tPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CisgICAgY29uc3Qg
c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4mIHRvTnVtYmVyUGFpciA9IHRvLT5udW1iZXJPcHRpb25h
bE51bWJlcigpOworICAgIGNvbnN0IHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+JiB0b0F0RW5kT2ZE
dXJhdGlvbk51bWJlclBhaXIgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+bnVtYmVyT3B0aW9uYWxOdW1i
ZXIoKTsKKyAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiYgYW5pbWF0ZWROdW1iZXJQYWlyID0g
YW5pbWF0ZWQtPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CiAKICAgICBtX2FuaW1hdGlvbkVsZW1l
bnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbU51
bWJlclBhaXIuZmlyc3QsIHRvTnVtYmVyUGFpci5maXJzdCwgdG9BdEVuZE9mRHVyYXRpb25OdW1i
ZXJQYWlyLmZpcnN0LCBhbmltYXRlZE51bWJlclBhaXIuZmlyc3QpOwogICAgIG1fYW5pbWF0aW9u
RWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBm
cm9tTnVtYmVyUGFpci5zZWNvbmQsIHRvTnVtYmVyUGFpci5zZWNvbmQsIHRvQXRFbmRPZkR1cmF0
aW9uTnVtYmVyUGFpci5zZWNvbmQsIGFuaW1hdGVkTnVtYmVyUGFpci5zZWNvbmQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAppbmRleCBkNWRmMjlkZmM3ZDE5NjA1NWM5NDBj
NzJlY2FmZTMxMWVkODgxMTZhLi4xZTExODVlMmIxYzJhMjVlNzRmMDM3MWQ3MGFkNDE4Y2M1ZWYw
MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcApAQCAtMTMyLDcgKzEz
Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6
Y3JlYXRlSW50ZWdlcihzdGQ6OnVuaXF1ZV9wdHI8CiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKHN0ZDo6dW5pcXVlX3B0cjxwYWlyPGludCwgaW50
Pj4gaW50ZWdlck9wdGlvbmFsSW50ZWdlcikKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlSW50ZWdlck9wdGlvbmFsSW50ZWdlcihzdGQ6OnVu
aXF1ZV9wdHI8c3RkOjpwYWlyPGludCwgaW50Pj4gaW50ZWdlck9wdGlvbmFsSW50ZWdlcikKIHsK
ICAgICBBU1NFUlQoaW50ZWdlck9wdGlvbmFsSW50ZWdlcik7CiAgICAgYXV0byBhbmltYXRlZFR5
cGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHlwZT4oQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxpc3Qoc3RkOjp1bmlxdWVf
cAogICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmlt
YXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyT3B0aW9uYWxOdW1iZXIoc3Rk
Ojp1bmlxdWVfcHRyPHBhaXI8ZmxvYXQsIGZsb2F0Pj4gbnVtYmVyT3B0aW9uYWxOdW1iZXIpCitz
dGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51
bWJlck9wdGlvbmFsTnVtYmVyKHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0
Pj4gbnVtYmVyT3B0aW9uYWxOdW1iZXIpCiB7CiAgICAgQVNTRVJUKG51bWJlck9wdGlvbmFsTnVt
YmVyKTsKICAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWRUeXBlPihBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFR5cGUuaAppbmRleCBjMzc2N2ExZjkwMzA0MzRjNDM0NWJhMzE3NDNlZWY4NDBhNjlm
OTcyLi5mMzhkY2Y0NjA2MTJjY2FkZGI2YTU1M2QzMjYzODY0YTViZTc1Mzc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuICptX2RhdGEuaW50ZWdlcjsKICAgICB9CiAKLSAgICBjb25zdCBwYWlyPGludCwg
aW50PiYgaW50ZWdlck9wdGlvbmFsSW50ZWdlcigpIGNvbnN0CisgICAgY29uc3Qgc3RkOjpwYWly
PGludCwgaW50PiYgaW50ZWdlck9wdGlvbmFsSW50ZWdlcigpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcik7CiAgICAg
ICAgIHJldHVybiAqbV9kYXRhLmludGVnZXJPcHRpb25hbEludGVnZXI7CkBAIC0xMjQsNyArMTI0
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKm1fZGF0YS5udW1iZXJMaXN0OwogICAgIH0K
IAotICAgIGNvbnN0IHBhaXI8ZmxvYXQsIGZsb2F0PiYgbnVtYmVyT3B0aW9uYWxOdW1iZXIoKSBj
b25zdAorICAgIGNvbnN0IHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+JiBudW1iZXJPcHRpb25hbE51
bWJlcigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTnVt
YmVyT3B0aW9uYWxOdW1iZXIpOwogICAgICAgICByZXR1cm4gKm1fZGF0YS5udW1iZXJPcHRpb25h
bE51bWJlcjsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9k
YXRhLmludGVnZXI7CiAgICAgfQogCi0gICAgcGFpcjxpbnQsIGludD4mIGludGVnZXJPcHRpb25h
bEludGVnZXIoKQorICAgIHN0ZDo6cGFpcjxpbnQsIGludD4mIGludGVnZXJPcHRpb25hbEludGVn
ZXIoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZEludGVnZXJPcHRp
b25hbEludGVnZXIpOwogICAgICAgICByZXR1cm4gKm1fZGF0YS5pbnRlZ2VyT3B0aW9uYWxJbnRl
Z2VyOwpAQCAtMjI3LDcgKzIyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICptX2RhdGEu
bnVtYmVyTGlzdDsKICAgICB9CiAKLSAgICBwYWlyPGZsb2F0LCBmbG9hdD4mIG51bWJlck9wdGlv
bmFsTnVtYmVyKCkKKyAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiYgbnVtYmVyT3B0aW9uYWxO
dW1iZXIoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZE51bWJlck9w
dGlvbmFsTnVtYmVyKTsKICAgICAgICAgcmV0dXJuICptX2RhdGEubnVtYmVyT3B0aW9uYWxOdW1i
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCmluZGV4
IGVjM2M1NjQxMTZmOGY4Yzk5NGQxOWQxOTc3NDI3N2ZmMTQ0ZDdiOGQuLmVjNTM0NjU2YzJiOTEy
YzUzZmZhYjU2OTI4OWE1YzRlZDMwN2IxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFR5cGVBbmltYXRvci5oCkBAIC0xMTUsMjYgKzExNSwyNiBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICAvLyBIZWxwZXJzIGZvciBhbmltYXRvcnMgdGhhdCBvcGVyYXRlIG9uIHBhaXIgdHlwZXMs
IGVnLiBhIHBhaXIgb2YgU1ZHQW5pbWF0ZWRJbnRlZ2Vycy4KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBbmltVmFsVHlwZTEsIHR5cGVuYW1lIEFuaW1WYWxUeXBlMj4KLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8cGFpcjx0eXBlbmFtZSBBbmltVmFsVHlwZTE6OkNvbnRlbnRUeXBlLCB0eXBlbmFtZSBBbmlt
VmFsVHlwZTI6OkNvbnRlbnRUeXBlPj4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZXMoY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxzdGQ6OnBhaXI8dHlwZW5hbWUgQW5pbVZhbFR5cGUxOjpDb250ZW50VHlwZSwgdHlw
ZW5hbWUgQW5pbVZhbFR5cGUyOjpDb250ZW50VHlwZT4+IGNvbnN0cnVjdEZyb21CYXNlVmFsdWVz
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKICAg
ICB7CiAgICAgICAgIEFTU0VSVChhbmltYXRlZFR5cGVzWzBdLnByb3BlcnRpZXMuc2l6ZSgpID09
IDIpOwogICAgICAgICBjb25zdCB0eXBlbmFtZSBBbmltVmFsVHlwZTE6OkNvbnRlbnRUeXBlJiBm
aXJzdFR5cGUgPSBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZTxBbmltVmFsVHlwZTE+
KGFuaW1hdGVkVHlwZXNbMF0ucHJvcGVydGllc1swXS5nZXQoKSktPmN1cnJlbnRCYXNlVmFsdWUo
KTsKICAgICAgICAgY29uc3QgdHlwZW5hbWUgQW5pbVZhbFR5cGUyOjpDb250ZW50VHlwZSYgc2Vj
b25kVHlwZSA9IGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlMj4o
YW5pbWF0ZWRUeXBlc1swXS5wcm9wZXJ0aWVzWzFdLmdldCgpKS0+Y3VycmVudEJhc2VWYWx1ZSgp
OwogCi0gICAgICAgIGF1dG8gY29weSA9IHN0ZDo6bWFrZV91bmlxdWU8cGFpcjx0eXBlbmFtZSBB
bmltVmFsVHlwZTE6OkNvbnRlbnRUeXBlLCB0eXBlbmFtZSBBbmltVmFsVHlwZTI6OkNvbnRlbnRU
eXBlPj4oZmlyc3RUeXBlLCBzZWNvbmRUeXBlKTsKKyAgICAgICAgYXV0byBjb3B5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxzdGQ6OnBhaXI8dHlwZW5hbWUgQW5pbVZhbFR5cGUxOjpDb250ZW50VHlwZSwg
dHlwZW5hbWUgQW5pbVZhbFR5cGUyOjpDb250ZW50VHlwZT4+KGZpcnN0VHlwZSwgc2Vjb25kVHlw
ZSk7CiAgICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZhbFR5cGUxPihTdGFydEFuaW1hdGlvbkFj
dGlvbiwgYW5pbWF0ZWRUeXBlcywgMCwgJmNvcHktPmZpcnN0KTsKICAgICAgICAgZXhlY3V0ZUFj
dGlvbjxBbmltVmFsVHlwZTI+KFN0YXJ0QW5pbWF0aW9uQWN0aW9uLCBhbmltYXRlZFR5cGVzLCAx
LCAmY29weS0+c2Vjb25kKTsKICAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQW5pbVZhbFR5cGUxLCB0eXBlbmFtZSBBbmltVmFsVHlwZTI+Ci0gICAg
dm9pZCByZXNldEZyb21CYXNlVmFsdWVzKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5
TGlzdCYgYW5pbWF0ZWRUeXBlcywgU1ZHQW5pbWF0ZWRUeXBlKiB0eXBlLCBwYWlyPHR5cGVuYW1l
IEFuaW1WYWxUeXBlMTo6Q29udGVudFR5cGUsIHR5cGVuYW1lIEFuaW1WYWxUeXBlMjo6Q29udGVu
dFR5cGU+JiAoU1ZHQW5pbWF0ZWRUeXBlOjoqZ2V0dGVyKSgpKQorICAgIHZvaWQgcmVzZXRGcm9t
QmFzZVZhbHVlcyhjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVk
VHlwZXMsIFNWR0FuaW1hdGVkVHlwZSogdHlwZSwgc3RkOjpwYWlyPHR5cGVuYW1lIEFuaW1WYWxU
eXBlMTo6Q29udGVudFR5cGUsIHR5cGVuYW1lIEFuaW1WYWxUeXBlMjo6Q29udGVudFR5cGU+JiAo
U1ZHQW5pbWF0ZWRUeXBlOjoqZ2V0dGVyKSgpKQogICAgIHsKICAgICAgICAgQVNTRVJUKGFuaW1h
dGVkVHlwZXNbMF0ucHJvcGVydGllcy5zaXplKCkgPT0gMik7CiAgICAgICAgIEFTU0VSVCh0eXBl
KTsKICAgICAgICAgQVNTRVJUKHR5cGUtPnR5cGUoKSA9PSBtX3R5cGUpOwogCi0gICAgICAgIHBh
aXI8dHlwZW5hbWUgQW5pbVZhbFR5cGUxOjpDb250ZW50VHlwZSwgdHlwZW5hbWUgQW5pbVZhbFR5
cGUyOjpDb250ZW50VHlwZT4mIGFuaW1hdGVkVHlwZVZhbHVlID0gKHR5cGUtPipnZXR0ZXIpKCk7
CisgICAgICAgIHN0ZDo6cGFpcjx0eXBlbmFtZSBBbmltVmFsVHlwZTE6OkNvbnRlbnRUeXBlLCB0
eXBlbmFtZSBBbmltVmFsVHlwZTI6OkNvbnRlbnRUeXBlPiYgYW5pbWF0ZWRUeXBlVmFsdWUgPSAo
dHlwZS0+KmdldHRlcikoKTsKICAgICAgICAgYW5pbWF0ZWRUeXBlVmFsdWUuZmlyc3QgPSBjYXN0
QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZTxBbmltVmFsVHlwZTE+KGFuaW1hdGVkVHlwZXNb
MF0ucHJvcGVydGllc1swXS5nZXQoKSktPmN1cnJlbnRCYXNlVmFsdWUoKTsKICAgICAgICAgYW5p
bWF0ZWRUeXBlVmFsdWUuc2Vjb25kID0gY2FzdEFuaW1hdGVkUHJvcGVydHlUb0FjdHVhbFR5cGU8
QW5pbVZhbFR5cGUyPihhbmltYXRlZFR5cGVzWzBdLnByb3BlcnRpZXNbMV0uZ2V0KCkpLT5jdXJy
ZW50QmFzZVZhbHVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJz
ZXJVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaApp
bmRleCA5MWNlY2M2ODc0ZjRhMWE3ZTgwZTBkMzAxMGRlNTE2MDljNTU0NWYyLi41Nzk3YTE3MDZh
MmIxZGYxNzNkYjk2YTg0MzUzZjRmMzQwMzNlOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
cnNlclV0aWxpdGllcy5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiUGFyc2VyVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAotdHlwZWRlZiBwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gVW5pY29kZVJhbmdlOwordHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBVbmljb2RlUmFuZ2U7CiB0eXBlZGVmIFZlY3RvcjxVbmljb2RlUmFuZ2U+IFVuaWNv
ZGVSYW5nZXM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuaAppbmRleCA4MWQxOTRlMmEzNGI4NWUxNmUw
NzA2MTExNTE1MzRmY2UyNmUzNmM4Li40YTNlZmEwOTY3YmJkNDhiNmI0YjU4MjI4NTk1OTE0Mzk1
ZWM4ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1l
Q29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNv
bnRhaW5lci5oCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgVGltZXI8U01J
TFRpbWVDb250YWluZXI+IG1fdGltZXI7CiAKLSAgICB0eXBlZGVmIHBhaXI8U1ZHRWxlbWVudCos
IFF1YWxpZmllZE5hbWU+IEVsZW1lbnRBdHRyaWJ1dGVQYWlyOworICAgIHR5cGVkZWYgc3RkOjpw
YWlyPFNWR0VsZW1lbnQqLCBRdWFsaWZpZWROYW1lPiBFbGVtZW50QXR0cmlidXRlUGFpcjsKICAg
ICB0eXBlZGVmIFZlY3RvcjxTVkdTTUlMRWxlbWVudCo+IEFuaW1hdGlvbnNWZWN0b3I7CiAgICAg
dHlwZWRlZiBIYXNoTWFwPEVsZW1lbnRBdHRyaWJ1dGVQYWlyLCBzdGQ6OnVuaXF1ZV9wdHI8QW5p
bWF0aW9uc1ZlY3Rvcj4+IEdyb3VwZWRBbmltYXRpb25zTWFwOwogICAgIEdyb3VwZWRBbmltYXRp
b25zTWFwIG1fc2NoZWR1bGVkQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgK
aW5kZXggMjcyMWM5MWFkMTJmYjNmM2VlYjIzMjYwOTFiNjY2OWJhNmQ0OTI2OC4uMmZlNWM0YjJh
NzlkYTEwMGE2MWZmYmE4NzI0N2ZjM2VjN2VhNjVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5LmgKQEAgLTMzNCw3ICszMzQsNyBAQCBwcml2YXRlOgogICAgICAgICBIYXNoTWFwPHVpbnQz
Ml90LCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4gbV9pZFRvSlNPYmplY3RNYXA7CiAgICAg
ICAgIC8vIFRoZSBwYWlyIGNvbnNpc3RzIG9mIG9iamVjdCBJRCBhbmQgYSByZWZlcmVuY2UgY291
bnQuIE9uZSByZWZlcmVuY2UgYmVsb25ncyB0byByZW1vdGUgcGx1Zy1pbiwKICAgICAgICAgLy8g
YW5kIHRoZSBwcm94eSB3aWxsIGFkZCB0cmFuc2llbnQgcmVmZXJlbmNlcyBmb3IgYXJndW1lbnRz
IHRoYXQgYXJlIGJlaW5nIHNlbnQgb3V0LgotICAgICAgICBIYXNoTWFwPEpTQzo6SlNPYmplY3Qq
LCBwYWlyPHVpbnQzMl90LCB1aW50MzJfdD4+IG1fanNPYmplY3RUb0lETWFwOworICAgICAgICBI
YXNoTWFwPEpTQzo6SlNPYmplY3QqLCBzdGQ6OnBhaXI8dWludDMyX3QsIHVpbnQzMl90Pj4gbV9q
c09iamVjdFRvSURNYXA7CiAgICAgICAgIHVpbnQzMl90IG1fb2JqZWN0SURDb3VudGVyOwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCBiNTUxOWI3MDBhYzExOTcx
NGExMWZmNzc2ZjYzMmUyOTZiNzI1MDM3Li5lMTE1ZGRiMGIzZGIxZjY1MjFlMDc5OGQ0ZTQxMDI3
MzZkMzM1Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xNDMsNyArMTQz
LDcgQEAgdWludDMyX3QgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1h
cDo6aWRGb3JPYmplY3QoVk0mIHZtLCBKU09iamUKIAogICAgIHVpbnQzMl90IG9iamVjdElEID0g
MDsKICAgICAKLSAgICBIYXNoTWFwPEpTQzo6SlNPYmplY3QqLCBwYWlyPHVpbnQzMl90LCB1aW50
MzJfdD4+OjppdGVyYXRvciBpdGVyID0gbV9qc09iamVjdFRvSURNYXAuZmluZChvYmplY3QpOwor
ICAgIEhhc2hNYXA8SlNDOjpKU09iamVjdCosIHN0ZDo6cGFpcjx1aW50MzJfdCwgdWludDMyX3Q+
Pjo6aXRlcmF0b3IgaXRlciA9IG1fanNPYmplY3RUb0lETWFwLmZpbmQob2JqZWN0KTsKICAgICBp
ZiAoaXRlciAhPSBtX2pzT2JqZWN0VG9JRE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXIt
PnZhbHVlLmZpcnN0OwogICAgIApAQCAtMTU5LDcgKzE1OSw3IEBAIHVpbnQzMl90IE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6TG9jYWxPYmplY3RNYXA6OmlkRm9yT2JqZWN0KFZNJiB2bSwg
SlNPYmplCiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1h
cDo6cmV0YWluKEpTQzo6SlNPYmplY3QqIG9iamVjdCkKIHsKLSAgICBIYXNoTWFwPEpTQzo6SlNP
YmplY3QqLCBwYWlyPHVpbnQzMl90LCB1aW50MzJfdD4+OjppdGVyYXRvciBpdGVyID0gbV9qc09i
amVjdFRvSURNYXAuZmluZChvYmplY3QpOworICAgIEhhc2hNYXA8SlNDOjpKU09iamVjdCosIHN0
ZDo6cGFpcjx1aW50MzJfdCwgdWludDMyX3Q+Pjo6aXRlcmF0b3IgaXRlciA9IG1fanNPYmplY3RU
b0lETWFwLmZpbmQob2JqZWN0KTsKICAgICBBU1NFUlQoaXRlciAhPSBtX2pzT2JqZWN0VG9JRE1h
cC5lbmQoKSk7CiAKICAgICBpdGVyLT52YWx1ZS5zZWNvbmQgPSBpdGVyLT52YWx1ZS5zZWNvbmQg
KyAxOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
OjpMb2NhbE9iamVjdE1hcDo6cmV0YWluKEpTQzo6SlNPYmplY3QqIG9iamVjdCkKIAogdm9pZCBO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpyZWxlYXNlKEpTQzo6
SlNPYmplY3QqIG9iamVjdCkKIHsKLSAgICBIYXNoTWFwPEpTQzo6SlNPYmplY3QqLCBwYWlyPHVp
bnQzMl90LCB1aW50MzJfdD4+OjppdGVyYXRvciBpdGVyID0gbV9qc09iamVjdFRvSURNYXAuZmlu
ZChvYmplY3QpOworICAgIEhhc2hNYXA8SlNDOjpKU09iamVjdCosIHN0ZDo6cGFpcjx1aW50MzJf
dCwgdWludDMyX3Q+Pjo6aXRlcmF0b3IgaXRlciA9IG1fanNPYmplY3RUb0lETWFwLmZpbmQob2Jq
ZWN0KTsKICAgICBBU1NFUlQoaXRlciAhPSBtX2pzT2JqZWN0VG9JRE1hcC5lbmQoKSk7CiAKICAg
ICBBU1NFUlQoaXRlci0+dmFsdWUuc2Vjb25kID4gMCk7CkBAIC0xOTcsNyArMTk3LDcgQEAgYm9v
bCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpmb3JnZXQodWlu
dDMyX3Qgb2JqZWN0SUQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEhhc2hN
YXA8SlNDOjpKU09iamVjdCosIHBhaXI8dWludDMyX3QsIHVpbnQzMl90Pj46Oml0ZXJhdG9yIHJJ
dGVyID0gbV9qc09iamVjdFRvSURNYXAuZmluZChpdGVyLT52YWx1ZS5nZXQoKSk7CisgICAgSGFz
aE1hcDxKU0M6OkpTT2JqZWN0Kiwgc3RkOjpwYWlyPHVpbnQzMl90LCB1aW50MzJfdD4+OjppdGVy
YXRvciBySXRlciA9IG1fanNPYmplY3RUb0lETWFwLmZpbmQoaXRlci0+dmFsdWUuZ2V0KCkpOwog
CiAgICAgLy8gSWYgdGhlIG9iamVjdCBpcyBiZWluZyBzZW50IHRvIHBsdWctaW4gcmlnaHQgbm93
LCB0aGVuIGl0J3Mgbm90IHRoZSB0aW1lIHRvIGZvcmdldC4KICAgICBpZiAockl0ZXItPnZhbHVl
LnNlY29uZCAhPSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1
bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2Rl
cnNNYWMubW0KaW5kZXggMDQ3MWNmOWE5OTE5ODE4MjkxMTNjNzM5MGRhZWY4YzFmY2M0YTlmMC4u
MDkyMTYwZTBlM2E0MDdmNWQxOTBjZjk0M2Y2MzIxNTNmYjBkYzkzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tCkBAIC0yMTgsNyArMjE4LDcg
QEAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBOU0F0dHJpYnV0ZWRTdHJp
bmcgKnN0cmluZykKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IFtwbGFpblN0cmluZyBsZW5ndGhd
OwogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHBsYWluU3RyaW5nKTsKIAotICAgIFZlY3Rvcjxw
YWlyPE5TUmFuZ2UsIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+Pj4gcmFuZ2VzOworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8TlNSYW5nZSwgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4+PiByYW5nZXM7CiAK
ICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICB3aGlsZSAocG9zaXRpb24gPCBsZW5n
dGgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDY3
ODFjMGI0NWJlYmI5NzkzMjNjZmU4ZGExMjlhMzU2MzdkNWFjMGQuLjM5ODA5ZmQ1MGRlMTZjMzk3
NmE0NjI3NmRiNjJkMDJhNzk3YmIwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5LmNwcApAQCAtMTA0LDIxICsxMDQsMjEgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRp
dGwKIHsKICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdlbmVyYXRlR2xvYmFs
Tm90aWZpY2F0aW9uSUQoKTsKICAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBub3RpZmljYXRp
b24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBs
YW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwotICAgIHBhaXI8
dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIgPSBtYWtlX3BhaXIod2ViUGFn
ZS0+cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRpb25JRCk7CisgICAgc3RkOjpwYWlyPHVpbnQ2NF90
LCB1aW50NjRfdD4gbm90aWZpY2F0aW9uSURQYWlyID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZS0+
cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25N
YXAuc2V0KGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb25JRFBhaXIpOwotICAgIG1f
bm90aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0aW9uSURQYWlyLCBtYWtlX3BhaXIoZ2xvYmFsTm90
aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbikpOworICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90
aWZpY2F0aW9uSURQYWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90
aWZpY2F0aW9uKSk7CiAgICAgbV9wcm92aWRlci5zaG93KHdlYlBhZ2UsIG5vdGlmaWNhdGlvbi5n
ZXQoKSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCiB7Ci0gICAg
aWYgKFdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldCht
YWtlX3BhaXIod2ViUGFnZS0+cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRpb25JRCkpLnNlY29uZC5n
ZXQoKSkKKyAgICBpZiAoV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNh
dGlvbnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0
aW9uSUQpKS5zZWNvbmQuZ2V0KCkpCiAgICAgICAgIG1fcHJvdmlkZXIuY2FuY2VsKG5vdGlmaWNh
dGlvbik7CiB9CiAgICAgCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VOb3Rp
ZmljYXRpb25JRCkKIHsKLSAgICBhdXRvIGdsb2JhbElETm90aWZpY2F0aW9uUGFpciA9IG1fbm90
aWZpY2F0aW9ucy50YWtlKG1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNh
dGlvbklEKSk7CisgICAgYXV0byBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIgPSBtX25vdGlmaWNh
dGlvbnMudGFrZShzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNh
dGlvbklEKSk7CiAgICAgaWYgKHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gZ2xvYmFs
SUROb3RpZmljYXRpb25QYWlyLmZpcnN0KSB7CiAgICAgICAgIFdlYk5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uID0gZ2xvYmFsSUROb3RpZmljYXRpb25QYWlyLnNlY29uZC5nZXQoKTsKICAgICAg
ICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3ZlKGdsb2JhbE5vdGlmaWNhdGlvbklEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggMDExNjEzNTZiYWVi
M2ZiMTM0MmRiNzM3YTMwMmZlZmY3ZTJhMzg2My4uYTE4MWNjYjdhZDI1NTJmM2QxMjIxMDQwMzdk
ZTNiMTM1MDYxMWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgK
QEAgLTg0LDkgKzg0LDkgQEAgcHJpdmF0ZToKIAogICAgIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
IG1fcHJvdmlkZXI7CiAgICAgLy8gUGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRo
ZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRAotICAgIEhhc2hNYXA8dWludDY0X3QsIHBh
aXI8dWludDY0X3QsIHVpbnQ2NF90Pj4gbV9nbG9iYWxOb3RpZmljYXRpb25NYXA7CisgICAgSGFz
aE1hcDx1aW50NjRfdCwgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90
aWZpY2F0aW9uTWFwOwogICAgIC8vIEtleSBwYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBh
bmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElEOyB2YWx1ZSBwYWlyIGNvbXByaXNl
ZCBvZiBnbG9iYWwgbm90aWZpY2F0aW9uIElELCBhbmQgbm90aWZpY2F0aW9uIG9iamVjdAotICAg
IEhhc2hNYXA8cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+LCBwYWlyPHVpbnQ2NF90LCBSZWZQdHI8
V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKKyAgICBIYXNoTWFwPHN0ZDo6cGFp
cjx1aW50NjRfdCwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3Rp
ZmljYXRpb24+Pj4gbV9ub3RpZmljYXRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggNzExN2Y3MjkyMTFj
ODNlOTIyMTQ0NGI2MDdhNzc0ZTM3MDA2MDhmZi4uNDk0OTMyNmMyMzlmMGVmYzFmYzllZmFmZGE5
ZmNmOGU4MmUxNTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApA
QCAtNTk5LDcgKzU5OSw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViQ29udGV4dDo6Y3JlYXRlTmV3
V2ViUHJvY2VzcygpCiAKICAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hh
cmVkU2Vjb25kYXJ5UHJvY2VzcykgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBt
X21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICBwYWlyPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4mIG1lc3Nh
Z2UgPSBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0W2ldOwor
ICAgICAgICAgICAgc3RkOjpwYWlyPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4mIG1lc3Nh
Z2UgPSBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0W2ldOwog
CiAgICAgICAgICAgICBJUEM6OkFyZ3VtZW50RW5jb2RlciBtZXNzYWdlRGF0YTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggMjYwYzFhMDFkZTJiMzg0MjI5NjhhNTdm
OWRiNDFlM2E3OTExZjExZi4uM2U2ZGMxOTA5NjY2Y2U3Yzc3ZTg2N2UzYTM5ODhmZjFhNGFhMjBm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC00NDYsNyArNDQ2LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2VzIHRoYXQgd2VyZSBwb3N0ZWQgYmVmb3JlIGFu
eSBwYWdlcyB3ZXJlIGNyZWF0ZWQuCiAgICAgLy8gVGhlIGNsaWVudCBzaG91bGQgdXNlIGluaXRp
YWxpemF0aW9uIG1lc3NhZ2VzIGluc3RlYWQsIHNvIHRoYXQgYSByZXN0YXJ0ZWQgcHJvY2VzcyB3
b3VsZCBnZXQgdGhlIHNhbWUgc3RhdGUuCi0gICAgVmVjdG9yPHBhaXI8U3RyaW5nLCBSZWZQdHI8
QVBJOjpPYmplY3Q+Pj4gbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29u
dGV4dDsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4+
IG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQ7CiAKICAgICBD
YWNoZU1vZGVsIG1fY2FjaGVNb2RlbDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>