<?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>141851</bug_id>
          
          <creation_ts>2015-02-20 12:47:09 -0800</creation_ts>
          <short_desc>Get rid of JSNameScope::m_type</short_desc>
          <delta_ts>2015-02-20 16:14:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>141174</blocked>
    
    <blocked>141850</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1070784</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-20 12:47:09 -0800</bug_when>
    <thetext>The type can be described using different JSNameScope subclasses.  Then the flag is essentially conveyed using ClassInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070824</commentid>
    <comment_count>1</comment_count>
      <attachid>247001</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-20 14:17:10 -0800</bug_when>
    <thetext>Created attachment 247001
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070827</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-20 14:19:57 -0800</bug_when>
    <thetext>Attachment 247001 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSNameScope.h:52:  The parameter name &quot;vm&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSNameScope.h:52:  The parameter name &quot;globalObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSNameScope.h:52:  The parameter name &quot;identifier&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSNameScope.h:52:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSNameScope.h:52:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 5 in 17 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>1070828</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-20 14:20:46 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 247001 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/runtime/JSNameScope.h:52:  The parameter name
&gt; &quot;vm&quot; adds no information, so it should be removed. 
&gt; [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/runtime/JSNameScope.h:52:  The parameter name
&gt; &quot;globalObject&quot; adds no information, so it should be removed. 
&gt; [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/runtime/JSNameScope.h:52:  The parameter name
&gt; &quot;identifier&quot; adds no information, so it should be removed. 
&gt; [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/runtime/JSNameScope.h:52:  The parameter name
&gt; &quot;value&quot; adds no information, so it should be removed. 
&gt; [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/runtime/JSNameScope.h:52:  The parameter name
&gt; &quot;type&quot; adds no information, so it should be removed. 
&gt; [readability/parameter_name] [5]
&gt; Total errors found: 5 in 17 files

Fixed locally.

&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070840</commentid>
    <comment_count>4</comment_count>
      <attachid>247005</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-20 14:33:18 -0800</bug_when>
    <thetext>Created attachment 247005
the patch

Fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070841</commentid>
    <comment_count>5</comment_count>
      <attachid>247005</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-02-20 14:34:42 -0800</bug_when>
    <thetext>Comment on attachment 247005
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070844</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-20 14:55:22 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/180460</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070845</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-20 14:57:31 -0800</bug_when>
    <thetext>gcc build fix in http://trac.webkit.org/changeset/180461</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247001</attachid>
            <date>2015-02-20 14:17:10 -0800</date>
            <delta_ts>2015-02-20 14:33:18 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>35261</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgwNDUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDE1LTAyLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0IHJpZCBvZiBKU05hbWVTY29wZTo6bV90eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE4NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSBiaWcgc3RlcCB0b3dhcmRz
IGdldHRpbmcgcmlkIG9mIEpTRW52aXJvbm1lbnRSZWNvcmQ6Om1fcmVnaXN0ZXJzLiBUbyBkbyBp
dCB3ZSBuZWVkCisgICAgICAgIHRvIGVuc3VyZSB0aGF0IHN1YmNsYXNzZXMgb2YgSlNFbnZpcm9u
bWVudFJlY29yZCBuZXZlciBoYXZlIGFkZGl0aW9uYWwgQysrIGZpZWxkcywgc28gdGhhdAorICAg
ICAgICBKU0Vudmlyb25tZW50UmVjb3JkIGNhbiBhbHdheXMgcGxhY2UgInJlZ2lzdGVycyIgcmln
aHQgYWZ0ZXIgdGhlIGVuZCBvZiBpdHNlbGYuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2Nv
cGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjppc0NhdGNoU2NvcGUpOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjppc0Z1bmN0aW9uTmFtZVNjb3BlKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
OjpleGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xP
V19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDYXRjaFNjb3BlLmNwcDogQWRkZWQu
CisgICAgICAgICogcnVudGltZS9KU0NhdGNoU2NvcGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OkpTQ2F0Y2hTY29wZTo6SlNDYXRjaFNjb3BlKToKKyAgICAgICAgKEpTQzo6SlNDYXRjaFNjb3Bl
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0NhdGNoU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6YWRkTmFtZVNjb3BlSWZOZWVkZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlv
bk5hbWVTY29wZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbk5hbWVT
Y29wZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbk5hbWVTY29wZTo6SlNGdW5j
dGlvbk5hbWVTY29wZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb25OYW1lU2NvcGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb25OYW1lU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNhdGNoU2NvcGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6ZnVuY3Rpb25OYW1lU2NvcGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6bmFtZVNjb3BlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTTmFtZVNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNOYW1lU2NvcGU6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU05hbWVTY29wZS5oOgorICAgICAgICAoSlND
OjpKU05hbWVTY29wZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNOYW1lU2NvcGU6OkpTTmFt
ZVNjb3BlKToKKyAgICAgICAgKEpTQzo6SlNOYW1lU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTTmFtZVNjb3BlOjppc0Z1bmN0aW9uTmFtZVNjb3BlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNOYW1lU2NvcGU6OmlzQ2F0Y2hTY29wZSk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0Ojppc0NhdGNoU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNGdW5j
dGlvbk5hbWVTY29wZU9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorCiAy
MDE1LTAyLTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNP
YmpDQ2xhc3NJbmZvIHJlYWxsb2NhdGVDb25zdHJ1Y3RvckFuZE9yUHJvdG90eXBlXSBzaG91bGQg
YWxzbyByZWFsbG9jYXRlIHN1cGVyIGNsYXNzIHByb3RvdHlwZSBjaGFpbi4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODA0NDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNTkxLDYgKzU5MSwxMCBAQAogCQkwRkQ4QTMyQTE3RDUxRjU3MDBDQTJDNDAg
LyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDhBMzIyMTdENTFGNTcwMENBMkM0MCAv
KiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDhBMzJCMTdENTFGNTcwMENBMkM0
MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDhBMzIzMTdE
NTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcCAqLzsgfTsKIAkJMEZEOEEzMkMxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRM
Rm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDhBMzI0MTdENTFGNTcwMENBMkM0MCAv
KiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEOTQ5ODIxQTk3
REI5NjAwRTI4OTY2IC8qIEpTQ2F0Y2hTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ5NDk3RTFBOTdEQjk2MDBFMjg5NjYgLyogSlNDYXRj
aFNjb3BlLmNwcCAqLzsgfTsKKwkJMEZEOTQ5ODMxQTk3REI5NjAwRTI4OTY2IC8qIEpTQ2F0Y2hT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
OTQ5N0YxQTk3REI5NjAwRTI4OTY2IC8qIEpTQ2F0Y2hTY29wZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRDk0OTg0MUE5N0RCOTYwMEUyODk2
NiAvKiBKU0Z1bmN0aW9uTmFtZVNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDk0OTgwMUE5N0RCOTYwMEUyODk2NiAvKiBKU0Z1bmN0aW9u
TmFtZVNjb3BlLmNwcCAqLzsgfTsKKwkJMEZEOTQ5ODUxQTk3REI5NjAwRTI4OTY2IC8qIEpTRnVu
Y3Rpb25OYW1lU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRDk0OTgxMUE5N0RCOTYwMEUyODk2NiAvKiBKU0Z1bmN0aW9uTmFtZVNjb3BlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEQjJD
QzkxNzNEQTUyMDAwN0IzQzFCIC8qIEZUTEFiYnJldmlhdGVkVHlwZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREIyQ0M3MTczREE1MUUwMDdCM0Mx
QiAvKiBGVExBYmJyZXZpYXRlZFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEQjJDQ0ExNzNEQTUyMzAwN0IzQzFCIC8qIEZUTFZhbHVl
RnJvbUJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkRCMkNDODE3M0RBNTFFMDA3QjNDMUIgLyogRlRMVmFsdWVGcm9tQmxvY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkRCMkNFNzE3NDgz
MEEyMDA3QjNDMUIgLyogREZHV29ya2xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQjJDRTUxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dvcmts
aXN0LmNwcCAqLzsgfTsKQEAgLTIyODAsNiArMjI4NCwxMCBAQAogCQkwRkQ4QTMyMjE3RDUxRjU3
MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suaDsgcGF0aCA9IGRmZy9ERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4QTMyMzE3RDUxRjU3MDBDQTJDNDAg
LyogREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdUb0ZUTEZvck9TUkVudHJ5RGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcDsgcGF0aCA9IGRmZy9ERkdUb0ZUTEZvck9TUkVu
dHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZEOEEzMjQxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oOyBw
YXRoID0gZGZnL0RGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEOTQ5N0UxQTk3REI5NjAwRTI4OTY2
IC8qIEpTQ2F0Y2hTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0NhdGNoU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ5NDk3
RjFBOTdEQjk2MDBFMjg5NjYgLyogSlNDYXRjaFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQ2F0Y2hTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkQ5NDk4MDFBOTdEQjk2MDBFMjg5NjYgLyogSlNGdW5jdGlvbk5hbWVTY29wZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Z1bmN0aW9uTmFtZVNjb3BlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEOTQ5ODExQTk3REI5NjAwRTI4OTY2
IC8qIEpTRnVuY3Rpb25OYW1lU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNGdW5jdGlvbk5hbWVTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkRCMkNDNzE3M0RBNTFFMDA3QjNDMUIgLyogRlRMQWJicmV2aWF0ZWRUeXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBGVExBYmJyZXZpYXRlZFR5cGVzLmg7IHBhdGggPSBmdGwvRlRMQWJicmV2aWF0ZWRU
eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkRCMkNDODE3M0RBNTFFMDA3
QjNDMUIgLyogRlRMVmFsdWVGcm9tQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMVmFsdWVGcm9t
QmxvY2suaDsgcGF0aCA9IGZ0bC9GVExWYWx1ZUZyb21CbG9jay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkRCMkNFNTE3NDgzMEEyMDA3QjNDMUIgLyogREZHV29ya2xpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHV29ya2xpc3QuY3BwOyBw
YXRoID0gZGZnL0RGR1dvcmtsaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQzMzUsNiArNDM0Myw4IEBACiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91
bmRGdW5jdGlvbi5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxl
ZS5jcHAgKi8sCiAJCQkJNjU3Q0Y0NTcxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggKi8s
CisJCQkJMEZEOTQ5N0UxQTk3REI5NjAwRTI4OTY2IC8qIEpTQ2F0Y2hTY29wZS5jcHAgKi8sCisJ
CQkJMEZEOTQ5N0YxQTk3REI5NjAwRTI4OTY2IC8qIEpTQ2F0Y2hTY29wZS5oICovLAogCQkJCUJD
N0Y4RkJBMEUxOUQxRUYwMDg2MzJDMCAvKiBKU0NlbGwuY3BwICovLAogCQkJCUJDMTE2N0Q4MEUx
OUJDQzkwMDgwNjZERCAvKiBKU0NlbGwuaCAqLywKIAkJCQkwRjk3NDk2RjE2ODdBREUyMDBBNEZG
NkEgLyogSlNDZWxsSW5saW5lcy5oICovLApAQCAtNDM1OSw2ICs0MzY5LDggQEAKIAkJCQlGNjky
QTg1RTAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5jcHAgKi8sCiAJCQkJRjY5MkE4NUYw
MjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uaCAqLywKIAkJCQlBNzIwMjhCOTE3OTc2MDNE
MDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCAqLywKKwkJCQkwRkQ5NDk4MDFBOTdEQjk2
MDBFMjg5NjYgLyogSlNGdW5jdGlvbk5hbWVTY29wZS5jcHAgKi8sCisJCQkJMEZEOTQ5ODExQTk3
REI5NjAwRTI4OTY2IC8qIEpTRnVuY3Rpb25OYW1lU2NvcGUuaCAqLywKIAkJCQkwRjJCNjZDMzE3
QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCAqLywKIAkJCQkwRjJC
NjZDNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
ci5oICovLAogCQkJCTBGMkI2NkM1MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oICovLApAQCAtNTY1Nyw2ICs1NjY5LDcgQEAKIAkJ
CQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4
aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBF
IC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEOTQ5
ODUxQTk3REI5NjAwRTI4OTY2IC8qIEpTRnVuY3Rpb25OYW1lU2NvcGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9s
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjRDRUQ1RjE4Q0VBN0FCMDA4MDJGRTAgLyogUG9s
eW1vcnBoaWNHZXRCeUlkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUUxNzE3OEU3
MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC02
MDA4LDYgKzYwMjEsNyBAQAogCQkJCTBGMkI5Q0U3MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0NBM0FFODE3
REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkU5
MzExNkE3Q0FEMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGRDk0OTgzMUE5N0RCOTYwMEUyODk2NiAvKiBKU0NhdGNoU2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmpl
Y3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQyNTY2MjE1RURFOThEMDA2
NkE0OUIgLyogSlNXaXRoU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE5MTY3QkFC
RUUwMDZENzYwQSAvKiBKU1dyYXBwZXJNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtNzEwMiw2ICs3
MTE2LDcgQEAKIAkJCQkxNDQwRkNFNDBBNTFFNDZCMDAwNUYwNjEgLyogSlNDbGFzc1JlZi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkUzQzYxNjE2N0JBQkVFMDA2RDc2MEEgLyogSlNDb250ZXh0
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCRDVBMzAwQTNFOTFGNjAwQkFGNTlDIC8qIEpTQ29u
dGV4dFJlZi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkQ5NDk4MjFBOTdEQjk2MDBFMjg5NjYg
LyogSlNDYXRjaFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjAyOEI2MTc5NzYwMUUw
MDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
QjY2RUIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyQjY2RUQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC03MTc5LDYgKzcxOTQsNyBAQAogCQkJCTBGNDY4MEQyMTRCQkQxNjUw
MEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTExN0NG
MDc4MDAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGRDk0OTg0MUE5N0RCOTYwMEUyODk2NiAvKiBKU0Z1bmN0aW9uTmFtZVNjb3Bl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTElu
dFNsb3dQYXRocy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDRUZBQ0QxODA1RTc1
NTAwNDcyQ0U0IC8qIExMVk1BUEkuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCShyZXZpc2lvbiAx
ODA0NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NywxMiArMTU3LDEyIEBAIHZvaWQgRGVidWdnZXJTY29w
ZTo6aW52YWxpZGF0ZUNoYWluKCkKIAogYm9vbCBEZWJ1Z2dlclNjb3BlOjppc0NhdGNoU2NvcGUo
KSBjb25zdAogewotICAgIHJldHVybiBtX3Njb3BlLT5pc05hbWVTY29wZU9iamVjdCgpICYmIHJl
aW50ZXJwcmV0X2Nhc3Q8SlNOYW1lU2NvcGUqPihtX3Njb3BlLmdldCgpKS0+aXNDYXRjaFNjb3Bl
KCk7CisgICAgcmV0dXJuIG1fc2NvcGUtPmlzQ2F0Y2hTY29wZU9iamVjdCgpOwogfQogCiBib29s
IERlYnVnZ2VyU2NvcGU6OmlzRnVuY3Rpb25OYW1lU2NvcGUoKSBjb25zdAogewotICAgIHJldHVy
biBtX3Njb3BlLT5pc05hbWVTY29wZU9iamVjdCgpICYmIHJlaW50ZXJwcmV0X2Nhc3Q8SlNOYW1l
U2NvcGUqPihtX3Njb3BlLmdldCgpKS0+aXNGdW5jdGlvbk5hbWVTY29wZSgpOworICAgIHJldHVy
biBtX3Njb3BlLT5pc0Z1bmN0aW9uTmFtZVNjb3BlT2JqZWN0KCk7CiB9CiAKIGJvb2wgRGVidWdn
ZXJTY29wZTo6aXNXaXRoU2NvcGUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxODA0NDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDg5LDcgKzEwODksOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlKEV2YWxFeGVjdXRhCiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChKU1Njb3BlKiBub2Rl
ID0gc2NvcGU7IDsgbm9kZSA9IG5vZGUtPm5leHQoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobm9kZSk7Ci0gICAgICAgICAgICBpZiAobm9kZS0+aXNWYXJpYWJsZU9iamVjdCgpICYm
ICFub2RlLT5pc05hbWVTY29wZU9iamVjdCgpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+aXNW
YXJpYWJsZU9iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5pc05hbWVT
Y29wZU9iamVjdCgpKTsKICAgICAgICAgICAgICAgICB2YXJpYWJsZU9iamVjdCA9IG5vZGU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE4MDQ0NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNzgsNyArMTI3OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoTmFt
ZVNjb3AKICAgICAvLyBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIHRvIHBhc3MgaW4gdGhlIG5ldyBz
Y29wZS4KICAgICBKU1Njb3BlKiBjdXJyZW50U2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKGRzdCku
UmVnaXN0ZXI6OnNjb3BlKCk7CiAgICAgSlNOYW1lU2NvcGU6OlR5cGUgc2NvcGVUeXBlID0gc3Rh
dGljX2Nhc3Q8SlNOYW1lU2NvcGU6OlR5cGU+KHR5cGUpOwotICAgIEpTTmFtZVNjb3BlKiBzY29w
ZSA9IEpTTmFtZVNjb3BlOjpjcmVhdGUoZXhlYywgY3VycmVudFNjb3BlLCAqaWRlbnRpZmllciwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dGlidXRlcywgc2NvcGVUeXBlKTsKKyAg
ICBKU05hbWVTY29wZSogc2NvcGUgPSBKU05hbWVTY29wZTo6Y3JlYXRlKHZtLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIGN1cnJlbnRTY29wZSwgKmlkZW50aWZpZXIsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpLCBhdHRpYnV0ZXMsIHNjb3BlVHlwZSk7CiAKICAgICAvLyBGSVhN
RTogVGhpcyB3b24ndCB3b3JrIGlmIHRoaXMgb3BlcmF0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBE
Rkcgb3IgRlRMLgogICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgdG8gcmV0dXJuIHRoZSBu
ZXcgc2NvcGUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHJldmlzaW9uIDE4MDQ0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTI5MCw3ICsxMjkwLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1c2hfbmFt
ZQogICAgIGludCBzY29wZVJlZyA9IHBjWzFdLnUub3BlcmFuZDsKICAgICBKU1Njb3BlKiBjdXJy
ZW50U2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHNjb3BlUmVnKS5SZWdpc3Rlcjo6c2NvcGUoKTsK
ICAgICBKU05hbWVTY29wZTo6VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8SlNOYW1lU2NvcGU6OlR5
cGU+KHBjWzVdLnUub3BlcmFuZCk7Ci0gICAgSlNOYW1lU2NvcGUqIHNjb3BlID0gSlNOYW1lU2Nv
cGU6OmNyZWF0ZShleGVjLCBjdXJyZW50U2NvcGUsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1sy
XS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCwgdHlw
ZSk7CisgICAgSlNOYW1lU2NvcGUqIHNjb3BlID0gSlNOYW1lU2NvcGU6OmNyZWF0ZSh2bSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjdXJyZW50U2NvcGUsIGNvZGVCbG9jay0+aWRlbnRp
ZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3Bl
cmFuZCwgdHlwZSk7CiAgICAgZXhlYy0+dW5jaGVja2VkUihzY29wZVJlZykgPSBzY29wZTsKICAg
ICBMTElOVF9FTkQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2F0Y2hTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDYXRjaFNjb3BlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2F0Y2hTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDYXRjaFNjb3BlLmgiCisKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNDYXRjaFNj
b3BlOjpzX2luZm8gPSB7ICJDYXRjaFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU0NhdGNoU2NvcGUpIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhdGNoU2NvcGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhdGNoU2NvcGUuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2F0Y2hTY29wZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU0NhdGNoU2NvcGVfaAorI2RlZmluZSBKU0Nh
dGNoU2NvcGVfaAorCisjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEpTQ2F0Y2hTY29wZSA6IHB1YmxpYyBKU05hbWVTY29wZSB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBKU05hbWVTY29wZSBCYXNlOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBKU05hbWVTY29wZTsKKyAgICAKKyAgICBKU0NhdGNoU2NvcGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBuZXh0KQorICAgICAgICA6IEJhc2Uodm0sIGds
b2JhbE9iamVjdC0+Y2F0Y2hTY29wZVN0cnVjdHVyZSgpLCBuZXh0KQorICAgIHsKKyAgICB9Cisg
ICAgCitwdWJsaWM6CisgICAgc3RhdGljIEpTQ2F0Y2hTY29wZSogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3VycmVudFNjb3BlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNyZWF0ZTxKU0NhdGNoU2NvcGU+KHZtLCBn
bG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgaWRlbnRpZmllciwgdmFsdWUsIGF0dHJpYnV0ZXMp
OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
LCBUeXBlSW5mbyhOYW1lU2NvcGVPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorICAgIAorICAgIERFQ0xBUkVfSU5GTzsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gSlNDYXRjaFNjb3BlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDE4MDQ0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMiBIYXJyaSBQb3J0
ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAo
cG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcg
Q2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENvcHlyaWdodCAo
QykgMjAwNyBNYWtzIE9ybG92aWNoCiAgKgpAQCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25OYW1lU2NvcGUuaCIgCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU05hbWVTY29wZS5oIiAKICNpbmNsdWRl
ICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJP
YmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6
YWRkTmFtZVNjb3BlSWZOZWVkZWQoVk0KICAgICAgICAgcmV0dXJuOwogICAgIGlmICghZnVuY3Rp
b25OYW1lU2NvcGVJc0R5bmFtaWMoZXhlY3V0YWJsZS0+dXNlc0V2YWwoKSwgZXhlY3V0YWJsZS0+
aXNTdHJpY3RNb2RlKCkpKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0U2NvcGUodm0sIEpTTmFt
ZVNjb3BlOjpjcmVhdGUodm0sIHNjb3BlKCktPmdsb2JhbE9iamVjdCgpLCBleGVjdXRhYmxlLT5u
YW1lKCksIHRoaXMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSwgc2NvcGUoKSwgSlNOYW1lU2NvcGU6
OkZ1bmN0aW9uTmFtZVNjb3BlKSk7CisgICAgc2V0U2NvcGUodm0sIEpTRnVuY3Rpb25OYW1lU2Nv
cGU6OmNyZWF0ZSh2bSwgc2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCksIHNjb3BlKCksIGV4ZWN1dGFi
bGUtPm5hbWUoKSwgdGhpcywgUmVhZE9ubHkgfCBEb250RGVsZXRlKSk7CiB9CiAKIEpTRnVuY3Rp
b24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25OYW1lU2NvcGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25OYW1l
U2NvcGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbk5hbWVTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbk5hbWVTY29wZS5oIgorCisjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTRnVu
Y3Rpb25OYW1lU2NvcGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uTmFtZVNjb3BlIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Z1bmN0aW9uTmFtZVNjb3BlKSB9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbk5hbWVTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb25OYW1lU2NvcGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25OYW1lU2NvcGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgSlNGdW5jdGlvbk5hbWVTY29wZV9oCisjZGVmaW5lIEpTRnVuY3Rp
b25OYW1lU2NvcGVfaAorCisjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEpTRnVuY3Rpb25OYW1lU2NvcGUgOiBwdWJsaWMgSlNOYW1lU2NvcGUgewor
cHVibGljOgorICAgIHR5cGVkZWYgSlNOYW1lU2NvcGUgQmFzZTsKKworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgSlNOYW1lU2NvcGU7CisgICAgCisgICAgSlNGdW5jdGlvbk5hbWVTY29wZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIG5leHQpCisgICAg
ICAgIDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LT5jYXRjaFNjb3BlU3RydWN0dXJlKCksIG5leHQp
CisgICAgeworICAgIH0KKyAgICAKK3B1YmxpYzoKKyAgICBzdGF0aWMgSlNGdW5jdGlvbk5hbWVT
Y29wZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29w
ZSogY3VycmVudFNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNy
ZWF0ZTxKU0Z1bmN0aW9uTmFtZVNjb3BlPih2bSwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50U2NvcGUs
IGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oTmFtZVNjb3BlT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKyAgICAKKyAgICBERUNMQVJF
X0lORk87Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTRnVuY3Rpb25O
YW1lU2NvcGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxODA0NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEw
ICs2NSwxMiBAQAogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKKyNp
bmNsdWRlICJKU0NhdGNoU2NvcGUuaCIKICNpbmNsdWRlICJKU0NvbnNvbGUuaCIKICNpbmNsdWRl
ICJKU0RhdGFWaWV3LmgiCiAjaW5jbHVkZSAiSlNEYXRhVmlld1Byb3RvdHlwZS5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uTmFtZVNjb3BlLmgiCiAjaW5j
bHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCIKICNpbmNs
dWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCIKQEAgLTc3LDcgKzc5LDYgQEAKICNp
bmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTWFwSXRl
cmF0b3IuaCIKLSNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTT05PYmplY3Qu
aCIKICNpbmNsdWRlICJKU1NldC5oIgogI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKQEAgLTI2
NSw3ICsyNjYsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3R5
cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUZsb2F0NjQpXS5zdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBK
U0Zsb2F0NjRBcnJheTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3R5cGVkQXJyYXlzW3Rv
SW5kZXgoVHlwZUZsb2F0NjQpXS5wcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX3R5cGVkQXJyYXlz
W3RvSW5kZXgoVHlwZURhdGFWaWV3KV0uc3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNEYXRhVmll
dzo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURh
dGFWaWV3KV0ucHJvdG90eXBlLmdldCgpKSk7CiAgICAgCi0gICAgbV9uYW1lU2NvcGVTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU05hbWVTY29wZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBq
c051bGwoKSkpOworICAgIG1fY2F0Y2hTY29wZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQ2F0
Y2hTY29wZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOworICAgIG1fZnVu
Y3Rpb25OYW1lU2NvcGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uTmFtZVNjb3Bl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9sZXhpY2FsRW52
aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CiAgICAgbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnNldCht
X3ZtLCB0aGlzLCBEZWJ1Z2dlclNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUobV92bSwgdGhpcykpOwpA
QCAtNjc2LDcgKzY3OCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWwKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N0cmljdEV2YWxBY3RpdmF0aW9u
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9sZXhpY2FsRW52
aXJvbm1lbnRTdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25h
bWVTY29wZVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2F0
Y2hTY29wZVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVu
Y3Rpb25OYW1lU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2FyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51
bWJlck9mSW5kZXhpbmdTaGFwZXM7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbaV0pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShy
ZXZpc2lvbiAxODA0NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNyArMTk3LDggQEAgcHJvdGVjdGVkOgog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmU7
Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9uYW1lU2NvcGVTdHJ1Y3R1cmU7CisgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYXRjaFNjb3BlU3RydWN0dXJlOworICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25OYW1lU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcmd1bWVudHNTdHJ1Y3R1cmU7CiAgICAgICAgIAogICAg
IC8vIExpc3RzIHRoZSBhY3R1YWwgc3RydWN0dXJlcyB1c2VkIGZvciBoYXZpbmcgdGhlc2UgcGFy
dGljdWxhciBpbmRleGluZyBzaGFwZXMuCkBAIC00MDgsNyArNDA5LDggQEAgcHVibGljOgogICAg
IFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2Nv
cGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2YWxBY3RpdmF0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9Ci0gICAgU3RydWN0
dXJlKiBuYW1lU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVTY29wZVN0cnVj
dHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogY2F0Y2hTY29wZVN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2F0Y2hTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSog
ZnVuY3Rpb25OYW1lU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFt
ZVNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhcmd1bWVudHNTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShJbmRleGluZ1R5
cGUgaW5kZXhpbmdUeXBlKSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTmFtZVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU05hbWVTY29wZS5jcHAJKHJldmlzaW9uIDE4MDQ0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTIgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5
LCAyMDEyLCAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDI0IEBACiAKICNpbmNsdWRlICJFcnJv
ci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NhdGNoU2NvcGUuaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uTmFtZVNjb3BlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBj
b25zdCBDbGFzc0luZm8gSlNOYW1lU2NvcGU6OnNfaW5mbyA9IHsgIk5hbWVTY29wZSIsICZCYXNl
OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNOYW1lU2NvcGUpIH07CiAKK0pTTmFt
ZVNjb3BlKiBKU05hbWVTY29wZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNTY29wZSogY3VycmVudFNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBUeXBlIHR5cGUpCit7Cisg
ICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBDYXRjaFNjb3BlOgorICAgICAgICByZXR1cm4g
SlNDYXRjaFNjb3BlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgY3VycmVudFNjb3BlLCBpZGVu
dGlmaWVyLCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgY2FzZSBGdW5jdGlvbk5hbWVTY29wZToK
KyAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb25OYW1lU2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBjdXJyZW50U2NvcGUsIGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICB9
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBKU05hbWVTY29w
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIEpTTmFtZVNjb3BlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTmFtZVNjb3BlKj4oY2VsbCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29wZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmgJKHJl
dmlzaW9uIDE4MDQ0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNj
b3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDMzICs0MSwyMyBAQCBwdWJsaWM6
CiAgICAgICAgIEZ1bmN0aW9uTmFtZVNjb3BlCiAgICAgfTsKIAotICAgIHN0YXRpYyBKU05hbWVT
Y29wZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogY3VycmVudFNjb3BlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBUeXBlIHR5cGUpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgVCog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3Vy
cmVudFNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICAgICAgSlNOYW1lU2NvcGUqIHNjb3BlT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNOYW1lU2NvcGU+KHZtLmhlYXApKSBKU05hbWVTY29wZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBjdXJyZW50U2NvcGUsIHR5cGUpOwotICAgICAgICBzY29wZU9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0sIGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKLSAg
ICAgICAgcmV0dXJuIHNjb3BlT2JqZWN0OwotICAgIH0KLQotICAgIHN0YXRpYyBKU05hbWVTY29w
ZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNTY29wZSogbmV4dCwgVHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgSlNOYW1lU2NvcGUqIHNj
b3BlT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNOYW1lU2NvcGU+KHZtLmhl
YXApKSBKU05hbWVTY29wZSh2bSwgZ2xvYmFsT2JqZWN0LCBuZXh0LCB0eXBlKTsKKyAgICAgICAg
VCogc2NvcGVPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUPih2bS5oZWFwKSkg
VCh2bSwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50U2NvcGUpOwogICAgICAgICBzY29wZU9iamVjdC0+
ZmluaXNoQ3JlYXRpb24odm0sIGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKICAgICAg
ICAgcmV0dXJuIHNjb3BlT2JqZWN0OwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgSlNOYW1lU2Nv
cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUq
IGN1cnJlbnRTY29wZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgVHlwZSB0eXBlKTsKIAogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgSlNWYWx1ZSB0
b1RoaXMoSlNDZWxsKiwgRXhlY1N0YXRlKiwgRUNNQU1vZGUpOwogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90bywgVHlwZUluZm8oTmFtZVNjb3BlT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOyB9Ci0KICAgICBERUNMQVJFX0lORk87CiAKLSAgICBib29sIGlzRnVuY3Rp
b25OYW1lU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRnVuY3Rpb25OYW1lU2NvcGU7
IH0KLSAgICBib29sIGlzQ2F0Y2hTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBDYXRj
aFNjb3BlOyB9Ci0KICAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3Rl
clN0b3JlLmdldCgpOyB9CiAKIHByb3RlY3RlZDoKQEAgLTgwLDIwICs3MCwxOCBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotcHJpdmF0ZToK
LSAgICBKU05hbWVTY29wZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
U2NvcGUqIG5leHQsIFR5cGUgdHlwZSkKKyAgICBKU05hbWVTY29wZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU1Njb3BlKiBuZXh0KQogICAgICAgICA6IEJhc2UoCiAgICAgICAgICAg
ICB2bSwKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+bmFtZVNjb3BlU3RydWN0dXJlKCksCisg
ICAgICAgICAgICBzdHJ1Y3R1cmUsCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFJlZ2lz
dGVyKj4oJm1fcmVnaXN0ZXJTdG9yZSArIDEpLAogICAgICAgICAgICAgbmV4dAogICAgICAgICAp
Ci0gICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4gbV9yZWdpc3RlclN0b3JlOwotICAgIFR5cGUgbV90eXBlOwog
fTsKIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAkocmV2aXNpb24gMTgwNDQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHly
aWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMiwgMjAxMywgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MDYsIDIwMDgsIDIwMDksIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKQEAgLTM0LDcgKzM0LDkgQEAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNDYXRjaFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb25OYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0
b3IuaCIKQEAgLTE2MjAsNiArMTYyMiwxNiBAQCBKU1ZhbHVlIEpTT2JqZWN0Ojp0b1RoaXMoSlND
ZWxsKiBjZWxsLCBFCiAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogfQogCiti
b29sIEpTT2JqZWN0Ojppc0NhdGNoU2NvcGVPYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBp
bmhlcml0cyhKU0NhdGNoU2NvcGU6OmluZm8oKSk7Cit9CisKK2Jvb2wgSlNPYmplY3Q6OmlzRnVu
Y3Rpb25OYW1lU2NvcGVPYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBpbmhlcml0cyhKU0Z1
bmN0aW9uTmFtZVNjb3BlOjppbmZvKCkpOworfQorCiB2b2lkIEpTT2JqZWN0OjpzZWFsKFZNJiB2
bSkKIHsKICAgICBpZiAoaXNTZWFsZWQodm0pKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxODA0NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTMsNiArNTkzLDgg
QEAgcHVibGljOgogICAgIGJvb2wgaXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0OwogICAgIGJvb2wg
aXNTdGF0aWNTY29wZU9iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNOYW1lU2NvcGVPYmplY3Qo
KSBjb25zdDsKKyAgICBib29sIGlzQ2F0Y2hTY29wZU9iamVjdCgpIGNvbnN0OworICAgIGJvb2wg
aXNGdW5jdGlvbk5hbWVTY29wZU9iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNBY3RpdmF0aW9u
T2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Vycm9ySW5zdGFuY2UoKSBjb25zdDsKICAgICBi
b29sIGlzV2l0aFNjb3BlKCkgY29uc3Q7CkBAIC0xMTMxLDcgKzExMzMsNiBAQCBpbmxpbmUgYm9v
bCBKU09iamVjdDo6aXNTdGF0aWNTY29wZU9iamVjCiAgICAgcmV0dXJuIHR5cGUgPT0gTmFtZVNj
b3BlT2JqZWN0VHlwZSB8fCB0eXBlID09IEFjdGl2YXRpb25PYmplY3RUeXBlOwogfQogCi0KIGlu
bGluZSBib29sIEpTT2JqZWN0Ojppc05hbWVTY29wZU9iamVjdCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHR5cGUoKSA9PSBOYW1lU2NvcGVPYmplY3RUeXBlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247005</attachid>
            <date>2015-02-20 14:33:18 -0800</date>
            <delta_ts>2015-02-20 14:34:42 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>38093</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgwNDU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE1LTAyLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0IHJpZCBvZiBKU05hbWVTY29wZTo6bV90eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE4NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSBiaWcgc3RlcCB0b3dhcmRz
IGdldHRpbmcgcmlkIG9mIEpTRW52aXJvbm1lbnRSZWNvcmQ6Om1fcmVnaXN0ZXJzLiBUbyBkbyBp
dCB3ZSBuZWVkCisgICAgICAgIHRvIGVuc3VyZSB0aGF0IHN1YmNsYXNzZXMgb2YgSlNFbnZpcm9u
bWVudFJlY29yZCBuZXZlciBoYXZlIGFkZGl0aW9uYWwgQysrIGZpZWxkcywgc28gdGhhdAorICAg
ICAgICBKU0Vudmlyb25tZW50UmVjb3JkIGNhbiBhbHdheXMgcGxhY2UgInJlZ2lzdGVycyIgcmln
aHQgYWZ0ZXIgdGhlIGVuZCBvZiBpdHNlbGYuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXJTY29wZTo6aXNDYXRjaFNjb3BlKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJTY29wZTo6aXNG
dW5jdGlvbk5hbWVTY29wZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2F0Y2hTY29wZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDYXRjaFNj
b3BlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0NhdGNoU2NvcGU6OkpTQ2F0Y2hTY29wZSk6
CisgICAgICAgIChKU0M6OkpTQ2F0Y2hTY29wZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlND
YXRjaFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFkZE5hbWVTY29wZUlmTmVlZGVkKToK
KyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25OYW1lU2NvcGUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTRnVuY3Rpb25OYW1lU2NvcGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb25OYW1lU2NvcGU6OkpTRnVuY3Rpb25OYW1lU2NvcGUpOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uTmFtZVNjb3BlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
TmFtZVNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYXRjaFNj
b3BlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmZ1bmN0aW9uTmFt
ZVNjb3BlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om5hbWVTY29w
ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU05hbWVTY29wZS5jcHA6
CisgICAgICAgIChKU0M6OkpTTmFtZVNjb3BlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNOYW1lU2NvcGUuaDoKKyAgICAgICAgKEpTQzo6SlNOYW1lU2NvcGU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkpTTmFtZVNjb3BlOjpKU05hbWVTY29wZSk6CisgICAgICAgIChKU0M6OkpTTmFt
ZVNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU05hbWVT
Y29wZTo6aXNGdW5jdGlvbk5hbWVTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTTmFt
ZVNjb3BlOjppc0NhdGNoU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNDYXRjaFNjb3BlT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRnVuY3Rpb25OYW1lU2NvcGVPYmplY3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKwogMjAxNS0wMi0yMCAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTT2JqQ0NsYXNzSW5mbyByZWFsbG9jYXRlQ29uc3Ry
dWN0b3JBbmRPclByb3RvdHlwZV0gc2hvdWxkIGFsc28gcmVhbGxvY2F0ZSBzdXBlciBjbGFzcyBw
cm90b3R5cGUgY2hhaW4uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAxODA0NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2Myw2ICs0NjMsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVO
VElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCiAg
ICAgcnVudGltZS9KU0NKU1ZhbHVlLmNwcAogICAgIHJ1bnRpbWUvSlNDYWxsZWUuY3BwCisgICAg
cnVudGltZS9KU0NhdGNoU2NvcGUuY3BwCiAgICAgcnVudGltZS9KU0NlbGwuY3BwCiAgICAgcnVu
dGltZS9KU0NvbnNvbGUuY3BwCiAgICAgcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtNDcwLDYg
KzQ3MSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1l
L0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNwcAogICAg
IHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTRnVuY3Rpb25OYW1lU2NvcGUu
Y3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcAogICAgIHJ1bnRpbWUvSlNMb2NrLmNwcApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxODA0NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MzAsMTIgKzczMCwxNCBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0JvdW5kRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDYWxsZWUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0NhdGNoU2NvcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0NlbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU0NvbnNvbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0RhdGFWaWV3LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTRGF0ZU1hdGguY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbk5hbWVTY29wZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xvY2suY3BwIiAvPgpAQCAtMTUwNSw2
ICsxNTA3LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSlNWYWx1
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlSW5s
aW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NhbGxlZS5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NhdGNoU2NvcGUuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDZWxsLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ29uc29sZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGFWaWV3LmgiIC8+CkBAIC0xNTE1LDYgKzE1
MTgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Zsb2F0MzJBcnJh
eS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Zsb2F0NjRBcnJh
eS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uLmgi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb25OYW1lU2Nv
cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MDQ0
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01OTEsNiArNTkxLDEwIEBACiAJCTBGRDhB
MzJBMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEz
MjIxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZE
OEEzMkIxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZEOEEzMjMxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwICovOyB9OwogCQkwRkQ4QTMyQzE3RDUxRjU3
MDBDQTJDNDAgLyogREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEz
MjQxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRkQ5NDk4MjFBOTdEQjk2MDBFMjg5NjYgLyogSlNDYXRjaFNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDk0OTdFMUE5N0RC
OTYwMEUyODk2NiAvKiBKU0NhdGNoU2NvcGUuY3BwICovOyB9OworCQkwRkQ5NDk4MzFBOTdEQjk2
MDBFMjg5NjYgLyogSlNDYXRjaFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkQ5NDk3RjFBOTdEQjk2MDBFMjg5NjYgLyogSlNDYXRjaFNjb3Bl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZE
OTQ5ODQxQTk3REI5NjAwRTI4OTY2IC8qIEpTRnVuY3Rpb25OYW1lU2NvcGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOTQ5ODAxQTk3REI5NjAw
RTI4OTY2IC8qIEpTRnVuY3Rpb25OYW1lU2NvcGUuY3BwICovOyB9OworCQkwRkQ5NDk4NTFBOTdE
Qjk2MDBFMjg5NjYgLyogSlNGdW5jdGlvbk5hbWVTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOTQ5ODExQTk3REI5NjAwRTI4OTY2IC8qIEpT
RnVuY3Rpb25OYW1lU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRkRCMkNDOTE3M0RBNTIwMDA3QjNDMUIgLyogRlRMQWJicmV2aWF0ZWRU
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
QjJDQzcxNzNEQTUxRTAwN0IzQzFCIC8qIEZUTEFiYnJldmlhdGVkVHlwZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkRCMkNDQTE3M0RBNTIz
MDA3QjNDMUIgLyogRlRMVmFsdWVGcm9tQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREIyQ0M4MTczREE1MUUwMDdCM0MxQiAvKiBGVExWYWx1
ZUZyb21CbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGREIyQ0U3MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRCMkNFNTE3NDgzMEEy
MDA3QjNDMUIgLyogREZHV29ya2xpc3QuY3BwICovOyB9OwpAQCAtMjI4MCw2ICsyMjg0LDEwIEBA
CiAJCTBGRDhBMzIyMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdUb0ZUTERl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oOyBwYXRoID0gZGZnL0RGR1RvRlRMRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDhB
MzIzMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwOyBwYXRoID0g
ZGZnL0RGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4QTMyNDE3RDUxRjU3MDBDQTJDNDAgLyog
REZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmg7IHBhdGggPSBkZmcvREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ5
NDk3RTFBOTdEQjk2MDBFMjg5NjYgLyogSlNDYXRjaFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2F0Y2hTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRDk0OTdGMUE5N0RCOTYwMEUyODk2NiAvKiBKU0NhdGNoU2NvcGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYXRjaFNjb3BlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDk0OTgwMUE5N0RCOTYwMEUyODk2NiAvKiBKU0Z1bmN0
aW9uTmFtZVNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RnVuY3Rpb25OYW1lU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ5
NDk4MTFBOTdEQjk2MDBFMjg5NjYgLyogSlNGdW5jdGlvbk5hbWVTY29wZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9uTmFtZVNjb3BlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGREIyQ0M3MTczREE1MUUwMDdCM0MxQiAvKiBGVExBYmJyZXZp
YXRlZFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEFiYnJldmlhdGVkVHlwZXMuaDsgcGF0aCA9
IGZ0bC9GVExBYmJyZXZpYXRlZFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGREIyQ0M4MTczREE1MUUwMDdCM0MxQiAvKiBGVExWYWx1ZUZyb21CbG9jay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBGVExWYWx1ZUZyb21CbG9jay5oOyBwYXRoID0gZnRsL0ZUTFZhbHVlRnJvbUJsb2Nr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGREIyQ0U1MTc0ODMwQTIwMDdCM0Mx
QiAvKiBERkdXb3JrbGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdXb3JrbGlzdC5jcHA7IHBhdGggPSBkZmcvREZHV29ya2xpc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDMzNSw2ICs0MzQzLDggQEAKIAkJCQk4NkZBOUU5MDE0MkJC
QjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi8sCiAJCQkJNjU3Q0Y0NTYxOUJGNjY2
MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2NTdDRjQ1NzE5QkY2NjYyMDA0QUNC
RjIgLyogSlNDYWxsZWUuaCAqLywKKwkJCQkwRkQ5NDk3RTFBOTdEQjk2MDBFMjg5NjYgLyogSlND
YXRjaFNjb3BlLmNwcCAqLywKKwkJCQkwRkQ5NDk3RjFBOTdEQjk2MDBFMjg5NjYgLyogSlNDYXRj
aFNjb3BlLmggKi8sCiAJCQkJQkM3RjhGQkEwRTE5RDFFRjAwODYzMkMwIC8qIEpTQ2VsbC5jcHAg
Ki8sCiAJCQkJQkMxMTY3RDgwRTE5QkNDOTAwODA2NkREIC8qIEpTQ2VsbC5oICovLAogCQkJCTBG
OTc0OTZGMTY4N0FERTIwMEE0RkY2QSAvKiBKU0NlbGxJbmxpbmVzLmggKi8sCkBAIC00MzU5LDYg
KzQzNjksOCBAQAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNw
cCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAog
CQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAor
CQkJCTBGRDk0OTgwMUE5N0RCOTYwMEUyODk2NiAvKiBKU0Z1bmN0aW9uTmFtZVNjb3BlLmNwcCAq
LywKKwkJCQkwRkQ5NDk4MTFBOTdEQjk2MDBFMjg5NjYgLyogSlNGdW5jdGlvbk5hbWVTY29wZS5o
ICovLAogCQkJCTBGMkI2NkMzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oICovLAogCQkJCTBGMkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggKi8sCkBAIC01
NjU3LDYgKzU2NjksNyBAQAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdPU1JF
eGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc3MTE0NjkzQUY1
MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcw
MjVBQTE3MTRCMEZDMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkQ5NDk4NTFBOTdEQjk2MDBFMjg5NjYgLyogSlNGdW5jdGlvbk5hbWVT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUzIC8qIERG
R09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNENFRDVGMThD
RUE3QUIwMDgwMkZFMCAvKiBQb2x5bW9ycGhpY0dldEJ5SWRMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKQEAgLTYwMDgsNiArNjAyMSw3IEBACiAJCQkJMEYyQjlDRTcxOUQwQkE3
RDAwQjFEMUI1IC8qIERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBS
ZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEOTQ5ODMxQTk3REI5NjAwRTI4OTY2
IC8qIEpTQ2F0Y2hTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJCOTMxMTY3MTE0NzAw
M0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0NDI1NjYyMTVFREU5OEQwMDY2QTQ5QiAvKiBKU1dpdGhTY29wZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODZFM0M2MTkxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTV3JhcHBlck1hcC5oIGluIEhlYWRl
cnMgKi8sCkBAIC03MTAyLDYgKzcxMTYsNyBAQAogCQkJCTE0NDBGQ0U0MEE1MUU0NkIwMDA1RjA2
MSAvKiBKU0NsYXNzUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjE2MTY3QkFCRUUw
MDZENzYwQSAvKiBKU0NvbnRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNEJENUEzMDBBM0U5
MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRDk0
OTgyMUE5N0RCOTYwMEUyODk2NiAvKiBKU0NhdGNoU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTcyMDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjJCNjZFQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlldy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTcxNzksNiArNzE5NCw3IEBACiAJ
CQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZEOTQ5ODQxQTk3REI5NjAwRTI4OTY2IC8q
IEpTRnVuY3Rpb25OYW1lU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwQTQxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkNFRkFDRDE4MDVFNzU1MDA0NzJDRTQgLyogTExWTUFQSS5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5jcHAJKHJldmlzaW9uIDE4MDQ0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDEyICsxNTcsMTIg
QEAgdm9pZCBEZWJ1Z2dlclNjb3BlOjppbnZhbGlkYXRlQ2hhaW4oKQogCiBib29sIERlYnVnZ2Vy
U2NvcGU6OmlzQ2F0Y2hTY29wZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NvcGUtPmlzTmFt
ZVNjb3BlT2JqZWN0KCkgJiYgcmVpbnRlcnByZXRfY2FzdDxKU05hbWVTY29wZSo+KG1fc2NvcGUu
Z2V0KCkpLT5pc0NhdGNoU2NvcGUoKTsKKyAgICByZXR1cm4gbV9zY29wZS0+aXNDYXRjaFNjb3Bl
T2JqZWN0KCk7CiB9CiAKIGJvb2wgRGVidWdnZXJTY29wZTo6aXNGdW5jdGlvbk5hbWVTY29wZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NvcGUtPmlzTmFtZVNjb3BlT2JqZWN0KCkgJiYgcmVp
bnRlcnByZXRfY2FzdDxKU05hbWVTY29wZSo+KG1fc2NvcGUuZ2V0KCkpLT5pc0Z1bmN0aW9uTmFt
ZVNjb3BlKCk7CisgICAgcmV0dXJuIG1fc2NvcGUtPmlzRnVuY3Rpb25OYW1lU2NvcGVPYmplY3Qo
KTsKIH0KIAogYm9vbCBEZWJ1Z2dlclNjb3BlOjppc1dpdGhTY29wZSgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHJldmlzaW9uIDE4MDQ0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODksNyArMTA4OSw4IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICB9IGVsc2UgewogICAgICAg
ICBmb3IgKEpTU2NvcGUqIG5vZGUgPSBzY29wZTsgOyBub2RlID0gbm9kZS0+bmV4dCgpKSB7CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKLSAgICAgICAgICAgIGlmIChub2RlLT5p
c1ZhcmlhYmxlT2JqZWN0KCkgJiYgIW5vZGUtPmlzTmFtZVNjb3BlT2JqZWN0KCkpIHsKKyAgICAg
ICAgICAgIGlmIChub2RlLT5pc1ZhcmlhYmxlT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoIW5vZGUtPmlzTmFtZVNjb3BlT2JqZWN0KCkpOwogICAgICAgICAgICAgICAgIHZhcmlh
YmxlT2JqZWN0ID0gbm9kZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMTgwNDQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3OCw3ICsxMjc4LDcgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1c2hOYW1lU2NvcAogICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNoYW5nZWQg
dG8gcGFzcyBpbiB0aGUgbmV3IHNjb3BlLgogICAgIEpTU2NvcGUqIGN1cnJlbnRTY29wZSA9IGV4
ZWMtPnVuY2hlY2tlZFIoZHN0KS5SZWdpc3Rlcjo6c2NvcGUoKTsKICAgICBKU05hbWVTY29wZTo6
VHlwZSBzY29wZVR5cGUgPSBzdGF0aWNfY2FzdDxKU05hbWVTY29wZTo6VHlwZT4odHlwZSk7Ci0g
ICAgSlNOYW1lU2NvcGUqIHNjb3BlID0gSlNOYW1lU2NvcGU6OmNyZWF0ZShleGVjLCBjdXJyZW50
U2NvcGUsICppZGVudGlmaWVyLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0aWJ1
dGVzLCBzY29wZVR5cGUpOworICAgIEpTTmFtZVNjb3BlKiBzY29wZSA9IEpTTmFtZVNjb3BlOjpj
cmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgY3VycmVudFNjb3BlLCAqaWRl
bnRpZmllciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dGlidXRlcywgc2NvcGVU
eXBlKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgaWYgdGhpcyBvcGVyYXRpb24g
aXMgY2FsbGVkIGZyb20gdGhlIERGRyBvciBGVEwuCiAgICAgLy8gVGhpcyBzaG91bGQgYmUgY2hh
bmdlZCB0byByZXR1cm4gdGhlIG5ldyBzY29wZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTgwNDQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMjkwLDcgKzEyOTAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHVzaF9uYW1lCiAgICAgaW50IHNjb3BlUmVnID0gcGNbMV0udS5vcGVyYW5k
OwogICAgIEpTU2NvcGUqIGN1cnJlbnRTY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIoc2NvcGVSZWcp
LlJlZ2lzdGVyOjpzY29wZSgpOwogICAgIEpTTmFtZVNjb3BlOjpUeXBlIHR5cGUgPSBzdGF0aWNf
Y2FzdDxKU05hbWVTY29wZTo6VHlwZT4ocGNbNV0udS5vcGVyYW5kKTsKLSAgICBKU05hbWVTY29w
ZSogc2NvcGUgPSBKU05hbWVTY29wZTo6Y3JlYXRlKGV4ZWMsIGN1cnJlbnRTY29wZSwgY29kZUJs
b2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwg
cGNbNF0udS5vcGVyYW5kLCB0eXBlKTsKKyAgICBKU05hbWVTY29wZSogc2NvcGUgPSBKU05hbWVT
Y29wZTo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGN1cnJlbnRTY29w
ZSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksIExMSU5UX09QKDMpLmpz
VmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kLCB0eXBlKTsKICAgICBleGVjLT51bmNoZWNrZWRSKHNj
b3BlUmVnKSA9IHNjb3BlOwogICAgIExMSU5UX0VORCgpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYXRjaFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhdGNoU2NvcGUuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXRjaFNjb3BlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NhdGNoU2NvcGUu
aCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBKU0NhdGNoU2NvcGU6OnNfaW5mbyA9IHsgIkNhdGNoU2NvcGUiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2F0Y2hTY29wZSkgfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2F0
Y2hTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2F0Y2hTY29wZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDYXRjaFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTQ2F0Y2hT
Y29wZV9oCisjZGVmaW5lIEpTQ2F0Y2hTY29wZV9oCisKKyNpbmNsdWRlICJKU05hbWVTY29wZS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNDYXRjaFNjb3BlIDogcHVibGljIEpTTmFt
ZVNjb3BlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTmFtZVNjb3BlIEJhc2U7CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIEpTTmFtZVNjb3BlOworICAgIAorICAgIEpTQ2F0Y2hTY29w
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIG5leHQpCisg
ICAgICAgIDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LT5jYXRjaFNjb3BlU3RydWN0dXJlKCksIG5l
eHQpCisgICAgeworICAgIH0KKyAgICAKK3B1YmxpYzoKKyAgICBzdGF0aWMgSlNDYXRjaFNjb3Bl
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBj
dXJyZW50U2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y3JlYXRl
PEpTQ2F0Y2hTY29wZT4odm0sIGdsb2JhbE9iamVjdCwgY3VycmVudFNjb3BlLCBpZGVudGlmaWVy
LCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE5hbWVTY29wZU9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisgICAgCisgICAgREVDTEFSRV9JTkZPOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NhdGNoU2NvcGVfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNp
b24gMTgwNDQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChD
KSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
IENvcHlyaWdodCAoQykgMjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28u
Y2EpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gKICAqCkBAIC0zNSw4ICsz
NSw4IEBACiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbk5h
bWVTY29wZS5oIiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTTmFt
ZVNjb3BlLmgiIAogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCkBAIC0xMTYsNyArMTE2LDcg
QEAgdm9pZCBKU0Z1bmN0aW9uOjphZGROYW1lU2NvcGVJZk5lZWRlZChWTQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKCFmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhleGVjdXRhYmxlLT51c2Vz
RXZhbCgpLCBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBzZXRTY29wZSh2bSwgSlNOYW1lU2NvcGU6OmNyZWF0ZSh2bSwgc2NvcGUoKS0+Z2xvYmFsT2Jq
ZWN0KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgdGhpcywgUmVhZE9ubHkgfCBEb250RGVsZXRlLCBz
Y29wZSgpLCBKU05hbWVTY29wZTo6RnVuY3Rpb25OYW1lU2NvcGUpKTsKKyAgICBzZXRTY29wZSh2
bSwgSlNGdW5jdGlvbk5hbWVTY29wZTo6Y3JlYXRlKHZtLCBzY29wZSgpLT5nbG9iYWxPYmplY3Qo
KSwgc2NvcGUoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCB0aGlzLCBSZWFkT25seSB8IERvbnREZWxl
dGUpKTsKIH0KIAogSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9u
KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbk5hbWVTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbk5hbWVTY29wZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uTmFtZVNjb3BlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uTmFtZVNj
b3BlLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gSlNGdW5jdGlvbk5hbWVTY29wZTo6c19pbmZvID0geyAiRnVuY3Rpb25O
YW1lU2NvcGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRnVuY3Rp
b25OYW1lU2NvcGUpIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uTmFtZVNjb3BlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbk5hbWVTY29wZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbk5hbWVT
Y29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU0Z1bmN0aW9uTmFtZVNjb3Bl
X2gKKyNkZWZpbmUgSlNGdW5jdGlvbk5hbWVTY29wZV9oCisKKyNpbmNsdWRlICJKU05hbWVTY29w
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNGdW5jdGlvbk5hbWVTY29wZSA6IHB1
YmxpYyBKU05hbWVTY29wZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05hbWVTY29wZSBCYXNl
OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBKU05hbWVTY29wZTsKKyAgICAKKyAgICBK
U0Z1bmN0aW9uTmFtZVNjb3BlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNTY29wZSogbmV4dCkKKyAgICAgICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3QtPmNhdGNoU2Nv
cGVTdHJ1Y3R1cmUoKSwgbmV4dCkKKyAgICB7CisgICAgfQorICAgIAorcHVibGljOgorICAgIHN0
YXRpYyBKU0Z1bmN0aW9uTmFtZVNjb3BlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCisgICAgeworICAg
ICAgICByZXR1cm4gQmFzZTo6Y3JlYXRlPEpTRnVuY3Rpb25OYW1lU2NvcGU+KHZtLCBnbG9iYWxP
YmplY3QsIGN1cnJlbnRTY29wZSwgaWRlbnRpZmllciwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBl
SW5mbyhOYW1lU2NvcGVPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAg
fQorICAgIAorICAgIERFQ0xBUkVfSU5GTzsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gSlNGdW5jdGlvbk5hbWVTY29wZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE4MDQ0NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjUsMTAgKzY1LDEyIEBACiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlND
YWxsYmFja09iamVjdC5oIgorI2luY2x1ZGUgIkpTQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkpT
Q29uc29sZS5oIgogI2luY2x1ZGUgIkpTRGF0YVZpZXcuaCIKICNpbmNsdWRlICJKU0RhdGFWaWV3
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b25OYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIgpA
QCAtNzcsNyArNzksNiBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTWFwLmgi
CiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgotI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAj
aW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCiAjaW5jbHVkZSAiSlNT
ZXRJdGVyYXRvci5oIgpAQCAtMjY1LDcgKzI2Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXQoVk0mIHZtKQogICAgIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRmxvYXQ2NCldLnN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIEpTRmxvYXQ2NEFycmF5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRmxvYXQ2NCldLnByb3RvdHlwZS5nZXQoKSkp
OwogICAgIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5zdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU0RhdGFWaWV3OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fdHlwZWRB
cnJheXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5wcm90b3R5cGUuZ2V0KCkpKTsKICAgICAKLSAg
ICBtX25hbWVTY29wZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTmFtZVNjb3BlOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CisgICAgbV9jYXRjaFNjb3BlU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgSlNDYXRjaFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpz
TnVsbCgpKSk7CisgICAgbV9mdW5jdGlvbk5hbWVTY29wZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEpTRnVuY3Rpb25OYW1lU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkp
KTsKICAgICBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTGV4
aWNhbEVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICAgICBtX3N0cmlj
dEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RyaWN0RXZhbEFjdGl2YXRp
b246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2RlYnVnZ2Vy
U2NvcGVTdHJ1Y3R1cmUuc2V0KG1fdm0sIHRoaXMsIERlYnVnZ2VyU2NvcGU6OmNyZWF0ZVN0cnVj
dHVyZShtX3ZtLCB0aGlzKSk7CkBAIC02NzYsNyArNjc4LDggQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3dpdGhTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
c3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbmFtZVNjb3BlU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9jYXRjaFNjb3BlU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvbk5hbWVTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJndW1lbnRzU3RydWN0dXJlKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZJbmRleGluZ1NoYXBlczsgKytpKQogICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdTaGFwZVtpXSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE4MDQ0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw3ICsx
OTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2Nv
cGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJpY3RFdmFsQWN0
aXZhdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2xleGljYWxF
bnZpcm9ubWVudFN0cnVjdHVyZTsKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hbWVT
Y29wZVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhdGNoU2NvcGVT
dHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9mdW5jdGlvbk5hbWVTY29w
ZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FyZ3VtZW50c1N0cnVj
dHVyZTsKICAgICAgICAgCiAgICAgLy8gTGlzdHMgdGhlIGFjdHVhbCBzdHJ1Y3R1cmVzIHVzZWQg
Zm9yIGhhdmluZyB0aGVzZSBwYXJ0aWN1bGFyIGluZGV4aW5nIHNoYXBlcy4KQEAgLTQwOCw3ICs0
MDksOCBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
c3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdEV2
YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhY3RpdmF0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUu
Z2V0KCk7IH0KLSAgICBTdHJ1Y3R1cmUqIG5hbWVTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZVNjb3BlU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBjYXRjaFNj
b3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYXRjaFNjb3BlU3RydWN0dXJlLmdldCgp
OyB9CisgICAgU3RydWN0dXJlKiBmdW5jdGlvbk5hbWVTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnVuY3Rpb25OYW1lU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIGFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpIGNvbnN0CiAgICAgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmNwcAkocmV2aXNp
b24gMTgwNDQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxMSArMjgsMjQg
QEAKIAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTQ2F0Y2hTY29wZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25OYW1lU2NvcGUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU05hbWVTY29wZTo6c19pbmZvID0g
eyAiTmFtZVNjb3BlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU05h
bWVTY29wZSkgfTsKIAorSlNOYW1lU2NvcGUqIEpTTmFtZVNjb3BlOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIENhdGNoU2Nv
cGU6CisgICAgICAgIHJldHVybiBKU0NhdGNoU2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBjdXJyZW50U2NvcGUsIGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICBjYXNl
IEZ1bmN0aW9uTmFtZVNjb3BlOgorICAgICAgICByZXR1cm4gSlNGdW5jdGlvbk5hbWVTY29wZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgaWRlbnRpZmllciwgdmFsdWUs
IGF0dHJpYnV0ZXMpOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCiB2b2lkIEpTTmFtZVNjb3BlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNOYW1lU2NvcGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNOYW1lU2NvcGUqPihjZWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTmFtZVNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOYW1lU2NvcGUuaAkocmV2aXNpb24gMTgwNDQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDE1IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEs
MzMgKzQxLDIzIEBAIHB1YmxpYzoKICAgICAgICAgRnVuY3Rpb25OYW1lU2NvcGUKICAgICB9Owog
Ci0gICAgc3RhdGljIEpTTmFtZVNjb3BlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3Bl
KiBjdXJyZW50U2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFR5cGUgdHlwZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIHN0YXRpYyBUKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiAgICAgewotICAgICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBKU05hbWVTY29wZSogc2NvcGVPYmplY3QgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU05hbWVTY29wZT4odm0uaGVhcCkpIEpTTmFtZVNj
b3BlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGN1cnJlbnRTY29wZSwgdHlwZSk7
Ci0gICAgICAgIHNjb3BlT2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgaWRlbnRpZmllciwgdmFs
dWUsIGF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm4gc2NvcGVPYmplY3Q7Ci0gICAgfQotCi0g
ICAgc3RhdGljIEpTTmFtZVNjb3BlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU1Njb3BlKiBuZXh0LCBUeXBlIHR5cGUpCi0gICAgewotICAg
ICAgICBKU05hbWVTY29wZSogc2NvcGVPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU05hbWVTY29wZT4odm0uaGVhcCkpIEpTTmFtZVNjb3BlKHZtLCBnbG9iYWxPYmplY3QsIG5l
eHQsIHR5cGUpOworICAgICAgICBUKiBzY29wZU9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFQ+KHZtLmhlYXApKSBUKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSk7CiAg
ICAgICAgIHNjb3BlT2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgaWRlbnRpZmllciwgdmFsdWUs
IGF0dHJpYnV0ZXMpOwogICAgICAgICByZXR1cm4gc2NvcGVPYmplY3Q7CiAgICAgfQorICAgIAor
ICAgIHN0YXRpYyBKU05hbWVTY29wZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Nj
b3BlKiBjdXJyZW50U2NvcGUsIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBUeXBlKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgRUNNQU1vZGUpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
KSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlw
ZUluZm8oTmFtZVNjb3BlT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyB9Ci0K
ICAgICBERUNMQVJFX0lORk87CiAKLSAgICBib29sIGlzRnVuY3Rpb25OYW1lU2NvcGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgPT0gRnVuY3Rpb25OYW1lU2NvcGU7IH0KLSAgICBib29sIGlzQ2F0
Y2hTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBDYXRjaFNjb3BlOyB9Ci0KICAgICBK
U1ZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RlclN0b3JlLmdldCgpOyB9CiAK
IHByb3RlY3RlZDoKQEAgLTgwLDIwICs3MCwxOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotcHJpdmF0ZToKLSAgICBKU05hbWVTY29wZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIG5leHQsIFR5cGUg
dHlwZSkKKyAgICBKU05hbWVTY29wZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Nj
b3BlKiBuZXh0KQogICAgICAgICA6IEJhc2UoCiAgICAgICAgICAgICB2bSwKLSAgICAgICAgICAg
IGdsb2JhbE9iamVjdC0+bmFtZVNjb3BlU3RydWN0dXJlKCksCisgICAgICAgICAgICBzdHJ1Y3R1
cmUsCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oJm1fcmVnaXN0ZXJT
dG9yZSArIDEpLAogICAgICAgICAgICAgbmV4dAogICAgICAgICApCi0gICAgICAgICwgbV90eXBl
KHR5cGUpCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93
bj4gbV9yZWdpc3RlclN0b3JlOwotICAgIFR5cGUgbV90eXBlOwogfTsKIAogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTgwNDQ2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRl
ciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIwMDgsIDIwMDksIDIw
MTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChD
KSAyMDA3IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTM0
LDcgKzM0LDkgQEAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlND
YXRjaFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b25OYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkxv
b2t1cC5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKQEAgLTE2MjAsNiAr
MTYyMiwxNiBAQCBKU1ZhbHVlIEpTT2JqZWN0Ojp0b1RoaXMoSlNDZWxsKiBjZWxsLCBFCiAgICAg
cmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogfQogCitib29sIEpTT2JqZWN0Ojppc0Nh
dGNoU2NvcGVPYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBpbmhlcml0cyhKU0NhdGNoU2Nv
cGU6OmluZm8oKSk7Cit9CisKK2Jvb2wgSlNPYmplY3Q6OmlzRnVuY3Rpb25OYW1lU2NvcGVPYmpl
Y3QoKSBjb25zdAoreworICAgIHJldHVybiBpbmhlcml0cyhKU0Z1bmN0aW9uTmFtZVNjb3BlOjpp
bmZvKCkpOworfQorCiB2b2lkIEpTT2JqZWN0OjpzZWFsKFZNJiB2bSkKIHsKICAgICBpZiAoaXNT
ZWFsZWQodm0pKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CShyZXZpc2lvbiAxODA0NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTMsNiArNTkzLDggQEAgcHVibGljOgogICAgIGJv
b2wgaXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNTdGF0aWNTY29wZU9iamVj
dCgpIGNvbnN0OwogICAgIGJvb2wgaXNOYW1lU2NvcGVPYmplY3QoKSBjb25zdDsKKyAgICBib29s
IGlzQ2F0Y2hTY29wZU9iamVjdCgpIGNvbnN0OworICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVTY29w
ZU9iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNBY3RpdmF0aW9uT2JqZWN0KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0Vycm9ySW5zdGFuY2UoKSBjb25zdDsKICAgICBib29sIGlzV2l0aFNjb3BlKCkg
Y29uc3Q7CkBAIC0xMTMxLDcgKzExMzMsNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNTdGF0
aWNTY29wZU9iamVjCiAgICAgcmV0dXJuIHR5cGUgPT0gTmFtZVNjb3BlT2JqZWN0VHlwZSB8fCB0
eXBlID09IEFjdGl2YXRpb25PYmplY3RUeXBlOwogfQogCi0KIGlubGluZSBib29sIEpTT2JqZWN0
Ojppc05hbWVTY29wZU9iamVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHR5cGUoKSA9PSBOYW1l
U2NvcGVPYmplY3RUeXBlOwo=
</data>
<flag name="review"
          id="271949"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>