<?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>81556</bug_id>
          
          <creation_ts>2012-03-19 13:52:26 -0700</creation_ts>
          <short_desc>DFG NodeUse should be called Edge and NodeReferenceBlob should be called AdjacencyList</short_desc>
          <delta_ts>2012-03-19 14:49:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>582189</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-19 13:52:26 -0700</bug_when>
    <thetext>Patch forthcoming.  Already rubber-stamped by Gavin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582192</commentid>
    <comment_count>1</comment_count>
      <attachid>132659</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-19 13:54:50 -0700</bug_when>
    <thetext>Created attachment 132659
the patch

Already rubber stamped, putting up for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582198</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 13:57:22 -0700</bug_when>
    <thetext>Attachment 132659 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGNode.h:37:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582284</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-19 14:49:34 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/111254</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132659</attachid>
            <date>2012-03-19 13:54:50 -0700</date>
            <delta_ts>2012-03-19 13:54:50 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>edge_patch_1.diff</filename>
            <type>text/plain</type>
            <size>76792</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExMjM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBA
QAorMjAxMi0wMy0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBOb2RlVXNlIHNob3VsZCBiZSBjYWxsZWQgRWRnZSBhbmQgTm9kZVJlZmVyZW5jZUJsb2Ig
c2hvdWxkIGJlIGNhbGxlZCBBZGphY2VuY3lMaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTU1NgorCisgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5
IEdhdmluIEJhcnJhY2xvdWdoLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RT
dGF0ZTo6Zm9yTm9kZSk6CisgICAgICAgICogZGZnL0RGR0FkamFjZW5jeUxpc3QuaDogQ29waWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlUmVmZXJlbmNlQmxvYi5oLgor
ICAgICAgICAoSlNDOjpERkc6OkFkamFjZW5jeUxpc3Q6OkFkamFjZW5jeUxpc3QpOgorICAgICAg
ICAoSlNDOjpERkc6OkFkamFjZW5jeUxpc3Q6OmNoaWxkKToKKyAgICAgICAgKEpTQzo6REZHOjpB
ZGphY2VuY3lMaXN0OjpzZXRDaGlsZCk6CisgICAgICAgIChKU0M6OkRGRzo6QWRqYWNlbmN5TGlz
dDo6Y2hpbGQxKToKKyAgICAgICAgKEpTQzo6REZHOjpBZGphY2VuY3lMaXN0OjpjaGlsZDIpOgor
ICAgICAgICAoSlNDOjpERkc6OkFkamFjZW5jeUxpc3Q6OmNoaWxkMyk6CisgICAgICAgIChKU0M6
OkRGRzo6QWRqYWNlbmN5TGlzdDo6c2V0Q2hpbGQxKToKKyAgICAgICAgKEpTQzo6REZHOjpBZGph
Y2VuY3lMaXN0OjpzZXRDaGlsZDIpOgorICAgICAgICAoSlNDOjpERkc6OkFkamFjZW5jeUxpc3Q6
OnNldENoaWxkMyk6CisgICAgICAgIChKU0M6OkRGRzo6QWRqYWNlbmN5TGlzdDo6Y2hpbGQxVW5j
aGVja2VkKToKKyAgICAgICAgKEpTQzo6REZHOjpBZGphY2VuY3lMaXN0Ojppbml0aWFsaXplKToK
KyAgICAgICAgKEFkamFjZW5jeUxpc3QpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZFZhckFyZ0NoaWxk
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cHJvY2Vzc1BoaVN0YWNrKToK
KyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBo
YXNlOjpjYW5vbmljYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpwZXJmb3Jt
U3Vic3RpdHV0aW9uKToKKyAgICAgICAgKiBkZmcvREZHRWRnZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVVc2UuaC4KKyAgICAgICAgKERGRyk6CisgICAg
ICAgIChKU0M6OkRGRzo6RWRnZTo6RWRnZSk6CisgICAgICAgIChKU0M6OkRGRzo6RWRnZTo6b3Bl
cmF0b3I9PSk6CisgICAgICAgIChKU0M6OkRGRzo6RWRnZTo6b3BlcmF0b3IhPSk6CisgICAgICAg
IChFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6
REZHOjpvcGVyYXRvciE9KToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmF0
KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6cmVmKToKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6ZGVyZWYpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpjbGVhckFuZERlcmVmQ2hp
bGQxKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Y2xlYXJBbmREZXJlZkNoaWxkMik6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmNsZWFyQW5kRGVyZWZDaGlsZDMpOgorICAgICAgICAo
R3JhcGgpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpnZXRQcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5o
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmNoaWxkMSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y2hpbGQxVW5jaGVja2VkKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjaGlsZDIpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmNoaWxkMyk6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZsYWdz
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjphcml0aE5vZGVGbGFnc0FzU3RyaW5nKToKKyAgICAg
ICAgKiBkZmcvREZHTm9kZUZsYWdzLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpE
Rkc6Om5vZGVVc2VkQXNOdW1iZXIpOgorICAgICAgICAqIGRmZy9ERkdOb2RlUmVmZXJlbmNlQmxv
Yi5oOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVXNlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAg
KEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6bWVyZ2VEZWZhdWx0QXJpdGhG
bGFncyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnZv
dGUpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpmaXh1
cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdTY29yZUJvYXJkLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6U2NvcmVCb2FyZDo6dXNlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp1c2VDaGlsZHJlbik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5
cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlU3RyaWN0RXFGb3JDb25zdGFudCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmF0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FuUmV1c2UpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjp1c2UpOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6dGVybWluYXRlU3BlY3VsYXRpdmVFeGVj
dXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkludGVnZXJPcGVyYW5kOjpJbnRlZ2VyT3BlcmFu
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6RG91YmxlT3BlcmFuZDo6RG91YmxlT3BlcmFuZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SlNWYWx1ZU9wZXJhbmQ6OkpTVmFsdWVPcGVyYW5kKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTdG9yYWdlT3BlcmFuZDo6U3RvcmFnZU9wZXJhbmQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0ZUludGVnZXJPcGVyYW5kOjpTcGVjdWxhdGVJbnRlZ2VyT3BlcmFu
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kOjpTcGVj
dWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQ6OlNwZWN1bGF0ZURvdWJsZU9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZUNlbGxPcGVyYW5kOjpTcGVjdWxhdGVDZWxsT3BlcmFuZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ6OlNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5k
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBo
b2xlQnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNw
ZWN1bGF0aXZlQ29tcGFyZU51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RPck90aGVyTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlQ29tcGFyZU51bGwpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKwog
MjAxMi0wMy0xOSAgWW9uZyBMaSAgPHlvbGlAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJy
eV0gSW1wbGVtZW50IE9TQWxsb2NhdG9yOjpjb21taXQvZGVjb21taXQgaW4gdGhlIGNvcnJlY3Qg
d2F5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2
aXNpb24gMTExMjMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVGbGFncy5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVSZWZlcmVuY2VCbG9iLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRq
YWNlbmN5TGlzdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgg
XAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVVzZS5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYW5kcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTExMjMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOSw4ICsxMDksOCBAQAogCQkwRjYyMDE3NzE0M0ZDRDNGMDA2
OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNkYxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0
VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjYyMDE3ODE0M0ZDRDQ0MDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNkUxNDNGQ0QyRjAw
NjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3OTE0M0ZDRDQ4MDA2OEI3N0MgLyogREZHQWJz
dHJhY3RTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi87
IH07Ci0JCTBGNjZFMTZCMTRERjNGMTYwMEI3QjJFNCAvKiBERkdOb2RlUmVmZXJlbmNlQmxvYi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NkUxNjgx
NERGM0YxMzAwQjdCMkU0IC8qIERGR05vZGVSZWZlcmVuY2VCbG9iLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEY2NkUxNkMxNERGM0YxNjAwQjdC
MkU0IC8qIERGR05vZGVVc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNjZFMTY5MTRERjNGMTMwMEI3QjJFNCAvKiBERkdOb2RlVXNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY2NkUxNkIxNERG
M0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZFMTY4MTRERjNGMTMwMEI3QjJFNCAvKiBERkdB
ZGphY2VuY3lMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZFMTY5MTRERjNGMTMwMEI3
QjJFNCAvKiBERkdFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA5
MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLzsgfTsKIAkJMEY3QjI5
NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8q
IERGR0NDYWxsSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTFG
MTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODI1LDggKzgyNSw4IEBACiAJCTBGNjIw
MTcxMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdPcGVyYW5kcy5oOyBwYXRoID0gZGZnL0RGR09wZXJhbmRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjIwMTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBE
RkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHVmFyaWFibGVBY2Nlc3NEYXRhLmg7IHBhdGggPSBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjM2RDlGMTQyRDI3RDIwMEIyRTY2
QSAvKiBQYWNrZWRJbnRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFja2VkSW50VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjZFMTY4
MTRERjNGMTMwMEI3QjJFNCAvKiBERkdOb2RlUmVmZXJlbmNlQmxvYi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdOb2RlUmVmZXJlbmNlQmxvYi5oOyBwYXRoID0gZGZnL0RG
R05vZGVSZWZlcmVuY2VCbG9iLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjZF
MTY5MTRERjNGMTMwMEI3QjJFNCAvKiBERkdOb2RlVXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR05vZGVVc2UuaDsgcGF0aCA9IGRmZy9ERkdOb2RlVXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjZFMTY4MTRERjNGMTMwMEI3QjJFNCAvKiBERkdB
ZGphY2VuY3lMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FkamFj
ZW5jeUxpc3QuaDsgcGF0aCA9IGRmZy9ERkdBZGphY2VuY3lMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNjZFMTY5MTRERjNGMTMwMEI3QjJFNCAvKiBERkdFZGdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0VkZ2UuaDsgcGF0aCA9IGRmZy9ERkdF
ZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2FtcGxpbmdDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcw
MDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8qIERGR0NDYWxsSGVs
cGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDQ2FsbEhlbHBlcnMu
aDsgcGF0aCA9IGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI1MzcsOSArMjUzNyw5IEBACiAJCQkJODZFQ0EzRTkxMzJERUYxQzAwMkIyQUQ3IC8q
IERGR05vZGUuaCAqLywKIAkJCQkwRkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZs
YWdzLmNwcCAqLywKIAkJCQkwRkE1ODFCODE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdz
LmggKi8sCi0JCQkJMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR05vZGVSZWZlcmVuY2VC
bG9iLmggKi8sCisJCQkJMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxp
c3QuaCAqLywKIAkJCQkwRkE1ODFCOTE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCAq
LywKLQkJCQkwRjY2RTE2OTE0REYzRjEzMDBCN0IyRTQgLyogREZHTm9kZVVzZS5oICovLAorCQkJ
CTBGNjZFMTY5MTRERjNGMTMwMEI3QjJFNCAvKiBERkdFZGdlLmggKi8sCiAJCQkJMEY2MjAxNzEx
NDNGQ0QyRjAwNjhCNzdDIC8qIERGR09wZXJhbmRzLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIw
MDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCkBAIC0zMDc1LDggKzMwNzUsOCBAQAogCQkJ
CTBGOTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjkzMzJBNTE0Q0E3REREMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR05vZGVSZWZl
cmVuY2VCbG9iLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjY2RTE2QzE0REYzRjE2MDBCN0IyRTQg
LyogREZHTm9kZVVzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdC
MkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjZFMTZDMTRE
RjNGMTYwMEI3QjJFNCAvKiBERkdFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNDE0
RTFCNjAwMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQkUyQ0FFMTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFk
ZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0
YXRlLmgJKHJldmlzaW9uIDExMTIzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9ub2Rlc1tub2RlSW5kZXhdOwogICAgIH0KICAgICAKLSAgICBB
YnN0cmFjdFZhbHVlJiBmb3JOb2RlKE5vZGVVc2Ugbm9kZVVzZSkKKyAgICBBYnN0cmFjdFZhbHVl
JiBmb3JOb2RlKEVkZ2Ugbm9kZVVzZSkKICAgICB7CiAgICAgICAgIHJldHVybiBmb3JOb2RlKG5v
ZGVVc2UuaW5kZXgoKSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBZGphY2VuY3lMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBZGphY2VuY3lMaXN0LmgJKHJldmlzaW9uIDExMTIzMykJKGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlUmVmZXJlbmNlQmxvYi5oOjExMTIzMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgREZHTm9kZVJlZmVyZW5jZUJsb2JfaAorI2RlZmluZSBERkdOb2RlUmVmZXJl
bmNlQmxvYl9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdf
SklUKQorCisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiREZHTm9kZVVzZS5oIgor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIE5vZGVSZWZlcmVuY2VC
bG9iIHsKK3B1YmxpYzoKKyAgICBlbnVtIEtpbmQgeworICAgICAgICBGaXhlZCwKKyAgICAgICAg
VmFyaWFibGUKKyAgICB9OworCisgICAgTm9kZVJlZmVyZW5jZUJsb2IoS2luZCBraW5kKQorI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKKyNlbmRpZgorICAgIHsK
KyAgICAgICAgaWYgKGtpbmQgPT0gVmFyaWFibGUpIHsKKyAgICAgICAgICAgIG1fd29yZHNbMF0u
bV9lbmNvZGVkV29yZCA9IFVJTlRfTUFYOworICAgICAgICAgICAgbV93b3Jkc1sxXS5tX2VuY29k
ZWRXb3JkID0gVUlOVF9NQVg7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgTm9kZVJlZmVy
ZW5jZUJsb2IoS2luZCBraW5kLCBOb2RlSW5kZXggY2hpbGQxLCBOb2RlSW5kZXggY2hpbGQyLCBO
b2RlSW5kZXggY2hpbGQzKQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgOiBtX2tpbmQo
Rml4ZWQpCisjZW5kaWYKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoa2luZCwga2luZCA9
PSBGaXhlZCk7CisgICAgICAgIGluaXRpYWxpemUoY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7Cisg
ICAgfQorICAgIAorICAgIE5vZGVSZWZlcmVuY2VCbG9iKEtpbmQga2luZCwgdW5zaWduZWQgZmly
c3RDaGlsZCwgdW5zaWduZWQgbnVtQ2hpbGRyZW4pCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAg
ICAgICA6IG1fa2luZChWYXJpYWJsZSkKKyNlbmRpZgorICAgIHsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChraW5kLCBraW5kID09IFZhcmlhYmxlKTsKKyAgICAgICAgc2V0Rmlyc3RDaGlsZChmaXJz
dENoaWxkKTsKKyAgICAgICAgc2V0TnVtQ2hpbGRyZW4obnVtQ2hpbGRyZW4pOworICAgIH0KKyAg
ICAKKyAgICBjb25zdCBOb2RlVXNlJiBjaGlsZCh1bnNpZ25lZCBpKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGkgPCAzKTsKKyAgICAgICAgQVNTRVJUKG1fa2luZCA9PSBGaXhlZCk7Cisg
ICAgICAgIHJldHVybiBtX3dvcmRzW2ldOworICAgIH0gICAgCisgICAgCisgICAgTm9kZVVzZSYg
Y2hpbGQodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpIDwgMyk7CisgICAgICAg
IEFTU0VSVChtX2tpbmQgPT0gRml4ZWQpOworICAgICAgICByZXR1cm4gbV93b3Jkc1tpXTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBzZXRDaGlsZCh1bnNpZ25lZCBpLCBOb2RlVXNlIG5vZGVVc2Up
CisgICAgeworICAgICAgICBBU1NFUlQoaSA8IDMwKTsKKyAgICAgICAgQVNTRVJUKG1fa2luZCA9
PSBGaXhlZCk7CisgICAgICAgIG1fd29yZHNbaV0gPSBub2RlVXNlOworICAgIH0KKyAgICAKKyAg
ICBOb2RlVXNlIGNoaWxkMSgpIGNvbnN0IHsgcmV0dXJuIGNoaWxkKDApOyB9CisgICAgTm9kZVVz
ZSBjaGlsZDIoKSBjb25zdCB7IHJldHVybiBjaGlsZCgxKTsgfQorICAgIE5vZGVVc2UgY2hpbGQz
KCkgY29uc3QgeyByZXR1cm4gY2hpbGQoMik7IH0KKworICAgIE5vZGVVc2UmIGNoaWxkMSgpIHsg
cmV0dXJuIGNoaWxkKDApOyB9CisgICAgTm9kZVVzZSYgY2hpbGQyKCkgeyByZXR1cm4gY2hpbGQo
MSk7IH0KKyAgICBOb2RlVXNlJiBjaGlsZDMoKSB7IHJldHVybiBjaGlsZCgyKTsgfQorICAgIAor
ICAgIHZvaWQgc2V0Q2hpbGQxKE5vZGVVc2Ugbm9kZVVzZSkgeyBzZXRDaGlsZCgwLCBub2RlVXNl
KTsgfQorICAgIHZvaWQgc2V0Q2hpbGQyKE5vZGVVc2Ugbm9kZVVzZSkgeyBzZXRDaGlsZCgxLCBu
b2RlVXNlKTsgfQorICAgIHZvaWQgc2V0Q2hpbGQzKE5vZGVVc2Ugbm9kZVVzZSkgeyBzZXRDaGls
ZCgyLCBub2RlVXNlKTsgfQorICAgIAorICAgIE5vZGVVc2UgY2hpbGQxVW5jaGVja2VkKCkgY29u
c3QgeyByZXR1cm4gbV93b3Jkc1swXTsgfQorICAgIAorICAgIHZvaWQgaW5pdGlhbGl6ZShOb2Rl
VXNlIGNoaWxkMSwgTm9kZVVzZSBjaGlsZDIsIE5vZGVVc2UgY2hpbGQzKQorICAgIHsKKyAgICAg
ICAgY2hpbGQoMCkgPSBjaGlsZDE7CisgICAgICAgIGNoaWxkKDEpID0gY2hpbGQyOworICAgICAg
ICBjaGlsZCgyKSA9IGNoaWxkMzsKKyAgICB9CisgICAgCisgICAgdm9pZCBpbml0aWFsaXplKE5v
ZGVJbmRleCBjaGlsZDEsIE5vZGVJbmRleCBjaGlsZDIsIE5vZGVJbmRleCBjaGlsZDMpCisgICAg
eworICAgICAgICBpbml0aWFsaXplKE5vZGVVc2UoY2hpbGQxKSwgTm9kZVVzZShjaGlsZDIpLCBO
b2RlVXNlKGNoaWxkMykpOworICAgIH0KKworICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fa2luZCA9PSBWYXJpYWJsZSk7CisgICAgICAgIHJl
dHVybiBtX3dvcmRzWzBdLm1fZW5jb2RlZFdvcmQ7CisgICAgfQorICAgIHZvaWQgc2V0Rmlyc3RD
aGlsZCh1bnNpZ25lZCBmaXJzdENoaWxkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fa2luZCA9
PSBWYXJpYWJsZSk7CisgICAgICAgIG1fd29yZHNbMF0ubV9lbmNvZGVkV29yZCA9IGZpcnN0Q2hp
bGQ7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG51bUNoaWxkcmVuKCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX2tpbmQgPT0gVmFyaWFibGUpOworICAgICAgICByZXR1cm4gbV93
b3Jkc1sxXS5tX2VuY29kZWRXb3JkOworICAgIH0KKyAgICB2b2lkIHNldE51bUNoaWxkcmVuKHVu
c2lnbmVkIG51bUNoaWxkcmVuKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fa2luZCA9PSBWYXJp
YWJsZSk7CisgICAgICAgIG1fd29yZHNbMV0ubV9lbmNvZGVkV29yZCA9IG51bUNoaWxkcmVuOwor
ICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgTm9kZVVzZSBtX3dvcmRzWzNdOworI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICBLaW5kIG1fa2luZDsKKyNlbmRpZgorfTsKKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBE
RkdOb2RlUmVmZXJlbmNlQmxvYl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FkamFjZW5jeUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FkamFjZW5jeUxpc3QuaAkocmV2aXNpb24gMTExMjMzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBZGphY2VuY3lMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDI2ICsy
MywyNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBERkdOb2RlUmVmZXJlbmNl
QmxvYl9oCi0jZGVmaW5lIERGR05vZGVSZWZlcmVuY2VCbG9iX2gKKyNpZm5kZWYgREZHQWRqYWNl
bmN5TGlzdF9oCisjZGVmaW5lIERGR0FkamFjZW5jeUxpc3RfaAogCiAjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR0NvbW1vbi5o
IgotI2luY2x1ZGUgIkRGR05vZGVVc2UuaCIKKyNpbmNsdWRlICJERkdFZGdlLmgiCiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgTm9kZVJlZmVyZW5jZUJsb2Igewor
Y2xhc3MgQWRqYWNlbmN5TGlzdCB7CiBwdWJsaWM6CiAgICAgZW51bSBLaW5kIHsKICAgICAgICAg
Rml4ZWQsCiAgICAgICAgIFZhcmlhYmxlCiAgICAgfTsKIAotICAgIE5vZGVSZWZlcmVuY2VCbG9i
KEtpbmQga2luZCkKKyAgICBBZGphY2VuY3lMaXN0KEtpbmQga2luZCkKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgICAgIDogbV9raW5kKGtpbmQpCiAjZW5kaWYKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIE5vZGVSZWZlcmVuY2VCbG9iKEtp
bmQga2luZCwgTm9kZUluZGV4IGNoaWxkMSwgTm9kZUluZGV4IGNoaWxkMiwgTm9kZUluZGV4IGNo
aWxkMykKKyAgICBBZGphY2VuY3lMaXN0KEtpbmQga2luZCwgTm9kZUluZGV4IGNoaWxkMSwgTm9k
ZUluZGV4IGNoaWxkMiwgTm9kZUluZGV4IGNoaWxkMykKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgICAgIDogbV9raW5kKEZpeGVkKQogI2VuZGlmCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICAgICAgaW5pdGlhbGl6ZShjaGlsZDEsIGNoaWxkMiwgY2hpbGQzKTsKICAgICB9CiAgICAg
Ci0gICAgTm9kZVJlZmVyZW5jZUJsb2IoS2luZCBraW5kLCB1bnNpZ25lZCBmaXJzdENoaWxkLCB1
bnNpZ25lZCBudW1DaGlsZHJlbikKKyAgICBBZGphY2VuY3lMaXN0KEtpbmQga2luZCwgdW5zaWdu
ZWQgZmlyc3RDaGlsZCwgdW5zaWduZWQgbnVtQ2hpbGRyZW4pCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAogICAgICAgICA6IG1fa2luZChWYXJpYWJsZSkKICNlbmRpZgpAQCAtNzIsNDIgKzcyLDQyIEBA
IHB1YmxpYzoKICAgICAgICAgc2V0TnVtQ2hpbGRyZW4obnVtQ2hpbGRyZW4pOwogICAgIH0KICAg
ICAKLSAgICBjb25zdCBOb2RlVXNlJiBjaGlsZCh1bnNpZ25lZCBpKSBjb25zdAorICAgIGNvbnN0
IEVkZ2UmIGNoaWxkKHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaSA8
IDMpOwogICAgICAgICBBU1NFUlQobV9raW5kID09IEZpeGVkKTsKICAgICAgICAgcmV0dXJuIG1f
d29yZHNbaV07CiAgICAgfSAgICAKICAgICAKLSAgICBOb2RlVXNlJiBjaGlsZCh1bnNpZ25lZCBp
KQorICAgIEVkZ2UmIGNoaWxkKHVuc2lnbmVkIGkpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8
IDMpOwogICAgICAgICBBU1NFUlQobV9raW5kID09IEZpeGVkKTsKICAgICAgICAgcmV0dXJuIG1f
d29yZHNbaV07CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0Q2hpbGQodW5zaWduZWQgaSwgTm9k
ZVVzZSBub2RlVXNlKQorICAgIHZvaWQgc2V0Q2hpbGQodW5zaWduZWQgaSwgRWRnZSBub2RlVXNl
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCAzMCk7CiAgICAgICAgIEFTU0VSVChtX2tpbmQg
PT0gRml4ZWQpOwogICAgICAgICBtX3dvcmRzW2ldID0gbm9kZVVzZTsKICAgICB9CiAgICAgCi0g
ICAgTm9kZVVzZSBjaGlsZDEoKSBjb25zdCB7IHJldHVybiBjaGlsZCgwKTsgfQotICAgIE5vZGVV
c2UgY2hpbGQyKCkgY29uc3QgeyByZXR1cm4gY2hpbGQoMSk7IH0KLSAgICBOb2RlVXNlIGNoaWxk
MygpIGNvbnN0IHsgcmV0dXJuIGNoaWxkKDIpOyB9CisgICAgRWRnZSBjaGlsZDEoKSBjb25zdCB7
IHJldHVybiBjaGlsZCgwKTsgfQorICAgIEVkZ2UgY2hpbGQyKCkgY29uc3QgeyByZXR1cm4gY2hp
bGQoMSk7IH0KKyAgICBFZGdlIGNoaWxkMygpIGNvbnN0IHsgcmV0dXJuIGNoaWxkKDIpOyB9CiAK
LSAgICBOb2RlVXNlJiBjaGlsZDEoKSB7IHJldHVybiBjaGlsZCgwKTsgfQotICAgIE5vZGVVc2Um
IGNoaWxkMigpIHsgcmV0dXJuIGNoaWxkKDEpOyB9Ci0gICAgTm9kZVVzZSYgY2hpbGQzKCkgeyBy
ZXR1cm4gY2hpbGQoMik7IH0KKyAgICBFZGdlJiBjaGlsZDEoKSB7IHJldHVybiBjaGlsZCgwKTsg
fQorICAgIEVkZ2UmIGNoaWxkMigpIHsgcmV0dXJuIGNoaWxkKDEpOyB9CisgICAgRWRnZSYgY2hp
bGQzKCkgeyByZXR1cm4gY2hpbGQoMik7IH0KICAgICAKLSAgICB2b2lkIHNldENoaWxkMShOb2Rl
VXNlIG5vZGVVc2UpIHsgc2V0Q2hpbGQoMCwgbm9kZVVzZSk7IH0KLSAgICB2b2lkIHNldENoaWxk
MihOb2RlVXNlIG5vZGVVc2UpIHsgc2V0Q2hpbGQoMSwgbm9kZVVzZSk7IH0KLSAgICB2b2lkIHNl
dENoaWxkMyhOb2RlVXNlIG5vZGVVc2UpIHsgc2V0Q2hpbGQoMiwgbm9kZVVzZSk7IH0KKyAgICB2
b2lkIHNldENoaWxkMShFZGdlIG5vZGVVc2UpIHsgc2V0Q2hpbGQoMCwgbm9kZVVzZSk7IH0KKyAg
ICB2b2lkIHNldENoaWxkMihFZGdlIG5vZGVVc2UpIHsgc2V0Q2hpbGQoMSwgbm9kZVVzZSk7IH0K
KyAgICB2b2lkIHNldENoaWxkMyhFZGdlIG5vZGVVc2UpIHsgc2V0Q2hpbGQoMiwgbm9kZVVzZSk7
IH0KICAgICAKLSAgICBOb2RlVXNlIGNoaWxkMVVuY2hlY2tlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
d29yZHNbMF07IH0KKyAgICBFZGdlIGNoaWxkMVVuY2hlY2tlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
d29yZHNbMF07IH0KICAgICAKLSAgICB2b2lkIGluaXRpYWxpemUoTm9kZVVzZSBjaGlsZDEsIE5v
ZGVVc2UgY2hpbGQyLCBOb2RlVXNlIGNoaWxkMykKKyAgICB2b2lkIGluaXRpYWxpemUoRWRnZSBj
aGlsZDEsIEVkZ2UgY2hpbGQyLCBFZGdlIGNoaWxkMykKICAgICB7CiAgICAgICAgIGNoaWxkKDAp
ID0gY2hpbGQxOwogICAgICAgICBjaGlsZCgxKSA9IGNoaWxkMjsKQEAgLTExNiw3ICsxMTYsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplKE5vZGVJbmRleCBjaGlsZDEsIE5v
ZGVJbmRleCBjaGlsZDIsIE5vZGVJbmRleCBjaGlsZDMpCiAgICAgewotICAgICAgICBpbml0aWFs
aXplKE5vZGVVc2UoY2hpbGQxKSwgTm9kZVVzZShjaGlsZDIpLCBOb2RlVXNlKGNoaWxkMykpOwor
ICAgICAgICBpbml0aWFsaXplKEVkZ2UoY2hpbGQxKSwgRWRnZShjaGlsZDIpLCBFZGdlKGNoaWxk
MykpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQoKSBjb25zdApAQCAtMTQyLDcg
KzE0Miw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcml2YXRlOgotICAgIE5vZGVVc2UgbV93
b3Jkc1szXTsKKyAgICBFZGdlIG1fd29yZHNbM107CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
IEtpbmQgbV9raW5kOwogI2VuZGlmCkBAIC0xNTIsNCArMTUyLDQgQEAgcHJpdmF0ZToKIAogI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQogCi0jZW5kaWYgLy8gREZHTm9kZVJlZmVyZW5jZUJsb2Jf
aAorI2VuZGlmIC8vIERGR0FkamFjZW5jeUxpc3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDExMTIzMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MjYsNyArNjI2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYWRkVmFyQXJn
Q2hpbGQoTm9kZUluZGV4IGNoaWxkKQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuLmFwcGVuZChOb2RlVXNlKGNoaWxkKSk7CisgICAgICAgIG1fZ3JhcGgubV92YXJBcmdD
aGlsZHJlbi5hcHBlbmQoRWRnZShjaGlsZCkpOwogICAgICAgICBtX251bVBhc3NlZFZhckFyZ3Mr
KzsKICAgICB9CiAgICAgCkBAIC0yNDA0LDcgKzI0MDQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
Ojpwcm9jZXNzUGhpU3RhY2soKQogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBTZXR0aW5nIEAldS0+Y2hpbGQx
ID0gQCV1LlxuIiwgZW50cnkubV9waGksIHZhbHVlSW5QcmVkZWNlc3Nvcik7CiAjZW5kaWYKLSAg
ICAgICAgICAgICAgICBwaGlOb2RlLT5jaGlsZHJlbi5zZXRDaGlsZDEoTm9kZVVzZSh2YWx1ZUlu
UHJlZGVjZXNzb3IpKTsKKyAgICAgICAgICAgICAgICBwaGlOb2RlLT5jaGlsZHJlbi5zZXRDaGls
ZDEoRWRnZSh2YWx1ZUluUHJlZGVjZXNzb3IpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BB
R0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgQ2hpbGRyZW4g
b2YgQCV1OiAiLCBlbnRyeS5tX3BoaSk7CiAgICAgICAgICAgICAgICAgcGhpTm9kZS0+ZHVtcENo
aWxkcmVuKFdURjo6ZGF0YUZpbGUoKSk7CkBAIC0yNDE2LDcgKzI0MTYsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwcm9jZXNzUGhpU3RhY2soKQogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFH
QVRJT05fVkVSQk9TRSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBTZXR0aW5nIEAl
dS0+Y2hpbGQyID0gQCV1LlxuIiwgZW50cnkubV9waGksIHZhbHVlSW5QcmVkZWNlc3Nvcik7CiAj
ZW5kaWYKLSAgICAgICAgICAgICAgICBwaGlOb2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoTm9kZVVz
ZSh2YWx1ZUluUHJlZGVjZXNzb3IpKTsKKyAgICAgICAgICAgICAgICBwaGlOb2RlLT5jaGlsZHJl
bi5zZXRDaGlsZDIoRWRnZSh2YWx1ZUluUHJlZGVjZXNzb3IpKTsKICNpZiBERkdfRU5BQkxFKERF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
Q2hpbGRyZW4gb2YgQCV1OiAiLCBlbnRyeS5tX3BoaSk7CiAgICAgICAgICAgICAgICAgcGhpTm9k
ZS0+ZHVtcENoaWxkcmVuKFdURjo6ZGF0YUZpbGUoKSk7CkBAIC0yNDI4LDcgKzI0MjgsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNzUGhpU3RhY2soKQogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBT
ZXR0aW5nIEAldS0+Y2hpbGQzID0gQCV1LlxuIiwgZW50cnkubV9waGksIHZhbHVlSW5QcmVkZWNl
c3Nvcik7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBwaGlOb2RlLT5jaGlsZHJlbi5zZXRDaGls
ZDMoTm9kZVVzZSh2YWx1ZUluUHJlZGVjZXNzb3IpKTsKKyAgICAgICAgICAgICAgICBwaGlOb2Rl
LT5jaGlsZHJlbi5zZXRDaGlsZDMoRWRnZSh2YWx1ZUluUHJlZGVjZXNzb3IpKTsKICNpZiBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgICAgQ2hpbGRyZW4gb2YgQCV1OiAiLCBlbnRyeS5tX3BoaSk7CiAgICAgICAgICAgICAg
ICAgcGhpTm9kZS0+ZHVtcENoaWxkcmVuKFdURjo6ZGF0YUZpbGUoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTExMjMzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHJldHVybiBub2Rl
SW5kZXg7CiAgICAgfQotICAgIE5vZGVJbmRleCBjYW5vbmljYWxpemUoTm9kZVVzZSBub2RlVXNl
KQorICAgIE5vZGVJbmRleCBjYW5vbmljYWxpemUoRWRnZSBub2RlVXNlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGNhbm9uaWNhbGl6ZShub2RlVXNlLmluZGV4VW5jaGVja2VkKCkpOwogICAgIH0K
QEAgLTQ3MCw3ICs0NzAsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAg
IH0KICAgICAKLSAgICB2b2lkIHBlcmZvcm1TdWJzdGl0dXRpb24oTm9kZVVzZSYgY2hpbGQsIGJv
b2wgYWRkUmVmID0gdHJ1ZSkKKyAgICB2b2lkIHBlcmZvcm1TdWJzdGl0dXRpb24oRWRnZSYgY2hp
bGQsIGJvb2wgYWRkUmVmID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMg
b3BlcmFuZCBpcyBhY3R1YWxseSB1bnVzZWQuCiAgICAgICAgIGlmICghY2hpbGQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaAkocmV2aXNpb24gMTExMjMzKQkoZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVVc2UuaDoxMTEyMzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IERGR05vZGVVc2VfaAorI2RlZmluZSBERkdOb2RlVXNlX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdDb21tb24uaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBOb2RlUmVmZXJlbmNl
QmxvYjsKKworY2xhc3MgTm9kZVVzZSB7CitwdWJsaWM6CisgICAgTm9kZVVzZSgpCisgICAgICAg
IDogbV9lbmNvZGVkV29yZChtYWtlV29yZChOb05vZGUsIFVudHlwZWRVc2UpKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgZXhwbGljaXQgTm9kZVVzZShOb2RlSW5kZXggbm9kZUluZGV4KQorICAg
ICAgICA6IG1fZW5jb2RlZFdvcmQobWFrZVdvcmQobm9kZUluZGV4LCBVbnR5cGVkVXNlKSkKKyAg
ICB7CisgICAgfQorICAgIAorICAgIE5vZGVVc2UoTm9kZUluZGV4IG5vZGVJbmRleCwgVXNlS2lu
ZCB1c2VLaW5kKQorICAgICAgICA6IG1fZW5jb2RlZFdvcmQobWFrZVdvcmQobm9kZUluZGV4LCB1
c2VLaW5kKSkKKyAgICB7CisgICAgfQorICAgIAorICAgIE5vZGVJbmRleCBpbmRleFVuY2hlY2tl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZFdvcmQgPj4gc2hpZnQoKTsgfQorICAgIE5vZGVJ
bmRleCBpbmRleCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNTZXQoKSk7CisgICAg
ICAgIHJldHVybiBtX2VuY29kZWRXb3JkID4+IHNoaWZ0KCk7CisgICAgfQorICAgIHZvaWQgc2V0
SW5kZXgoTm9kZUluZGV4IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAgIG1fZW5jb2RlZFdvcmQg
PSBtYWtlV29yZChub2RlSW5kZXgsIHVzZUtpbmQoKSk7CisgICAgfQorICAgIAorICAgIFVzZUtp
bmQgdXNlS2luZCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNTZXQoKSk7CisgICAg
ICAgIHVuc2lnbmVkIG1hc2tlZCA9IG1fZW5jb2RlZFdvcmQgJiAoKCgxIDw8IHNoaWZ0KCkpIC0g
MSkpOworICAgICAgICBBU1NFUlQobWFza2VkIDwgTGFzdFVzZUtpbmQpOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VXNlS2luZD4obWFza2VkKTsKKyAgICB9CisgICAgdm9pZCBzZXRVc2VL
aW5kKFVzZUtpbmQgdXNlS2luZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1NldCgpKTsKKyAg
ICAgICAgbV9lbmNvZGVkV29yZCA9IG1ha2VXb3JkKGluZGV4KCksIHVzZUtpbmQpOworICAgIH0K
KyAgICAKKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gaW5kZXhVbmNoZWNrZWQoKSAh
PSBOb05vZGU7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgp
OyB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KE5vZGVVc2Ugb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9lbmNvZGVkV29yZCA9PSBvdGhlci5tX2VuY29kZWRXb3JkOwor
ICAgIH0KKyAgICBib29sIG9wZXJhdG9yIT0oTm9kZVVzZSBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2VuY29kZWRXb3JkICE9IG90aGVyLm1fZW5jb2RlZFdvcmQ7CisgICAg
fQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOb2RlUmVmZXJlbmNlQmxvYjsKKyAgICAK
KyAgICBzdGF0aWMgdWludDMyX3Qgc2hpZnQoKSB7IHJldHVybiA0OyB9CisgICAgCisgICAgc3Rh
dGljIGludDMyX3QgbWFrZVdvcmQoTm9kZUluZGV4IG5vZGVJbmRleCwgVXNlS2luZCB1c2VLaW5k
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PigoKHN0YXRpY19j
YXN0PGludDMyX3Q+KG5vZGVJbmRleCkgPDwgc2hpZnQoKSkgPj4gc2hpZnQoKSkpID09IG5vZGVJ
bmRleCk7CisgICAgICAgIEFTU0VSVCh1c2VLaW5kID49IDAgJiYgdXNlS2luZCA8IExhc3RVc2VL
aW5kKTsKKyAgICAgICAgQVNTRVJUKExhc3RVc2VLaW5kIDw9ICgxIDw8IHNoaWZ0KCkpKTsKKyAg
ICAgICAgcmV0dXJuIChub2RlSW5kZXggPDwgc2hpZnQoKSkgfCB1c2VLaW5kOworICAgIH0KKyAg
ICAKKyAgICBpbnQzMl90IG1fZW5jb2RlZFdvcmQ7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KE5vZGVVc2Ugbm9kZVVzZSwgTm9kZUluZGV4IG5vZGVJbmRleCkKK3sKKyAgICByZXR1cm4g
bm9kZVVzZS5pbmRleFVuY2hlY2tlZCgpID09IG5vZGVJbmRleDsKK30KK2lubGluZSBib29sIG9w
ZXJhdG9yPT0oTm9kZUluZGV4IG5vZGVJbmRleCwgTm9kZVVzZSBub2RlVXNlKQoreworICAgIHJl
dHVybiBub2RlVXNlLmluZGV4VW5jaGVja2VkKCkgPT0gbm9kZUluZGV4OworfQoraW5saW5lIGJv
b2wgb3BlcmF0b3IhPShOb2RlVXNlIG5vZGVVc2UsIE5vZGVJbmRleCBub2RlSW5kZXgpCit7Cisg
ICAgcmV0dXJuIG5vZGVVc2UuaW5kZXhVbmNoZWNrZWQoKSAhPSBub2RlSW5kZXg7Cit9Citpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KE5vZGVJbmRleCBub2RlSW5kZXgsIE5vZGVVc2Ugbm9kZVVzZSkK
K3sKKyAgICByZXR1cm4gbm9kZVVzZS5pbmRleFVuY2hlY2tlZCgpICE9IG5vZGVJbmRleDsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CisKKyNlbmRpZiAvLyBERkdOb2RlVXNlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdFZGdlLmgJKHJldmlzaW9uIDExMTIzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCi0jaWZuZGVmIERGR05vZGVVc2VfaAotI2RlZmluZSBERkdOb2RlVXNlX2gKKyNp
Zm5kZWYgREZHRWRnZV9oCisjZGVmaW5lIERGR0VkZ2VfaAogCiAjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CiAKQEAgLTM0LDIxICszNCwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKLWNsYXNzIE5vZGVSZWZlcmVuY2VCbG9iOworY2xhc3MgQWRqYWNlbmN5TGlzdDsK
IAotY2xhc3MgTm9kZVVzZSB7CitjbGFzcyBFZGdlIHsKIHB1YmxpYzoKLSAgICBOb2RlVXNlKCkK
KyAgICBFZGdlKCkKICAgICAgICAgOiBtX2VuY29kZWRXb3JkKG1ha2VXb3JkKE5vTm9kZSwgVW50
eXBlZFVzZSkpCiAgICAgewogICAgIH0KICAgICAKLSAgICBleHBsaWNpdCBOb2RlVXNlKE5vZGVJ
bmRleCBub2RlSW5kZXgpCisgICAgZXhwbGljaXQgRWRnZShOb2RlSW5kZXggbm9kZUluZGV4KQog
ICAgICAgICA6IG1fZW5jb2RlZFdvcmQobWFrZVdvcmQobm9kZUluZGV4LCBVbnR5cGVkVXNlKSkK
ICAgICB7CiAgICAgfQogICAgIAotICAgIE5vZGVVc2UoTm9kZUluZGV4IG5vZGVJbmRleCwgVXNl
S2luZCB1c2VLaW5kKQorICAgIEVkZ2UoTm9kZUluZGV4IG5vZGVJbmRleCwgVXNlS2luZCB1c2VL
aW5kKQogICAgICAgICA6IG1fZW5jb2RlZFdvcmQobWFrZVdvcmQobm9kZUluZGV4LCB1c2VLaW5k
KSkKICAgICB7CiAgICAgfQpAQCAtODAsMTcgKzgwLDE3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
U2V0KCkgY29uc3QgeyByZXR1cm4gaW5kZXhVbmNoZWNrZWQoKSAhPSBOb05vZGU7IH0KICAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCi0gICAgYm9v
bCBvcGVyYXRvcj09KE5vZGVVc2Ugb3RoZXIpIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09KEVk
Z2Ugb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9lbmNvZGVkV29yZCA9PSBv
dGhlci5tX2VuY29kZWRXb3JkOwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oTm9kZVVzZSBv
dGhlcikgY29uc3QKKyAgICBib29sIG9wZXJhdG9yIT0oRWRnZSBvdGhlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2VuY29kZWRXb3JkICE9IG90aGVyLm1fZW5jb2RlZFdvcmQ7CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBOb2RlUmVmZXJlbmNlQmxvYjsKKyAg
ICBmcmllbmQgY2xhc3MgQWRqYWNlbmN5TGlzdDsKICAgICAKICAgICBzdGF0aWMgdWludDMyX3Qg
c2hpZnQoKSB7IHJldHVybiA0OyB9CiAgICAgCkBAIC0xMDUsMTkgKzEwNSwxOSBAQCBwcml2YXRl
OgogICAgIGludDMyX3QgbV9lbmNvZGVkV29yZDsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9y
PT0oTm9kZVVzZSBub2RlVXNlLCBOb2RlSW5kZXggbm9kZUluZGV4KQoraW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShFZGdlIG5vZGVVc2UsIE5vZGVJbmRleCBub2RlSW5kZXgpCiB7CiAgICAgcmV0dXJu
IG5vZGVVc2UuaW5kZXhVbmNoZWNrZWQoKSA9PSBub2RlSW5kZXg7CiB9Ci1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KE5vZGVJbmRleCBub2RlSW5kZXgsIE5vZGVVc2Ugbm9kZVVzZSkKK2lubGluZSBi
b29sIG9wZXJhdG9yPT0oTm9kZUluZGV4IG5vZGVJbmRleCwgRWRnZSBub2RlVXNlKQogewogICAg
IHJldHVybiBub2RlVXNlLmluZGV4VW5jaGVja2VkKCkgPT0gbm9kZUluZGV4OwogfQotaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShOb2RlVXNlIG5vZGVVc2UsIE5vZGVJbmRleCBub2RlSW5kZXgpCitp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KEVkZ2Ugbm9kZVVzZSwgTm9kZUluZGV4IG5vZGVJbmRleCkK
IHsKICAgICByZXR1cm4gbm9kZVVzZS5pbmRleFVuY2hlY2tlZCgpICE9IG5vZGVJbmRleDsKIH0K
LWlubGluZSBib29sIG9wZXJhdG9yIT0oTm9kZUluZGV4IG5vZGVJbmRleCwgTm9kZVVzZSBub2Rl
VXNlKQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShOb2RlSW5kZXggbm9kZUluZGV4LCBFZGdlIG5v
ZGVVc2UpCiB7CiAgICAgcmV0dXJuIG5vZGVVc2UuaW5kZXhVbmNoZWNrZWQoKSAhPSBub2RlSW5k
ZXg7CiB9CkBAIC0xMjYsNSArMTI2LDUgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShOb2RlSW5k
ZXggbm9kZUluZAogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAKLSNlbmRpZiAvLyBERkdO
b2RlVXNlX2gKKyNlbmRpZiAvLyBERkdFZGdlX2gKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTExMjMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMSArODQsMTEgQEAgcHVibGlj
OgogICAgIHVzaW5nIFZlY3RvcjxOb2RlLCA2ND46Om9wZXJhdG9yW107CiAgICAgdXNpbmcgVmVj
dG9yPE5vZGUsIDY0Pjo6YXQ7CiAgICAgCi0gICAgTm9kZSYgb3BlcmF0b3JbXShOb2RlVXNlIG5v
ZGVVc2UpIHsgcmV0dXJuIGF0KG5vZGVVc2UuaW5kZXgoKSk7IH0KLSAgICBjb25zdCBOb2RlJiBv
cGVyYXRvcltdKE5vZGVVc2Ugbm9kZVVzZSkgY29uc3QgeyByZXR1cm4gYXQobm9kZVVzZS5pbmRl
eCgpKTsgfQorICAgIE5vZGUmIG9wZXJhdG9yW10oRWRnZSBub2RlVXNlKSB7IHJldHVybiBhdChu
b2RlVXNlLmluZGV4KCkpOyB9CisgICAgY29uc3QgTm9kZSYgb3BlcmF0b3JbXShFZGdlIG5vZGVV
c2UpIGNvbnN0IHsgcmV0dXJuIGF0KG5vZGVVc2UuaW5kZXgoKSk7IH0KICAgICAKLSAgICBOb2Rl
JiBhdChOb2RlVXNlIG5vZGVVc2UpIHsgcmV0dXJuIGF0KG5vZGVVc2UuaW5kZXgoKSk7IH0KLSAg
ICBjb25zdCBOb2RlJiBhdChOb2RlVXNlIG5vZGVVc2UpIGNvbnN0IHsgcmV0dXJuIGF0KG5vZGVV
c2UuaW5kZXgoKSk7IH0KKyAgICBOb2RlJiBhdChFZGdlIG5vZGVVc2UpIHsgcmV0dXJuIGF0KG5v
ZGVVc2UuaW5kZXgoKSk7IH0KKyAgICBjb25zdCBOb2RlJiBhdChFZGdlIG5vZGVVc2UpIGNvbnN0
IHsgcmV0dXJuIGF0KG5vZGVVc2UuaW5kZXgoKSk7IH0KICAgICAKICAgICAvLyBNYXJrIGEgbm9k
ZSBhcyBiZWluZyByZWZlcmVuY2VkLgogICAgIHZvaWQgcmVmKE5vZGVJbmRleCBub2RlSW5kZXgp
CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG5vZGUucmVmKCkpCiAgICAg
ICAgICAgICByZWZDaGlsZHJlbihub2RlSW5kZXgpOwogICAgIH0KLSAgICB2b2lkIHJlZihOb2Rl
VXNlIG5vZGVVc2UpCisgICAgdm9pZCByZWYoRWRnZSBub2RlVXNlKQogICAgIHsKICAgICAgICAg
cmVmKG5vZGVVc2UuaW5kZXgoKSk7CiAgICAgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgaWYgKGF0KG5vZGVJbmRleCkuZGVyZWYoKSkKICAgICAgICAgICAgIGRlcmVmQ2hp
bGRyZW4obm9kZUluZGV4KTsKICAgICB9Ci0gICAgdm9pZCBkZXJlZihOb2RlVXNlIG5vZGVVc2Up
CisgICAgdm9pZCBkZXJlZihFZGdlIG5vZGVVc2UpCiAgICAgewogICAgICAgICBkZXJlZihub2Rl
VXNlLmluZGV4KCkpOwogICAgIH0KQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmICghbm9kZS5jaGlsZDEoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGVyZWYo
bm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgIG5vZGUuY2hpbGRyZW4uY2hpbGQxKCkgPSBOb2RlVXNl
KCk7CisgICAgICAgIG5vZGUuY2hpbGRyZW4uY2hpbGQxKCkgPSBFZGdlKCk7CiAgICAgfQogCiAg
ICAgdm9pZCBjbGVhckFuZERlcmVmQ2hpbGQyKE5vZGUmIG5vZGUpCkBAIC0xMjYsNyArMTI2LDcg
QEAgcHVibGljOgogICAgICAgICBpZiAoIW5vZGUuY2hpbGQyKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGRlcmVmKG5vZGUuY2hpbGQyKCkpOwotICAgICAgICBub2RlLmNoaWxkcmVu
LmNoaWxkMigpID0gTm9kZVVzZSgpOworICAgICAgICBub2RlLmNoaWxkcmVuLmNoaWxkMigpID0g
RWRnZSgpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXJBbmREZXJlZkNoaWxkMyhOb2RlJiBub2Rl
KQpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFub2RlLmNoaWxkMygp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBkZXJlZihub2RlLmNoaWxkMygpKTsKLSAg
ICAgICAgbm9kZS5jaGlsZHJlbi5jaGlsZDMoKSA9IE5vZGVVc2UoKTsKKyAgICAgICAgbm9kZS5j
aGlsZHJlbi5jaGlsZDMoKSA9IEVkZ2UoKTsKICAgICB9CiAKICAgICAvLyBDb2RlQmxvY2sgaXMg
b3B0aW9uYWwsIGJ1dCBtYXkgYWxsb3cgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBkdW1w
ZWQgKGUuZy4gSWRlbnRpZmllciBuYW1lcykuCkBAIC0zNTEsNyArMzUxLDcgQEAgcHVibGljOgog
ICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwogCiAgICAgVmVjdG9yPCBPd25QdHI8QmFz
aWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKLSAgICBWZWN0b3I8Tm9kZVVzZSwgMTY+IG1fdmFyQXJn
Q2hpbGRyZW47CisgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogICAgIFZl
Y3RvcjxTdG9yYWdlQWNjZXNzRGF0YT4gbV9zdG9yYWdlQWNjZXNzRGF0YTsKICAgICBWZWN0b3I8
UmVzb2x2ZUdsb2JhbERhdGE+IG1fcmVzb2x2ZUdsb2JhbERhdGE7CiAgICAgVmVjdG9yPE5vZGVJ
bmRleCwgOD4gbV9hcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxMTEyMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsyNDcsNyBA
QCBwdWJsaWM6CiAgICAgLy8gSGVscGVyIG1ldGhvZHMgdG8gZ2V0IHByZWRpY3Rpb25zCiAgICAg
UHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0aW9uKE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUucHJl
ZGljdGlvbigpOyB9CiAgICAgUHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0aW9uKE5vZGVJbmRleCBu
b2RlSW5kZXgpIHsgcmV0dXJuIGdldFByZWRpY3Rpb24oZ3JhcGgoKVtub2RlSW5kZXhdKTsgfQot
ICAgIFByZWRpY3RlZFR5cGUgZ2V0UHJlZGljdGlvbihOb2RlVXNlIG5vZGVVc2UpIHsgcmV0dXJu
IGdldFByZWRpY3Rpb24obm9kZVVzZS5pbmRleCgpKTsgfQorICAgIFByZWRpY3RlZFR5cGUgZ2V0
UHJlZGljdGlvbihFZGdlIG5vZGVVc2UpIHsgcmV0dXJuIGdldFByZWRpY3Rpb24obm9kZVVzZS5p
bmRleCgpKTsgfQogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkKiBhZGRyZXNzT2ZE
b3VibGVDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDExMTIzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVk
ZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR05v
ZGVGbGFncy5oIgotI2luY2x1ZGUgIkRGR05vZGVSZWZlcmVuY2VCbG9iLmgiCisjaW5jbHVkZSAi
REZHQWRqYWNlbmN5TGlzdC5oIgogI2luY2x1ZGUgIkRGR05vZGVUeXBlLmgiCiAjaW5jbHVkZSAi
REZHT3BlcmFuZHMuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKQEAgLTc5
LDcgKzc5LDcgQEAgc3RydWN0IE5vZGUgewogICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0aCB1
cCB0byAzIGNoaWxkcmVuLCBubyBpbW1lZGlhdGUgdmFsdWUuCiAgICAgTm9kZShOb2RlVHlwZSBv
cCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBOb2RlSW5kZXggY2hpbGQxID0gTm9Ob2RlLCBOb2Rl
SW5kZXggY2hpbGQyID0gTm9Ob2RlLCBOb2RlSW5kZXggY2hpbGQzID0gTm9Ob2RlKQogICAgICAg
ICA6IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKLSAgICAgICAgLCBjaGlsZHJlbihOb2RlUmVmZXJl
bmNlQmxvYjo6Rml4ZWQsIGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpCisgICAgICAgICwgY2hpbGRy
ZW4oQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpCiAgICAgICAg
ICwgbV92aXJ0dWFsUmVnaXN0ZXIoSW52YWxpZFZpcnR1YWxSZWdpc3RlcikKICAgICAgICAgLCBt
X3JlZkNvdW50KDApCiAgICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQpAQCAtOTEs
NyArOTEsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVw
IHRvIDMgY2hpbGRyZW4gYW5kIGFuIGltbWVkaWF0ZSB2YWx1ZS4KICAgICBOb2RlKE5vZGVUeXBl
IG9wLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIE9wSW5mbyBpbW0sIE5vZGVJbmRleCBjaGlsZDEg
PSBOb05vZGUsIE5vZGVJbmRleCBjaGlsZDIgPSBOb05vZGUsIE5vZGVJbmRleCBjaGlsZDMgPSBO
b05vZGUpCiAgICAgICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQotICAgICAgICAsIGNoaWxk
cmVuKE5vZGVSZWZlcmVuY2VCbG9iOjpGaXhlZCwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMykKKyAg
ICAgICAgLCBjaGlsZHJlbihBZGphY2VuY3lMaXN0OjpGaXhlZCwgY2hpbGQxLCBjaGlsZDIsIGNo
aWxkMykKICAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihJbnZhbGlkVmlydHVhbFJlZ2lzdGVy
KQogICAgICAgICAsIG1fcmVmQ291bnQoMCkKICAgICAgICAgLCBtX29wSW5mbyhpbW0ubV92YWx1
ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgLy8gQ29uc3RydWN0IGEg
bm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRyZW4gYW5kIHR3byBpbW1lZGlhdGUgdmFsdWVzLgogICAg
IE5vZGUoTm9kZVR5cGUgb3AsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgT3BJbmZvIGltbTEsIE9w
SW5mbyBpbW0yLCBOb2RlSW5kZXggY2hpbGQxID0gTm9Ob2RlLCBOb2RlSW5kZXggY2hpbGQyID0g
Tm9Ob2RlLCBOb2RlSW5kZXggY2hpbGQzID0gTm9Ob2RlKQogICAgICAgICA6IGNvZGVPcmlnaW4o
Y29kZU9yaWdpbikKLSAgICAgICAgLCBjaGlsZHJlbihOb2RlUmVmZXJlbmNlQmxvYjo6Rml4ZWQs
IGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpCisgICAgICAgICwgY2hpbGRyZW4oQWRqYWNlbmN5TGlz
dDo6Rml4ZWQsIGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpCiAgICAgICAgICwgbV92aXJ0dWFsUmVn
aXN0ZXIoSW52YWxpZFZpcnR1YWxSZWdpc3RlcikKICAgICAgICAgLCBtX3JlZkNvdW50KDApCiAg
ICAgICAgICwgbV9vcEluZm8oaW1tMS5tX3ZhbHVlKQpAQCAtMTE4LDcgKzExOCw3IEBAIHN0cnVj
dCBOb2RlIHsKICAgICAvLyBDb25zdHJ1Y3QgYSBub2RlIHdpdGggYSB2YXJpYWJsZSBudW1iZXIg
b2YgY2hpbGRyZW4gYW5kIHR3byBpbW1lZGlhdGUgdmFsdWVzLgogICAgIE5vZGUoVmFyQXJnVGFn
LCBOb2RlVHlwZSBvcCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBPcEluZm8gaW1tMSwgT3BJbmZv
IGltbTIsIHVuc2lnbmVkIGZpcnN0Q2hpbGQsIHVuc2lnbmVkIG51bUNoaWxkcmVuKQogICAgICAg
ICA6IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKLSAgICAgICAgLCBjaGlsZHJlbihOb2RlUmVmZXJl
bmNlQmxvYjo6VmFyaWFibGUsIGZpcnN0Q2hpbGQsIG51bUNoaWxkcmVuKQorICAgICAgICAsIGNo
aWxkcmVuKEFkamFjZW5jeUxpc3Q6OlZhcmlhYmxlLCBmaXJzdENoaWxkLCBudW1DaGlsZHJlbikK
ICAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQogICAg
ICAgICAsIG1fcmVmQ291bnQoMCkKICAgICAgICAgLCBtX29wSW5mbyhpbW0xLm1fdmFsdWUpCkBA
IC02MzQsNyArNjM0LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gIS0tbV9yZWZD
b3VudDsKICAgICB9CiAgICAgCi0gICAgTm9kZVVzZSBjaGlsZDEoKQorICAgIEVkZ2UgY2hpbGQx
KCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghKG1fZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykpOwog
ICAgICAgICByZXR1cm4gY2hpbGRyZW4uY2hpbGQxKCk7CkBAIC02NDMsMTggKzY0MywxOCBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgLy8gVGhpcyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gZG8gYSBm
YXN0IGNoZWNrIG9uIHRoZSBmaXJzdCBjaGlsZAogICAgIC8vIGJlZm9yZSBhbHNvIGRvaW5nIGEg
Y2hlY2sgb24gdGhlIG9wY29kZS4gVXNlIHRoaXMgd2l0aCBjYXJlIGFuZAogICAgIC8vIGF2b2lk
IGl0IGlmIHBvc3NpYmxlLgotICAgIE5vZGVVc2UgY2hpbGQxVW5jaGVja2VkKCkKKyAgICBFZGdl
IGNoaWxkMVVuY2hlY2tlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gY2hpbGRyZW4uY2hpbGQx
VW5jaGVja2VkKCk7CiAgICAgfQogCi0gICAgTm9kZVVzZSBjaGlsZDIoKQorICAgIEVkZ2UgY2hp
bGQyKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghKG1fZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykp
OwogICAgICAgICByZXR1cm4gY2hpbGRyZW4uY2hpbGQyKCk7CiAgICAgfQogCi0gICAgTm9kZVVz
ZSBjaGlsZDMoKQorICAgIEVkZ2UgY2hpbGQzKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghKG1f
ZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykpOwogICAgICAgICByZXR1cm4gY2hpbGRyZW4uY2hpbGQz
KCk7CkBAIC04NDIsNyArODQyLDcgQEAgc3RydWN0IE5vZGUgewogICAgIC8vIFVzZWQgdG8gbG9v
ayB1cCBleGNlcHRpb24gaGFuZGxpbmcgaW5mb3JtYXRpb24gKGN1cnJlbnRseSBpbXBsZW1lbnRl
ZCBhcyBhIGJ5dGVjb2RlIGluZGV4KS4KICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CiAgICAg
Ly8gUmVmZXJlbmNlcyB0byB1cCB0byAzIGNoaWxkcmVuLCBvciBsaW5rcyB0byBhIHZhcmlhYmxl
IGxlbmd0aCBzZXQgb2YgY2hpbGRyZW4uCi0gICAgTm9kZVJlZmVyZW5jZUJsb2IgY2hpbGRyZW47
CisgICAgQWRqYWNlbmN5TGlzdCBjaGlsZHJlbjsKIAogcHJpdmF0ZToKICAgICB1aW50MTZfdCBt
X29wOyAvLyByZWFsIHR5cGUgaXMgTm9kZVR5cGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZUZsYWdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHJldmlzaW9uIDExMTIzMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyAr
NDUsNyBAQCBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKE5vZGVGCiAgICAgCiAg
ICAgYm9vbCBoYXNQcmludGVkID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKGZsYWdzICYgTm9kZVVz
ZWRBc051bWJlcikgeworICAgIGlmIChmbGFncyAmIEVkZ2VkQXNOdW1iZXIpIHsKICAgICAgICAg
cHRyLnN0cmNhdCgiVXNlZEFzTnVtIik7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNp
b24gMTExMjMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICNkZWZpbmUgTm9kZUNsb2JiZXJzV29ybGQgICAweDQwCiAjZGVmaW5lIE5vZGVN
aWdodENsb2JiZXIgICAgMHg4MAogI2RlZmluZSBOb2RlQXJpdGhNYXNrICAgICAgMHhGMDAKLSNk
ZWZpbmUgTm9kZVVzZUJvdHRvbSAgICAgIDB4MDAwCi0jZGVmaW5lIE5vZGVVc2VkQXNOdW1iZXIg
ICAweDEwMAorI2RlZmluZSBFZGdlQm90dG9tICAgICAgMHgwMDAKKyNkZWZpbmUgRWRnZWRBc051
bWJlciAgIDB4MTAwCiAjZGVmaW5lIE5vZGVOZWVkc05lZ1plcm8gICAweDIwMAotI2RlZmluZSBO
b2RlVXNlZEFzTWFzayAgICAgMHgzMDAKKyNkZWZpbmUgRWRnZWRBc01hc2sgICAgIDB4MzAwCiAj
ZGVmaW5lIE5vZGVNYXlPdmVyZmxvdyAgICAweDQwMAogI2RlZmluZSBOb2RlTWF5TmVnWmVybyAg
ICAgMHg4MDAKICNkZWZpbmUgTm9kZUJlaGF2aW9yTWFzayAgIDB4YzAwCkBAIC01OSw3ICs1OSw3
IEBAIHR5cGVkZWYgdWludDE2X3QgTm9kZUZsYWdzOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgbm9k
ZVVzZWRBc051bWJlcihOb2RlRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgcmV0dXJuICEhKGZsYWdzICYg
Tm9kZVVzZWRBc051bWJlcik7CisgICAgcmV0dXJuICEhKGZsYWdzICYgRWRnZWRBc051bWJlcik7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKE5vZGVGbGFn
cyBmbGFncykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVJlZmVyZW5j
ZUJsb2IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVS
ZWZlcmVuY2VCbG9iLmgJKHJldmlzaW9uIDExMTIzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVJlZmVyZW5jZUJsb2IuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIERGR05vZGVSZWZlcmVuY2VCbG9iX2gKLSNkZWZpbmUgREZHTm9kZVJlZmVyZW5jZUJsb2Jf
aAotCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQot
I2luY2x1ZGUgIkRGR0NvbW1vbi5oIgotI2luY2x1ZGUgIkRGR05vZGVVc2UuaCIKLQotbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBOb2RlUmVmZXJlbmNlQmxvYiB7Ci1w
dWJsaWM6Ci0gICAgZW51bSBLaW5kIHsKLSAgICAgICAgRml4ZWQsCi0gICAgICAgIFZhcmlhYmxl
Ci0gICAgfTsKLQotICAgIE5vZGVSZWZlcmVuY2VCbG9iKEtpbmQga2luZCkKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECi0gICAgICAgIDogbV9raW5kKGtpbmQpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAg
IGlmIChraW5kID09IFZhcmlhYmxlKSB7Ci0gICAgICAgICAgICBtX3dvcmRzWzBdLm1fZW5jb2Rl
ZFdvcmQgPSBVSU5UX01BWDsKLSAgICAgICAgICAgIG1fd29yZHNbMV0ubV9lbmNvZGVkV29yZCA9
IFVJTlRfTUFYOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIE5vZGVSZWZlcmVuY2VCbG9i
KEtpbmQga2luZCwgTm9kZUluZGV4IGNoaWxkMSwgTm9kZUluZGV4IGNoaWxkMiwgTm9kZUluZGV4
IGNoaWxkMykKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIDogbV9raW5kKEZpeGVkKQot
I2VuZGlmCi0gICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGtpbmQsIGtpbmQgPT0gRml4ZWQp
OwotICAgICAgICBpbml0aWFsaXplKGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpOwotICAgIH0KLSAg
ICAKLSAgICBOb2RlUmVmZXJlbmNlQmxvYihLaW5kIGtpbmQsIHVuc2lnbmVkIGZpcnN0Q2hpbGQs
IHVuc2lnbmVkIG51bUNoaWxkcmVuKQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgOiBt
X2tpbmQoVmFyaWFibGUpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoa2lu
ZCwga2luZCA9PSBWYXJpYWJsZSk7Ci0gICAgICAgIHNldEZpcnN0Q2hpbGQoZmlyc3RDaGlsZCk7
Ci0gICAgICAgIHNldE51bUNoaWxkcmVuKG51bUNoaWxkcmVuKTsKLSAgICB9Ci0gICAgCi0gICAg
Y29uc3QgTm9kZVVzZSYgY2hpbGQodW5zaWduZWQgaSkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChpIDwgMyk7Ci0gICAgICAgIEFTU0VSVChtX2tpbmQgPT0gRml4ZWQpOwotICAgICAgICBy
ZXR1cm4gbV93b3Jkc1tpXTsKLSAgICB9ICAgIAotICAgIAotICAgIE5vZGVVc2UmIGNoaWxkKHVu
c2lnbmVkIGkpCi0gICAgewotICAgICAgICBBU1NFUlQoaSA8IDMpOwotICAgICAgICBBU1NFUlQo
bV9raW5kID09IEZpeGVkKTsKLSAgICAgICAgcmV0dXJuIG1fd29yZHNbaV07Ci0gICAgfQotICAg
IAotICAgIHZvaWQgc2V0Q2hpbGQodW5zaWduZWQgaSwgTm9kZVVzZSBub2RlVXNlKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKGkgPCAzMCk7Ci0gICAgICAgIEFTU0VSVChtX2tpbmQgPT0gRml4ZWQp
OwotICAgICAgICBtX3dvcmRzW2ldID0gbm9kZVVzZTsKLSAgICB9Ci0gICAgCi0gICAgTm9kZVVz
ZSBjaGlsZDEoKSBjb25zdCB7IHJldHVybiBjaGlsZCgwKTsgfQotICAgIE5vZGVVc2UgY2hpbGQy
KCkgY29uc3QgeyByZXR1cm4gY2hpbGQoMSk7IH0KLSAgICBOb2RlVXNlIGNoaWxkMygpIGNvbnN0
IHsgcmV0dXJuIGNoaWxkKDIpOyB9Ci0KLSAgICBOb2RlVXNlJiBjaGlsZDEoKSB7IHJldHVybiBj
aGlsZCgwKTsgfQotICAgIE5vZGVVc2UmIGNoaWxkMigpIHsgcmV0dXJuIGNoaWxkKDEpOyB9Ci0g
ICAgTm9kZVVzZSYgY2hpbGQzKCkgeyByZXR1cm4gY2hpbGQoMik7IH0KLSAgICAKLSAgICB2b2lk
IHNldENoaWxkMShOb2RlVXNlIG5vZGVVc2UpIHsgc2V0Q2hpbGQoMCwgbm9kZVVzZSk7IH0KLSAg
ICB2b2lkIHNldENoaWxkMihOb2RlVXNlIG5vZGVVc2UpIHsgc2V0Q2hpbGQoMSwgbm9kZVVzZSk7
IH0KLSAgICB2b2lkIHNldENoaWxkMyhOb2RlVXNlIG5vZGVVc2UpIHsgc2V0Q2hpbGQoMiwgbm9k
ZVVzZSk7IH0KLSAgICAKLSAgICBOb2RlVXNlIGNoaWxkMVVuY2hlY2tlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fd29yZHNbMF07IH0KLSAgICAKLSAgICB2b2lkIGluaXRpYWxpemUoTm9kZVVzZSBjaGls
ZDEsIE5vZGVVc2UgY2hpbGQyLCBOb2RlVXNlIGNoaWxkMykKLSAgICB7Ci0gICAgICAgIGNoaWxk
KDApID0gY2hpbGQxOwotICAgICAgICBjaGlsZCgxKSA9IGNoaWxkMjsKLSAgICAgICAgY2hpbGQo
MikgPSBjaGlsZDM7Ci0gICAgfQotICAgIAotICAgIHZvaWQgaW5pdGlhbGl6ZShOb2RlSW5kZXgg
Y2hpbGQxLCBOb2RlSW5kZXggY2hpbGQyLCBOb2RlSW5kZXggY2hpbGQzKQotICAgIHsKLSAgICAg
ICAgaW5pdGlhbGl6ZShOb2RlVXNlKGNoaWxkMSksIE5vZGVVc2UoY2hpbGQyKSwgTm9kZVVzZShj
aGlsZDMpKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBmaXJzdENoaWxkKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX2tpbmQgPT0gVmFyaWFibGUpOwotICAgICAgICByZXR1cm4gbV93
b3Jkc1swXS5tX2VuY29kZWRXb3JkOwotICAgIH0KLSAgICB2b2lkIHNldEZpcnN0Q2hpbGQodW5z
aWduZWQgZmlyc3RDaGlsZCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2tpbmQgPT0gVmFyaWFi
bGUpOwotICAgICAgICBtX3dvcmRzWzBdLm1fZW5jb2RlZFdvcmQgPSBmaXJzdENoaWxkOwotICAg
IH0KLSAgICAKLSAgICB1bnNpZ25lZCBudW1DaGlsZHJlbigpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV9raW5kID09IFZhcmlhYmxlKTsKLSAgICAgICAgcmV0dXJuIG1fd29yZHNbMV0u
bV9lbmNvZGVkV29yZDsKLSAgICB9Ci0gICAgdm9pZCBzZXROdW1DaGlsZHJlbih1bnNpZ25lZCBu
dW1DaGlsZHJlbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2tpbmQgPT0gVmFyaWFibGUpOwot
ICAgICAgICBtX3dvcmRzWzFdLm1fZW5jb2RlZFdvcmQgPSBudW1DaGlsZHJlbjsKLSAgICB9Ci0g
ICAgCi1wcml2YXRlOgotICAgIE5vZGVVc2UgbV93b3Jkc1szXTsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECi0gICAgS2luZCBtX2tpbmQ7Ci0jZW5kaWYKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHTm9kZVJl
ZmVyZW5jZUJsb2JfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVXNlLmgJ
KHJldmlzaW9uIDExMTIzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVVz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgREZHTm9kZVVzZV9oCi0jZGVmaW5l
IERGR05vZGVVc2VfaAotCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0KLSNpZiBFTkFCTEUo
REZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7Ci0KLWNsYXNzIE5vZGVSZWZlcmVuY2VCbG9iOwotCi1jbGFzcyBOb2RlVXNl
IHsKLXB1YmxpYzoKLSAgICBOb2RlVXNlKCkKLSAgICAgICAgOiBtX2VuY29kZWRXb3JkKG1ha2VX
b3JkKE5vTm9kZSwgVW50eXBlZFVzZSkpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBleHBsaWNp
dCBOb2RlVXNlKE5vZGVJbmRleCBub2RlSW5kZXgpCi0gICAgICAgIDogbV9lbmNvZGVkV29yZCht
YWtlV29yZChub2RlSW5kZXgsIFVudHlwZWRVc2UpKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAg
Tm9kZVVzZShOb2RlSW5kZXggbm9kZUluZGV4LCBVc2VLaW5kIHVzZUtpbmQpCi0gICAgICAgIDog
bV9lbmNvZGVkV29yZChtYWtlV29yZChub2RlSW5kZXgsIHVzZUtpbmQpKQotICAgIHsKLSAgICB9
Ci0gICAgCi0gICAgTm9kZUluZGV4IGluZGV4VW5jaGVja2VkKCkgY29uc3QgeyByZXR1cm4gbV9l
bmNvZGVkV29yZCA+PiBzaGlmdCgpOyB9Ci0gICAgTm9kZUluZGV4IGluZGV4KCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChpc1NldCgpKTsKLSAgICAgICAgcmV0dXJuIG1fZW5jb2RlZFdv
cmQgPj4gc2hpZnQoKTsKLSAgICB9Ci0gICAgdm9pZCBzZXRJbmRleChOb2RlSW5kZXggbm9kZUlu
ZGV4KQotICAgIHsKLSAgICAgICAgbV9lbmNvZGVkV29yZCA9IG1ha2VXb3JkKG5vZGVJbmRleCwg
dXNlS2luZCgpKTsKLSAgICB9Ci0gICAgCi0gICAgVXNlS2luZCB1c2VLaW5kKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChpc1NldCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWFza2VkID0g
bV9lbmNvZGVkV29yZCAmICgoKDEgPDwgc2hpZnQoKSkgLSAxKSk7Ci0gICAgICAgIEFTU0VSVCht
YXNrZWQgPCBMYXN0VXNlS2luZCk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxVc2VLaW5k
PihtYXNrZWQpOwotICAgIH0KLSAgICB2b2lkIHNldFVzZUtpbmQoVXNlS2luZCB1c2VLaW5kKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKGlzU2V0KCkpOwotICAgICAgICBtX2VuY29kZWRXb3JkID0g
bWFrZVdvcmQoaW5kZXgoKSwgdXNlS2luZCk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTZXQo
KSBjb25zdCB7IHJldHVybiBpbmRleFVuY2hlY2tlZCgpICE9IE5vTm9kZTsgfQotICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KLSAgICAKLSAgICBib29sIG9w
ZXJhdG9yPT0oTm9kZVVzZSBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vu
Y29kZWRXb3JkID09IG90aGVyLm1fZW5jb2RlZFdvcmQ7Ci0gICAgfQotICAgIGJvb2wgb3BlcmF0
b3IhPShOb2RlVXNlIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW5jb2Rl
ZFdvcmQgIT0gb3RoZXIubV9lbmNvZGVkV29yZDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZnJp
ZW5kIGNsYXNzIE5vZGVSZWZlcmVuY2VCbG9iOwotICAgIAotICAgIHN0YXRpYyB1aW50MzJfdCBz
aGlmdCgpIHsgcmV0dXJuIDQ7IH0KLSAgICAKLSAgICBzdGF0aWMgaW50MzJfdCBtYWtlV29yZChO
b2RlSW5kZXggbm9kZUluZGV4LCBVc2VLaW5kIHVzZUtpbmQpCi0gICAgewotICAgICAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgoc3RhdGljX2Nhc3Q8aW50MzJfdD4obm9kZUluZGV4
KSA8PCBzaGlmdCgpKSA+PiBzaGlmdCgpKSkgPT0gbm9kZUluZGV4KTsKLSAgICAgICAgQVNTRVJU
KHVzZUtpbmQgPj0gMCAmJiB1c2VLaW5kIDwgTGFzdFVzZUtpbmQpOwotICAgICAgICBBU1NFUlQo
TGFzdFVzZUtpbmQgPD0gKDEgPDwgc2hpZnQoKSkpOwotICAgICAgICByZXR1cm4gKG5vZGVJbmRl
eCA8PCBzaGlmdCgpKSB8IHVzZUtpbmQ7Ci0gICAgfQotICAgIAotICAgIGludDMyX3QgbV9lbmNv
ZGVkV29yZDsKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oTm9kZVVzZSBub2RlVXNlLCBO
b2RlSW5kZXggbm9kZUluZGV4KQotewotICAgIHJldHVybiBub2RlVXNlLmluZGV4VW5jaGVja2Vk
KCkgPT0gbm9kZUluZGV4OwotfQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShOb2RlSW5kZXggbm9k
ZUluZGV4LCBOb2RlVXNlIG5vZGVVc2UpCi17Ci0gICAgcmV0dXJuIG5vZGVVc2UuaW5kZXhVbmNo
ZWNrZWQoKSA9PSBub2RlSW5kZXg7Ci19Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KE5vZGVVc2Ug
bm9kZVVzZSwgTm9kZUluZGV4IG5vZGVJbmRleCkKLXsKLSAgICByZXR1cm4gbm9kZVVzZS5pbmRl
eFVuY2hlY2tlZCgpICE9IG5vZGVJbmRleDsKLX0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oTm9k
ZUluZGV4IG5vZGVJbmRleCwgTm9kZVVzZSBub2RlVXNlKQotewotICAgIHJldHVybiBub2RlVXNl
LmluZGV4VW5jaGVja2VkKCkgIT0gbm9kZUluZGV4OwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8vIERGR05vZGVV
c2VfaAotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTExMjMzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgICAgICBk
YXRhTG9nKCIgICAlcyBAJXU6ICVzICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRl
eCwgYXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhmbGFncykpOwogI2VuZGlmCiAgICAgICAgIAotICAg
ICAgICBmbGFncyAmPSBOb2RlVXNlZEFzTWFzazsKKyAgICAgICAgZmxhZ3MgJj0gRWRnZWRBc01h
c2s7CiAgICAgICAgIAogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgCkBA
IC0xNTgsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGbHVzaDogewogICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGFuYWx5c2lzIGtub3dzIHRoYXQgZmx1c2hlZCBs
b2NhbHMgZXNjYXBlLgogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFj
Y2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgdmFyaWFi
bGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWda
ZXJvKTsKKyAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VGbGFncyhFZGdlZEFz
TnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAgICAgCkBAIC0zMTEsNyArMzExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNOdW1iZXI7CisgICAg
ICAgICAgICBmbGFncyB8PSBFZGdlZEFzTnVtYmVyOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBt
X2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwogICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxh
Z3MoZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMzQsNyArMzM0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIC8vIGNhbiBjaGFuZ2UgdGhlIG91dGNvbWUuIFNvLCBBcml0aE11bCBh
bHdheXMgY2hlY2tzIGZvciBvdmVyZmxvdwogICAgICAgICAgICAgLy8gbm8gbWF0dGVyIHdoYXQs
IGFuZCBhbHdheXMgZm9yY2VzIGl0cyBpbnB1dHMgdG8gY2hlY2sgYXMgd2VsbC4KICAgICAgICAg
ICAgIAotICAgICAgICAgICAgZmxhZ3MgfD0gTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05l
Z1plcm87CisgICAgICAgICAgICBmbGFncyB8PSBFZGdlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVn
WmVybzsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJn
ZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtu
b2RlLmNoaWxkMigpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNDEwLDggKzQxMCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBlbHNlIGlmIChu
b2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKIAotICAgICAgICAgICAgY2hh
bmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3Mg
fCBOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7Ci0gICAgICAgICAgICBjaGFu
Z2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyB8
IE5vZGVVc2VkQXNOdW1iZXIpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUu
Y2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MgfCBFZGdlZEFzTnVtYmVyIHwgTm9k
ZU5lZWRzTmVnWmVybyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGls
ZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyB8IEVkZ2VkQXNOdW1iZXIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTYyLDkgKzU2Miw5IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNhc2UgUHV0QnlWYWw6Ci0g
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5v
ZGVGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKLSAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUFyaXRoTm9k
ZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlcik7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9
IG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyB8IE5vZGVV
c2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0g
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzIHwgRWRnZWRB
c051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dy
YXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MgfCBFZGdlZEFzTnVt
YmVyKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMygpXS5tZXJn
ZUFyaXRoTm9kZUZsYWdzKGZsYWdzIHwgRWRnZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8p
OwogICAgICAgICAgICAgYnJlYWs7CiAKICNpZm5kZWYgTkRFQlVHCkBAIC02MTcsNyArNjE3LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3MoTm9kZSYgbm9kZSwg
Tm9kZUZsYWdzIGZsYWdzKQogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7Ci0g
ICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvOworICAg
ICAgICBmbGFncyB8PSBFZGdlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybzsKICAgICAgICAg
aWYgKG5vZGUuZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS5maXJz
dENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCiAgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtX2dyYXBoW21fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF1d
Lm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwpAQCAtNjUzLDcgKzY1Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBwcm9wYWdhdGUobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwogICAgIH0K
IAotICAgIHZvaWQgdm90ZShOb2RlVXNlIG5vZGVVc2UsIFZhcmlhYmxlQWNjZXNzRGF0YTo6QmFs
bG90IGJhbGxvdCkKKyAgICB2b2lkIHZvdGUoRWRnZSBub2RlVXNlLCBWYXJpYWJsZUFjY2Vzc0Rh
dGE6OkJhbGxvdCBiYWxsb3QpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fZ3JhcGhbbm9kZVVz
ZV0ub3AoKSkgewogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKQEAgLTg1NSw3ICs4NTUsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAgY2FzZSBTdHJp
bmdDaGFyQ29kZUF0OiB7CiAgICAgICAgICAgICBpZiAoISFub2RlLmNoaWxkMygpICYmIG1fZ3Jh
cGhbbm9kZS5jaGlsZDMoKV0ub3AoKSA9PSBOb3ApCi0gICAgICAgICAgICAgICAgbm9kZS5jaGls
ZHJlbi5jaGlsZDMoKSA9IE5vZGVVc2UoKTsKKyAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVu
LmNoaWxkMygpID0gRWRnZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2Fy
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2Fy
ZC5oCShyZXZpc2lvbiAxMTEyMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nj
b3JlQm9hcmQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG1fZnJlZS5hcHBlbmQoaW5kZXgpOwogICAgICAgICB9CiAgICAgfQotICAgIHZv
aWQgdXNlKE5vZGVVc2UgY2hpbGQpCisgICAgdm9pZCB1c2UoRWRnZSBjaGlsZCkKICAgICB7CiAg
ICAgICAgIHVzZShjaGlsZC5pbmRleFVuY2hlY2tlZCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHJldmlzaW9uIDExMTIzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiw3ICs1MzIsNyBAQCBKSVRD
b21waWxlcjo6Q2FsbCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkCiAgICAgcmV0dXJuIGZ1bmN0aW9u
Q2FsbDsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHZhbHVlVGFnR1BSLCBH
UFJSZWcgdmFsdWVQYXlsb2FkR1BSLCBOb2RlVXNlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQ
UiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5
SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB2
YWx1ZVRhZ0dQUiwgR1BSUmVnIHZhbHVlUGF5bG9hZEdQUiwgRWRnZSB2YWx1ZVVzZSwgR1BSUmVn
IHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQgcHV0S2luZCwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQpCiB7CiAgICAgbV9qaXQuYmVnaW5Vbmlu
dGVycnVwdGVkU2VxdWVuY2UoKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVj
dHVyZVRvQ29tcGFyZTsKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRQdXRCeUlkKENvZGVPCiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoUHJvcGVydHlB
Y2Nlc3NSZWNvcmQoY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBmdW5jdGlvbkNhbGws
IHN0cnVjdHVyZUNoZWNrLCBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCh0YWdTdG9yZVdp
dGhQYXRjaC5sYWJlbCgpKSwgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QocGF5bG9hZFN0
b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93Q2FzZSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4
X3Q+KGJhc2VQYXlsb2FkR1BSKSwgc2FmZUNhc3Q8aW50OF90Pih2YWx1ZVRhZ0dQUiksIHNhZmVD
YXN0PGludDhfdD4odmFsdWVQYXlsb2FkR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BS
KSkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xl
Q29tcGFyZU51bGwoTm9kZVVzZSBvcGVyYW5kLCBib29sIGludmVydCkKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbChFZGdlIG9wZXJhbmQs
IGJvb2wgaW52ZXJ0KQogewogICAgIEpTVmFsdWVPcGVyYW5kIGFyZyh0aGlzLCBvcGVyYW5kKTsK
ICAgICBHUFJSZWcgYXJnVGFnR1BSID0gYXJnLnRhZ0dQUigpOwpAQCAtNjA4LDcgKzYwOCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICBib29sZWFuUmVz
dWx0KHJlc3VsdFBheWxvYWRHUFIsIG1fY29tcGlsZUluZGV4KTsKIH0KIAotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGwoTm9kZVVzZSBvcGVyYW5k
LCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBib29sIGludmVydCkKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKEVkZ2Ugb3BlcmFuZCwgTm9k
ZUluZGV4IGJyYW5jaE5vZGVJbmRleCwgYm9vbCBpbnZlcnQpCiB7CiAgICAgTm9kZSYgYnJhbmNo
Tm9kZSA9IGF0KGJyYW5jaE5vZGVJbmRleCk7CiAgICAgQmxvY2tJbmRleCB0YWtlbiA9IGJyYW5j
aE5vZGUudGFrZW5CbG9ja0luZGV4KCk7CkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgIGp1bXAobm90VGFrZW4pOwogfQogCi1i
b29sIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZUNvbXBhcmVOdWxsKE5vZGUmIG5vZGUs
IE5vZGVVc2Ugb3BlcmFuZCwgYm9vbCBpbnZlcnQpCitib29sIFNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZUNvbXBhcmVOdWxsKE5vZGUmIG5vZGUsIEVkZ2Ugb3BlcmFuZCwgYm9vbCBpbnZl
cnQpCiB7CiAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVC
cmFuY2goKTsKICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CkBAIC05
MDgsMTEgKzkwOCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlJiBub2Rl
CiAKICAgICBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlID0gbm9kZS5vcCgpID09IENh
bGwgPyBDYWxsTGlua0luZm86OkNhbGwgOiBDYWxsTGlua0luZm86OkNvbnN0cnVjdDsKIAotICAg
IE5vZGVVc2UgY2FsbGVlTm9kZVVzZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltu
b2RlLmZpcnN0Q2hpbGQoKV07Ci0gICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMsIGNhbGxl
ZU5vZGVVc2UpOworICAgIEVkZ2UgY2FsbGVlRWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdD
aGlsZHJlbltub2RlLmZpcnN0Q2hpbGQoKV07CisgICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRo
aXMsIGNhbGxlZUVkZ2UpOwogICAgIEdQUlJlZyBjYWxsZWVUYWdHUFIgPSBjYWxsZWUudGFnR1BS
KCk7CiAgICAgR1BSUmVnIGNhbGxlZVBheWxvYWRHUFIgPSBjYWxsZWUucGF5bG9hZEdQUigpOwot
ICAgIHVzZShjYWxsZWVOb2RlVXNlKTsKKyAgICB1c2UoY2FsbGVlRWRnZSk7CiAKICAgICAvLyBU
aGUgY2FsbCBpbnN0cnVjdGlvbidzIGZpcnN0IGNoaWxkIGlzIGVpdGhlciB0aGUgZnVuY3Rpb24g
KG5vcm1hbCBjYWxsKSBvciB0aGUKICAgICAvLyByZWNlaXZlciAobWV0aG9kIGNhbGwpLiBzdWJz
ZXF1ZW50IGNoaWxkcmVuIGFyZSB0aGUgYXJndW1lbnRzLgpAQCAtOTI0LDExICs5MjQsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSYgbm9kZQogICAgIG1faml0LnN0b3Jl
MzIoY2FsbGVlVGFnR1BSLCBjYWxsRnJhbWVUYWdTbG90KFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSk7
CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7IGkrKykgewotICAgICAg
ICBOb2RlVXNlIGFyZ05vZGVVc2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9k
ZS5maXJzdENoaWxkKCkgKyAxICsgaV07Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZyh0aGlz
LCBhcmdOb2RlVXNlKTsKKyAgICAgICAgRWRnZSBhcmdFZGdlID0gbV9qaXQuZ3JhcGgoKS5tX3Zh
ckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsgMSArIGldOworICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBhcmcodGhpcywgYXJnRWRnZSk7CiAgICAgICAgIEdQUlJlZyBhcmdUYWdHUFIgPSBh
cmcudGFnR1BSKCk7CiAgICAgICAgIEdQUlJlZyBhcmdQYXlsb2FkR1BSID0gYXJnLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgdXNlKGFyZ05vZGVVc2UpOworICAgICAgICB1c2UoYXJnRWRnZSk7CiAK
ICAgICAgICAgbV9qaXQuc3RvcmUzMihhcmdUYWdHUFIsIGFyZ3VtZW50VGFnU2xvdChpICsgZHVt
bXlUaGlzQXJndW1lbnQpKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMihhcmdQYXlsb2FkR1BSLCBh
cmd1bWVudFBheWxvYWRTbG90KGkgKyBkdW1teVRoaXNBcmd1bWVudCkpOwpAQCAtMTQ0Nyw3ICsx
NDQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZAogICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBtX2NvbXBp
bGVJbmRleCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVy
TG9naWNhbE5vdChOb2RlVXNlIG5vZGVVc2UsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBi
b29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9i
amVjdE9yT3RoZXJMb2dpY2FsTm90KEVkZ2Ugbm9kZVVzZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZVVzZSk7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhp
cyk7CkBAIC0xNTM1LDcgKzE1MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9n
aWNhbE5vdChOCiAgICAgYm9vbGVhblJlc3VsdChyZXN1bHRQYXlsb2FkR1BSLCBtX2NvbXBpbGVJ
bmRleCwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZVVzZSBub2RlVXNlLCBCbG9ja0luZGV4
IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2VuLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywg
Ym9vbCBuZWVkU3BlY3VsYXRpb25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmpl
Y3RPck90aGVyQnJhbmNoKEVkZ2Ugbm9kZVVzZSwgQmxvY2tJbmRleCB0YWtlbiwgQmxvY2tJbmRl
eCBub3RUYWtlbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0
aW9uQ2hlY2spCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZVVzZSk7CiAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDExMTIzMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxMiw3ICs1MTIsNyBAQCBKSVRDb21waWxlcjo6Q2FsbCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkCiAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIsIE5vZGVVc2UgdmFsdWVVc2UsIEdQUlJlZyBzY3JhdGNo
R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kIHB1dEtpbmQsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0
QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVH
UFIsIEVkZ2UgdmFsdWVVc2UsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBQdXRLaW5kIHB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
KQogewogICAgIAogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21w
YXJlOwpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5
SWQoQ29kZU8KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcyhQcm9wZXJ0eUFjY2Vzc1JlY29y
ZChjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIGZ1bmN0aW9uQ2FsbCwgc3RydWN0dXJl
Q2hlY2ssIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVs
KCkpLCBzbG93Q2FzZSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZl
Q2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSkpOwog
fQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFy
ZU51bGwoTm9kZVVzZSBvcGVyYW5kLCBib29sIGludmVydCkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbChFZGdlIG9wZXJhbmQsIGJvb2wg
aW52ZXJ0KQogewogICAgIEpTVmFsdWVPcGVyYW5kIGFyZyh0aGlzLCBvcGVyYW5kKTsKICAgICBH
UFJSZWcgYXJnR1BSID0gYXJnLmdwcigpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQ
UiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbChOb2RlVXNlIG9wZXJh
bmQsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIGJvb2wgaW52ZXJ0KQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGwoRWRnZSBvcGVyYW5kLCBO
b2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBib29sIGludmVydCkKIHsKICAgICBOb2RlJiBicmFu
Y2hOb2RlID0gYXQoYnJhbmNoTm9kZUluZGV4KTsKICAgICBCbG9ja0luZGV4IHRha2VuID0gYnJh
bmNoTm9kZS50YWtlbkJsb2NrSW5kZXgoKTsKQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAganVtcChub3RUYWtlbik7CiB9CiAK
LWJvb2wgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlQ29tcGFyZU51bGwoTm9kZSYgbm9k
ZSwgTm9kZVVzZSBvcGVyYW5kLCBib29sIGludmVydCkKK2Jvb2wgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlQ29tcGFyZU51bGwoTm9kZSYgbm9kZSwgRWRnZSBvcGVyYW5kLCBib29sIGlu
dmVydCkKIHsKICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9s
ZUJyYW5jaCgpOwogICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKQEAg
LTkyOSwxMCArOTI5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUmIG5v
ZGUKICAgICAKICAgICBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlID0gbm9kZS5vcCgp
ID09IENhbGwgPyBDYWxsTGlua0luZm86OkNhbGwgOiBDYWxsTGlua0luZm86OkNvbnN0cnVjdDsK
ICAgICAKLSAgICBOb2RlVXNlIGNhbGxlZU5vZGVVc2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJn
Q2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCldOwotICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0
aGlzLCBjYWxsZWVOb2RlVXNlKTsKKyAgICBFZGdlIGNhbGxlZUVkZ2UgPSBtX2ppdC5ncmFwaCgp
Lm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCldOworICAgIEpTVmFsdWVPcGVyYW5k
IGNhbGxlZSh0aGlzLCBjYWxsZWVFZGdlKTsKICAgICBHUFJSZWcgY2FsbGVlR1BSID0gY2FsbGVl
LmdwcigpOwotICAgIHVzZShjYWxsZWVOb2RlVXNlKTsKKyAgICB1c2UoY2FsbGVlRWRnZSk7CiAg
ICAgCiAgICAgLy8gVGhlIGNhbGwgaW5zdHJ1Y3Rpb24ncyBmaXJzdCBjaGlsZCBpcyBlaXRoZXIg
dGhlIGZ1bmN0aW9uIChub3JtYWwgY2FsbCkgb3IgdGhlCiAgICAgLy8gcmVjZWl2ZXIgKG1ldGhv
ZCBjYWxsKS4gc3Vic2VxdWVudCBjaGlsZHJlbiBhcmUgdGhlIGFyZ3VtZW50cy4KQEAgLTk0Mywx
MCArOTQzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUmIG5vZGUKICAg
ICBtX2ppdC5zdG9yZVB0cihjYWxsZWVHUFIsIGNhbGxGcmFtZVNsb3QoUmVnaXN0ZXJGaWxlOjpD
YWxsZWUpKTsKICAgICAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7IGkr
KykgewotICAgICAgICBOb2RlVXNlIGFyZ05vZGVVc2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJn
Q2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCkgKyAxICsgaV07Ci0gICAgICAgIEpTVmFsdWVPcGVy
YW5kIGFyZyh0aGlzLCBhcmdOb2RlVXNlKTsKKyAgICAgICAgRWRnZSBhcmdFZGdlID0gbV9qaXQu
Z3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsgMSArIGldOworICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcodGhpcywgYXJnRWRnZSk7CiAgICAgICAgIEdQUlJlZyBh
cmdHUFIgPSBhcmcuZ3ByKCk7Ci0gICAgICAgIHVzZShhcmdOb2RlVXNlKTsKKyAgICAgICAgdXNl
KGFyZ0VkZ2UpOwogICAgICAgICAKICAgICAgICAgbV9qaXQuc3RvcmVQdHIoYXJnR1BSLCBhcmd1
bWVudFNsb3QoaSArIGR1bW15VGhpc0FyZ3VtZW50KSk7CiAgICAgfQpAQCAtMTUzMSw3ICsxNTMx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZAogICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKLXZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlVXNlIG5vZGVVc2Us
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KEVkZ2Ug
bm9kZVVzZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0aW9u
Q2hlY2spCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZVVzZSk7CiAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTE2MzUsNyArMTYzNSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xlYW4sIFVzZUNoaWxkcmVuQ2Fs
bGVkRXhwbGljaXRseSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90
aGVyQnJhbmNoKE5vZGVVc2Ugbm9kZVVzZSwgQmxvY2tJbmRleCB0YWtlbiwgQmxvY2tJbmRleCBu
b3RUYWtlbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0aW9u
Q2hlY2spCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaChFZGdl
IG5vZGVVc2UsIEJsb2NrSW5kZXggdGFrZW4sIEJsb2NrSW5kZXggbm90VGFrZW4sIGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKQogewogICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGVVc2UpOwogICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDExMTIzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NywyMSArODcs
MjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6dXNlQ2hpbGRyZW4oTm9kZSYgbgogICAgICAgICBm
b3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9k
ZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCiAgICAgICAg
ICAgICB1c2UobV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgTm9kZVVzZSBjaGlsZDEgPSBub2RlLmNoaWxkMSgpOworICAgICAg
ICBFZGdlIGNoaWxkMSA9IG5vZGUuY2hpbGQxKCk7CiAgICAgICAgIGlmICghY2hpbGQxKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoIW5vZGUuY2hpbGQyKCkgJiYgIW5vZGUuY2hpbGQzKCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHVzZShjaGlsZDEpOwogICAgICAg
ICAKLSAgICAgICAgTm9kZVVzZSBjaGlsZDIgPSBub2RlLmNoaWxkMigpOworICAgICAgICBFZGdl
IGNoaWxkMiA9IG5vZGUuY2hpbGQyKCk7CiAgICAgICAgIGlmICghY2hpbGQyKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIW5vZGUuY2hpbGQzKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIHVzZShjaGlsZDIpOwogICAgICAgICAKLSAgICAgICAgTm9kZVVzZSBjaGls
ZDMgPSBub2RlLmNoaWxkMygpOworICAgICAgICBFZGdlIGNoaWxkMyA9IG5vZGUuY2hpbGQzKCk7
CiAgICAgICAgIGlmICghY2hpbGQzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1c2Uo
Y2hpbGQzKTsKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjptYXJrQ2Vs
bENhcmQoTWFjcm9BCiAjZW5kaWYKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJy
aWVyKEdQUlJlZyBvd25lckdQUiwgR1BSUmVnIHZhbHVlR1BSLCBOb2RlVXNlIHZhbHVlVXNlLCBX
cml0ZUJhcnJpZXJVc2VLaW5kIHVzZUtpbmQsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0
Y2gyKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEdQUlJlZyBvd25lckdQUiwg
R1BSUmVnIHZhbHVlR1BSLCBFZGdlIHZhbHVlVXNlLCBXcml0ZUJhcnJpZXJVc2VLaW5kIHVzZUtp
bmQsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyKQogewogICAgIFVOVVNFRF9QQVJB
TShvd25lckdQUik7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlR1BSKTsKQEAgLTMyNSw3ICszMjUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoR1BSUmVnCiAjZW5kaWYKIH0K
IAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIEdQUlJl
ZyB2YWx1ZUdQUiwgTm9kZVVzZSB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVyVXNlS2luZCB1c2VLaW5k
LCBHUFJSZWcgc2NyYXRjaCkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihKU0Nl
bGwqIG93bmVyLCBHUFJSZWcgdmFsdWVHUFIsIEVkZ2UgdmFsdWVVc2UsIFdyaXRlQmFycmllclVz
ZUtpbmQgdXNlS2luZCwgR1BSUmVnIHNjcmF0Y2gpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG93bmVy
KTsKICAgICBVTlVTRURfUEFSQU0odmFsdWVHUFIpOwpAQCAtMTYxOSw4ICsxNjE5LDggQEAgc3Rh
dGljIHZvaWQgY29tcGlsZUNsYW1wRG91YmxlVG9CeXRlKEpJVAogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9w
ZXJ0eSwgTm9kZSYgbm9kZSkKIHsKLSAgICBOb2RlVXNlIGJhc2VVc2UgPSBub2RlLmNoaWxkMSgp
OwotICAgIE5vZGVVc2UgdmFsdWVVc2UgPSBub2RlLmNoaWxkMygpOworICAgIEVkZ2UgYmFzZVVz
ZSA9IG5vZGUuY2hpbGQxKCk7CisgICAgRWRnZSB2YWx1ZVVzZSA9IG5vZGUuY2hpbGQzKCk7CiAg
ICAgCiAgICAgaWYgKCFpc0J5dGVBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKGJhc2VV
c2UpLm1fdHlwZSkpCiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoYmFzZSksIGJhc2VVc2UuaW5kZXgoKSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZKU0J5dGVBcnJheTo6c19pbmZvKSkpOwpAQCAtMTc3OCw4ICsxNzc4LDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbgogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlJiBub2RlLCBz
aXplX3QgZWxlbWVudFNpemUsIFR5cGVkQXJyYXlTcGVjdWxhdGlvblJlcXVpcmVtZW50cyBzcGVj
dWxhdGlvblJlcXVpcmVtZW50cywgVHlwZWRBcnJheVNpZ25lZG5lc3Mgc2lnbmVkbmVzcywgVHlw
ZWRBcnJheVJvdW5kaW5nIHJvdW5kaW5nKQogewotICAgIE5vZGVVc2UgYmFzZVVzZSA9IG5vZGUu
Y2hpbGQxKCk7Ci0gICAgTm9kZVVzZSB2YWx1ZVVzZSA9IG5vZGUuY2hpbGQzKCk7CisgICAgRWRn
ZSBiYXNlVXNlID0gbm9kZS5jaGlsZDEoKTsKKyAgICBFZGdlIHZhbHVlVXNlID0gbm9kZS5jaGls
ZDMoKTsKICAgICAKICAgICBpZiAoc3BlY3VsYXRpb25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFy
cmF5VHlwZVNwZWNDaGVjaykKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlKSwgYmFzZVVzZSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRl
c2NyaXB0b3IubV9jbGFzc0luZm8pKSk7CkBAIC0xOTI0LDggKzE5MjQsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSYgbm9kZSwg
c2l6ZV90IGVsZW1lbnRTaXplLCBUeXBlZEFycmF5U3BlY3VsYXRpb25SZXF1aXJlbWVudHMgc3Bl
Y3VsYXRpb25SZXF1aXJlbWVudHMpCiB7Ci0gICAgTm9kZVVzZSBiYXNlVXNlID0gbm9kZS5jaGls
ZDEoKTsKLSAgICBOb2RlVXNlIHZhbHVlVXNlID0gbm9kZS5jaGlsZDMoKTsKKyAgICBFZGdlIGJh
c2VVc2UgPSBub2RlLmNoaWxkMSgpOworICAgIEVkZ2UgdmFsdWVVc2UgPSBub2RlLmNoaWxkMygp
OwogICAgIAogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1ZVVz
ZSk7CiAgICAgCkBAIC0yNDkzLDcgKzI0OTMsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21w
YXJlKE5vZGUmIG5vZGUsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlU3RyaWN0RXFGb3JDb25zdGFudChOb2RlJiBub2RlLCBOb2RlVXNlIHZhbHVl
LCBKU1ZhbHVlIGNvbnN0YW50KQorYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVx
Rm9yQ29uc3RhbnQoTm9kZSYgbm9kZSwgRWRnZSB2YWx1ZSwgSlNWYWx1ZSBjb25zdGFudCkKIHsK
ICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgdmFsdWUpOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTEx
MjMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIG1faml0LmdyYXBoKClbbm9kZUluZGV4XTsKICAgICB9Ci0gICAgTm9kZSYgYXQoTm9k
ZVVzZSBub2RlVXNlKQorICAgIE5vZGUmIGF0KEVkZ2Ugbm9kZVVzZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhdChub2RlVXNlLmluZGV4KCkpOwogICAgIH0KQEAgLTIyMSw3ICsyMjEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2
aXJ0dWFsUmVnaXN0ZXJdOwogICAgICAgICByZXR1cm4gaW5mby5jYW5SZXVzZSgpOwogICAgIH0K
LSAgICBib29sIGNhblJldXNlKE5vZGVVc2Ugbm9kZVVzZSkKKyAgICBib29sIGNhblJldXNlKEVk
Z2Ugbm9kZVVzZSkKICAgICB7CiAgICAgICAgIHJldHVybiBjYW5SZXVzZShub2RlVXNlLmluZGV4
KCkpOwogICAgIH0KQEAgLTMyNSw3ICszMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dw
cnMucmVsZWFzZShpbmZvLmdwcigpKTsKICNlbmRpZgogICAgIH0KLSAgICB2b2lkIHVzZShOb2Rl
VXNlIG5vZGVVc2UpCisgICAgdm9pZCB1c2UoRWRnZSBub2RlVXNlKQogICAgIHsKICAgICAgICAg
dXNlKG5vZGVVc2UuaW5kZXgoKSk7CiAgICAgfQpAQCAtMzMzLDkgKzMzMyw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBtYXJrQ2VsbENhcmQoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcgb3du
ZXJHUFIsIEdQUlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyKTsKICAgICBzdGF0
aWMgdm9pZCB3cml0ZUJhcnJpZXIoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcgb3duZXJHUFIsIEdQ
UlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBXcml0ZUJhcnJpZXJVc2VLaW5k
KTsKIAotICAgIHZvaWQgd3JpdGVCYXJyaWVyKEdQUlJlZyBvd25lckdQUiwgR1BSUmVnIHZhbHVl
R1BSLCBOb2RlVXNlIHZhbHVlVXNlLCBXcml0ZUJhcnJpZXJVc2VLaW5kLCBHUFJSZWcgc2NyYXRj
aEdQUjEgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVn
KTsKKyAgICB2b2lkIHdyaXRlQmFycmllcihHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyB2YWx1ZUdQ
UiwgRWRnZSB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVyVXNlS2luZCwgR1BSUmVnIHNjcmF0Y2hHUFIx
ID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHNjcmF0Y2hHUFIyID0gSW52YWxpZEdQUlJlZyk7CiAg
ICAgdm9pZCB3cml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyR1BSLCBKU0NlbGwqIHZhbHVlLCBXcml0
ZUJhcnJpZXJVc2VLaW5kLCBHUFJSZWcgc2NyYXRjaEdQUjEgPSBJbnZhbGlkR1BSUmVnLCBHUFJS
ZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnKTsKLSAgICB2b2lkIHdyaXRlQmFycmllcihK
U0NlbGwqIG93bmVyLCBHUFJSZWcgdmFsdWVHUFIsIE5vZGVVc2UgdmFsdWVVc2UsIFdyaXRlQmFy
cmllclVzZUtpbmQsIEdQUlJlZyBzY3JhdGNoR1BSMSA9IEludmFsaWRHUFJSZWcpOworICAgIHZv
aWQgd3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIEdQUlJlZyB2YWx1ZUdQUiwgRWRnZSB2YWx1
ZVVzZSwgV3JpdGVCYXJyaWVyVXNlS2luZCwgR1BSUmVnIHNjcmF0Y2hHUFIxID0gSW52YWxpZEdQ
UlJlZyk7CiAKICAgICBzdGF0aWMgR1BSUmVnIHNlbGVjdFNjcmF0Y2hHUFIoR1BSUmVnIHByZXNl
cnZlMSA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTIgPSBJbnZhbGlkR1BSUmVnLCBH
UFJSZWcgcHJlc2VydmUzID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlNCA9IEludmFs
aWRHUFJSZWcpCiAgICAgewpAQCAtOTAwLDE1ICs5MDAsMTUgQEAgcHJpdmF0ZToKICAgICBlbnVt
IFNwaWxsUmVnaXN0ZXJzTW9kZSB7IE5lZWRUb1NwaWxsLCBEb250U3BpbGwgfTsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxs
KTsKLSAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2UsIEdQUlJl
ZyB2YWx1ZSwgTm9kZVVzZSB2YWx1ZVVzZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
ID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmln
aW4sIEdQUlJlZyBiYXNlLCBHUFJSZWcgdmFsdWUsIEVkZ2UgdmFsdWVVc2UsIEdQUlJlZyBzY3Jh
dGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWNoZWRHZXRCeUlkKENvZGVPcmln
aW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJl
ZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBHUFJSZWcgc2NyYXRjaEdQ
UiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9T
cGlsbCk7Ci0gICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlUGF5
bG9hZEdQUiwgR1BSUmVnIHZhbHVlVGFnR1BSLCBHUFJSZWcgdmFsdWVQYXlsb2FkR1BSLCBOb2Rl
VXNlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciwgUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxl
cjo6SnVtcCgpKTsKKyAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJh
c2VQYXlsb2FkR1BSLCBHUFJSZWcgdmFsdWVUYWdHUFIsIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIs
IEVkZ2UgdmFsdWVVc2UsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLCBQdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBp
bGVyOjpKdW1wKCkpOwogI2VuZGlmCiAKLSAgICB2b2lkIG5vblNwZWN1bGF0aXZlTm9uUGVlcGhv
bGVDb21wYXJlTnVsbChOb2RlVXNlIG9wZXJhbmQsIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwotICAg
IHZvaWQgbm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGwoTm9kZVVzZSBvcGVyYW5kLCBO
b2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBib29sIGludmVydCA9IGZhbHNlKTsKLSAgICBib29s
IG5vblNwZWN1bGF0aXZlQ29tcGFyZU51bGwoTm9kZSYsIE5vZGVVc2Ugb3BlcmFuZCwgYm9vbCBp
bnZlcnQgPSBmYWxzZSk7CisgICAgdm9pZCBub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFy
ZU51bGwoRWRnZSBvcGVyYW5kLCBib29sIGludmVydCA9IGZhbHNlKTsKKyAgICB2b2lkIG5vblNw
ZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKEVkZ2Ugb3BlcmFuZCwgTm9kZUluZGV4IGJyYW5j
aE5vZGVJbmRleCwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CisgICAgYm9vbCBub25TcGVjdWxhdGl2
ZUNvbXBhcmVOdWxsKE5vZGUmLCBFZGdlIG9wZXJhbmQsIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwog
ICAgIAogICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaChOb2RlJiwgTm9kZUlu
ZGV4IGJyYW5jaE5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24s
IFNfREZHT3BlcmF0aW9uX0VKSiBoZWxwZXJGdW5jdGlvbik7CiAgICAgdm9pZCBub25TcGVjdWxh
dGl2ZU5vblBlZXBob2xlQ29tcGFyZShOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxD
b25kaXRpb24sIFNfREZHT3BlcmF0aW9uX0VKSiBoZWxwZXJGdW5jdGlvbik7CkBAIC0xNzE1LDE1
ICsxNzE1LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVh
bGl0eShOb2RlJiwgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCwgY29uc3QgQ2xhc3NJbmZvKiwg
UHJlZGljdGlvbkNoZWNrZXIpOwogICAgIHZvaWQgY29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUm
LCBjb25zdCBDbGFzc0luZm8qLCBQcmVkaWN0aW9uQ2hlY2tlcik7CiAgICAgdm9pZCBjb21waWxl
VmFsdWVBZGQoTm9kZSYpOwotICAgIHZvaWQgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90
KE5vZGVVc2UgdmFsdWUsIGNvbnN0IENsYXNzSW5mbyosIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hl
Y2spOworICAgIHZvaWQgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KEVkZ2UgdmFsdWUs
IGNvbnN0IENsYXNzSW5mbyosIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spOwogICAgIHZvaWQg
Y29tcGlsZUxvZ2ljYWxOb3QoTm9kZSYpOwotICAgIHZvaWQgZW1pdE9iamVjdE9yT3RoZXJCcmFu
Y2goTm9kZVVzZSB2YWx1ZSwgQmxvY2tJbmRleCB0YWtlbiwgQmxvY2tJbmRleCBub3RUYWtlbiwg
Y29uc3QgQ2xhc3NJbmZvKiwgYm9vbCBuZWVkU3BlY3VsYXRpb25DaGVjayk7CisgICAgdm9pZCBl
bWl0T2JqZWN0T3JPdGhlckJyYW5jaChFZGdlIHZhbHVlLCBCbG9ja0luZGV4IHRha2VuLCBCbG9j
a0luZGV4IG5vdFRha2VuLCBjb25zdCBDbGFzc0luZm8qLCBib29sIG5lZWRTcGVjdWxhdGlvbkNo
ZWNrKTsKICAgICB2b2lkIGVtaXRCcmFuY2goTm9kZSYpOwogICAgIAogICAgIHZvaWQgY29tcGls
ZUludGVnZXJDb21wYXJlKE5vZGUmLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlv
bik7CiAgICAgdm9pZCBjb21waWxlRG91YmxlQ29tcGFyZShOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6
OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgCi0gICAgYm9vbCBjb21waWxlU3RyaWN0RXFGb3JDb25z
dGFudChOb2RlJiwgTm9kZVVzZSB2YWx1ZSwgSlNWYWx1ZSBjb25zdGFudCk7CisgICAgYm9vbCBj
b21waWxlU3RyaWN0RXFGb3JDb25zdGFudChOb2RlJiwgRWRnZSB2YWx1ZSwgSlNWYWx1ZSBjb25z
dGFudCk7CiAgICAgCiAgICAgYm9vbCBjb21waWxlU3RyaWN0RXEoTm9kZSYpOwogICAgIApAQCAt
MTgxNyw3ICsxODE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBqc1ZhbHVlU291
cmNlLCBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZUlu
ZGV4KSwganVtcFRvRmFpbCwgdGhpcykpOwogICAgIH0KLSAgICB2b2lkIHNwZWN1bGF0aW9uQ2hl
Y2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlVXNlIG5v
ZGVVc2UsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpCisgICAgdm9pZCBzcGVjdWxh
dGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgRWRn
ZSBub2RlVXNlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsKQogICAgIHsKICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlVXNlLmluZGV4KCks
IGp1bXBUb0ZhaWwpOwogICAgIH0KQEAgLTE4MjgsNyArMTgyOCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBKdW1wVmVjdG9yLnNpemUoKTsgKytpKQogICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlSW5kZXgs
IEp1bXBWZWN0b3JbaV0pOwogICAgIH0KLSAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtp
bmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlVXNlIG5vZGVVc2UsIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcHNUb0ZhaWwpCisgICAgdm9pZCBzcGVjdWxhdGlv
bkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgRWRnZSBu
b2RlVXNlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsKQogICAgIHsKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlVXNlLmluZGV4
KCksIGp1bXBzVG9GYWlsKTsKICAgICB9CkBAIC0xODQwLDcgKzE4NDAsNyBAQCBwcml2YXRlOgog
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShyZWNv
dmVyeSk7CiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0KE9TUkV4aXQo
a2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWwsIHRoaXMsIG1faml0LmNvZGVCbG9jaygp
LT5udW1iZXJPZlNwZWN1bGF0aW9uUmVjb3ZlcmllcygpKSk7CiAgICAgfQotICAgIHZvaWQgc3Bl
Y3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2Us
IE5vZGVVc2Ugbm9kZVVzZSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCwgY29uc3Qg
U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNr
KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgRWRnZSBub2RlVXNl
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBTcGVjdWxhdGlvblJlY292
ZXJ5JiByZWNvdmVyeSkKICAgICB7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soa2luZCwganNW
YWx1ZVNvdXJjZSwgbm9kZVVzZS5pbmRleCgpLCBqdW1wVG9GYWlsLCByZWNvdmVyeSk7CiAgICAg
fQpAQCAtMTg3Miw3ICsxODcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhraW5kLCBqc1ZhbHVlUmVncywgbm9kZUluZGV4LCBtX2ppdC5qdW1wKCkpOwogICAgICAgICBt
X2NvbXBpbGVPa2F5ID0gZmFsc2U7CiAgICAgfQotICAgIHZvaWQgdGVybWluYXRlU3BlY3VsYXRp
dmVFeGVjdXRpb24oRXhpdEtpbmQga2luZCwgSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MsIE5vZGVV
c2Ugbm9kZVVzZSkKKyAgICB2b2lkIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEV4aXRL
aW5kIGtpbmQsIEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzLCBFZGdlIG5vZGVVc2UpCiAgICAgewog
ICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihraW5kLCBqc1ZhbHVlUmVncywg
bm9kZVVzZS5pbmRleCgpKTsKICAgICB9CkBAIC0xOTcxLDcgKzE5NzEsNyBAQCBwcml2YXRlOgog
CiBjbGFzcyBJbnRlZ2VyT3BlcmFuZCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSW50ZWdlck9w
ZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgTm9kZVVzZSB1c2UpCisgICAgZXhwbGljaXQgSW50
ZWdlck9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSB1c2UpCiAgICAgICAgIDogbV9q
aXQoaml0KQogICAgICAgICAsIG1faW5kZXgodXNlLmluZGV4KCkpCiAgICAgICAgICwgbV9ncHJP
ckludmFsaWQoSW52YWxpZEdQUlJlZykKQEAgLTIwMjMsNyArMjAyMyw3IEBAIHByaXZhdGU6CiAK
IGNsYXNzIERvdWJsZU9wZXJhbmQgewogcHVibGljOgotICAgIGV4cGxpY2l0IERvdWJsZU9wZXJh
bmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgTm9kZVVzZSB1c2UpCisgICAgZXhwbGljaXQgRG91Ymxl
T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIHVzZSkKICAgICAgICAgOiBtX2ppdChq
aXQpCiAgICAgICAgICwgbV9pbmRleCh1c2UuaW5kZXgoKSkKICAgICAgICAgLCBtX2Zwck9ySW52
YWxpZChJbnZhbGlkRlBSUmVnKQpAQCAtMjA2NCw3ICsyMDY0LDcgQEAgcHJpdmF0ZToKIAogY2xh
c3MgSlNWYWx1ZU9wZXJhbmQgewogcHVibGljOgotICAgIGV4cGxpY2l0IEpTVmFsdWVPcGVyYW5k
KFNwZWN1bGF0aXZlSklUKiBqaXQsIE5vZGVVc2UgdXNlKQorICAgIGV4cGxpY2l0IEpTVmFsdWVP
cGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgdXNlKQogICAgICAgICA6IG1faml0KGpp
dCkKICAgICAgICAgLCBtX2luZGV4KHVzZS5pbmRleCgpKQogI2lmIFVTRShKU1ZBTFVFNjQpCkBA
IC0yMTc4LDcgKzIxNzgsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBTdG9yYWdlT3BlcmFuZCB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgU3RvcmFnZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwg
Tm9kZVVzZSB1c2UpCisgICAgZXhwbGljaXQgU3RvcmFnZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQq
IGppdCwgRWRnZSB1c2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1faW5kZXgo
dXNlLmluZGV4KCkpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKQEAg
LTIzNDcsNyArMjM0Nyw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNwZWN1bGF0ZUludGVnZXJPcGVy
YW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZChTcGVj
dWxhdGl2ZUpJVCogaml0LCBOb2RlVXNlIHVzZSkKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnRl
Z2VyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIHVzZSkKICAgICAgICAgOiBtX2pp
dChqaXQpCiAgICAgICAgICwgbV9pbmRleCh1c2UuaW5kZXgoKSkKICAgICAgICAgLCBtX2dwck9y
SW52YWxpZChJbnZhbGlkR1BSUmVnKQpAQCAtMjM5NCw3ICsyMzk0LDcgQEAgcHJpdmF0ZToKIAog
Y2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgTm9kZVVz
ZSB1c2UpCisgICAgZXhwbGljaXQgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kKFNwZWN1bGF0
aXZlSklUKiBqaXQsIEVkZ2UgdXNlKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBt
X2luZGV4KHVzZS5pbmRleCgpKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJS
ZWcpCkBAIC0yNDM1LDcgKzI0MzUsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBTcGVjdWxhdGVEb3Vi
bGVPcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
KFNwZWN1bGF0aXZlSklUKiBqaXQsIE5vZGVVc2UgdXNlKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0
ZURvdWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSB1c2UpCiAgICAgICAgIDog
bV9qaXQoaml0KQogICAgICAgICAsIG1faW5kZXgodXNlLmluZGV4KCkpCiAgICAgICAgICwgbV9m
cHJPckludmFsaWQoSW52YWxpZEZQUlJlZykKQEAgLTI0NzEsNyArMjQ3MSw3IEBAIHByaXZhdGU6
CiAKIGNsYXNzIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBT
cGVjdWxhdGVDZWxsT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBOb2RlVXNlIHVzZSkKKyAg
ICBleHBsaWNpdCBTcGVjdWxhdGVDZWxsT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdl
IHVzZSkKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9pbmRleCh1c2UuaW5kZXgo
KSkKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQpAQCAtMjUxMiw3ICsy
NTEyLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgewogcHVi
bGljOgotICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kKFNwZWN1bGF0aXZlSklU
KiBqaXQsIE5vZGVVc2UgdXNlKQorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5k
KFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgdXNlKQogICAgICAgICA6IG1faml0KGppdCkKICAg
ICAgICAgLCBtX2luZGV4KHVzZS5pbmRleCgpKQogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKElu
dmFsaWRHUFJSZWcpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>