<?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>140160</bug_id>
          
          <creation_ts>2015-01-06 17:57:03 -0800</creation_ts>
          <short_desc>[WK2] Start a prototype for declarative site specific extensions</short_desc>
          <delta_ts>2015-01-08 17:55:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>barraclough</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1059246</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-06 17:57:03 -0800</bug_when>
    <thetext>[WK2] Start a prototype for declarative site specific extensions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059268</commentid>
    <comment_count>1</comment_count>
      <attachid>244116</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-06 18:38:42 -0800</bug_when>
    <thetext>Created attachment 244116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059282</commentid>
    <comment_count>2</comment_count>
      <attachid>244123</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-06 19:13:36 -0800</bug_when>
    <thetext>Created attachment 244123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059317</commentid>
    <comment_count>3</comment_count>
      <attachid>244136</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-06 21:01:37 -0800</bug_when>
    <thetext>Created attachment 244136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059475</commentid>
    <comment_count>4</comment_count>
      <attachid>244136</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-07 12:47:51 -0800</bug_when>
    <thetext>Comment on attachment 244136
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:46
&gt; +- (void)_loadContentExtensionWithIdentifier:(NSString *)identifier serializedRules:(NSString *)serializedRules successCompletionHandler:(void (^)(NSDictionary *info))successCompletionHandler errorCompletionHandler:(void (^)(NSError *error))errorCompletionHandler;

Add
FIXME: move the API to a better place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060021</commentid>
    <comment_count>5</comment_count>
      <attachid>244136</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-08 17:01:30 -0800</bug_when>
    <thetext>Comment on attachment 244136
Patch

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

r=me. This seems like a good-enough foundation to build on.

&gt; Source/WebCore/contentextensions/DFA.cpp:43
&gt; +    : m_nodes(nodes)

I think this needs to explicitly move or it will be a copy:
: m_nodes(WTF::move(nodes))

&gt; Source/WebCore/contentextensions/DFA.h:51
&gt; +    Vector&lt;uint64_t&gt; actions(unsigned currentState) const;

This is returning a copy of the Vector, which is probably not what you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060030</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-08 17:55:57 -0800</bug_when>
    <thetext>Committed r178151: &lt;http://trac.webkit.org/changeset/178151&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244116</attachid>
            <date>2015-01-06 18:38:42 -0800</date>
            <delta_ts>2015-01-06 19:13:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140160-20150106183846.patch</filename>
            <type>text/plain</type>
            <size>96637</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5YWIwNDAyYWNjMmZlNTEzMmM1MTBj
ZmEzYjU1YmQ1YjliNjE4OWQuLmFmOTJhYmVlNWJhOWE0ZDRlYmYwODAwMGNjYWUwMDkwNmRhMTA3
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDEtMDYgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFN0YXJ0IGEgcHJvdG90eXBlIGZv
ciBkZWNsYXJhdGl2ZSBzaXRlIHNwZWNpZmljIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDE2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisK
IDIwMTUtMDEtMDYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQUREUkVTU19TQU5JVElaRVIgbWFjcm8gaXMgb3ZlcmxvYWRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJk
MjFhNGRlMTViNGFiMDYwZjQwOTdkMTQxOTUxNjIwZmEzOWZkYTkuLmIwODVhYzlkOWUyMjEwMmI4
N2M3NDBkNjc3NmY4ZTUxMWQzMTQwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAx
NS0wMS0wNiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1dLMl0gU3RhcnQgYSBwcm90b3R5cGUgZm9yIGRlY2xhcmF0aXZlIHNpdGUgc3BlY2lmaWMg
ZXh0ZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwMTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ3VycmVudGx5LCBjbGllbnRzIGhhdmUgdmFyaW91cyB3YXlzIHRvIGV4ZWN1dGUgY3VzdG9t
IGNvZGUgZm9yIGNlcnRhaW4gVVJMcy4KKyAgICAgICAgRWFjaCBvZiB0aG9zZSBtZWNoYW5pc20g
aW1wbGllcyBtZXNzYWdpbmcgdGhlIFVJUHJvY2VzcywgZXhlY3V0aW5nIHNvbWUgY29kZQorICAg
ICAgICBjYWxsaW5nIGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MsIHRoZW4gYWN0dWFsbHkgbG9hZCB0
aGUgcmVzb3VyY2UuCisgICAgICAgIEFsbCB0aGlzIGJhY2sgYW5kIGZvcnRoIGludHJvZHVjZXMg
ZGVsYXlzIGJlZm9yZSB3ZSBhY3R1YWxseSBsb2FkIHJlc291cmNlcy4KKworICAgICAgICBTaW5j
ZSB0aGUgc2V0IG9mIGFjdGlvbnMgaXMgZG9uZSBwZXIgc2l0ZSBpcyBhY3R1YWxseSBzaW1wbGUg
YW5kIGxpbWl0ZWQsCisgICAgICAgIGl0IG1heSBiZSBwb3NzaWJsZSB0byBkbyBldmVyeXRoaW5n
IGluIFdlYkNvcmUgYW5kIHNob3J0Y3V0IHRoZSBkZWZlcmVkIGxvYWRpbmcuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBwcm92aWRlcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgaWRlYS4gVGhl
ICJydWxlcyIgKGN1cnJlbnRseSBqdXN0IGJsb2NraW5nKQorICAgICAgICBhcmUgYmUgcGFzc2Vk
IHRvIFdlYkNvcmUgaW4gYSBKU09OIGZvcm1hdC4gSW4gV2ViQ29yZSwgd2UgY3JlYXRlIGEgc3Rh
dGUKKyAgICAgICAgbWFjaGluZSB0byBtYXRjaCB0aGUgcnVsZXMgYW5kIHdlIGV4ZWN1dGUgdGhl
IGFjdGlvbiB3aGVuIHRoZSBzdGF0ZSBtYWNoaW5lIHRlbGxzCisgICAgICAgIHVzIHRvLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25SdWxlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkNvbnRlbnRFeHRlbnNpb25SdWxlOjpDb250ZW50RXh0ZW5zaW9uUnVsZSk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNp
b25SdWxlOjp0cmlnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uUnVsZTo6YWN0aW9uKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnNoYXJlZEluc3Rh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ6OnNldFJ1bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnJlbW92ZVJ1bGVMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6
OnNob3VsZEJsb2NrVVJMKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuaDogQWRkZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmguCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c2hvdWxkQmxvY2tVUkwpOgorICAgICAgICAqIGNvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaC4K
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpFeHRlbnNpb25z
TWFuYWdlcjo6bG9hZFRyaWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkV4dGVuc2lvbnNNYW5hZ2VyOjpsb2FkQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpFeHRlbnNpb25zTWFuYWdlcjo6bG9hZFJ1bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkV4dGVuc2lvbnNNYW5hZ2VyOjpsb2FkRXh0ZW5z
aW9uKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFn
ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6REZBKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkE6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBOjpuZXh0U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6YWN0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBOjpkZWJ1Z1ByaW50RG90KToKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkEuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oLgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6cm9vdCk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvREZBTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmguCisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvTkZBLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6TkZBOjpORkEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQTo6
Y3JlYXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TkZBOjph
ZGRUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpORkE6
OmFkZEVwc2lsb25UcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpORkE6OnNldEZpbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpORkE6OmRlYnVnUHJpbnREb3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TkZB
Ojpyb290KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQU5vZGU6Ok5G
QU5vZGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6ZXBzaWxvbkNsb3N1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnNldFRyYW5zaXRpb25zRXhjbHVkaW5n
RXBzaWxvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SGFzaGFibGVO
b2RlSWRTZXQ6Okhhc2hhYmxlTm9kZUlkU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpIYXNoYWJsZU5vZGVJZFNldDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpIYXNoYWJsZU5vZGVJZFNldDo6aXNFbXB0eVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpIYXNoYWJsZU5vZGVJZFNldDo6
aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Okhh
c2hhYmxlTm9kZUlkU2V0Ojpub2RlSWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6Okhhc2hhYmxlTm9kZUlkU2V0SGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6SGFzaGFibGVOb2RlSWRTZXRIYXNoOjplcXVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6YWRkREZBU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQVRvREZBOjpjb252ZXJ0KToKKyAgICAgICAg
KiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmguCisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorCiAyMDE1LTAxLTA2ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgTWF0aE1MIGluIGRh
c2hib2FyZCBjb21wYXRpYmlsaXR5IG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMDhmNzM3OTYzYjMzNjM3
YzVkY2NkYWU2NTIxMWViYmY5MzEzMzI2Li45NTNlNzVlZjIwZDQ2NTBjMTM5ZDRlNDYwMGU3NDlh
YjcyOTU0M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMDEtMDYgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFN0YXJ0
IGEgcHJvdG90eXBlIGZvciBkZWNsYXJhdGl2ZSBzaXRlIHNwZWNpZmljIGV4dGVuc2lvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDE2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb3ZpZGUgYSBz
bWFsbCBTUEkgZm9yIE9TIFguIFRoaXMgd2lsbCBsaWtlbHkgbW92ZQorICAgICAgICB0byBhIGJl
dHRlciBwbGFjZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfbG9hZENvbnRlbnRFeHRlbnNpb25XaXRo
SWRlbnRpZmllcjpzZXJpYWxpemVkUnVsZXM6c3VjY2Vzc0NvbXBsZXRpb25IYW5kbGVyOmVycm9y
Q29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmluaXNoTGF1
bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxvYWRDb250ZW50RXh0
ZW5zaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojpsb2FkQ29udGVudEV4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE1
LTAxLTA2ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBWaWV3IHN0YXRlIGNoYW5nZSBjYWxsYmFja3MgYXJlIHNvbWV0aW1lcyBkcm9wcGVkIG9u
IHRoZSBmbG9vcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBi
L1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggMTMyOGM1NmFkOTMwNjA5NmQy
ZmVkOWY5MTFjZWQzZTFlODA4ZDZhZi4uNzExZmU0YzhhNGM4NTA0NDU3MzA1ZGFiZTMwMDQ0OGEw
NjYxYTBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC01OCw2ICs1OCwxMCBAQAogI2Rl
ZmluZSBFTkFCTEVfQVNZTkNfU0NST0xMSU5HIDEKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5B
QkxFX0NPTlRFTlRfRVhURU5TSU9OUykKKyNkZWZpbmUgRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9O
UyAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DT05URVhUX01FTlVTKQogI2RlZmlu
ZSBFTkFCTEVfQ09OVEVYVF9NRU5VUyAwCiAjZW5kaWYKQEAgLTE2Nyw2ICsxNzEsMTAgQEAgdGhl
IHB1YmxpYyBpT1MgU0RLLiBXZSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnIGZpbGUKIC8qIC0tLS0tLS0tLSBBcHBsZSBNQUMgcG9ydCAobm90IElP
UykgLS0tLS0tLS0tICovCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaWYgIWRlZmluZWQoRU5BQkxF
X0NPTlRFTlRfRVhURU5TSU9OUykKKyNkZWZpbmUgRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9OUyAx
CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DU1NfSU1BR0VfU0VUKQogI2RlZmluZSBF
TkFCTEVfQ1NTX0lNQUdFX1NFVCAxCiAjZW5kaWYKQEAgLTMyOSw2ICszMzcsMTAgQEAgdGhlIHB1
YmxpYyBpT1MgU0RLLiBXZSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnIGZpbGUKICNkZWZpbmUgRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HIDEKICNl
bmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9OUykKKyNkZWZpbmUg
RU5BQkxFX0NPTlRFTlRfRVhURU5TSU9OUyAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJM
RV9DT05URVhUX01FTlVTKQogI2RlZmluZSBFTkFCTEVfQ09OVEVYVF9NRU5VUyAxCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYzY4MTIwYTg3N2Y4N2NjOTg1ZjFiNGVjNzZjMzMwZDA5
MjFjNzIwOC4uYmI4YmFhY2ZlZmJmZmIyOGY4ZmZhZTNiNWIyYmIzNWYzMWNkMTUyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTMwMTMsNiArMzAxMywxMCBAQCBfX1pON1dlYkNvcmUxNFJlc291
cmNlSGFuZGxlMjVjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlRVAxOU5TQ2FjaGVkVVJMUmVzcG9u
c2UKIF9fWk43V2ViQ29yZTM3c3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeUVQ
MTVOU1VSTENvbm5lY3Rpb25QMTJOU1VSTFJlcXVlc3RQMTNOU1VSTFJlc3BvbnNlCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCitfX1pON1dlYkNvcmUxN0NvbnRlbnRF
eHRlbnNpb25zMTdFeHRlbnNpb25zTWFuYWdlcjEzbG9hZEV4dGVuc2lvbkVSS04zV1RGNlN0cmlu
Z0VTNV8KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogX19aTjdXZWJD
b3JlMTNDb250ZW50RmlsdGVyNmRlY29kZUVQMTdOU0tleWVkVW5hcmNoaXZlclJTMF8KIF9fWk43
V2ViQ29yZTEzQ29udGVudEZpbHRlckMxRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYWMyYjhkNDEzYjg3M2VkYmYxY2ZlNjI3
NTM0YzU5MDQ4ZTdiMTQxLi40NjVjZmY2ZmNlODBhMjgwMmJjYTAyN2E2Nzg5Njc2ZGUxMzM5ZTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDIzLDcgKzEwMjMsMTYgQEAKIAkJMjY1NTQxNTIxNDg5QjIzMzAwMERGQzVEIC8q
IEN1cnNvcklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyNjU1NDE0QjE0ODlBQTJCMDAwREZDNUQgLyogQ3Vyc29ySU9TLmNwcCAqLzsgfTsKIAkJ
MjY2MDFFQkYxNEIzQjlBRDAwMTJDMEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjYwMUVCRDE0QjNC
OUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNjYwMUVDMDE0QjNCOUFEMDAxMkMw
RkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjYwMUVCRTE0QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZv
cm1FdmVudEZhY3RvcnlJT1MubW0gKi87IH07CisJCTI2NzcyNUZDMUE1QjNBRDkwMDNDMjRERCAv
KiBERkEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjY3NzI1RjYxQTVCM0FEOTAwM0MyNEREIC8qIERGQS5jcHAgKi87IH07CisJCTI2NzcyNUZEMUE1
QjNBRDkwMDNDMjRERCAvKiBERkEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI2NzcyNUY3MUE1QjNBRDkwMDNDMjRERCAvKiBERkEuaCAqLzsgfTsKKwkJ
MjY3NzI1RkYxQTVCM0FEOTAwM0MyNEREIC8qIERGQU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NzcyNUY5MUE1QjNBRDkwMDNDMjRERCAvKiBE
RkFOb2RlLmggKi87IH07CisJCTI2NzcyNjAwMUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjc3MjVG
QTFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuY3BwICovOyB9OworCQkyNjc3MjYwMTFBNUIz
QUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2NzcyNUZCMUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5oICov
OyB9OwogCQkyNjkyMzk5NjE1MDVFMUFBMDA5RTU3RkMgLyogSlNJREJWZXJzaW9uQ2hhbmdlRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2OTIz
OTkyMTUwNUUxQUEwMDlFNTdGQyAvKiBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oICovOyB9Owor
CQkyNjkzOTcyMTFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjkzOTcxRjFBNEE0MTJGMDBFODM0OUQg
LyogTkZBTm9kZS5jcHAgKi87IH07CisJCTI2OTM5NzIyMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFO
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjkz
OTcyMDFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5oICovOyB9OworCQkyNjkzOTcyNDFBNEE1
QjY0MDBFODM0OUQgLyogTkZBLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmggKi87IH07CisJCTI2
OTM5NzI2MUE0QTVGQkQwMEU4MzQ5RCAvKiBORkEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY5Mzk3MjUxQTRBNUZCRDAwRTgzNDlEIC8qIE5GQS5j
cHAgKi87IH07CiAJCTI2QUEwRjlFMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0Vs
ZW1lbnRUeXBlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI2QUEwRjlEMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRU
eXBlTWFwLmNwcCAqLzsgfTsKIAkJMjZCOTk5OEYxODAzQUU3MjAwRDAxMTIxIC8qIFJlZ2lzdGVy
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNkI5OTk4RTE4MDNBRTcyMDBEMDExMjEgLyogUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLzsgfTsK
IAkJMjZCOTk5OTExODAzQjNDOTAwRDAxMTIxIC8qIFN0YWNrQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkI5OTk5MDE4MDNCM0M5MDBE
MDExMjEgLyogU3RhY2tBbGxvY2F0b3IuaCAqLzsgfTsKQEAgLTEwMzUsNiArMTA0NCwxNCBAQAog
CQkyNkMxN0EzRTE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZDMTdBM0MxNDkxRDJENDAwRDEy
QkEyIC8qIEZpbGVTeXN0ZW1JT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkyNkMxN0EzRjE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2QzE3
QTNEMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1tICovOyB9OwogCQkyNkU5OEEx
MDEzMEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZFOThBMEYxMzBBOUZDQTAwOEVC
N0IyIC8qIFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaCAqLzsgfTsKKwkJMjZGMEM4OTIxQTJENzlD
QjAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkYwQzg5MTFBMkQ3OUNCMDAyNzk0Rjgg
LyogQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCAqLzsgfTsKKwkJMjZGMEM4OTQxQTJEN0E3
NjAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjBDODkzMUEyRDdBNzYwMDI3OTRG
OCAvKiBDb250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5jcHAgKi87IH07CisJCTI2RjBDODk3MUEy
RTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMEM4OTUxQTJFNzI0QjAwMjc5
NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHAgKi87IH07CisJCTI2RjBDODk4MUEy
RTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjBDODk2MUEyRTcyNEIwMDI3OTRG
OCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyNkYwQzg5QjFBMkVDMTEwMDAyNzk0RjggLyogQ29u
dGVudEV4dGVuc2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGMEM4OTkxQTJFQzExMDAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25S
dWxlLmNwcCAqLzsgfTsKKwkJMjZGMEM4OUMxQTJFQzExMDAwMjc5NEY4IC8qIENvbnRlbnRFeHRl
bnNpb25SdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNkYwQzg5QTFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1bGUuaCAqLzsg
fTsKKwkJMjZGMEM4OUYxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkYw
Qzg5RDFBMkVDM0JFMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCAqLzsg
fTsKKwkJMjZGMEM4QTAxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMEM4
OUUxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oICovOyB9Owog
CQkyNkY0MEQ0QTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNDBENDkxNDkwNEE2MzAwQ0E2
N0M0IC8qIEV2ZW50TG9vcElPUy5tbSAqLzsgfTsKIAkJMjZGOUE4MzgxOEEwNDZBQzAwQUVCODhB
IC8qIFZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY5QTgzNjE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRD
b25maWd1cmF0aW9uLmNwcCAqLzsgfTsKIAkJMjZGOUE4MzkxOEEwNDZBQzAwQUVCODhBIC8qIFZp
ZXdwb3J0Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGOUE4MzcxOEEwNDZBQzAwQUVCODhBIC8qIFZpZXdwb3J0Q29uZmlndXJh
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC04MDQ2LDggKzgwNjMsMTcgQEAKIAkJMjY1NTQxNEIxNDg5QUEyQjAwMERGQzVEIC8qIEN1cnNv
cklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXJzb3JJT1Mu
Y3BwOyBwYXRoID0gaW9zL0N1cnNvcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI2NjAxRUJEMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlP
Uy5oOyBwYXRoID0gaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI2NjAxRUJFMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0Zm9ybUV2ZW50
RmFjdG9yeUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBs
YXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tOyBwYXRoID0gaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjc3MjVGNjFBNUIzQUQ5MDAz
QzI0REQgLyogREZBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERG
QS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2NzcyNUY3MUE1QjNBRDkwMDND
MjRERCAvKiBERkEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZBLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2NzcyNUY5MUE1QjNBRDkwMDNDMjRERCAvKiBE
RkFOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGQU5vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY3NzI1RkExQTVCM0FEOTAwM0MyNEREIC8qIE5G
QVRvREZBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5GQVRvREZB
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY3NzI1RkIxQTVCM0FEOTAwM0My
NEREIC8qIE5GQVRvREZBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5GQVRv
REZBLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2OTIzOTkxMTUwNUUxQUEwMDlF
NTdGQyAvKiBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI2OTIzOTkyMTUwNUUxQUEwMDlFNTdGQyAvKiBKU0lEQlZlcnNp
b25DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjkzOTcx
RjFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBORkFOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MjY5Mzk3MjAxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTkZBTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
NjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5GQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjkzOTcyNTFB
NEE1RkJEMDBFODM0OUQgLyogTkZBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5GQS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2QUEwRjk5MThE
Mjk3M0QwMDQxOTM4MSAvKiBtYWtlU2VsZWN0b3JQc2V1ZG9FbGVtZW50c01hcC5weSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IG1ha2VTZWxlY3RvclBzZXVkb0VsZW1lbnRzTWFwLnB5OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyNkFBMEY5QTE4RDI5NzNEMDA0MTkzODEgLyogU2VsZWN0b3JQ
c2V1ZG9FbGVtZW50VHlwZU1hcC5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFw
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkFBMEY5RDE4RDJBMThCMDA0MTkz
ODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgwNjIsNiArODA4OCwxNCBAQAogCQkyNkMxN0Ez
QzE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBGaWxlU3lzdGVtSU9TLmg7IHBhdGggPSBpb3MvRmlsZVN5c3RlbUlPUy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkMxN0EzRDE0OTFEMkQ0MDBEMTJCQTIg
LyogRmlsZVN5c3RlbUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IEZpbGVTeXN0ZW1JT1MubW07IHBhdGggPSBpb3MvRmlsZVN5c3RlbUlPUy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZFOThBMEYxMzBBOUZDQTAwOEVCN0IyIC8qIFRleHRD
b2RlY0FTQ0lJRmFzdFBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dENvZGVjQVNDSUlGYXN0UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkYw
Qzg5MTFBMkQ3OUNCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZGMEM4OTMxQTJEN0E3NjAwMjc5NEY4
IC8qIENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZGMEM4OTUxQTJFNzI0QjAwMjc5NEY4IC8qIENvbnRlbnRF
eHRlbnNpb25zTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyNkYwQzg5NjFBMkU3MjRCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNNYW5hZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25zTWFu
YWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkYwQzg5OTFBMkVDMTEwMDAy
Nzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyNkYwQzg5QTFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
blJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEV4dGVuc2lv
blJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZGMEM4OUQxQTJFQzNCRTAw
Mjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyNkYwQzg5RTFBMkVDM0JFMDAyNzk0RjggLyogQ29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
NkY0MEQ0OTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRXZlbnRMb29wSU9TLm1tOyBwYXRoID0gaW9zL0V2
ZW50TG9vcElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZGOUE4MzYxOEEw
NDZBQzAwQUVCODhBIC8qIFZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyNkY5QTgzNzE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3Bv
cnRDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdw
b3J0Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3MjYs
NiArMTQ3NjAsNyBAQAogCQkJCTI5QTgxMjA0MEZCQjlCNDEwMDUxMDI5MyAvKiBhY2Nlc3NpYmls
aXR5ICovLAogCQkJCUJDMUEzNzkwMDk3QzZGOTcwMDE5RjNEOCAvKiBiaW5kaW5ncyAqLywKIAkJ
CQkxQTU2OUNDNDBEN0UyQjYwMDA3QzM5ODMgLyogYnJpZGdlICovLAorCQkJCTI2RjBDODkwMUEy
RDc5Q0IwMDI3OTRGOCAvKiBjb250ZW50ZXh0ZW5zaW9ucyAqLywKIAkJCQlFMUZGOEY1QjE4MDcz
NjJCMDAxMzI2NzQgLyogY3J5cHRvICovLAogCQkJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAv
KiBjc3MgKi8sCiAJCQkJMjZCOTk5OEQxODAzQURGQTAwRDAxMTIxIC8qIGNzc2ppdCAqLywKQEAg
LTE1MzcyLDYgKzE1NDA3LDMwIEBACiAJCQluYW1lID0gY3Nzaml0OwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMjZGMEM4OTAxQTJENzlDQjAwMjc5NEY4IC8qIGNvbnRlbnRl
eHRlbnNpb25zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkyNkYwQzg5OTFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwICov
LAorCQkJCTI2RjBDODlBMUEyRUMxMTAwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uUnVsZS5o
ICovLAorCQkJCTI2RjBDODlEMUEyRUMzQkUwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQuY3BwICovLAorCQkJCTI2RjBDODlFMUEyRUMzQkUwMDI3OTRGOCAvKiBDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuaCAqLywKKwkJCQkyNkYwQzg5MzFBMkQ3QTc2MDAyNzk0RjggLyogQ29u
dGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwICovLAorCQkJCTI2RjBDODkxMUEyRDc5Q0IwMDI3
OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5oICovLAorCQkJCTI2RjBDODk1MUEy
RTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwICovLAorCQkJCTI2
RjBDODk2MUEyRTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCAqLywK
KwkJCQkyNjc3MjVGNjFBNUIzQUQ5MDAzQzI0REQgLyogREZBLmNwcCAqLywKKwkJCQkyNjc3MjVG
NzFBNUIzQUQ5MDAzQzI0REQgLyogREZBLmggKi8sCisJCQkJMjY3NzI1RjkxQTVCM0FEOTAwM0My
NEREIC8qIERGQU5vZGUuaCAqLywKKwkJCQkyNjkzOTcyNTFBNEE1RkJEMDBFODM0OUQgLyogTkZB
LmNwcCAqLywKKwkJCQkyNjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmggKi8sCisJCQkJ
MjY5Mzk3MUYxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuY3BwICovLAorCQkJCTI2OTM5NzIw
MUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggKi8sCisJCQkJMjY3NzI1RkExQTVCM0FEOTAw
M0MyNEREIC8qIE5GQVRvREZBLmNwcCAqLywKKwkJCQkyNjc3MjVGQjFBNUIzQUQ5MDAzQzI0REQg
LyogTkZBVG9ERkEuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY29udGVudGV4dGVuc2lvbnM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkyOUE4MTIwNDBGQkI5QjQxMDA1MTAy
OTMgLyogYWNjZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0yMzYxOSw2ICsyMzY3OCw3IEBACiAJCQkJQ0QzMTg2MjMxOTlGMUUyQTAwMzBB
MEY3IC8qIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEREQ1NzE1MThCNTdBODIwMEE5NEZDQiAvKiBDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1RkE5MDRDQTE3OEU2MUY1MDA0QzhBMkQgLyogQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyNkYwQzg5QzFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
blJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFODI0NUYwMTlCNjcxQkEwMEFDMDEyMiAvKiBD
Rk5ldHdvcmtDb25uZWN0aW9uQ2FjaGVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTI1MjVC
MUExQzAxODIwMDg2NDQ4MCAvKiBDRk5ldHdvcmtTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QThFNTY3MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNDA2NCw2ICsyNDEyNCw3IEBACiAJCQkJODUxODNCNDQwQUE2OTI2MTAwRjE5RkEzIC8qIERP
TUhUTUxIZWFkaW5nRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQUUwQUM1RDUz
NTAwNTMyNzBGIC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUVDQkVGMTBBQTc2MjY5MDA1NDRGMEIgLyogRE9NSFRNTEhSRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMjY5Mzk3MjIxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RTcxMUFGMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSFJF
bGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTkyRUJDMEFBNTA2OTUwMEFD
MDc4NSAvKiBET01IVE1MSHRtbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUIw
MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSHRtbEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNDE3Miw2ICsyNDIzMyw3IEBACiAJCQkJRTEyODRCRDYxMDQ0QTAxRTAwRUFF
QjUyIC8qIERPTVBhZ2VUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1
M0U4MEE4RDE4RTcwMDIyOTQ3RCAvKiBET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdB
NTQ4ODE3MTRFNDMyQTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTI2OTM5NzI0MUE0QTVCNjQwMEU4MzQ5RCAvKiBORkEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZCOTEzOTI0MTZBRTRDMTcwMDFGRTY4MiAvKiBET01QYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOUM2RTRFQzBENzQ1RTJCMDA2NDQyRTkgLyogRE9NUGx1Z2luLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOUM2RTRGMDBENzQ1RTM4MDA2NDQyRTkgLyogRE9NUGx1Z2luQXJyYXkuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjQ2OTMsNiArMjQ3NTUsNyBAQAogCQkJCTMxNkZFMTE4MEU2RTFEQTcw
MEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU5NjFD
NTUxOEFEMzM4QzAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCUJFMTZDNTkzMTdDRkUxNzIwMDg1MkMwNCAvKiBJbmJhbmRHZW5lcmljVGV4dFRyYWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyNjc3MjYwMTFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9E
RkEuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTlFMTJFMThGNUUyNzYwMDExQTNBNCAvKiBJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTQx
NzkyMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3OTQxNzk0MTY2RUEwNEUwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI1MTQyLDYgKzI1MjA1LDcgQEAKIAkJCQlCMkZBM0Q1NzBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkZBM0Q1OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDaXJjbGVFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0Q1QjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDbGlwUGF0aEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2RjBDODk4MUEyRTcyNEIwMDI3OTRGOCAvKiBD
b250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDVEMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1
RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
Q3Vyc29yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU2MCw2ICsyNTYyNCw3IEBACiAJ
CQkJOThFQjFGOTUxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTU2OUQwQjBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBOTI3RkQyMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMjY3NzI1RkYxQTVCM0FEOTAwM0MyNEREIC8qIERGQU5vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMjE5QjNCMERDQTg3QUIwMDQwRTNBMCAvKiBucGZ1bmN0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MjdGRDMxNDE2QTE1QjAwM0E4M0M4IC8qIG5wcnVudGlt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMEYwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVu
dGltZV9pbXBsLmggaW4gSGVhZGVycyAqLywKQEAgLTI1ODIyLDYgKzI1ODg3LDcgQEAKIAkJCQlC
QzFBN0Q5ODE4RkNCNUIwMDA0MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCThBQzgyMkZEMTgwRkMwMzMwMEZCNjRENSAvKiBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4NUYyM0QxNTE5
MTVFMDAwQkMxN0JFIC8qIFJlbmRlck5hbWVkRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMjY3NzI1RkQxQTVCM0FEOTAwM0MyNEREIC8qIERGQS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFQTQ4ODAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNGQTkzMDgxMDMzMzE5MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJmbG93LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNDNCRjU5RDExNDkyOTI4MDBDNjQzQ0EgLyogUmVuZGVyUHJvZ3Jlc3Mu
aCBpbiBIZWFkZXJzICovLApAQCAtMjYzNjcsNiArMjY0MzMsNyBAQAogCQkJCTg0MTlEMkFEMTIw
RDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODQ3NkM5RUMxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzE1MzdBMDExNDZCRDlENzAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkyNkYwQzg5MjFBMkQ3OUNCMDAyNzk0RjggLyogQ29udGVudEV4
dGVuc2lvbnNJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU5MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RjAx
MURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTVCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2NTcwLDYgKzI2NjM3LDcgQEAKIAkJCQlCRTg4RTBDMjE3MTVDRTI2MDA2NThEOTggLyogVHJh
Y2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU5MTNEODAxODFFRjkyNDAwRENCMDlF
IC8qIFRyYWNrUHJpdmF0ZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGQUMzMEZFMTg0RkIx
NDUwMDhDNEYxRSAvKiBUcmFpbGluZ09iamVjdHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2RjBD
OEEwMUEyRUMzQkUwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI0ODRGNEQxNzFGODIxRTAwMDQwNzU1IC8qIFRy
YW5zZm9ybUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0UwRUY4NkQ0NzAw
OUQwQ0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzI1Niw2
ICsyNzMyNCw3IEBACiAJCQkJRkRCMDUyREYxNTYxQTQyQzAwQjUwMEQ2IC8qIEF1ZGlvU3VtbWlu
Z0p1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5
OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMERCMTcxNUQyQTIw
MDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNjc3MjYw
MDFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RF
M0E4NTcxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUNENTRBNzYyMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA4QTEy
QjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
NzU1OSw2ICsyNzYyOCw3IEBACiAJCQkJOTMzMDlEREUwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0
ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERTAwOTlF
NjQ5MjAwNTZFNTgxIC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTdDOUFCRjgxMzU3QTNCRjAwRjU1MDNGIC8qIERldGFpbHNNYXJrZXJDb250cm9sLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTI2RjBDODk0MUEyRDdBNzYwMDI3OTRGOCAvKiBDb250ZW50
RXh0ZW5zaW9uc0ludGVyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDQ0MyQjUxNTE1RjYx
MzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MUVBRjk3RjEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzFGQjFBNTgxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkNv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzU2Niw2ICsyNzYzNiw3IEBACiAJCQkJ
MzFGQjFBNUMxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxNDAzNzlFMTI0QkVBN0YwMEFGNDBFNCAvKiBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU5MzA5QTExMTFGNEFFNTgwMDI1MDYw
MyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MjY5Mzk3MjYxQTRBNUZCRDAwRTgzNDlEIC8qIE5GQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
OUE4RjFENDExQTY5NTA4MDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTU5RDFDMTA0MTFFQjVEQ0YwMEI2MzhDOCAvKiBEZXZpY2VP
cmllbnRhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlBODVFQTIxMTlENjhEOTAw
REVGMUVGIC8qIERldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
ODIwNyw2ICsyODI3OCw3IEBACiAJCQkJQTU4NDBFMUMxODdCNzRENTAwODQzQjEwIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MUIxRTEy
NjE2NDA0OTFBMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTA0QUFDQ0QxODM0NDU1OTAwRTNEOUJDIC8qIEluc3BlY3Rvck5vZGVGaW5k
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZGMEM4OUIxQTJFQzExMDAwMjc5NEY4IC8qIENv
bnRlbnRFeHRlbnNpb25SdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNTIyRDRCMTVCNDc3
RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRG
NkZERDY0MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTlDQzBCNjYxOEJFOUYxNTAwNkNFQkNDIC8qIEluc3BlY3RvclJlcGxheUFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjgzNTAsNiArMjg0MjIsNyBAQAogCQkJCTFBQ0U1
M0RGMEE4RDE4ODEwMDIyOTQ3RCAvKiBKU0RPTVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGQjkxMzkyQjE2QUU0RkMwMDAxRkU2ODIgLyogSlNET01QYXRoLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE5RDI0N0ZFMEQ3NTdFNjkwMEZERjk1OSAvKiBKU0RPTVBsdWdpbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkyNkYwQzg5NzFBMkU3MjRCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
bnNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0ODAwMEQ3NTdFNjkwMEZERjk1
OSAvKiBKU0RPTVBsdWdpbkFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5QzZFNjRDMEQ3
NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE5QzZFNjREMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI4ODA3LDYgKzI4ODgwLDcgQEAKIAkJCQlCMkZBM0RGMjBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdTY3JpcHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyRkEzREY0MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1NldEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjJGQTNERjYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU3RvcEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZGMEM4OUYxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RGODBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdTdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
RkEzREZBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1N0eWxlRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMkZBM0RGQzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTVkdFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjkzNTgsNiArMjk0MzIsNyBAQAogCQkJCTkzMzA5RTA5MDk5
RTY0OTIwMDU2RTU4MSAvKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5OUNDMEI1MzE4QkU5ODQ5MDA2Q0VCQ0MgLyogUmVwbGF5Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5OUNDMEI1NTE4QkU5ODQ5MDA2Q0VCQ0MgLyogUmVwbGF5aW5n
SW5wdXRDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjY3NzI1RkMxQTVCM0FEOTAwM0My
NEREIC8qIERGQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OUNDMEI1NzE4QkU5ODRBMDA2Q0VC
Q0MgLyogUmVwbGF5SW5wdXRDcmVhdGlvbk1ldGhvZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTlDQzBCNTgxOEJFOTg0QTAwNkNFQkNDIC8qIFJlcGxheUlucHV0RGlzcGF0Y2hNZXRob2RzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk5Q0MwQjU5MThCRTk4NEEwMDZDRUJDQyAvKiBSZXBsYXlT
ZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3ODUsNiArMjk4NjAsNyBAQAogCQkJCUIy
MjI3QTk2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI1NDNCODU3MTdFQjc1OEYwMDNCRTkzQSAvKiBTVkdQcm9wZXJ0eUlu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNjkzOTcyMTFB
NEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E5
RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUmVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMyMjc0NzgwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMjI3NDdBMEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURl
ZnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTliOGUw
YmQ0ZDUxM2JlYzIxYzliODkwYzExNGY0NTgyNDFmMzIwNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcApA
QCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25SdWxlLmgiCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CisKK0NvbnRlbnRFeHRlbnNpb25SdWxlOjpDb250ZW50RXh0ZW5zaW9uUnVsZShj
b25zdCBUcmlnZ2VyJiB0cmlnZ2VyLCBjb25zdCBBY3Rpb24mIGFjdGlvbikKKyAgICA6IG1fdHJp
Z2dlcih0cmlnZ2VyKQorICAgICwgbV9hY3Rpb24oYWN0aW9uKQoreworICAgIEFTU0VSVCghbV90
cmlnZ2VyLnVybEZpbHRlci5pc0VtcHR5KCkpOworfQorCit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5o
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OGQzZWNjM2VhZjE3NmY5NjE2ZGE4MDE2MzU2MzI3ZmQ3MDU5NjU1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvblJ1bGUuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDb250ZW50RXh0ZW5zaW9uUnVsZV9oCisjZGVmaW5lIENvbnRlbnRFeHRlbnNpb25SdWxl
X2gKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgQ29udGVu
dEV4dGVuc2lvbnMgeworCitlbnVtIGNsYXNzIEV4dGVuc2lvbkFjdGlvblR5cGUgeworICAgIEJs
b2NrTG9hZAorfTsKKworLy8gQSBDb250ZW50RXh0ZW5zaW9uUnVsZSBpcyB0aGUgc21hbGxlc3Qg
dW5pdCBpbiBhIENvbnRlbnRFeHRlbnNpb24uCisvLworLy8gSXQgaXMgY29tcG9zZWQgb2YgYSB0
cmlnZ2VyIGFuZCBhbiBhY3Rpb24uIFRoZSB0cmlnZ2VyIGRlZmluZXMgb24gd2hhdCBraW5kIG9m
IGNvbnRlbnQgdGhpcyBleHRlbnNpb24gc2hvdWxkIGFwcGx5LgorLy8gVGhlIGFjdGlvbiBkZWZp
bmVzIHdoYXQgdG8gcGVyZm9ybSBvbiB0aGF0IGNvbnRlbnQuCitjbGFzcyBDb250ZW50RXh0ZW5z
aW9uUnVsZSB7CitwdWJsaWM6CisgICAgc3RydWN0IFRyaWdnZXIgeworICAgICAgICBTdHJpbmcg
dXJsRmlsdGVyOworICAgIH07CisKKyAgICBzdHJ1Y3QgQWN0aW9uIHsKKyAgICAgICAgRXh0ZW5z
aW9uQWN0aW9uVHlwZSB0eXBlOworICAgIH07CisKKyAgICBDb250ZW50RXh0ZW5zaW9uUnVsZShj
b25zdCBUcmlnZ2VyJiwgY29uc3QgQWN0aW9uJik7CisKKyAgICBjb25zdCBUcmlnZ2VyJiB0cmln
Z2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2VyOyB9CisgICAgY29uc3QgQWN0aW9uJiBhY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQorCitwcml2YXRlOgorICAgIFRyaWdnZXIg
bV90cmlnZ2VyOworICAgIEFjdGlvbiBtX2FjdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIENv
bnRlbnRFeHRlbnNpb25zCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNlbmRpZiAvLyBDb250ZW50RXh0ZW5zaW9uUnVs
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmQxYWEzMDlhZWFiMDU4
MWYxZWZlZDMyZGVlMjMwYWQ1YTQyNDM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtMCww
ICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisKKyNpbmNsdWRlICJORkEuaCIKKyNpbmNsdWRlICJORkFUb0RGQS5oIgorI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKK0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCYgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpzaGFyZWRJbnN0YW5jZSgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4gaW5z
dGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCit2b2lkIENvbnRlbnRFeHRlbnNpb25z
QmFja2VuZDo6c2V0UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBWZWN0
b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+JiBydWxlTGlzdCkKK3sKKyAgICBBU1NFUlQoIWlkZW50
aWZpZXIuaXNFbXB0eSgpKTsKKyAgICBpZiAoaWRlbnRpZmllci5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChydWxlTGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVtb3Zl
UnVsZUxpc3QoaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBORkEg
bmZhOworICAgIHVuc2lnbmVkIHJvb3ROb2RlID0gbmZhLnJvb3QoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIHJ1bGVJbmRleCA9IDA7IHJ1bGVJbmRleCA8IHJ1bGVMaXN0LnNpemUoKTsgKytydWxlSW5k
ZXgpIHsKKyAgICAgICAgY29uc3QgQ29udGVudEV4dGVuc2lvblJ1bGUmIGNvbnRlbnRFeHRlbnNp
b25SdWxlID0gcnVsZUxpc3RbcnVsZUluZGV4XTsKKyAgICAgICAgY29uc3QgQ29udGVudEV4dGVu
c2lvblJ1bGU6OlRyaWdnZXImIHRyaWdnZXIgPSBjb250ZW50RXh0ZW5zaW9uUnVsZS50cmlnZ2Vy
KCk7CisgICAgICAgIEFTU0VSVCh0cmlnZ2VyLnVybEZpbHRlci5sZW5ndGgoKSk7CisKKyAgICAg
ICAgdW5zaWduZWQgbGFzdE5vZGUgPSByb290Tm9kZTsKKworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdHJpZ2dlci51cmxGaWx0ZXIubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAg
ICAgdW5zaWduZWQgbmV3Tm9kZSA9IG5mYS5jcmVhdGVOb2RlKHJ1bGVJbmRleCk7CisgICAgICAg
ICAgICBuZmEuYWRkVHJhbnNpdGlvbihsYXN0Tm9kZSwgbmV3Tm9kZSwgdHJpZ2dlci51cmxGaWx0
ZXJbaV0pOworICAgICAgICAgICAgbGFzdE5vZGUgPSBuZXdOb2RlOworICAgICAgICB9CisKKyAg
ICAgICAgbmZhLnNldEZpbmFsKGxhc3ROb2RlKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogbmV2
ZXIgYWRkIGEgREZBIHRoYXQgb25seSBtYXRjaGVzIHRoZSBlbXB0eSBzZXQuCisgICAgQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uIGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbiA9IHsgTkZBVG9ERkE6
OmNvbnZlcnQobmZhKSwgcnVsZUxpc3QgfTsKKyAgICBtX3J1bGVMaXN0cy5zZXQoaWRlbnRpZmll
ciwgY29tcGlsZWRDb250ZW50RXh0ZW5zaW9uKTsKK30KKwordm9pZCBDb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQ6OnJlbW92ZVJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAg
ICBtX3J1bGVMaXN0cy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK2Jvb2wgQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kOjpzaG91bGRCbG9ja1VSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBjb25z
dCBTdHJpbmcmIHVybFN0cmluZyA9IHVybC5zdHJpbmcoKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHVybFN0cmluZy5jb250YWluc09ubHlBU0NJSSgpLCAiQSBkZWNvZGVkIFVSTCBzaG91bGQg
b25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnMuIFRoZSBtYXRjaGluZyBhbGdvcml0aG0gYXNz
dW1lcyB0aGUgaW5wdXQgaXMgQVNDSUkuIik7CisKKyAgICBmb3IgKGF1dG8mIHJ1bGVMaXN0U2xv
dCA6IG1fcnVsZUxpc3RzKSB7CisgICAgICAgIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbiYgY29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uID0gcnVsZUxpc3RTbG90LnZhbHVlOworICAgICAgICB1bnNp
Z25lZCBzdGF0ZSA9IGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5kZmEucm9vdCgpOworCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1cmxTdHJpbmcubGVuZ3RoKCk7ICsraSkgewor
ICAgICAgICAgICAgY2hhciBjaGFyYWN0ZXIgPSBzdGF0aWNfY2FzdDxjaGFyPih1cmxTdHJpbmdb
aV0pOworICAgICAgICAgICAgYm9vbCBvazsKKyAgICAgICAgICAgIHN0YXRlID0gY29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uLmRmYS5uZXh0U3RhdGUoc3RhdGUsIGNoYXJhY3Rlciwgb2spOworICAg
ICAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBhY2N1bXVsYXRlIHRoZSBhY3Rpb25zLgorICAgICAgICAgICAgaWYg
KCFjb21waWxlZENvbnRlbnRFeHRlbnNpb24uZGZhLmFjdGlvbnMoc3RhdGUpLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQwNWFhNmQyMTY4YWNkNGNiNGNh
ZDY0MGY2YjkwMjA3YjY3NjMwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC0wLDAgKzEsNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZF9o
CisjZGVmaW5lIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZF9oCisKKyNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKKyNpbmNs
dWRlICJERkEuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBVUkw7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9u
cyB7CisKKy8vIFRoZSBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgaXMgdGhlIGludGVybmFsIG1v
ZGVsIG9mIGFsbCB0aGUgY29udGVudCBleHRlbnNpb25zLgorLy8KKy8vIEl0IHByb3ZpZGVzIHR3
byBzZXJ2aWNlczoKKy8vIDEpIEl0IHN0b3JlcyB0aGUgcnVsZXMgZm9yIGVhY2ggY29udGVudCBl
eHRlbnNpb24uCisvLyAyKSBJdCBwcm92aWRlcyBBUElzIGZvciB0aGUgV2ViQ29yZSBpbnRlcmZh
Y2VzIHRvIHVzZSB0aG9zZSBydWxlcyBlZmZpY2llbnRseS4KK2NsYXNzIENvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCB7CitwdWJsaWM6CisgICAgc3RhdGljIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZCYgc2hhcmVkSW5zdGFuY2UoKTsKKworICAgIC8vIC0gUnVsZSBtYW5hZ2VtZW50IGludGVyZmFj
ZS4gVGhpcyBjYW4gYmUgdXNlZCBieSB1cHBlciBsYXllci4KKworICAgIC8vIFNldCBhIGxpc3Qg
b2YgcnVsZXMgZm9yIGEgZ2l2ZW4gbmFtZS4gSWYgdGhlcmUgd2VyZSBleGlzdGluZyBydWxlcyBm
b3IgdGhlIG5hbWUsIHRoZXkgYXJlIG92ZXJyaWRlbi4KKyAgICAvLyBUaGUgaWRlbnRpZmllciBj
YW5ub3QgYmUgZW1wdHkuCisgICAgdm9pZCBzZXRSdWxlTGlzdChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4mKTsKKworICAgIHZvaWQg
cmVtb3ZlUnVsZUxpc3QoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKworICAgIC8vIC0gSW50
ZXJuYWwgV2ViQ29yZSBJbnRlcmZhY2UuCisgICAgYm9vbCBzaG91bGRCbG9ja1VSTChjb25zdCBV
UkwmKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uIHsK
KyAgICAgICAgREZBIGRmYTsKKyAgICAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiBy
dWxlTGlzdDsKKyAgICB9OworCisgICAgSGFzaE1hcDxTdHJpbmcsIENvbXBpbGVkQ29udGVudEV4
dGVuc2lvbj4gbV9ydWxlTGlzdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5z
aW9ucworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQorCisjZW5kaWYgLy8gQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmI4YjIwNmQzMjVkYTczMjhj
MGFhNTZhNzEyZmZkODVlYTcyZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29u
dGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisKKyNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKworYm9vbCBzaG91bGRC
bG9ja1VSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kOjpzaGFyZWRJbnN0YW5jZSgpLnNob3VsZEJsb2NrVVJMKHVybCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmRkMTIzZTI0Yjc5N2M2Y2U3MzRiNTI5MWFmMDc1YWQ5OTgyZDQ3MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2VfaAorI2RlZmluZSBDb250ZW50
RXh0ZW5zaW9uc0ludGVyZmFjZV9oCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFVSTDsKKworLy8gVGhpcyBkZWZpbmVzIHRo
ZSBpbnRlcmZhY2UgYnkgd2hpY2ggV2ViQ29yZSBpbnRlcmFjdCB3aXRoIENvbnRlbnQgRXh0ZW5z
aW9ucy4KK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7Citib29sIHNob3VsZEJsb2NrVVJM
KGNvbnN0IFVSTCYpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjZW5kaWYgLy8gQ29udGVudEV4dGVuc2lvbnNJ
bnRlcmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZmNzgxMjNl
OTVhMTRkODE5ZTdiZmVjZjk0ZGU1OGI0ZjExMjZhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHAK
QEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQorCisjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKKyNpbmNsdWRl
ICJDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9WTS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CisKK25hbWVzcGFjZSBFeHRlbnNpb25zTWFuYWdlciB7CisKK3N0YXRpYyBib29s
IGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3QsIENvbnRl
bnRFeHRlbnNpb25SdWxlOjpUcmlnZ2VyJiB0cmlnZ2VyKQoreworICAgIEpTVmFsdWUgdHJpZ2dl
ck9iamVjdCA9IHJ1bGVPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidHJpZ2dl
ciIpKTsKKyAgICBpZiAoIXRyaWdnZXJPYmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8fCAh
dHJpZ2dlck9iamVjdC5pc09iamVjdCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxp
ZCB0cmlnZ2VyIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IEpTVmFsdWUgdXJsRmlsdGVyT2JqZWN0ID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50
aWZpZXIoJmV4ZWMsICJ1cmwtZmlsdGVyIikpOworICAgIGlmICghdXJsRmlsdGVyT2JqZWN0IHx8
IGV4ZWMuaGFkRXhjZXB0aW9uKCkgfHwgIXVybEZpbHRlck9iamVjdC5pc1N0cmluZygpKSB7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxpZCB1cmwtZmlsdGVyIG9iamVjdC4iKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFN0cmluZyB1cmxGaWx0ZXIgPSB1cmxGaWx0
ZXJPYmplY3QudG9XVEZTdHJpbmcoJmV4ZWMpOworICAgIGlmICh1cmxGaWx0ZXIuaXNFbXB0eSgp
KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxpZCB1cmwtZmlsdGVyIG9iamVjdC4gVGhl
IHVybCBpcyBlbXB0eS4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHRy
aWdnZXIudXJsRmlsdGVyID0gdXJsRmlsdGVyOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgYm9vbCBsb2FkQWN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3Qs
IENvbnRlbnRFeHRlbnNpb25SdWxlOjpBY3Rpb24mIGFjdGlvbikKK3sKKyAgICBKU1ZhbHVlIGFj
dGlvbk9iamVjdCA9IHJ1bGVPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAiYWN0
aW9uIikpOworICAgIGlmICghYWN0aW9uT2JqZWN0IHx8IGV4ZWMuaGFkRXhjZXB0aW9uKCkgfHwg
IWFjdGlvbk9iamVjdC5pc09iamVjdCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxp
ZCBhY3Rpb24gb2JqZWN0LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
SlNWYWx1ZSB0eXBlT2JqZWN0ID0gYWN0aW9uT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigm
ZXhlYywgInR5cGUiKSk7CisgICAgaWYgKCF0eXBlT2JqZWN0IHx8IGV4ZWMuaGFkRXhjZXB0aW9u
KCkgfHwgIXR5cGVPYmplY3QuaXNTdHJpbmcoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIklu
dmFsaWQgdXJsLWZpbHRlciBvYmplY3QuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBTdHJpbmcgYWN0aW9uVHlwZSA9IHR5cGVPYmplY3QudG9XVEZTdHJpbmcoJmV4ZWMp
OworICAgIGlmIChhY3Rpb25UeXBlICE9ICJibG9jayIpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJVbnJvY29nbml6ZWQgYWN0aW9uOiBcIiVzXCIiLCBhY3Rpb25UeXBlLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYWN0aW9uLnR5cGUgPSBFeHRl
bnNpb25BY3Rpb25UeXBlOjpCbG9ja0xvYWQ7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh
dGljIHZvaWQgbG9hZFJ1bGUoRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwg
VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYgcnVsZUxpc3QpCit7CisgICAgQ29udGVudEV4
dGVuc2lvblJ1bGU6OlRyaWdnZXIgdHJpZ2dlcjsKKyAgICBpZiAoIWxvYWRUcmlnZ2VyKGV4ZWMs
IHJ1bGVPYmplY3QsIHRyaWdnZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBDb250ZW50RXh0
ZW5zaW9uUnVsZTo6QWN0aW9uIGFjdGlvbjsKKyAgICBpZiAoIWxvYWRBY3Rpb24oZXhlYywgcnVs
ZU9iamVjdCwgYWN0aW9uKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcnVsZUxpc3QuYXBwZW5k
KENvbnRlbnRFeHRlbnNpb25SdWxlKHRyaWdnZXIsIGFjdGlvbikpOworfQorCit2b2lkIGxvYWRF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJ1bGVzKQor
eworICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4gcnVsZUxpc3Q7CisKKyAgICBSZWZQ
dHI8Vk0+IHZtID0gVk06OmNyZWF0ZSgpOworCisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bS5n
ZXQoKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xvYmFsT2JqZWN0
OjpjcmVhdGUoKnZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp2bSwganNOdWxs
KCkpKTsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
OworICAgIEpTVmFsdWUgZGVjb2RlZFJ1bGVzID0gSlNPTlBhcnNlKGV4ZWMsIHJ1bGVzKTsKKyAg
ICBpZiAoZGVjb2RlZFJ1bGVzLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgSlNPYmplY3QqIHRvcExl
dmVsT2JqZWN0ID0gZGVjb2RlZFJ1bGVzLnRvT2JqZWN0KGV4ZWMpOworICAgICAgICBpZiAoIXRv
cExldmVsT2JqZWN0IHx8IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIkludmFsaWQgaW5wdXQsIHRoZSB0b3AgbGV2ZWwgc3RydWN0dXJlIGlzIG5vdCBh
biBvYmplY3QuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIWlzSlNBcnJheSh0b3BMZXZlbE9iamVjdCkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiSW52YWxpZCBpbnB1dCwgdGhlIHRvcCBsZXZlbCBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgSlNBcnJheSogdG9w
TGV2ZWxBcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4odG9wTGV2ZWxPYmplY3QpOworCisgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHRvcExldmVsQXJyYXktPmxlbmd0aCgpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSB0b3BMZXZlbEFycmF5LT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSB8fCAhdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIkludmFsaWQgb2JqZWN0IGluIHRoZSBhcnJheS4iKTsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSlNPYmplY3QqIHJ1bGVP
YmplY3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsKKyAgICAgICAgICAgIGlmICghcnVsZU9iamVj
dCB8fCBleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiSW52YWxpZCBydWxlIik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBsb2FkUnVsZSgqZXhlYywgKnJ1bGVPYmplY3QsIHJ1bGVMaXN0KTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZtLmNsZWFyKCk7CisKKyAgICBpZiAocnVsZUxpc3Qu
aXNFbXB0eSgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRW1wdHkgZXh0ZW5zaW9uLiIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpz
aGFyZWRJbnN0YW5jZSgpLnNldFJ1bGVMaXN0KGlkZW50aWZpZXIsIHJ1bGVMaXN0KTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgRXh0ZW5zaW9uc01hbmFnZXIKK30gLy8gbmFtZXNwYWNlIENvbnRlbnRF
eHRlbnNpb25zCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzM4MzZh
NTQzMmRkMjk1MmI4YzJmZmI4NWM3M2UzNWYwOThiMTYzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmgK
QEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29udGVudEV4dGVuc2lvbnNN
YW5hZ2VyX2gKKyNkZWZpbmUgQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyX2gKKworI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKKy8vIFRo
ZSBFeHRlbnNpb25zTWFuYWdlciBsb2FkcyBzZXJpYWxpemVkIGNvbnRlbnQgZXh0ZW5zaW9uIHJ1
bGVzIGRpcmVjdGx5IGludG8gV2ViQ29yZS4KK25hbWVzcGFjZSBFeHRlbnNpb25zTWFuYWdlciB7
CisKK3ZvaWQgbG9hZEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgcnVsZXMpOworCit9IC8vIG5hbWVzcGFjZSBFeHRlbnNpb25zTWFuYWdlcgorCit9IC8v
IG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2VuZGlmIC8vIENvbnRlbnRF
eHRlbnNpb25zTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNzQ0NWExY2FlOGZmNTVmOTg5OWJhMTUyNTU3ZDFkOWZiZTljYzZiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmNw
cApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJERkEuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisK
KyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKK0RGQTo6REZBKCkKKyAgICA6IG1fcm9vdCgwKQor
eworfQorCitERkE6OkRGQShWZWN0b3I8REZBTm9kZT4mJiBub2RlcywgdW5zaWduZWQgcm9vdElu
ZGV4KQorICAgIDogbV9ub2Rlcyhub2RlcykKKyAgICAsIG1fcm9vdChyb290SW5kZXgpCit7Cisg
ICAgQVNTRVJUKHJvb3RJbmRleCA8IG5vZGVzLnNpemUoKSk7Cit9CisKK0RGQTo6REZBKGNvbnN0
IERGQSYgZGZhKQorICAgIDogbV9ub2RlcyhkZmEubV9ub2RlcykKKyAgICAsIG1fcm9vdChkZmEu
bV9yb290KQoreworfQorCitERkEmIERGQTo6b3BlcmF0b3I9KGNvbnN0IERGQSYgZGZhKQorewor
ICAgIG1fbm9kZXMgPSBkZmEubV9ub2RlczsKKyAgICBtX3Jvb3QgPSBkZmEubV9yb290OworICAg
IHJldHVybiAqdGhpczsKK30KKwordW5zaWduZWQgREZBOjpuZXh0U3RhdGUodW5zaWduZWQgY3Vy
cmVudFN0YXRlLCBjaGFyIGNoYXJhY3RlciwgYm9vbCYgb2spIGNvbnN0Cit7CisgICAgQVNTRVJU
KGN1cnJlbnRTdGF0ZSA8IG1fbm9kZXMuc2l6ZSgpKTsKKworICAgIGNvbnN0IERGQU5vZGUmIG5v
ZGUgPSBtX25vZGVzW2N1cnJlbnRTdGF0ZV07CisgICAgYXV0byBuZXh0Tm9kZSA9IG5vZGUudHJh
bnNpdGlvbnMuZmluZChjaGFyYWN0ZXIpOworICAgIGlmIChuZXh0Tm9kZSA9PSBub2RlLnRyYW5z
aXRpb25zLmVuZCgpKSB7CisgICAgICAgIG9rID0gZmFsc2U7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICBvayA9IHRydWU7CisgICAgcmV0dXJuIG5leHROb2RlLT52YWx1ZTsKK30KKwor
VmVjdG9yPHVpbnQ2NF90PiBERkE6OmFjdGlvbnModW5zaWduZWQgY3VycmVudFN0YXRlKSBjb25z
dAoreworICAgIEFTU0VSVChjdXJyZW50U3RhdGUgPCBtX25vZGVzLnNpemUoKSk7CisgICAgcmV0
dXJuIG1fbm9kZXNbY3VycmVudFN0YXRlXS5hY3Rpb25zOworfQorCisjaWZuZGVmIE5ERUJVRwor
dm9pZCBERkE6OmRlYnVnUHJpbnREb3QoKSBjb25zdAoreworICAgIGRhdGFMb2dGKCJkaWdyYXBo
IERGQV9UcmFuc2l0aW9ucyB7XG4iKTsKKyAgICBkYXRhTG9nRigiICAgIHJhbmtkaXI9TFI7XG4i
KTsKKyAgICBkYXRhTG9nRigiICAgIG5vZGUgW3NoYXBlPWNpcmNsZV07XG4iKTsKKyAgICBkYXRh
TG9nRigiICAgIHtcbiIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGVzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGRhdGFMb2dGKCIgICAgICAgICAlZCBbbGFiZWw9PE5vZGUg
JWQiLCBpLCBpKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgYWN0aW9ucyA9IG1f
bm9kZXNbaV0uYWN0aW9uczsKKyAgICAgICAgaWYgKCFhY3Rpb25zLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgZGF0YUxvZ0YoIjxCUi8+QWN0aW9uczogIik7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGFjdGlvbkluZGV4ID0gMDsgYWN0aW9uSW5kZXggPCBhY3Rpb25zLnNpemUoKTsgKyth
Y3Rpb25JbmRleCkgeworICAgICAgICAgICAgICAgIGlmIChhY3Rpb25JbmRleCkKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoIiwgIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiVs
bHUiLCBhY3Rpb25zW2FjdGlvbkluZGV4XSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IGNvcnJlc3BvbmRpbmdERkFOb2RlcyA9IG1fbm9kZXNb
aV0uY29ycmVzcG9uZGluZ0RGQU5vZGVzOworICAgICAgICBBU1NFUlQoIWNvcnJlc3BvbmRpbmdE
RkFOb2Rlcy5pc0VtcHR5KCkpOworICAgICAgICBkYXRhTG9nRigiPEJSLz5ORkEgTm9kZXM6ICIp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGNvcnJlc3BvbmRpbmdERkFOb2RlSW5kZXggPSAwOyBj
b3JyZXNwb25kaW5nREZBTm9kZUluZGV4IDwgY29ycmVzcG9uZGluZ0RGQU5vZGVzLnNpemUoKTsg
Kytjb3JyZXNwb25kaW5nREZBTm9kZUluZGV4KSB7CisgICAgICAgICAgICBpZiAoY29ycmVzcG9u
ZGluZ0RGQU5vZGVJbmRleCkKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiLCAiKTsKKyAgICAg
ICAgICAgIGRhdGFMb2dGKCIlZCIsIGNvcnJlc3BvbmRpbmdERkFOb2Rlc1tjb3JyZXNwb25kaW5n
REZBTm9kZUluZGV4XSk7CisgICAgICAgIH0KKworICAgICAgICBkYXRhTG9nRigiPl0iKTsKKwor
ICAgICAgICBpZiAoIWFjdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgZGF0YUxvZ0YoIiBb
c2hhcGU9ZG91YmxlY2lyY2xlXSIpOworCisgICAgICAgIGRhdGFMb2dGKCI7XG4iKTsKKyAgICB9
CisgICAgZGF0YUxvZ0YoIiAgICB9XG4iKTsKKworICAgIGRhdGFMb2dGKCIgICAge1xuIik7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9kZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBzbG90IDogbV9ub2Rlc1tpXS50cmFuc2l0aW9ucykKKyAgICAg
ICAgICAgIGRhdGFMb2dGKCIgICAgICAgICVkIC0+ICVkIFtsYWJlbD1cIiVjXCJdO1xuIiwgaSwg
c2xvdC52YWx1ZSwgc2xvdC5rZXkpOworICAgIH0KKyAgICBkYXRhTG9nRigiICAgIH1cbiIpOwor
ICAgIGRhdGFMb2dGKCJ9XG4iKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBDb250ZW50
RXh0ZW5zaW9ucworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvREZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYTkyMmIxMDgzNzQzNzlhODU3N2I5YWFkMWJlN2RhMjg4NTllOTE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgKQEAg
LTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgREZBX2gKKyNkZWZpbmUg
REZBX2gKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJERkFO
b2RlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKKy8vIFRoZSBERkEgYWJzdHJhY3QgYSBw
YXJ0aWFsIERGQSBncmFwaCBpbiBhIGNvbXBhY3QgZm9ybS4KK2NsYXNzIERGQSB7CitwdWJsaWM6
CisgICAgREZBKCk7CisgICAgREZBKFZlY3RvcjxERkFOb2RlPiYmIG5vZGVzLCB1bnNpZ25lZCBy
b290SW5kZXgpOworICAgIERGQShjb25zdCBERkEmIGRmYSk7CisKKyAgICBERkEmIG9wZXJhdG9y
PShjb25zdCBERkEmKTsKKworICAgIHVuc2lnbmVkIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jv
b3Q7IH0KKyAgICAvLyBJZiB0aGVyZSBpcyBhIHRyYW5zaXRpb24gdG8gYSB2YWxpZCBzdGF0ZSBv
biAiY2hhcmFjdGVyIiwgcmV0dXJuIHRoYXQgc3RhdGUgYW5kIHNldCBvayB0byB0cnVlLgorICAg
IC8vIE90aGVyd2lzZSwgdGhlIHJldHVybiB2YWx1ZSBpcyB1bmRlZmluZWQgYW5kIG9rIGlzIGZh
bHNlLgorICAgIHVuc2lnbmVkIG5leHRTdGF0ZSh1bnNpZ25lZCBjdXJyZW50U3RhdGUsIGNoYXIg
Y2hhcmFjdGVyLCBib29sJiBvaykgY29uc3Q7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBhY3Rpb25z
KHVuc2lnbmVkIGN1cnJlbnRTdGF0ZSkgY29uc3Q7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9p
ZCBkZWJ1Z1ByaW50RG90KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8
REZBTm9kZT4gbV9ub2RlczsKKyAgICB1bnNpZ25lZCBtX3Jvb3Q7Cit9OworCit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CisKKyNlbmRpZiAvLyBERkFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvREZBTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZB
Tm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQyMjAzMDA2NzM2ZjJmOGFiOWZiOTlmMWQzYWQzNGRmN2M2YjYy
NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9E
RkFOb2RlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgREZB
Tm9kZV9oCisjZGVmaW5lIERGQU5vZGVfaAorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisK
Ky8vIEEgREZBTm9kZSBhYnN0cmFjdCB0aGUgdHJhbnNpdGlvbiB0YWJsZSBvdXQgb2YgYSBERkEg
c3RhdGUuIElmIGEgc3RhdGUgaXMgYWNjZXB0aW5nLCB0aGUgREZBTm9kZSBhbHNvIGhhdmUKKy8v
IHRoZSBhY3Rpb25zIGZvciB0aGF0IHN0YXRlLgorY2xhc3MgREZBTm9kZSB7CitwdWJsaWM6Cisg
ICAgSGFzaE1hcDx1aW50MTZfdCwgdW5zaWduZWQ+IHRyYW5zaXRpb25zOworICAgIFZlY3Rvcjx1
aW50NjRfdD4gYWN0aW9uczsKKworI2lmbmRlZiBOREVCVUcKKyAgICBWZWN0b3I8dW5zaWduZWQ+
IGNvcnJlc3BvbmRpbmdERkFOb2RlczsKKyNlbmRpZgorfTsKKworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjZW5k
aWYgLy8gREZBTm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9ORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MWU5YTdlMjc4NGIyYjE1ZWUwMGRjODBhMjhjZDJkMTIwNTc4OGM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmNwcApA
QCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJORkEuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNp
bmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKworTkZBOjpO
RkEoKQorICAgIDogbV9yb290KGNyZWF0ZU5vZGUoKSkKK3sKK30KKwordW5zaWduZWQgTkZBOjpj
cmVhdGVOb2RlKHVpbnQ2NF90IHJ1bGVJZCkKK3sKKyAgICB1bnNpZ25lZCBuZXh0SWQgPSBtX25v
ZGVzLnNpemUoKTsKKyAgICBtX25vZGVzLmFwcGVuZChORkFOb2RlKHJ1bGVJZCkpOworICAgIHJl
dHVybiBuZXh0SWQ7Cit9CisKK3ZvaWQgTkZBOjphZGRUcmFuc2l0aW9uKHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvLCBjaGFyIGNoYXJhY3RlcikKK3sKKyAgICBBU1NFUlQoZnJvbSA8IG1fbm9k
ZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQodG8gPCBtX25vZGVzLnNpemUoKSk7CisgICAgQVNTRVJU
KGNoYXJhY3Rlcik7CisKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbm9kZXNbZnJvbV0udHJhbnNp
dGlvbnMuYWRkKGNoYXJhY3RlciwgSGFzaFNldDx1bnNpZ25lZD4oKSk7CisgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5hZGQodG8pOworfQorCit2b2lkIE5GQTo6YWRkRXBzaWxvblRyYW5z
aXRpb24odW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pCit7CisgICAgQVNTRVJUKGZyb20gPCBt
X25vZGVzLnNpemUoKSk7CisgICAgQVNTRVJUKHRvIDwgbV9ub2Rlcy5zaXplKCkpOworCisgICAg
YXV0byBhZGRSZXN1bHQgPSBtX25vZGVzW2Zyb21dLnRyYW5zaXRpb25zLmFkZChlcHNpbG9uVHJh
bnNpdGlvbkNoYXJhY3RlciwgSGFzaFNldDx1bnNpZ25lZD4oKSk7CisgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5hZGQodG8pOworfQorCit2b2lkIE5GQTo6c2V0RmluYWwodW5zaWduZWQg
bm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSA8IG1fbm9kZXMuc2l6ZSgpKTsKKyAgICBtX25vZGVz
W25vZGVdLmlzRmluYWwgPSB0cnVlOworfQorCisjaWZuZGVmIE5ERUJVRwordm9pZCBORkE6OmRl
YnVnUHJpbnREb3QoKSBjb25zdAoreworICAgIGRhdGFMb2dGKCJkaWdyYXBoIE5GQV9UcmFuc2l0
aW9ucyB7XG4iKTsKKyAgICBkYXRhTG9nRigiICAgIHJhbmtkaXI9TFI7XG4iKTsKKyAgICBkYXRh
TG9nRigiICAgIG5vZGUgW3NoYXBlPWNpcmNsZV07XG4iKTsKKyAgICBkYXRhTG9nRigiICAgIHtc
biIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGVzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChtX25vZGVzW2ldLnJ1bGVJZCAgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpKQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAgICAgICVkIFtsYWJl
bD1cIk5vZGUgJWRcIl0iLCBpLCBpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YUxv
Z0YoIiAgICAgICAgICVkIFtsYWJlbD08Tm9kZSAlZDxCUi8+KFJ1bGUgJWxsdSk+XSIsIGksIGks
IG1fbm9kZXNbaV0ucnVsZUlkKTsKKworICAgICAgICBpZiAobV9ub2Rlc1tpXS5pc0ZpbmFsKQor
ICAgICAgICAgICAgZGF0YUxvZ0YoIiBbc2hhcGU9ZG91YmxlY2lyY2xlXSIpOworCisgICAgICAg
IGRhdGFMb2dGKCI7XG4iKTsKKyAgICB9CisgICAgZGF0YUxvZ0YoIiAgICB9XG4iKTsKKworICAg
IGRhdGFMb2dGKCIgICAge1xuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9k
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzbG90IDogbV9ub2Rl
c1tpXS50cmFuc2l0aW9ucykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBuZXh0U3RhdGUg
OiBzbG90LnZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKHNsb3Qua2V5ID09IGVwc2lsb25U
cmFuc2l0aW9uQ2hhcmFjdGVyKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAg
ICAlZCAtPiAlZCBbbGFiZWw9XCLJm1wiXTtcbiIsIGksIG5leHRTdGF0ZSk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAlZCAtPiAl
ZCBbbGFiZWw9XCIlY1wiXTtcbiIsIGksIG5leHRTdGF0ZSwgc2xvdC5rZXkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIGRhdGFMb2dGKCIgICAgfVxuIik7CisgICAgZGF0
YUxvZ0YoIn1cbiIpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNp
b25zCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ORkEuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdjYzE0NDU3NDkyNDc3ZDE2MWVmYWE4OTJjYzYxODNlMTBhNmRhZDcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuaApAQCAtMCwwICsx
LDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBORkFfaAorI2RlZmluZSBORkFfaAorCisjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIk5GQU5vZGUuaCIKKyNpbmNs
dWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKK2NsYXNzIE5GQVRvREZBOwor
CisvLyBUaGUgTkZBIHByb3ZpZGVzIGEgd2F5IHRvIGJ1aWxkIGEgTkZBIGdyYXBoIHdpdGggY2hh
cmFjdGVycyBvciBlcHNpbG9uIGFzIHRyYW5zaXRpb25zLgorLy8gVGhlIG5vZGVzIGFyZSBhY2Nl
c3NlZCB0aHJvdWdoIGFuIGlkZW50aWZpZXIuCitjbGFzcyBORkEgeworcHVibGljOgorICAgIE5G
QSgpOworICAgIHVuc2lnbmVkIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KKyAgICB1
bnNpZ25lZCBjcmVhdGVOb2RlKHVpbnQ2NF90IHJ1bGVJZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDY0X3Q+OjptYXgoKSk7CisKKyAgICB2b2lkIGFkZFRyYW5zaXRpb24odW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8sIGNoYXIgY2hhcmFjdGVyKTsKKyAgICB2b2lkIGFkZEVwc2lsb25UcmFu
c2l0aW9uKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKTsKKyAgICB2b2lkIHNldEZpbmFsKHVu
c2lnbmVkIG5vZGUpOworCisjaWZuZGVmIE5ERUJVRworICAgIHZvaWQgZGVidWdQcmludERvdCgp
IGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5GQVRvREZBOwor
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVwc2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVyID0g
MjU2OworCisgICAgVmVjdG9yPE5GQU5vZGU+IG1fbm9kZXM7CisgICAgdW5zaWduZWQgbV9yb290
OworfTsKKworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQorCisjZW5kaWYgLy8gTkZBX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY5OTE3YzQ2OThmYTYy
ZjI3OTU2YmI4MTc5M2ZjYzVlMjRlM2FlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTkZBTm9kZS5oIgorCisjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworCitORkFOb2RlOjpORkFOb2RlKHVpbnQ2NF90IHJ1
bGVJZCkKKyAgICA6IGlzRmluYWwoZmFsc2UpCisgICAgLCBydWxlSWQocnVsZUlkKQoreworfQor
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ORkFOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzIzOWQ2NjNmYTM5OTc0NTI1MjgxZjRlMTZjMjllZTViMTZkMWM4OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUu
aApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBORkFOb2RlX2gK
KyNkZWZpbmUgTkZBTm9kZV9oCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKKy8vIEEg
TkZBTm9kZSBhYnN0cmFjdCB0aGUgdHJhbnNpdGlvbiB0YWJsZSBvdXQgb2YgYSBORkEgc3RhdGUu
CitjbGFzcyBORkFOb2RlIHsKK3B1YmxpYzoKKyAgICBORkFOb2RlKHVpbnQ2NF90IHJ1bGVJZCk7
CisKKyAgICBIYXNoTWFwPHVpbnQxNl90LCBIYXNoU2V0PHVuc2lnbmVkPj4gdHJhbnNpdGlvbnM7
CisgICAgYm9vbCBpc0ZpbmFsOworICAgIGNvbnN0IHVpbnQ2NF90IHJ1bGVJZDsKK307CisKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKKworI2VuZGlmIC8vIE5GQU5vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyNDNjMDI5NjU4OWI1ODc0NGEw
MTgzM2Y2YjgxYTFkZjkwNmI1YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTkZBVG9ERkEuaCIKKwor
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJERkFOb2RlLmgiCisj
aW5jbHVkZSAiTkZBLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CisKK3R5cGVkZWYgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4g
Tm9kZUlkU2V0OworCitzdGF0aWMgTm9kZUlkU2V0IGVwc2lsb25DbG9zdXJlKGNvbnN0IE5vZGVJ
ZFNldCYgbm9kZVNldCwgY29uc3QgVmVjdG9yPE5GQU5vZGU+JiBncmFwaCwgdW5zaWduZWQgZXBz
aWxvblRyYW5zaXRpb25DaGFyYWN0ZXIpCit7CisgICAgQVNTRVJUKCFub2RlU2V0LmlzRW1wdHko
KSk7CisgICAgQVNTRVJUKCFncmFwaC5pc0VtcHR5KCkpOworCisgICAgLy8gV2UgZ28gYnJlYWR0
aC1maXJzdCBmaXJzdCBpbnRvIG91ciBncmFwaCBmb2xsb3dpbmcgYWxsIHRoZSBlcHNpbG9uIHRy
YW5zaXRpb24uIEF0IGVhY2ggZ2VuZXJhdGlvbiwKKyAgICAvLyBkaXNjb3ZlcmVkTm9kZXMgY29u
dGFpbnMgYWxsIHRoZSBuZXcgbm9kZXMgd2UgaGF2ZSBkaXNjb3ZlcmVkIGJ5IGZvbGxvd2luZyBh
IHNpbmdsZSBlcHNpbG9uIHRyYW5zaXRpb24KKyAgICAvLyBvdXQgb2YgdGhlIHByZXZpb3VzIHNl
dCBvZiBub2Rlcy4KKyAgICBOb2RlSWRTZXQgb3V0cHV0Tm9kZVNldCA9IG5vZGVTZXQ7CisgICAg
Tm9kZUlkU2V0IGRpc2NvdmVyZWROb2RlcyA9IG5vZGVTZXQ7CisgICAgZG8geworICAgICAgICBv
dXRwdXROb2RlU2V0LmFkZChkaXNjb3ZlcmVkTm9kZXMuYmVnaW4oKSwgZGlzY292ZXJlZE5vZGVz
LmVuZCgpKTsKKworICAgICAgICBOb2RlSWRTZXQgbmV4dEdlbmVyYXRpb25EaXNjb3ZlcmVkTm9k
ZXM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSWQgOiBkaXNjb3ZlcmVkTm9kZXMpIHsK
KyAgICAgICAgICAgIGNvbnN0IE5GQU5vZGUmIG5vZGUgPSBncmFwaFtub2RlSWRdOworICAgICAg
ICAgICAgYXV0byBlcHNpbG9uVHJhbnNpdGlvblNsb3QgPSBub2RlLnRyYW5zaXRpb25zLmZpbmQo
ZXBzaWxvblRyYW5zaXRpb25DaGFyYWN0ZXIpOworICAgICAgICAgICAgaWYgKGVwc2lsb25UcmFu
c2l0aW9uU2xvdCAhPSBub2RlLnRyYW5zaXRpb25zLmVuZCgpKSB7CisgICAgICAgICAgICAgICAg
Y29uc3QgSGFzaFNldDx1bnNpZ25lZD4mIHRhcmdldHMgPSBlcHNpbG9uVHJhbnNpdGlvblNsb3Qt
PnZhbHVlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgdGFyZ2V0Tm9kZUlkIDogdGFy
Z2V0cykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW91dHB1dE5vZGVTZXQuY29udGFpbnMo
dGFyZ2V0Tm9kZUlkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRHZW5lcmF0aW9uRGlz
Y292ZXJlZE5vZGVzLmFkZCh0YXJnZXROb2RlSWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRpc2NvdmVyZWROb2RlcyA9IG5leHRHZW5l
cmF0aW9uRGlzY292ZXJlZE5vZGVzOworICAgIH0gd2hpbGUgKCFkaXNjb3ZlcmVkTm9kZXMuaXNF
bXB0eSgpKTsKKworICAgIEFTU0VSVCghb3V0cHV0Tm9kZVNldC5pc0VtcHR5KCkpOworICAgIHJl
dHVybiBvdXRwdXROb2RlU2V0OworfQorCit0eXBlZGVmIEhhc2hNYXA8dWludDE2X3QsIE5vZGVJ
ZFNldCwgRGVmYXVsdEhhc2g8dWludDE2X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVpbnQxNl90Pj4gU2V0VHJhbnNpdGlvbnNFeGNsdWRpbmdFcHNpbG9uOwor
CitzdGF0aWMgU2V0VHJhbnNpdGlvbnNFeGNsdWRpbmdFcHNpbG9uIHNldFRyYW5zaXRpb25zRXhj
bHVkaW5nRXBzaWxvbihjb25zdCBOb2RlSWRTZXQmIG5vZGVTZXQsIGNvbnN0IFZlY3RvcjxORkFO
b2RlPiYgZ3JhcGgsIHVuc2lnbmVkIGVwc2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVyKQoreworICAg
IEFTU0VSVCghbm9kZVNldC5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghZ3JhcGguaXNFbXB0eSgp
KTsKKworICAgIFNldFRyYW5zaXRpb25zRXhjbHVkaW5nRXBzaWxvbiBvdXRwdXRTZXRUcmFuc2l0
aW9uc0V4Y2x1ZGluZ0Vwc2lsb247CisKKyAgICBmb3IgKHVuc2lnbmVkIG5vZGVJZCA6IG5vZGVT
ZXQpIHsKKyAgICAgICAgY29uc3QgTkZBTm9kZSYgbm9kZSA9IGdyYXBoW25vZGVJZF07CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgdHJhbnNpdGlvblNsb3QgOiBub2RlLnRyYW5zaXRpb25zKSB7
CisgICAgICAgICAgICBpZiAodHJhbnNpdGlvblNsb3Qua2V5ICE9IGVwc2lsb25UcmFuc2l0aW9u
Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICAgICAgYXV0byBleGlzdGluZ1RyYW5zaXRpb24gPSBv
dXRwdXRTZXRUcmFuc2l0aW9uc0V4Y2x1ZGluZ0Vwc2lsb24uZmluZCh0cmFuc2l0aW9uU2xvdC5r
ZXkpOworICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1RyYW5zaXRpb24gIT0gb3V0cHV0U2V0
VHJhbnNpdGlvbnNFeGNsdWRpbmdFcHNpbG9uLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICBl
eGlzdGluZ1RyYW5zaXRpb24tPnZhbHVlLmFkZCh0cmFuc2l0aW9uU2xvdC52YWx1ZS5iZWdpbigp
LCB0cmFuc2l0aW9uU2xvdC52YWx1ZS5lbmQoKSk7CisgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGVJZFNldCBuZXdTZXQ7CisgICAgICAgICAgICAgICAgICAg
IG5ld1NldC5hZGQodHJhbnNpdGlvblNsb3QudmFsdWUuYmVnaW4oKSwgdHJhbnNpdGlvblNsb3Qu
dmFsdWUuZW5kKCkpOworICAgICAgICAgICAgICAgICAgICBvdXRwdXRTZXRUcmFuc2l0aW9uc0V4
Y2x1ZGluZ0Vwc2lsb24uYWRkKHRyYW5zaXRpb25TbG90LmtleSwgbmV3U2V0KTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
b3V0cHV0U2V0VHJhbnNpdGlvbnNFeGNsdWRpbmdFcHNpbG9uOworfQorCitjbGFzcyBIYXNoYWJs
ZU5vZGVJZFNldCB7CitwdWJsaWM6CisgICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1
ZSB9OworICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRlZFZhbHVlIH07CisKKyAgICBI
YXNoYWJsZU5vZGVJZFNldChFbXB0eVZhbHVlVGFnKSB7IH0KKyAgICBIYXNoYWJsZU5vZGVJZFNl
dChEZWxldGVkVmFsdWVUYWcpCisgICAgICAgIDogbV9pc0RlbGV0ZWQodHJ1ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgSGFzaGFibGVOb2RlSWRTZXQoY29uc3QgTm9kZUlkU2V0JiBub2RlSWRTZXQp
CisgICAgICAgIDogbV9ub2RlSWRTZXQobm9kZUlkU2V0KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFub2RlSWRTZXQuaXNFbXB0eSgpKTsKKyAgICB9CisKKyAgICBIYXNoYWJsZU5vZGVJZFNldChI
YXNoYWJsZU5vZGVJZFNldCYmIG90aGVyKQorICAgICAgICA6IG1fbm9kZUlkU2V0KG90aGVyLm1f
bm9kZUlkU2V0KQorICAgICAgICAsIG1faXNEZWxldGVkKG90aGVyLm1faXNEZWxldGVkKQorICAg
IHsKKyAgICAgICAgb3RoZXIubV9ub2RlSWRTZXQuY2xlYXIoKTsKKyAgICAgICAgb3RoZXIubV9p
c0RlbGV0ZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBIYXNoYWJsZU5vZGVJZFNldCYgb3BlcmF0
b3I9KEhhc2hhYmxlTm9kZUlkU2V0JiYgb3RoZXIpCisgICAgeworICAgICAgICBtX25vZGVJZFNl
dCA9IG90aGVyLm1fbm9kZUlkU2V0OworICAgICAgICBvdGhlci5tX25vZGVJZFNldC5jbGVhcigp
OworICAgICAgICBtX2lzRGVsZXRlZCA9IG90aGVyLm1faXNEZWxldGVkOworICAgICAgICBvdGhl
ci5tX2lzRGVsZXRlZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX25vZGVJZFNldC5pc0VtcHR5
KCk7IH0KKyAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlbGV0
ZWQ7IH0KKworICAgIE5vZGVJZFNldCBub2RlSWRTZXQoKSBjb25zdCB7IHJldHVybiBtX25vZGVJ
ZFNldDsgfQorCitwcml2YXRlOgorICAgIE5vZGVJZFNldCBtX25vZGVJZFNldDsKKyAgICBib29s
IG1faXNEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgSGFzaGFibGVOb2RlSWRTZXRIYXNo
IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBIYXNoYWJsZU5vZGVJZFNldCYgcCkK
KyAgICB7CisgICAgICAgIHVuc2lnbmVkIGhhc2ggPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVk
IG5vZGVJZCA6IHAubm9kZUlkU2V0KCkpCisgICAgICAgICAgICBoYXNoIF49IERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaDo6aGFzaChub2RlSWQpOworICAgICAgICByZXR1cm4gaGFzaDsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoYWJsZU5vZGVJZFNldCYgYSwg
Y29uc3QgSGFzaGFibGVOb2RlSWRTZXQmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5ub2Rl
SWRTZXQoKSA9PSBiLm5vZGVJZFNldCgpICYmIGEuaXNEZWxldGVkVmFsdWUoKSA9PSBiLmlzRGVs
ZXRlZFZhbHVlKCk7CisgICAgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3N0cnVjdCBIYXNoYWJsZU5vZGVJZFNldEhh
c2hUcmFpdHMgOiBwdWJsaWMgV1RGOjpDdXN0b21IYXNoVHJhaXRzPEhhc2hhYmxlTm9kZUlkU2V0
PiB7IH07CisKK3R5cGVkZWYgSGFzaE1hcDxIYXNoYWJsZU5vZGVJZFNldCwgdW5zaWduZWQsIEhh
c2hhYmxlTm9kZUlkU2V0SGFzaCwgSGFzaGFibGVOb2RlSWRTZXRIYXNoVHJhaXRzPiBORkFUb0RG
QU5vZGVNYXA7CisKK3N0YXRpYyB1bnNpZ25lZCBhZGRERkFTdGF0ZShWZWN0b3I8REZBTm9kZT4m
IGRmYUdyYXBoLCBORkFUb0RGQU5vZGVNYXAmIG5mYVRvREZBTm9kZU1hcCwgY29uc3QgVmVjdG9y
PE5GQU5vZGU+JiBuZmFHcmFwaCwgTm9kZUlkU2V0IG5mYU5vZGVzLCB1bnNpZ25lZCBlcHNpbG9u
VHJhbnNpdGlvbkNoYXJhY3RlcikKK3sKKyAgICBBU1NFUlQoIW5mYVRvREZBTm9kZU1hcC5jb250
YWlucyhuZmFOb2RlcykpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZXBzaWxvbkNsb3N1cmUo
bmZhTm9kZXMsIG5mYUdyYXBoLCBlcHNpbG9uVHJhbnNpdGlvbkNoYXJhY3RlcikgPT0gIG5mYU5v
ZGVzLCAiV2Ugc2hvdWxkIG5ldmVyIGNyZWF0ZSBERkEgc3RhdGVzIGZvciBub24tY2xvc2VkIHNl
dHMgb2YgTkZBIHN0YXRlcy4iKTsKKworICAgIERGQU5vZGUgbmV3REZBTm9kZTsKKworICAgIEhh
c2hTZXQ8dWludDY0X3QsIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IGFjdGlvbnM7CisgICAgZm9yICh1bnNp
Z25lZCBuZmFOb2RlSWQgOiBuZmFOb2RlcykgeworICAgICAgICBjb25zdCBORkFOb2RlJiBuZmFO
b2RlID0gbmZhR3JhcGhbbmZhTm9kZUlkXTsKKyAgICAgICAgaWYgKG5mYU5vZGUuaXNGaW5hbCkK
KyAgICAgICAgICAgIGFjdGlvbnMuYWRkKG5mYU5vZGUucnVsZUlkKTsKKyNpZm5kZWYgTkRFQlVH
CisgICAgICAgIG5ld0RGQU5vZGUuY29ycmVzcG9uZGluZ0RGQU5vZGVzLmFwcGVuZChuZmFOb2Rl
SWQpOworI2VuZGlmCisgICAgfQorCisgICAgZm9yICh1aW50NjRfdCBhY3Rpb24gOiBhY3Rpb25z
KQorICAgICAgICBuZXdERkFOb2RlLmFjdGlvbnMuYXBwZW5kKGFjdGlvbik7CisKKyAgICB1bnNp
Z25lZCBkZmFOb2RlSWQgPSBkZmFHcmFwaC5zaXplKCk7CisgICAgZGZhR3JhcGguYXBwZW5kKG5l
d0RGQU5vZGUpOworICAgIG5mYVRvREZBTm9kZU1hcC5hZGQobmZhTm9kZXMsIGRmYU5vZGVJZCk7
CisgICAgcmV0dXJuIGRmYU5vZGVJZDsKK30KKwordHlwZWRlZiBIYXNoU2V0PEhhc2hhYmxlTm9k
ZUlkU2V0LCBIYXNoYWJsZU5vZGVJZFNldEhhc2gsIEhhc2hhYmxlTm9kZUlkU2V0SGFzaFRyYWl0
cz4gU2V0T2ZOb2RlU2V0OworCitERkEgTkZBVG9ERkE6OmNvbnZlcnQoY29uc3QgTkZBJiBuZmEp
Cit7CisgICAgVmVjdG9yPERGQU5vZGU+IGRmYUdyYXBoOworICAgIE5GQVRvREZBTm9kZU1hcCBu
ZmFUb0RGQU5vZGVNYXA7CisKKyAgICBTZXRPZk5vZGVTZXQgcHJvY2Vzc2VkU3RhdGVTZXRzOwor
ICAgIFNldE9mTm9kZVNldCB1bnByb2Nlc3NlZFN0YXRlU2V0czsKKworICAgIGNvbnN0IFZlY3Rv
cjxORkFOb2RlPiYgbmZhR3JhcGggPSBuZmEubV9ub2RlczsKKworICAgIE5vZGVJZFNldCBpbml0
aWFsU2V0KHsgbmZhLnJvb3QoKSB9KTsKKyAgICBOb2RlSWRTZXQgY2xvc2VkSW5pdGlhbFNldCA9
IGVwc2lsb25DbG9zdXJlKGluaXRpYWxTZXQsIG5mYUdyYXBoLCBORkE6OmVwc2lsb25UcmFuc2l0
aW9uQ2hhcmFjdGVyKTsKKworICAgIGFkZERGQVN0YXRlKGRmYUdyYXBoLCBuZmFUb0RGQU5vZGVN
YXAsIG5mYUdyYXBoLCBjbG9zZWRJbml0aWFsU2V0LCBORkE6OmVwc2lsb25UcmFuc2l0aW9uQ2hh
cmFjdGVyKTsKKyAgICB1bnByb2Nlc3NlZFN0YXRlU2V0cy5hZGQoY2xvc2VkSW5pdGlhbFNldCk7
CisKKyAgICBkbyB7CisgICAgICAgIEhhc2hhYmxlTm9kZUlkU2V0IHN0YXRlU2V0ID0gdW5wcm9j
ZXNzZWRTdGF0ZVNldHMudGFrZUFueSgpOworCisgICAgICAgIEFTU0VSVCghcHJvY2Vzc2VkU3Rh
dGVTZXRzLmNvbnRhaW5zKHN0YXRlU2V0KSk7CisgICAgICAgIHByb2Nlc3NlZFN0YXRlU2V0cy5h
ZGQoc3RhdGVTZXQubm9kZUlkU2V0KCkpOworCisgICAgICAgIHVuc2lnbmVkIGRmYU5vZGVJZCA9
IG5mYVRvREZBTm9kZU1hcC5nZXQoc3RhdGVTZXQpOworCisgICAgICAgIFNldFRyYW5zaXRpb25z
RXhjbHVkaW5nRXBzaWxvbiB0cmFuc2l0aW9uc0Zyb21DbG9zZWRTZXQgPSBzZXRUcmFuc2l0aW9u
c0V4Y2x1ZGluZ0Vwc2lsb24oc3RhdGVTZXQubm9kZUlkU2V0KCksIG5mYUdyYXBoLCBORkE6OmVw
c2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVyKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFu
c2l0aW9uU2xvdCA6IHRyYW5zaXRpb25zRnJvbUNsb3NlZFNldCkgeworICAgICAgICAgICAgTm9k
ZUlkU2V0IGNsb3NlZFRhcmdldE5vZGVTZXQgPSBlcHNpbG9uQ2xvc3VyZSh0cmFuc2l0aW9uU2xv
dC52YWx1ZSwgbmZhR3JhcGgsIE5GQTo6ZXBzaWxvblRyYW5zaXRpb25DaGFyYWN0ZXIpOworICAg
ICAgICAgICAgdW5zaWduZWQgbmV3REZBTm9kZUlkOworCisgICAgICAgICAgICBjb25zdCBhdXRv
JiBleGlzdGluZ05GQVRvREZBQXNzb2NpYXRpb24gPSBuZmFUb0RGQU5vZGVNYXAuZmluZChjbG9z
ZWRUYXJnZXROb2RlU2V0KTsKKyAgICAgICAgICAgIGlmIChleGlzdGluZ05GQVRvREZBQXNzb2Np
YXRpb24gIT0gbmZhVG9ERkFOb2RlTWFwLmVuZCgpKQorICAgICAgICAgICAgICAgIG5ld0RGQU5v
ZGVJZCA9IGV4aXN0aW5nTkZBVG9ERkFBc3NvY2lhdGlvbi0+dmFsdWU7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbmV3REZBTm9kZUlkID0gYWRkREZBU3RhdGUoZGZhR3JhcGgs
IG5mYVRvREZBTm9kZU1hcCwgbmZhR3JhcGgsIGNsb3NlZFRhcmdldE5vZGVTZXQsIE5GQTo6ZXBz
aWxvblRyYW5zaXRpb25DaGFyYWN0ZXIpOworCisgICAgICAgICAgICBBU1NFUlQobmV3REZBTm9k
ZUlkIDwgZGZhR3JhcGguc2l6ZSgpKTsKKworICAgICAgICAgICAgY29uc3QgYXV0byBhZGRSZXN1
bHQgPSBkZmFHcmFwaFtkZmFOb2RlSWRdLnRyYW5zaXRpb25zLnNldCh0cmFuc2l0aW9uU2xvdC5r
ZXksIG5ld0RGQU5vZGVJZCk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwg
YWRkUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgICAgICAgICBpZiAoIXByb2Nlc3NlZFN0YXRl
U2V0cy5jb250YWlucyhjbG9zZWRUYXJnZXROb2RlU2V0KSkKKyAgICAgICAgICAgICAgICB1bnBy
b2Nlc3NlZFN0YXRlU2V0cy5hZGQoY2xvc2VkVGFyZ2V0Tm9kZVNldCk7CisgICAgICAgIH0KKyAg
ICB9IHdoaWxlICghdW5wcm9jZXNzZWRTdGF0ZVNldHMuaXNFbXB0eSgpKTsKKworICAgIEFTU0VS
VChwcm9jZXNzZWRTdGF0ZVNldHMuc2l6ZSgpID09IG5mYVRvREZBTm9kZU1hcC5zaXplKCkpOwor
CisgICAgcmV0dXJuIERGQShXVEY6Om1vdmUoZGZhR3JhcGgpLCAwKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgQ29udGVudEV4dGVuc2lvbnMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ORkFUb0RGQS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNmE1ZjcyNTc4OGY4NTdmYmIzNDQ4
ZmU2MGQwYjM0MjE0YzI3MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE5GQVRvREZBX2gKKyNkZWZpbmUgTkZBVG9ERkFfaAorCisjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIkRGQS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKK2NsYXNzIE5GQTsKKwor
Ly8gTkZBVG9ERkEgcHJvdmlkZXMgYSB3YXkgdG8gYnVpbGQgYSBERkEgY29ycmVzcG9uZGluZyB0
byBhIE5GQS4KK2NsYXNzIE5GQVRvREZBIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgREZBIGNvbnZl
cnQoY29uc3QgTkZBJik7Cit9OworCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNlbmRpZiAvLyBORkFUb0RGQV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA5OTBhZTg5OThjYTFkZjZhNjBiYjgwOTkyNzE5NmJkZWJjNGQ3NDU4Li44
N2FiMzlmMjIzZDJlZGVkNzhiZWU4NjU5OGM5OTgwZmQ1M2QxNzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJDYWNoZWRYU0xTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAi
Q2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29udGVudEV4
dGVuc2lvbnNJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNDUzLDYg
KzQ1NCwxMSBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAgIGlmICghY2FuUmVxdWVzdCh0
eXBlLCB1cmwsIHJlcXVlc3Qub3B0aW9ucygpLCByZXF1ZXN0LmZvclByZWxvYWQoKSkpCiAgICAg
ICAgIHJldHVybiAwOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBpZiAo
Q29udGVudEV4dGVuc2lvbnM6OnNob3VsZEJsb2NrVVJMKHVybCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworI2VuZGlmCisKICAgICBpZiAobWVtb3J5Q2FjaGUoKS5kaXNhYmxlZCgpKSB7CiAg
ICAgICAgIERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291
cmNlcy5maW5kKHVybC5zdHJpbmcoKSk7CiAgICAgICAgIGlmIChpdCAhPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmVuZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggMTYzZjYyMzdhYmI5M2IwY2YzZTNmZTdiNTM3YjYx
MTQ4NDk3ZGU0Mi4uOGE4NTY1ZmIwMGVhZTJmYTBmNmQ3NmUyN2Y2MGRkZTBmMWVhNjc3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQpAQCAtMjQ0LDYgKzI0NCwyMCBAQCBzdGF0aWMgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0
UG9saWN5IHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShOU0hUVFBDb29raWVBY2NlcAogICAgIF9w
cm9jZXNzUG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRJ
bmplY3RlZEJ1bmRsZVBhcmFtZXRlcihwYXJhbWV0ZXIsIElQQzo6RGF0YVJlZmVyZW5jZShzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSkpKTsK
IH0KIAorLSAodm9pZClfbG9hZENvbnRlbnRFeHRlbnNpb25XaXRoSWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyIHNlcmlhbGl6ZWRSdWxlczooTlNTdHJpbmcgKilzZXJpYWxpemVkUnVs
ZXMgc3VjY2Vzc0NvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RpY3Rpb25hcnkgKmluZm8p
KXN1Y2Nlc3NDb21wbGV0aW9uSGFuZGxlciBlcnJvckNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0Vycm9yICplcnJvcikpZXJyb3JDb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCisgICAgLy8gRm9yIHRoaXMgZXhwZXJpbWVudGF0aW9uLCB0aGUg
Q29udGVudEV4dGVuc2lvbnMgYXJlIGhhbmRsZWQgYnkgZWFjaCBXZWJQcm9jZXNzLgorICAgIC8v
IEV2ZW50dWFsbHkgdGhlIENvbnRlbnRFeHRlbnNpb24gd2lsbCBoYXZlIHRvIGJlIGhhbmRsZWQg
c2VwYXJhdGVseSBmcm9tIHRoZSBXZWJQcm9jZXNzZXMgYW5kIHdlJ2xsIGJlIGFibGUKKyAgICAv
LyB0byBwcm92aWRlIG1lYW5pbmdmdWwgY29tcGxldGlvbiBoYW5kbGVycy4KKyAgICBVTlVTRURf
UEFSQU0oZXJyb3JDb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBfcHJvY2Vzc1Bvb2wtPmxvYWRD
b250ZW50RXh0ZW5zaW9uKGlkZW50aWZpZXIsIHNlcmlhbGl6ZWRSdWxlcyk7CisKKyAgICBzdWNj
ZXNzQ29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyNlbmRpZgorfQorCiAtIChpZCA8X1dLRG93bmxv
YWREZWxlZ2F0ZT4pX2Rvd25sb2FkRGVsZWdhdGUKIHsKICAgICByZXR1cm4gX2Rvd25sb2FkRGVs
ZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggYWMyMDMzZTQ5
MmY4Y2VkY2UxNzVhYzdiMjQ2ZGVmMjc0MzlkOTc4ZC4uYmVkN2YwY2I3MWZlNjc0YjdjZDM3NDMz
ZGQ0OTIxZDA1OTVkZWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtNDMsNiArNDMsOCBAQAog
LSAoaWQpX29iamVjdEZvckJ1bmRsZVBhcmFtZXRlcjooTlNTdHJpbmcgKilwYXJhbWV0ZXI7CiAt
ICh2b2lkKV9zZXRPYmplY3Q6KGlkIDxOU0NvcHlpbmcsIE5TU2VjdXJlQ29kaW5nPilvYmplY3Qg
Zm9yQnVuZGxlUGFyYW1ldGVyOihOU1N0cmluZyAqKXBhcmFtZXRlcjsKIAorLSAodm9pZClfbG9h
ZENvbnRlbnRFeHRlbnNpb25XaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIHNl
cmlhbGl6ZWRSdWxlczooTlNTdHJpbmcgKilzZXJpYWxpemVkUnVsZXMgc3VjY2Vzc0NvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU0RpY3Rpb25hcnkgKmluZm8pKXN1Y2Nlc3NDb21wbGV0aW9u
SGFuZGxlciBlcnJvckNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Vycm9yICplcnJvcikp
ZXJyb3JDb21wbGV0aW9uSGFuZGxlcjsKKwogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNl
dHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93
bmxvYWREZWxlZ2F0ZTsKIAogKyAoTlNVUkwgKilfd2Vic2l0ZURhdGFVUkxGb3JDb250YWluZXJX
aXRoVVJMOihOU1VSTCAqKWNvbnRhaW5lclVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGU5NzJkZjA3NzBlNzRmMDZiNjcwYWJiNDRmY2RjZTA0
ZDJmZjA2ZWIuLmE4YzU1NTNjYjczMTBjN2RkODBlYzJkYjYwNmIzNDgxYmM0ZmQwYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtODEwLDYgKzgx
MCwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzczo6U3RhcnRNZW1vcnlTYW1wbGVyKHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUsIHNh
bXBsZUxvZ0ZpbGVQYXRoLCBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbCksIDApOwogICAgIH0KIAor
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgZm9yIChjb25zdCBhdXRvJiBzbG90
IDogbV9lbmNvZGVkQ29udGVudEV4dGVuc2lvbnMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkxvYWRDb250ZW50RXh0ZW5zaW9uKHNsb3Qua2V5LCBzbG90LnZh
bHVlKSwgMCk7CisjZW5kaWYKKwogICAgIG1fY29ubmVjdGlvbkNsaWVudC5kaWRDcmVhdGVDb25u
ZWN0aW9uKHRoaXMsIHByb2Nlc3MtPndlYkNvbm5lY3Rpb24oKSk7CiB9CiAKQEAgLTE0MzEsNCAr
MTQzNiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRNZW1vcnlDYWNoZURpc2FibGVkKGJv
b2wgZGlzYWJsZWQpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpTZXRNZW1vcnlDYWNoZURpc2FibGVkKGRpc2FibGVkKSk7CiB9CiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6bG9hZENvbnRlbnRFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNlcmlhbGl6ZWRSdWxl
cykKK3sKKyAgICBtX2VuY29kZWRDb250ZW50RXh0ZW5zaW9ucy5zZXQoaWRlbnRpZmllciwgc2Vy
aWFsaXplZFJ1bGVzKTsKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkxvYWRDb250ZW50RXh0ZW5zaW9uKGlkZW50aWZpZXIsIHNlcmlhbGl6ZWRSdWxlcykpOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBkZGM0ZmI2Yzk5YWUzOWRmMDJjMTY0NzdlMWMwYjAz
ZDUyZjQ1ZGE2Li40MzM0N2VhMTlmOWUzMWM1NDhiNGE4YTc0NGE3YzA2YzUzMTE3NGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzU3LDYgKzM1Nywx
MCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVk
Rm9yUGFnZUNvdW50ZXIudG9rZW48UHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlblR5cGU+
KCk7CiAgICAgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICB2b2lkIGxv
YWRDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBzZXJpYWxpemVkUnVsZXMpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemUoKTsKIApAQCAtNTQwLDYgKzU0NCwxMCBAQCBwcml2YXRlOgogICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX2J1bmRsZVBhcmFtZXRlcnM7CiAgICAgUHJvY2Vz
c1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbiBtX3BsdWdpblByb2Nlc3NNYW5hZ2VyUHJvY2Vzc1N1
cHByZXNzaW9uRGlzYWJsZWRUb2tlbjsKICNlbmRpZgorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2VuY29kZWRDb250ZW50RXh0
ZW5zaW9uczsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGI3ODViODk5MDQ5OWM3YzZiOGZmY2Ew
MDA2MjMxZjQ1NGZjZTFkZTIuLmRkZjkwYjk1N2JmYTZmZjdhMWYwYzgwNTFhMjhiZThiNmMxZTY3
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNjUsNiAr
NjUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9u
c01hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zv
bnRDYWNoZS5oPgpAQCAtMTMxNSw2ICsxMzE2LDEzIEBAIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2Vi
UHJvY2Vzczo6dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhBUEk6Ok9iamVjdCogb2JqZWN0KQog
ICAgIHJldHVybiBVc2VyRGF0YTo6dHJhbnNmb3JtKG9iamVjdCwgVHJhbnNmb3JtZXIoKSk7CiB9
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQordm9pZCBXZWJQcm9jZXNzOjpsb2Fk
Q29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c2VyaWFsaXplZFJ1bGVzKQoreworICAgIENvbnRlbnRFeHRlbnNpb25zOjpFeHRlbnNpb25zTWFu
YWdlcjo6bG9hZEV4dGVuc2lvbihpZGVudGlmaWVyLCBzZXJpYWxpemVkUnVsZXMpOworfQorI2Vu
ZGlmCisKIHZvaWQgV2ViUHJvY2Vzczo6c2V0TWVtb3J5Q2FjaGVEaXNhYmxlZChib29sIGRpc2Fi
bGVkKQogewogICAgIGlmIChtZW1vcnlDYWNoZSgpLmRpc2FibGVkKCkgIT0gZGlzYWJsZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGYyZTcyMWY0NjhiMTVlYTFk
NjRhYTFiZTM0MDQ0NWI3MWMzNzc2MjMuLmExMTI0ZDVkYjAwMjcyMDZiNDZkNWViZTUxOWUwNGNl
YjYxMmJjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0yMDIs
NiArMjAyLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1JpY2hDb250ZW50U2VydmljZXMoKSBj
b25zdCB7IHJldHVybiBtX2hhc1JpY2hDb250ZW50U2VydmljZXM7IH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICB2b2lkIGxvYWRDb250ZW50RXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzZXJpYWxpemVkUnVsZXMp
OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUHJvY2VzcygpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTRlZmUyMGIy
YjAwMjIzMmRkOTE5YzBjMTAxOWZmMjY0MjY1NTQ3Ny4uODQxNTI4NTUzYjQ1NTgxYzIyYjM0MDYy
YTc2ZTZiNDVjNzU2ZjU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtOTMsNiArOTMsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1h
Z2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2aWNlcywgYm9vbCBoYXNSaWNoQ29udGVu
dFNlcnZpY2VzKQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAg
IExvYWRDb250ZW50RXh0ZW5zaW9uKFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgc2VyaWFsaXpl
ZFJ1bGVzKQorI2VuZGlmCisKICAgICBQcm9jZXNzV2lsbFN1c3BlbmQoKQogICAgIENhbmNlbFBy
b2Nlc3NXaWxsU3VzcGVuZCgpCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244123</attachid>
            <date>2015-01-06 19:13:36 -0800</date>
            <delta_ts>2015-01-06 21:01:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140160-20150106191340.patch</filename>
            <type>text/plain</type>
            <size>96587</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5YWIwNDAyYWNjMmZlNTEzMmM1MTBj
ZmEzYjU1YmQ1YjliNjE4OWQuLmFmOTJhYmVlNWJhOWE0ZDRlYmYwODAwMGNjYWUwMDkwNmRhMTA3
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDEtMDYgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFN0YXJ0IGEgcHJvdG90eXBlIGZv
ciBkZWNsYXJhdGl2ZSBzaXRlIHNwZWNpZmljIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDE2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisK
IDIwMTUtMDEtMDYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQUREUkVTU19TQU5JVElaRVIgbWFjcm8gaXMgb3ZlcmxvYWRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJk
MjFhNGRlMTViNGFiMDYwZjQwOTdkMTQxOTUxNjIwZmEzOWZkYTkuLmIwODVhYzlkOWUyMjEwMmI4
N2M3NDBkNjc3NmY4ZTUxMWQzMTQwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAx
NS0wMS0wNiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1dLMl0gU3RhcnQgYSBwcm90b3R5cGUgZm9yIGRlY2xhcmF0aXZlIHNpdGUgc3BlY2lmaWMg
ZXh0ZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwMTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ3VycmVudGx5LCBjbGllbnRzIGhhdmUgdmFyaW91cyB3YXlzIHRvIGV4ZWN1dGUgY3VzdG9t
IGNvZGUgZm9yIGNlcnRhaW4gVVJMcy4KKyAgICAgICAgRWFjaCBvZiB0aG9zZSBtZWNoYW5pc20g
aW1wbGllcyBtZXNzYWdpbmcgdGhlIFVJUHJvY2VzcywgZXhlY3V0aW5nIHNvbWUgY29kZQorICAg
ICAgICBjYWxsaW5nIGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MsIHRoZW4gYWN0dWFsbHkgbG9hZCB0
aGUgcmVzb3VyY2UuCisgICAgICAgIEFsbCB0aGlzIGJhY2sgYW5kIGZvcnRoIGludHJvZHVjZXMg
ZGVsYXlzIGJlZm9yZSB3ZSBhY3R1YWxseSBsb2FkIHJlc291cmNlcy4KKworICAgICAgICBTaW5j
ZSB0aGUgc2V0IG9mIGFjdGlvbnMgaXMgZG9uZSBwZXIgc2l0ZSBpcyBhY3R1YWxseSBzaW1wbGUg
YW5kIGxpbWl0ZWQsCisgICAgICAgIGl0IG1heSBiZSBwb3NzaWJsZSB0byBkbyBldmVyeXRoaW5n
IGluIFdlYkNvcmUgYW5kIHNob3J0Y3V0IHRoZSBkZWZlcmVkIGxvYWRpbmcuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBwcm92aWRlcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgaWRlYS4gVGhl
ICJydWxlcyIgKGN1cnJlbnRseSBqdXN0IGJsb2NraW5nKQorICAgICAgICBhcmUgYmUgcGFzc2Vk
IHRvIFdlYkNvcmUgaW4gYSBKU09OIGZvcm1hdC4gSW4gV2ViQ29yZSwgd2UgY3JlYXRlIGEgc3Rh
dGUKKyAgICAgICAgbWFjaGluZSB0byBtYXRjaCB0aGUgcnVsZXMgYW5kIHdlIGV4ZWN1dGUgdGhl
IGFjdGlvbiB3aGVuIHRoZSBzdGF0ZSBtYWNoaW5lIHRlbGxzCisgICAgICAgIHVzIHRvLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25SdWxlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkNvbnRlbnRFeHRlbnNpb25SdWxlOjpDb250ZW50RXh0ZW5zaW9uUnVsZSk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNp
b25SdWxlOjp0cmlnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uUnVsZTo6YWN0aW9uKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnNoYXJlZEluc3Rh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ6OnNldFJ1bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnJlbW92ZVJ1bGVMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6
OnNob3VsZEJsb2NrVVJMKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuaDogQWRkZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmguCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c2hvdWxkQmxvY2tVUkwpOgorICAgICAgICAqIGNvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaC4K
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpFeHRlbnNpb25z
TWFuYWdlcjo6bG9hZFRyaWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkV4dGVuc2lvbnNNYW5hZ2VyOjpsb2FkQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpFeHRlbnNpb25zTWFuYWdlcjo6bG9hZFJ1bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkV4dGVuc2lvbnNNYW5hZ2VyOjpsb2FkRXh0ZW5z
aW9uKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFn
ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6REZBKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkE6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBOjpuZXh0U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6YWN0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBOjpkZWJ1Z1ByaW50RG90KToKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkEuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oLgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6cm9vdCk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvREZBTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmguCisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvTkZBLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6TkZBOjpORkEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQTo6
Y3JlYXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TkZBOjph
ZGRUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpORkE6
OmFkZEVwc2lsb25UcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpORkE6OnNldEZpbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpORkE6OmRlYnVnUHJpbnREb3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TkZB
Ojpyb290KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQU5vZGU6Ok5G
QU5vZGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6ZXBzaWxvbkNsb3N1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnNldFRyYW5zaXRpb25zRXhjbHVkaW5n
RXBzaWxvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SGFzaGFibGVO
b2RlSWRTZXQ6Okhhc2hhYmxlTm9kZUlkU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpIYXNoYWJsZU5vZGVJZFNldDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpIYXNoYWJsZU5vZGVJZFNldDo6aXNFbXB0eVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpIYXNoYWJsZU5vZGVJZFNldDo6
aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Okhh
c2hhYmxlTm9kZUlkU2V0Ojpub2RlSWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6Okhhc2hhYmxlTm9kZUlkU2V0SGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6SGFzaGFibGVOb2RlSWRTZXRIYXNoOjplcXVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6YWRkREZBU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQVRvREZBOjpjb252ZXJ0KToKKyAgICAgICAg
KiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmguCisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorCiAyMDE1LTAxLTA2ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgTWF0aE1MIGluIGRh
c2hib2FyZCBjb21wYXRpYmlsaXR5IG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMDhmNzM3OTYzYjMzNjM3
YzVkY2NkYWU2NTIxMWViYmY5MzEzMzI2Li45NTNlNzVlZjIwZDQ2NTBjMTM5ZDRlNDYwMGU3NDlh
YjcyOTU0M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMDEtMDYgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFN0YXJ0
IGEgcHJvdG90eXBlIGZvciBkZWNsYXJhdGl2ZSBzaXRlIHNwZWNpZmljIGV4dGVuc2lvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDE2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb3ZpZGUgYSBz
bWFsbCBTUEkgZm9yIE9TIFguIFRoaXMgd2lsbCBsaWtlbHkgbW92ZQorICAgICAgICB0byBhIGJl
dHRlciBwbGFjZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfbG9hZENvbnRlbnRFeHRlbnNpb25XaXRo
SWRlbnRpZmllcjpzZXJpYWxpemVkUnVsZXM6c3VjY2Vzc0NvbXBsZXRpb25IYW5kbGVyOmVycm9y
Q29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmluaXNoTGF1
bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxvYWRDb250ZW50RXh0
ZW5zaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojpsb2FkQ29udGVudEV4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE1
LTAxLTA2ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBWaWV3IHN0YXRlIGNoYW5nZSBjYWxsYmFja3MgYXJlIHNvbWV0aW1lcyBkcm9wcGVkIG9u
IHRoZSBmbG9vcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBi
L1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggMTMyOGM1NmFkOTMwNjA5NmQy
ZmVkOWY5MTFjZWQzZTFlODA4ZDZhZi4uNzExZmU0YzhhNGM4NTA0NDU3MzA1ZGFiZTMwMDQ0OGEw
NjYxYTBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC01OCw2ICs1OCwxMCBAQAogI2Rl
ZmluZSBFTkFCTEVfQVNZTkNfU0NST0xMSU5HIDEKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5B
QkxFX0NPTlRFTlRfRVhURU5TSU9OUykKKyNkZWZpbmUgRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9O
UyAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DT05URVhUX01FTlVTKQogI2RlZmlu
ZSBFTkFCTEVfQ09OVEVYVF9NRU5VUyAwCiAjZW5kaWYKQEAgLTE2Nyw2ICsxNzEsMTAgQEAgdGhl
IHB1YmxpYyBpT1MgU0RLLiBXZSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnIGZpbGUKIC8qIC0tLS0tLS0tLSBBcHBsZSBNQUMgcG9ydCAobm90IElP
UykgLS0tLS0tLS0tICovCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaWYgIWRlZmluZWQoRU5BQkxF
X0NPTlRFTlRfRVhURU5TSU9OUykKKyNkZWZpbmUgRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9OUyAx
CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DU1NfSU1BR0VfU0VUKQogI2RlZmluZSBF
TkFCTEVfQ1NTX0lNQUdFX1NFVCAxCiAjZW5kaWYKQEAgLTMyOSw2ICszMzcsMTAgQEAgdGhlIHB1
YmxpYyBpT1MgU0RLLiBXZSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnIGZpbGUKICNkZWZpbmUgRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HIDEKICNl
bmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9OUykKKyNkZWZpbmUg
RU5BQkxFX0NPTlRFTlRfRVhURU5TSU9OUyAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJM
RV9DT05URVhUX01FTlVTKQogI2RlZmluZSBFTkFCTEVfQ09OVEVYVF9NRU5VUyAxCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYzY4MTIwYTg3N2Y4N2NjOTg1ZjFiNGVjNzZjMzMwZDA5
MjFjNzIwOC4uYmI4YmFhY2ZlZmJmZmIyOGY4ZmZhZTNiNWIyYmIzNWYzMWNkMTUyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTMwMTMsNiArMzAxMywxMCBAQCBfX1pON1dlYkNvcmUxNFJlc291
cmNlSGFuZGxlMjVjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlRVAxOU5TQ2FjaGVkVVJMUmVzcG9u
c2UKIF9fWk43V2ViQ29yZTM3c3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeUVQ
MTVOU1VSTENvbm5lY3Rpb25QMTJOU1VSTFJlcXVlc3RQMTNOU1VSTFJlc3BvbnNlCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCitfX1pON1dlYkNvcmUxN0NvbnRlbnRF
eHRlbnNpb25zMTdFeHRlbnNpb25zTWFuYWdlcjEzbG9hZEV4dGVuc2lvbkVSS04zV1RGNlN0cmlu
Z0VTNV8KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogX19aTjdXZWJD
b3JlMTNDb250ZW50RmlsdGVyNmRlY29kZUVQMTdOU0tleWVkVW5hcmNoaXZlclJTMF8KIF9fWk43
V2ViQ29yZTEzQ29udGVudEZpbHRlckMxRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYWMyYjhkNDEzYjg3M2VkYmYxY2ZlNjI3
NTM0YzU5MDQ4ZTdiMTQxLi40NjVjZmY2ZmNlODBhMjgwMmJjYTAyN2E2Nzg5Njc2ZGUxMzM5ZTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDIzLDcgKzEwMjMsMTYgQEAKIAkJMjY1NTQxNTIxNDg5QjIzMzAwMERGQzVEIC8q
IEN1cnNvcklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyNjU1NDE0QjE0ODlBQTJCMDAwREZDNUQgLyogQ3Vyc29ySU9TLmNwcCAqLzsgfTsKIAkJ
MjY2MDFFQkYxNEIzQjlBRDAwMTJDMEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjYwMUVCRDE0QjNC
OUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNjYwMUVDMDE0QjNCOUFEMDAxMkMw
RkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjYwMUVCRTE0QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZv
cm1FdmVudEZhY3RvcnlJT1MubW0gKi87IH07CisJCTI2NzcyNUZDMUE1QjNBRDkwMDNDMjRERCAv
KiBERkEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjY3NzI1RjYxQTVCM0FEOTAwM0MyNEREIC8qIERGQS5jcHAgKi87IH07CisJCTI2NzcyNUZEMUE1
QjNBRDkwMDNDMjRERCAvKiBERkEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI2NzcyNUY3MUE1QjNBRDkwMDNDMjRERCAvKiBERkEuaCAqLzsgfTsKKwkJ
MjY3NzI1RkYxQTVCM0FEOTAwM0MyNEREIC8qIERGQU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NzcyNUY5MUE1QjNBRDkwMDNDMjRERCAvKiBE
RkFOb2RlLmggKi87IH07CisJCTI2NzcyNjAwMUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjc3MjVG
QTFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuY3BwICovOyB9OworCQkyNjc3MjYwMTFBNUIz
QUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2NzcyNUZCMUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5oICov
OyB9OwogCQkyNjkyMzk5NjE1MDVFMUFBMDA5RTU3RkMgLyogSlNJREJWZXJzaW9uQ2hhbmdlRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2OTIz
OTkyMTUwNUUxQUEwMDlFNTdGQyAvKiBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oICovOyB9Owor
CQkyNjkzOTcyMTFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjkzOTcxRjFBNEE0MTJGMDBFODM0OUQg
LyogTkZBTm9kZS5jcHAgKi87IH07CisJCTI2OTM5NzIyMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFO
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjkz
OTcyMDFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5oICovOyB9OworCQkyNjkzOTcyNDFBNEE1
QjY0MDBFODM0OUQgLyogTkZBLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmggKi87IH07CisJCTI2
OTM5NzI2MUE0QTVGQkQwMEU4MzQ5RCAvKiBORkEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY5Mzk3MjUxQTRBNUZCRDAwRTgzNDlEIC8qIE5GQS5j
cHAgKi87IH07CiAJCTI2QUEwRjlFMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0Vs
ZW1lbnRUeXBlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI2QUEwRjlEMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRU
eXBlTWFwLmNwcCAqLzsgfTsKIAkJMjZCOTk5OEYxODAzQUU3MjAwRDAxMTIxIC8qIFJlZ2lzdGVy
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNkI5OTk4RTE4MDNBRTcyMDBEMDExMjEgLyogUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLzsgfTsK
IAkJMjZCOTk5OTExODAzQjNDOTAwRDAxMTIxIC8qIFN0YWNrQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkI5OTk5MDE4MDNCM0M5MDBE
MDExMjEgLyogU3RhY2tBbGxvY2F0b3IuaCAqLzsgfTsKQEAgLTEwMzUsNiArMTA0NCwxNCBAQAog
CQkyNkMxN0EzRTE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZDMTdBM0MxNDkxRDJENDAwRDEy
QkEyIC8qIEZpbGVTeXN0ZW1JT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkyNkMxN0EzRjE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2QzE3
QTNEMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1tICovOyB9OwogCQkyNkU5OEEx
MDEzMEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZFOThBMEYxMzBBOUZDQTAwOEVC
N0IyIC8qIFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaCAqLzsgfTsKKwkJMjZGMEM4OTIxQTJENzlD
QjAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkYwQzg5MTFBMkQ3OUNCMDAyNzk0Rjgg
LyogQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCAqLzsgfTsKKwkJMjZGMEM4OTQxQTJEN0E3
NjAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjBDODkzMUEyRDdBNzYwMDI3OTRG
OCAvKiBDb250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5jcHAgKi87IH07CisJCTI2RjBDODk3MUEy
RTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMEM4OTUxQTJFNzI0QjAwMjc5
NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHAgKi87IH07CisJCTI2RjBDODk4MUEy
RTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjBDODk2MUEyRTcyNEIwMDI3OTRG
OCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyNkYwQzg5QjFBMkVDMTEwMDAyNzk0RjggLyogQ29u
dGVudEV4dGVuc2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGMEM4OTkxQTJFQzExMDAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25S
dWxlLmNwcCAqLzsgfTsKKwkJMjZGMEM4OUMxQTJFQzExMDAwMjc5NEY4IC8qIENvbnRlbnRFeHRl
bnNpb25SdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNkYwQzg5QTFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1bGUuaCAqLzsg
fTsKKwkJMjZGMEM4OUYxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkYw
Qzg5RDFBMkVDM0JFMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCAqLzsg
fTsKKwkJMjZGMEM4QTAxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMEM4
OUUxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oICovOyB9Owog
CQkyNkY0MEQ0QTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNDBENDkxNDkwNEE2MzAwQ0E2
N0M0IC8qIEV2ZW50TG9vcElPUy5tbSAqLzsgfTsKIAkJMjZGOUE4MzgxOEEwNDZBQzAwQUVCODhB
IC8qIFZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY5QTgzNjE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRD
b25maWd1cmF0aW9uLmNwcCAqLzsgfTsKIAkJMjZGOUE4MzkxOEEwNDZBQzAwQUVCODhBIC8qIFZp
ZXdwb3J0Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGOUE4MzcxOEEwNDZBQzAwQUVCODhBIC8qIFZpZXdwb3J0Q29uZmlndXJh
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC04MDQ2LDggKzgwNjMsMTcgQEAKIAkJMjY1NTQxNEIxNDg5QUEyQjAwMERGQzVEIC8qIEN1cnNv
cklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXJzb3JJT1Mu
Y3BwOyBwYXRoID0gaW9zL0N1cnNvcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI2NjAxRUJEMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlP
Uy5oOyBwYXRoID0gaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI2NjAxRUJFMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0Zm9ybUV2ZW50
RmFjdG9yeUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBs
YXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tOyBwYXRoID0gaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjc3MjVGNjFBNUIzQUQ5MDAz
QzI0REQgLyogREZBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERG
QS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2NzcyNUY3MUE1QjNBRDkwMDND
MjRERCAvKiBERkEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZBLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2NzcyNUY5MUE1QjNBRDkwMDNDMjRERCAvKiBE
RkFOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGQU5vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY3NzI1RkExQTVCM0FEOTAwM0MyNEREIC8qIE5G
QVRvREZBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5GQVRvREZB
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY3NzI1RkIxQTVCM0FEOTAwM0My
NEREIC8qIE5GQVRvREZBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5GQVRv
REZBLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2OTIzOTkxMTUwNUUxQUEwMDlF
NTdGQyAvKiBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI2OTIzOTkyMTUwNUUxQUEwMDlFNTdGQyAvKiBKU0lEQlZlcnNp
b25DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjkzOTcx
RjFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBORkFOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MjY5Mzk3MjAxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTkZBTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
NjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5GQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjkzOTcyNTFB
NEE1RkJEMDBFODM0OUQgLyogTkZBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5GQS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2QUEwRjk5MThE
Mjk3M0QwMDQxOTM4MSAvKiBtYWtlU2VsZWN0b3JQc2V1ZG9FbGVtZW50c01hcC5weSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IG1ha2VTZWxlY3RvclBzZXVkb0VsZW1lbnRzTWFwLnB5OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyNkFBMEY5QTE4RDI5NzNEMDA0MTkzODEgLyogU2VsZWN0b3JQ
c2V1ZG9FbGVtZW50VHlwZU1hcC5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFw
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkFBMEY5RDE4RDJBMThCMDA0MTkz
ODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgwNjIsNiArODA4OCwxNCBAQAogCQkyNkMxN0Ez
QzE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBGaWxlU3lzdGVtSU9TLmg7IHBhdGggPSBpb3MvRmlsZVN5c3RlbUlPUy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkMxN0EzRDE0OTFEMkQ0MDBEMTJCQTIg
LyogRmlsZVN5c3RlbUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IEZpbGVTeXN0ZW1JT1MubW07IHBhdGggPSBpb3MvRmlsZVN5c3RlbUlPUy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZFOThBMEYxMzBBOUZDQTAwOEVCN0IyIC8qIFRleHRD
b2RlY0FTQ0lJRmFzdFBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dENvZGVjQVNDSUlGYXN0UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkYw
Qzg5MTFBMkQ3OUNCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZGMEM4OTMxQTJEN0E3NjAwMjc5NEY4
IC8qIENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZGMEM4OTUxQTJFNzI0QjAwMjc5NEY4IC8qIENvbnRlbnRF
eHRlbnNpb25zTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyNkYwQzg5NjFBMkU3MjRCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNNYW5hZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25zTWFu
YWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkYwQzg5OTFBMkVDMTEwMDAy
Nzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyNkYwQzg5QTFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
blJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEV4dGVuc2lv
blJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZGMEM4OUQxQTJFQzNCRTAw
Mjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyNkYwQzg5RTFBMkVDM0JFMDAyNzk0RjggLyogQ29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
NkY0MEQ0OTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRXZlbnRMb29wSU9TLm1tOyBwYXRoID0gaW9zL0V2
ZW50TG9vcElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZGOUE4MzYxOEEw
NDZBQzAwQUVCODhBIC8qIFZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyNkY5QTgzNzE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3Bv
cnRDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdw
b3J0Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3MjYs
NiArMTQ3NjAsNyBAQAogCQkJCTI5QTgxMjA0MEZCQjlCNDEwMDUxMDI5MyAvKiBhY2Nlc3NpYmls
aXR5ICovLAogCQkJCUJDMUEzNzkwMDk3QzZGOTcwMDE5RjNEOCAvKiBiaW5kaW5ncyAqLywKIAkJ
CQkxQTU2OUNDNDBEN0UyQjYwMDA3QzM5ODMgLyogYnJpZGdlICovLAorCQkJCTI2RjBDODkwMUEy
RDc5Q0IwMDI3OTRGOCAvKiBjb250ZW50ZXh0ZW5zaW9ucyAqLywKIAkJCQlFMUZGOEY1QjE4MDcz
NjJCMDAxMzI2NzQgLyogY3J5cHRvICovLAogCQkJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAv
KiBjc3MgKi8sCiAJCQkJMjZCOTk5OEQxODAzQURGQTAwRDAxMTIxIC8qIGNzc2ppdCAqLywKQEAg
LTE1MzcyLDYgKzE1NDA3LDMwIEBACiAJCQluYW1lID0gY3Nzaml0OwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMjZGMEM4OTAxQTJENzlDQjAwMjc5NEY4IC8qIGNvbnRlbnRl
eHRlbnNpb25zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkyNkYwQzg5OTFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwICov
LAorCQkJCTI2RjBDODlBMUEyRUMxMTAwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uUnVsZS5o
ICovLAorCQkJCTI2RjBDODlEMUEyRUMzQkUwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQuY3BwICovLAorCQkJCTI2RjBDODlFMUEyRUMzQkUwMDI3OTRGOCAvKiBDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuaCAqLywKKwkJCQkyNkYwQzg5MzFBMkQ3QTc2MDAyNzk0RjggLyogQ29u
dGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwICovLAorCQkJCTI2RjBDODkxMUEyRDc5Q0IwMDI3
OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5oICovLAorCQkJCTI2RjBDODk1MUEy
RTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwICovLAorCQkJCTI2
RjBDODk2MUEyRTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCAqLywK
KwkJCQkyNjc3MjVGNjFBNUIzQUQ5MDAzQzI0REQgLyogREZBLmNwcCAqLywKKwkJCQkyNjc3MjVG
NzFBNUIzQUQ5MDAzQzI0REQgLyogREZBLmggKi8sCisJCQkJMjY3NzI1RjkxQTVCM0FEOTAwM0My
NEREIC8qIERGQU5vZGUuaCAqLywKKwkJCQkyNjkzOTcyNTFBNEE1RkJEMDBFODM0OUQgLyogTkZB
LmNwcCAqLywKKwkJCQkyNjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmggKi8sCisJCQkJ
MjY5Mzk3MUYxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuY3BwICovLAorCQkJCTI2OTM5NzIw
MUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggKi8sCisJCQkJMjY3NzI1RkExQTVCM0FEOTAw
M0MyNEREIC8qIE5GQVRvREZBLmNwcCAqLywKKwkJCQkyNjc3MjVGQjFBNUIzQUQ5MDAzQzI0REQg
LyogTkZBVG9ERkEuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY29udGVudGV4dGVuc2lvbnM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkyOUE4MTIwNDBGQkI5QjQxMDA1MTAy
OTMgLyogYWNjZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0yMzYxOSw2ICsyMzY3OCw3IEBACiAJCQkJQ0QzMTg2MjMxOTlGMUUyQTAwMzBB
MEY3IC8qIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEREQ1NzE1MThCNTdBODIwMEE5NEZDQiAvKiBDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1RkE5MDRDQTE3OEU2MUY1MDA0QzhBMkQgLyogQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyNkYwQzg5QzFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
blJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFODI0NUYwMTlCNjcxQkEwMEFDMDEyMiAvKiBD
Rk5ldHdvcmtDb25uZWN0aW9uQ2FjaGVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTI1MjVC
MUExQzAxODIwMDg2NDQ4MCAvKiBDRk5ldHdvcmtTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QThFNTY3MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNDA2NCw2ICsyNDEyNCw3IEBACiAJCQkJODUxODNCNDQwQUE2OTI2MTAwRjE5RkEzIC8qIERP
TUhUTUxIZWFkaW5nRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQUUwQUM1RDUz
NTAwNTMyNzBGIC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUVDQkVGMTBBQTc2MjY5MDA1NDRGMEIgLyogRE9NSFRNTEhSRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMjY5Mzk3MjIxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RTcxMUFGMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSFJF
bGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTkyRUJDMEFBNTA2OTUwMEFD
MDc4NSAvKiBET01IVE1MSHRtbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUIw
MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSHRtbEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNDE3Miw2ICsyNDIzMyw3IEBACiAJCQkJRTEyODRCRDYxMDQ0QTAxRTAwRUFF
QjUyIC8qIERPTVBhZ2VUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1
M0U4MEE4RDE4RTcwMDIyOTQ3RCAvKiBET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdB
NTQ4ODE3MTRFNDMyQTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTI2OTM5NzI0MUE0QTVCNjQwMEU4MzQ5RCAvKiBORkEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZCOTEzOTI0MTZBRTRDMTcwMDFGRTY4MiAvKiBET01QYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOUM2RTRFQzBENzQ1RTJCMDA2NDQyRTkgLyogRE9NUGx1Z2luLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOUM2RTRGMDBENzQ1RTM4MDA2NDQyRTkgLyogRE9NUGx1Z2luQXJyYXkuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjQ2OTMsNiArMjQ3NTUsNyBAQAogCQkJCTMxNkZFMTE4MEU2RTFEQTcw
MEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU5NjFD
NTUxOEFEMzM4QzAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCUJFMTZDNTkzMTdDRkUxNzIwMDg1MkMwNCAvKiBJbmJhbmRHZW5lcmljVGV4dFRyYWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyNjc3MjYwMTFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9E
RkEuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTlFMTJFMThGNUUyNzYwMDExQTNBNCAvKiBJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTQx
NzkyMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3OTQxNzk0MTY2RUEwNEUwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI1MTQyLDYgKzI1MjA1LDcgQEAKIAkJCQlCMkZBM0Q1NzBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkZBM0Q1OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDaXJjbGVFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0Q1QjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDbGlwUGF0aEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2RjBDODk4MUEyRTcyNEIwMDI3OTRGOCAvKiBD
b250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDVEMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1
RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
Q3Vyc29yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU2MCw2ICsyNTYyNCw3IEBACiAJ
CQkJOThFQjFGOTUxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTU2OUQwQjBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBOTI3RkQyMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMjY3NzI1RkYxQTVCM0FEOTAwM0MyNEREIC8qIERGQU5vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMjE5QjNCMERDQTg3QUIwMDQwRTNBMCAvKiBucGZ1bmN0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MjdGRDMxNDE2QTE1QjAwM0E4M0M4IC8qIG5wcnVudGlt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMEYwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVu
dGltZV9pbXBsLmggaW4gSGVhZGVycyAqLywKQEAgLTI1ODIyLDYgKzI1ODg3LDcgQEAKIAkJCQlC
QzFBN0Q5ODE4RkNCNUIwMDA0MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCThBQzgyMkZEMTgwRkMwMzMwMEZCNjRENSAvKiBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4NUYyM0QxNTE5
MTVFMDAwQkMxN0JFIC8qIFJlbmRlck5hbWVkRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMjY3NzI1RkQxQTVCM0FEOTAwM0MyNEREIC8qIERGQS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFQTQ4ODAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNGQTkzMDgxMDMzMzE5MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJmbG93LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNDNCRjU5RDExNDkyOTI4MDBDNjQzQ0EgLyogUmVuZGVyUHJvZ3Jlc3Mu
aCBpbiBIZWFkZXJzICovLApAQCAtMjYzNjcsNiArMjY0MzMsNyBAQAogCQkJCTg0MTlEMkFEMTIw
RDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODQ3NkM5RUMxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzE1MzdBMDExNDZCRDlENzAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkyNkYwQzg5MjFBMkQ3OUNCMDAyNzk0RjggLyogQ29udGVudEV4
dGVuc2lvbnNJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU5MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RjAx
MURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTVCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2NTcwLDYgKzI2NjM3LDcgQEAKIAkJCQlCRTg4RTBDMjE3MTVDRTI2MDA2NThEOTggLyogVHJh
Y2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU5MTNEODAxODFFRjkyNDAwRENCMDlF
IC8qIFRyYWNrUHJpdmF0ZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGQUMzMEZFMTg0RkIx
NDUwMDhDNEYxRSAvKiBUcmFpbGluZ09iamVjdHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2RjBD
OEEwMUEyRUMzQkUwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI0ODRGNEQxNzFGODIxRTAwMDQwNzU1IC8qIFRy
YW5zZm9ybUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0UwRUY4NkQ0NzAw
OUQwQ0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzI1Niw2
ICsyNzMyNCw3IEBACiAJCQkJRkRCMDUyREYxNTYxQTQyQzAwQjUwMEQ2IC8qIEF1ZGlvU3VtbWlu
Z0p1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5
OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMERCMTcxNUQyQTIw
MDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNjc3MjYw
MDFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RF
M0E4NTcxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUNENTRBNzYyMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA4QTEy
QjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
NzU1OSw2ICsyNzYyOCw3IEBACiAJCQkJOTMzMDlEREUwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0
ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERTAwOTlF
NjQ5MjAwNTZFNTgxIC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTdDOUFCRjgxMzU3QTNCRjAwRjU1MDNGIC8qIERldGFpbHNNYXJrZXJDb250cm9sLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTI2RjBDODk0MUEyRDdBNzYwMDI3OTRGOCAvKiBDb250ZW50
RXh0ZW5zaW9uc0ludGVyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDQ0MyQjUxNTE1RjYx
MzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MUVBRjk3RjEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzFGQjFBNTgxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkNv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzU2Niw2ICsyNzYzNiw3IEBACiAJCQkJ
MzFGQjFBNUMxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxNDAzNzlFMTI0QkVBN0YwMEFGNDBFNCAvKiBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU5MzA5QTExMTFGNEFFNTgwMDI1MDYw
MyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MjY5Mzk3MjYxQTRBNUZCRDAwRTgzNDlEIC8qIE5GQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
OUE4RjFENDExQTY5NTA4MDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTU5RDFDMTA0MTFFQjVEQ0YwMEI2MzhDOCAvKiBEZXZpY2VP
cmllbnRhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlBODVFQTIxMTlENjhEOTAw
REVGMUVGIC8qIERldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
ODIwNyw2ICsyODI3OCw3IEBACiAJCQkJQTU4NDBFMUMxODdCNzRENTAwODQzQjEwIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MUIxRTEy
NjE2NDA0OTFBMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTA0QUFDQ0QxODM0NDU1OTAwRTNEOUJDIC8qIEluc3BlY3Rvck5vZGVGaW5k
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZGMEM4OUIxQTJFQzExMDAwMjc5NEY4IC8qIENv
bnRlbnRFeHRlbnNpb25SdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNTIyRDRCMTVCNDc3
RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRG
NkZERDY0MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTlDQzBCNjYxOEJFOUYxNTAwNkNFQkNDIC8qIEluc3BlY3RvclJlcGxheUFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjgzNTAsNiArMjg0MjIsNyBAQAogCQkJCTFBQ0U1
M0RGMEE4RDE4ODEwMDIyOTQ3RCAvKiBKU0RPTVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGQjkxMzkyQjE2QUU0RkMwMDAxRkU2ODIgLyogSlNET01QYXRoLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE5RDI0N0ZFMEQ3NTdFNjkwMEZERjk1OSAvKiBKU0RPTVBsdWdpbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkyNkYwQzg5NzFBMkU3MjRCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
bnNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0ODAwMEQ3NTdFNjkwMEZERjk1
OSAvKiBKU0RPTVBsdWdpbkFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5QzZFNjRDMEQ3
NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE5QzZFNjREMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI4ODA3LDYgKzI4ODgwLDcgQEAKIAkJCQlCMkZBM0RGMjBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdTY3JpcHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyRkEzREY0MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1NldEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjJGQTNERjYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU3RvcEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZGMEM4OUYxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RGODBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdTdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
RkEzREZBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1N0eWxlRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMkZBM0RGQzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTVkdFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjkzNTgsNiArMjk0MzIsNyBAQAogCQkJCTkzMzA5RTA5MDk5
RTY0OTIwMDU2RTU4MSAvKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5OUNDMEI1MzE4QkU5ODQ5MDA2Q0VCQ0MgLyogUmVwbGF5Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5OUNDMEI1NTE4QkU5ODQ5MDA2Q0VCQ0MgLyogUmVwbGF5aW5n
SW5wdXRDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjY3NzI1RkMxQTVCM0FEOTAwM0My
NEREIC8qIERGQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OUNDMEI1NzE4QkU5ODRBMDA2Q0VC
Q0MgLyogUmVwbGF5SW5wdXRDcmVhdGlvbk1ldGhvZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTlDQzBCNTgxOEJFOTg0QTAwNkNFQkNDIC8qIFJlcGxheUlucHV0RGlzcGF0Y2hNZXRob2RzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk5Q0MwQjU5MThCRTk4NEEwMDZDRUJDQyAvKiBSZXBsYXlT
ZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3ODUsNiArMjk4NjAsNyBAQAogCQkJCUIy
MjI3QTk2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI1NDNCODU3MTdFQjc1OEYwMDNCRTkzQSAvKiBTVkdQcm9wZXJ0eUlu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNjkzOTcyMTFB
NEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E5
RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUmVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMyMjc0NzgwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMjI3NDdBMEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURl
ZnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTliOGUw
YmQ0ZDUxM2JlYzIxYzliODkwYzExNGY0NTgyNDFmMzIwNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcApA
QCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25SdWxlLmgiCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CisKK0NvbnRlbnRFeHRlbnNpb25SdWxlOjpDb250ZW50RXh0ZW5zaW9uUnVsZShj
b25zdCBUcmlnZ2VyJiB0cmlnZ2VyLCBjb25zdCBBY3Rpb24mIGFjdGlvbikKKyAgICA6IG1fdHJp
Z2dlcih0cmlnZ2VyKQorICAgICwgbV9hY3Rpb24oYWN0aW9uKQoreworICAgIEFTU0VSVCghbV90
cmlnZ2VyLnVybEZpbHRlci5pc0VtcHR5KCkpOworfQorCit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5o
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OGQzZWNjM2VhZjE3NmY5NjE2ZGE4MDE2MzU2MzI3ZmQ3MDU5NjU1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvblJ1bGUuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDb250ZW50RXh0ZW5zaW9uUnVsZV9oCisjZGVmaW5lIENvbnRlbnRFeHRlbnNpb25SdWxl
X2gKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgQ29udGVu
dEV4dGVuc2lvbnMgeworCitlbnVtIGNsYXNzIEV4dGVuc2lvbkFjdGlvblR5cGUgeworICAgIEJs
b2NrTG9hZAorfTsKKworLy8gQSBDb250ZW50RXh0ZW5zaW9uUnVsZSBpcyB0aGUgc21hbGxlc3Qg
dW5pdCBpbiBhIENvbnRlbnRFeHRlbnNpb24uCisvLworLy8gSXQgaXMgY29tcG9zZWQgb2YgYSB0
cmlnZ2VyIGFuZCBhbiBhY3Rpb24uIFRoZSB0cmlnZ2VyIGRlZmluZXMgb24gd2hhdCBraW5kIG9m
IGNvbnRlbnQgdGhpcyBleHRlbnNpb24gc2hvdWxkIGFwcGx5LgorLy8gVGhlIGFjdGlvbiBkZWZp
bmVzIHdoYXQgdG8gcGVyZm9ybSBvbiB0aGF0IGNvbnRlbnQuCitjbGFzcyBDb250ZW50RXh0ZW5z
aW9uUnVsZSB7CitwdWJsaWM6CisgICAgc3RydWN0IFRyaWdnZXIgeworICAgICAgICBTdHJpbmcg
dXJsRmlsdGVyOworICAgIH07CisKKyAgICBzdHJ1Y3QgQWN0aW9uIHsKKyAgICAgICAgRXh0ZW5z
aW9uQWN0aW9uVHlwZSB0eXBlOworICAgIH07CisKKyAgICBDb250ZW50RXh0ZW5zaW9uUnVsZShj
b25zdCBUcmlnZ2VyJiwgY29uc3QgQWN0aW9uJik7CisKKyAgICBjb25zdCBUcmlnZ2VyJiB0cmln
Z2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2VyOyB9CisgICAgY29uc3QgQWN0aW9uJiBhY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQorCitwcml2YXRlOgorICAgIFRyaWdnZXIg
bV90cmlnZ2VyOworICAgIEFjdGlvbiBtX2FjdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIENv
bnRlbnRFeHRlbnNpb25zCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNlbmRpZiAvLyBDb250ZW50RXh0ZW5zaW9uUnVs
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmQxYWEzMDlhZWFiMDU4
MWYxZWZlZDMyZGVlMjMwYWQ1YTQyNDM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtMCww
ICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisKKyNpbmNsdWRlICJORkEuaCIKKyNpbmNsdWRlICJORkFUb0RGQS5oIgorI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKK0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCYgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpzaGFyZWRJbnN0YW5jZSgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4gaW5z
dGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCit2b2lkIENvbnRlbnRFeHRlbnNpb25z
QmFja2VuZDo6c2V0UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBWZWN0
b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+JiBydWxlTGlzdCkKK3sKKyAgICBBU1NFUlQoIWlkZW50
aWZpZXIuaXNFbXB0eSgpKTsKKyAgICBpZiAoaWRlbnRpZmllci5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChydWxlTGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVtb3Zl
UnVsZUxpc3QoaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBORkEg
bmZhOworICAgIHVuc2lnbmVkIHJvb3ROb2RlID0gbmZhLnJvb3QoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIHJ1bGVJbmRleCA9IDA7IHJ1bGVJbmRleCA8IHJ1bGVMaXN0LnNpemUoKTsgKytydWxlSW5k
ZXgpIHsKKyAgICAgICAgY29uc3QgQ29udGVudEV4dGVuc2lvblJ1bGUmIGNvbnRlbnRFeHRlbnNp
b25SdWxlID0gcnVsZUxpc3RbcnVsZUluZGV4XTsKKyAgICAgICAgY29uc3QgQ29udGVudEV4dGVu
c2lvblJ1bGU6OlRyaWdnZXImIHRyaWdnZXIgPSBjb250ZW50RXh0ZW5zaW9uUnVsZS50cmlnZ2Vy
KCk7CisgICAgICAgIEFTU0VSVCh0cmlnZ2VyLnVybEZpbHRlci5sZW5ndGgoKSk7CisKKyAgICAg
ICAgdW5zaWduZWQgbGFzdE5vZGUgPSByb290Tm9kZTsKKworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdHJpZ2dlci51cmxGaWx0ZXIubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAg
ICAgdW5zaWduZWQgbmV3Tm9kZSA9IG5mYS5jcmVhdGVOb2RlKHJ1bGVJbmRleCk7CisgICAgICAg
ICAgICBuZmEuYWRkVHJhbnNpdGlvbihsYXN0Tm9kZSwgbmV3Tm9kZSwgdHJpZ2dlci51cmxGaWx0
ZXJbaV0pOworICAgICAgICAgICAgbGFzdE5vZGUgPSBuZXdOb2RlOworICAgICAgICB9CisKKyAg
ICAgICAgbmZhLnNldEZpbmFsKGxhc3ROb2RlKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogbmV2
ZXIgYWRkIGEgREZBIHRoYXQgb25seSBtYXRjaGVzIHRoZSBlbXB0eSBzZXQuCisgICAgQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uIGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbiA9IHsgTkZBVG9ERkE6
OmNvbnZlcnQobmZhKSwgcnVsZUxpc3QgfTsKKyAgICBtX3J1bGVMaXN0cy5zZXQoaWRlbnRpZmll
ciwgY29tcGlsZWRDb250ZW50RXh0ZW5zaW9uKTsKK30KKwordm9pZCBDb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQ6OnJlbW92ZVJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAg
ICBtX3J1bGVMaXN0cy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK2Jvb2wgQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kOjpzaG91bGRCbG9ja1VSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBjb25z
dCBTdHJpbmcmIHVybFN0cmluZyA9IHVybC5zdHJpbmcoKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHVybFN0cmluZy5jb250YWluc09ubHlBU0NJSSgpLCAiQSBkZWNvZGVkIFVSTCBzaG91bGQg
b25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnMuIFRoZSBtYXRjaGluZyBhbGdvcml0aG0gYXNz
dW1lcyB0aGUgaW5wdXQgaXMgQVNDSUkuIik7CisKKyAgICBmb3IgKGF1dG8mIHJ1bGVMaXN0U2xv
dCA6IG1fcnVsZUxpc3RzKSB7CisgICAgICAgIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbiYgY29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uID0gcnVsZUxpc3RTbG90LnZhbHVlOworICAgICAgICB1bnNp
Z25lZCBzdGF0ZSA9IGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5kZmEucm9vdCgpOworCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1cmxTdHJpbmcubGVuZ3RoKCk7ICsraSkgewor
ICAgICAgICAgICAgY2hhciBjaGFyYWN0ZXIgPSBzdGF0aWNfY2FzdDxjaGFyPih1cmxTdHJpbmdb
aV0pOworICAgICAgICAgICAgYm9vbCBvazsKKyAgICAgICAgICAgIHN0YXRlID0gY29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uLmRmYS5uZXh0U3RhdGUoc3RhdGUsIGNoYXJhY3Rlciwgb2spOworICAg
ICAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBhY2N1bXVsYXRlIHRoZSBhY3Rpb25zLgorICAgICAgICAgICAgaWYg
KCFjb21waWxlZENvbnRlbnRFeHRlbnNpb24uZGZhLmFjdGlvbnMoc3RhdGUpLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQwNWFhNmQyMTY4YWNkNGNiNGNh
ZDY0MGY2YjkwMjA3YjY3NjMwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC0wLDAgKzEsNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZF9o
CisjZGVmaW5lIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZF9oCisKKyNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKKyNpbmNs
dWRlICJERkEuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBVUkw7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9u
cyB7CisKKy8vIFRoZSBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgaXMgdGhlIGludGVybmFsIG1v
ZGVsIG9mIGFsbCB0aGUgY29udGVudCBleHRlbnNpb25zLgorLy8KKy8vIEl0IHByb3ZpZGVzIHR3
byBzZXJ2aWNlczoKKy8vIDEpIEl0IHN0b3JlcyB0aGUgcnVsZXMgZm9yIGVhY2ggY29udGVudCBl
eHRlbnNpb24uCisvLyAyKSBJdCBwcm92aWRlcyBBUElzIGZvciB0aGUgV2ViQ29yZSBpbnRlcmZh
Y2VzIHRvIHVzZSB0aG9zZSBydWxlcyBlZmZpY2llbnRseS4KK2NsYXNzIENvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCB7CitwdWJsaWM6CisgICAgc3RhdGljIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZCYgc2hhcmVkSW5zdGFuY2UoKTsKKworICAgIC8vIC0gUnVsZSBtYW5hZ2VtZW50IGludGVyZmFj
ZS4gVGhpcyBjYW4gYmUgdXNlZCBieSB1cHBlciBsYXllci4KKworICAgIC8vIFNldCBhIGxpc3Qg
b2YgcnVsZXMgZm9yIGEgZ2l2ZW4gbmFtZS4gSWYgdGhlcmUgd2VyZSBleGlzdGluZyBydWxlcyBm
b3IgdGhlIG5hbWUsIHRoZXkgYXJlIG92ZXJyaWRlbi4KKyAgICAvLyBUaGUgaWRlbnRpZmllciBj
YW5ub3QgYmUgZW1wdHkuCisgICAgdm9pZCBzZXRSdWxlTGlzdChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4mKTsKKworICAgIHZvaWQg
cmVtb3ZlUnVsZUxpc3QoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKworICAgIC8vIC0gSW50
ZXJuYWwgV2ViQ29yZSBJbnRlcmZhY2UuCisgICAgYm9vbCBzaG91bGRCbG9ja1VSTChjb25zdCBV
UkwmKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uIHsK
KyAgICAgICAgREZBIGRmYTsKKyAgICAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiBy
dWxlTGlzdDsKKyAgICB9OworCisgICAgSGFzaE1hcDxTdHJpbmcsIENvbXBpbGVkQ29udGVudEV4
dGVuc2lvbj4gbV9ydWxlTGlzdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5z
aW9ucworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQorCisjZW5kaWYgLy8gQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmI4YjIwNmQzMjVkYTczMjhj
MGFhNTZhNzEyZmZkODVlYTcyZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29u
dGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisKKyNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKworYm9vbCBzaG91bGRC
bG9ja1VSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kOjpzaGFyZWRJbnN0YW5jZSgpLnNob3VsZEJsb2NrVVJMKHVybCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmRkMTIzZTI0Yjc5N2M2Y2U3MzRiNTI5MWFmMDc1YWQ5OTgyZDQ3MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2VfaAorI2RlZmluZSBDb250ZW50
RXh0ZW5zaW9uc0ludGVyZmFjZV9oCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFVSTDsKKworLy8gVGhpcyBkZWZpbmVzIHRo
ZSBpbnRlcmZhY2UgYnkgd2hpY2ggV2ViQ29yZSBpbnRlcmFjdCB3aXRoIENvbnRlbnQgRXh0ZW5z
aW9ucy4KK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7Citib29sIHNob3VsZEJsb2NrVVJM
KGNvbnN0IFVSTCYpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjZW5kaWYgLy8gQ29udGVudEV4dGVuc2lvbnNJ
bnRlcmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZmNzgxMjNl
OTVhMTRkODE5ZTdiZmVjZjk0ZGU1OGI0ZjExMjZhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHAK
QEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQorCisjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKKyNpbmNsdWRl
ICJDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9WTS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CisKK25hbWVzcGFjZSBFeHRlbnNpb25zTWFuYWdlciB7CisKK3N0YXRpYyBib29s
IGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3QsIENvbnRl
bnRFeHRlbnNpb25SdWxlOjpUcmlnZ2VyJiB0cmlnZ2VyKQoreworICAgIEpTVmFsdWUgdHJpZ2dl
ck9iamVjdCA9IHJ1bGVPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidHJpZ2dl
ciIpKTsKKyAgICBpZiAoIXRyaWdnZXJPYmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8fCAh
dHJpZ2dlck9iamVjdC5pc09iamVjdCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxp
ZCB0cmlnZ2VyIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IEpTVmFsdWUgdXJsRmlsdGVyT2JqZWN0ID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50
aWZpZXIoJmV4ZWMsICJ1cmwtZmlsdGVyIikpOworICAgIGlmICghdXJsRmlsdGVyT2JqZWN0IHx8
IGV4ZWMuaGFkRXhjZXB0aW9uKCkgfHwgIXVybEZpbHRlck9iamVjdC5pc1N0cmluZygpKSB7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxpZCB1cmwtZmlsdGVyIG9iamVjdC4iKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFN0cmluZyB1cmxGaWx0ZXIgPSB1cmxGaWx0
ZXJPYmplY3QudG9XVEZTdHJpbmcoJmV4ZWMpOworICAgIGlmICh1cmxGaWx0ZXIuaXNFbXB0eSgp
KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxpZCB1cmwtZmlsdGVyIG9iamVjdC4gVGhl
IHVybCBpcyBlbXB0eS4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHRy
aWdnZXIudXJsRmlsdGVyID0gdXJsRmlsdGVyOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgYm9vbCBsb2FkQWN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3Qs
IENvbnRlbnRFeHRlbnNpb25SdWxlOjpBY3Rpb24mIGFjdGlvbikKK3sKKyAgICBKU1ZhbHVlIGFj
dGlvbk9iamVjdCA9IHJ1bGVPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAiYWN0
aW9uIikpOworICAgIGlmICghYWN0aW9uT2JqZWN0IHx8IGV4ZWMuaGFkRXhjZXB0aW9uKCkgfHwg
IWFjdGlvbk9iamVjdC5pc09iamVjdCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxp
ZCBhY3Rpb24gb2JqZWN0LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
SlNWYWx1ZSB0eXBlT2JqZWN0ID0gYWN0aW9uT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigm
ZXhlYywgInR5cGUiKSk7CisgICAgaWYgKCF0eXBlT2JqZWN0IHx8IGV4ZWMuaGFkRXhjZXB0aW9u
KCkgfHwgIXR5cGVPYmplY3QuaXNTdHJpbmcoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIklu
dmFsaWQgdXJsLWZpbHRlciBvYmplY3QuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBTdHJpbmcgYWN0aW9uVHlwZSA9IHR5cGVPYmplY3QudG9XVEZTdHJpbmcoJmV4ZWMp
OworICAgIGlmIChhY3Rpb25UeXBlICE9ICJibG9jayIpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJVbnJvY29nbml6ZWQgYWN0aW9uOiBcIiVzXCIiLCBhY3Rpb25UeXBlLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYWN0aW9uLnR5cGUgPSBFeHRl
bnNpb25BY3Rpb25UeXBlOjpCbG9ja0xvYWQ7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh
dGljIHZvaWQgbG9hZFJ1bGUoRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwg
VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYgcnVsZUxpc3QpCit7CisgICAgQ29udGVudEV4
dGVuc2lvblJ1bGU6OlRyaWdnZXIgdHJpZ2dlcjsKKyAgICBpZiAoIWxvYWRUcmlnZ2VyKGV4ZWMs
IHJ1bGVPYmplY3QsIHRyaWdnZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBDb250ZW50RXh0
ZW5zaW9uUnVsZTo6QWN0aW9uIGFjdGlvbjsKKyAgICBpZiAoIWxvYWRBY3Rpb24oZXhlYywgcnVs
ZU9iamVjdCwgYWN0aW9uKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcnVsZUxpc3QuYXBwZW5k
KENvbnRlbnRFeHRlbnNpb25SdWxlKHRyaWdnZXIsIGFjdGlvbikpOworfQorCit2b2lkIGxvYWRF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJ1bGVzKQor
eworICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4gcnVsZUxpc3Q7CisKKyAgICBSZWZQ
dHI8Vk0+IHZtID0gVk06OmNyZWF0ZSgpOworCisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bS5n
ZXQoKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xvYmFsT2JqZWN0
OjpjcmVhdGUoKnZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp2bSwganNOdWxs
KCkpKTsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
OworICAgIEpTVmFsdWUgZGVjb2RlZFJ1bGVzID0gSlNPTlBhcnNlKGV4ZWMsIHJ1bGVzKTsKKyAg
ICBpZiAoZGVjb2RlZFJ1bGVzLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgSlNPYmplY3QqIHRvcExl
dmVsT2JqZWN0ID0gZGVjb2RlZFJ1bGVzLnRvT2JqZWN0KGV4ZWMpOworICAgICAgICBpZiAoIXRv
cExldmVsT2JqZWN0IHx8IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIkludmFsaWQgaW5wdXQsIHRoZSB0b3AgbGV2ZWwgc3RydWN0dXJlIGlzIG5vdCBh
biBvYmplY3QuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIWlzSlNBcnJheSh0b3BMZXZlbE9iamVjdCkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiSW52YWxpZCBpbnB1dCwgdGhlIHRvcCBsZXZlbCBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgSlNBcnJheSogdG9w
TGV2ZWxBcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4odG9wTGV2ZWxPYmplY3QpOworCisgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHRvcExldmVsQXJyYXktPmxlbmd0aCgpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSB0b3BMZXZlbEFycmF5LT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSB8fCAhdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIkludmFsaWQgb2JqZWN0IGluIHRoZSBhcnJheS4iKTsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSlNPYmplY3QqIHJ1bGVP
YmplY3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsKKyAgICAgICAgICAgIGlmICghcnVsZU9iamVj
dCB8fCBleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiSW52YWxpZCBydWxlIik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBsb2FkUnVsZSgqZXhlYywgKnJ1bGVPYmplY3QsIHJ1bGVMaXN0KTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZtLmNsZWFyKCk7CisKKyAgICBpZiAocnVsZUxpc3Qu
aXNFbXB0eSgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRW1wdHkgZXh0ZW5zaW9uLiIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpz
aGFyZWRJbnN0YW5jZSgpLnNldFJ1bGVMaXN0KGlkZW50aWZpZXIsIHJ1bGVMaXN0KTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgRXh0ZW5zaW9uc01hbmFnZXIKK30gLy8gbmFtZXNwYWNlIENvbnRlbnRF
eHRlbnNpb25zCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzM4MzZh
NTQzMmRkMjk1MmI4YzJmZmI4NWM3M2UzNWYwOThiMTYzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmgK
QEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29udGVudEV4dGVuc2lvbnNN
YW5hZ2VyX2gKKyNkZWZpbmUgQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyX2gKKworI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKKy8vIFRo
ZSBFeHRlbnNpb25zTWFuYWdlciBsb2FkcyBzZXJpYWxpemVkIGNvbnRlbnQgZXh0ZW5zaW9uIHJ1
bGVzIGRpcmVjdGx5IGludG8gV2ViQ29yZS4KK25hbWVzcGFjZSBFeHRlbnNpb25zTWFuYWdlciB7
CisKK3ZvaWQgbG9hZEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgcnVsZXMpOworCit9IC8vIG5hbWVzcGFjZSBFeHRlbnNpb25zTWFuYWdlcgorCit9IC8v
IG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2VuZGlmIC8vIENvbnRlbnRF
eHRlbnNpb25zTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNzQ0NWExY2FlOGZmNTVmOTg5OWJhMTUyNTU3ZDFkOWZiZTljYzZiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmNw
cApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJERkEuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisK
KyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKK0RGQTo6REZBKCkKKyAgICA6IG1fcm9vdCgwKQor
eworfQorCitERkE6OkRGQShWZWN0b3I8REZBTm9kZT4mJiBub2RlcywgdW5zaWduZWQgcm9vdElu
ZGV4KQorICAgIDogbV9ub2Rlcyhub2RlcykKKyAgICAsIG1fcm9vdChyb290SW5kZXgpCit7Cisg
ICAgQVNTRVJUKHJvb3RJbmRleCA8IG5vZGVzLnNpemUoKSk7Cit9CisKK0RGQTo6REZBKGNvbnN0
IERGQSYgZGZhKQorICAgIDogbV9ub2RlcyhkZmEubV9ub2RlcykKKyAgICAsIG1fcm9vdChkZmEu
bV9yb290KQoreworfQorCitERkEmIERGQTo6b3BlcmF0b3I9KGNvbnN0IERGQSYgZGZhKQorewor
ICAgIG1fbm9kZXMgPSBkZmEubV9ub2RlczsKKyAgICBtX3Jvb3QgPSBkZmEubV9yb290OworICAg
IHJldHVybiAqdGhpczsKK30KKwordW5zaWduZWQgREZBOjpuZXh0U3RhdGUodW5zaWduZWQgY3Vy
cmVudFN0YXRlLCBjaGFyIGNoYXJhY3RlciwgYm9vbCYgb2spIGNvbnN0Cit7CisgICAgQVNTRVJU
KGN1cnJlbnRTdGF0ZSA8IG1fbm9kZXMuc2l6ZSgpKTsKKworICAgIGNvbnN0IERGQU5vZGUmIG5v
ZGUgPSBtX25vZGVzW2N1cnJlbnRTdGF0ZV07CisgICAgYXV0byBuZXh0Tm9kZSA9IG5vZGUudHJh
bnNpdGlvbnMuZmluZChjaGFyYWN0ZXIpOworICAgIGlmIChuZXh0Tm9kZSA9PSBub2RlLnRyYW5z
aXRpb25zLmVuZCgpKSB7CisgICAgICAgIG9rID0gZmFsc2U7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICBvayA9IHRydWU7CisgICAgcmV0dXJuIG5leHROb2RlLT52YWx1ZTsKK30KKwor
VmVjdG9yPHVpbnQ2NF90PiBERkE6OmFjdGlvbnModW5zaWduZWQgY3VycmVudFN0YXRlKSBjb25z
dAoreworICAgIEFTU0VSVChjdXJyZW50U3RhdGUgPCBtX25vZGVzLnNpemUoKSk7CisgICAgcmV0
dXJuIG1fbm9kZXNbY3VycmVudFN0YXRlXS5hY3Rpb25zOworfQorCisjaWZuZGVmIE5ERUJVRwor
dm9pZCBERkE6OmRlYnVnUHJpbnREb3QoKSBjb25zdAoreworICAgIGRhdGFMb2dGKCJkaWdyYXBo
IERGQV9UcmFuc2l0aW9ucyB7XG4iKTsKKyAgICBkYXRhTG9nRigiICAgIHJhbmtkaXI9TFI7XG4i
KTsKKyAgICBkYXRhTG9nRigiICAgIG5vZGUgW3NoYXBlPWNpcmNsZV07XG4iKTsKKyAgICBkYXRh
TG9nRigiICAgIHtcbiIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGVzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGRhdGFMb2dGKCIgICAgICAgICAlZCBbbGFiZWw9PE5vZGUg
JWQiLCBpLCBpKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgYWN0aW9ucyA9IG1f
bm9kZXNbaV0uYWN0aW9uczsKKyAgICAgICAgaWYgKCFhY3Rpb25zLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgZGF0YUxvZ0YoIjxCUi8+QWN0aW9uczogIik7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGFjdGlvbkluZGV4ID0gMDsgYWN0aW9uSW5kZXggPCBhY3Rpb25zLnNpemUoKTsgKyth
Y3Rpb25JbmRleCkgeworICAgICAgICAgICAgICAgIGlmIChhY3Rpb25JbmRleCkKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoIiwgIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiVs
bHUiLCBhY3Rpb25zW2FjdGlvbkluZGV4XSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IGNvcnJlc3BvbmRpbmdERkFOb2RlcyA9IG1fbm9kZXNb
aV0uY29ycmVzcG9uZGluZ0RGQU5vZGVzOworICAgICAgICBBU1NFUlQoIWNvcnJlc3BvbmRpbmdE
RkFOb2Rlcy5pc0VtcHR5KCkpOworICAgICAgICBkYXRhTG9nRigiPEJSLz5ORkEgTm9kZXM6ICIp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGNvcnJlc3BvbmRpbmdERkFOb2RlSW5kZXggPSAwOyBj
b3JyZXNwb25kaW5nREZBTm9kZUluZGV4IDwgY29ycmVzcG9uZGluZ0RGQU5vZGVzLnNpemUoKTsg
Kytjb3JyZXNwb25kaW5nREZBTm9kZUluZGV4KSB7CisgICAgICAgICAgICBpZiAoY29ycmVzcG9u
ZGluZ0RGQU5vZGVJbmRleCkKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiLCAiKTsKKyAgICAg
ICAgICAgIGRhdGFMb2dGKCIlZCIsIGNvcnJlc3BvbmRpbmdERkFOb2Rlc1tjb3JyZXNwb25kaW5n
REZBTm9kZUluZGV4XSk7CisgICAgICAgIH0KKworICAgICAgICBkYXRhTG9nRigiPl0iKTsKKwor
ICAgICAgICBpZiAoIWFjdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgZGF0YUxvZ0YoIiBb
c2hhcGU9ZG91YmxlY2lyY2xlXSIpOworCisgICAgICAgIGRhdGFMb2dGKCI7XG4iKTsKKyAgICB9
CisgICAgZGF0YUxvZ0YoIiAgICB9XG4iKTsKKworICAgIGRhdGFMb2dGKCIgICAge1xuIik7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9kZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBzbG90IDogbV9ub2Rlc1tpXS50cmFuc2l0aW9ucykKKyAgICAg
ICAgICAgIGRhdGFMb2dGKCIgICAgICAgICVkIC0+ICVkIFtsYWJlbD1cIiVjXCJdO1xuIiwgaSwg
c2xvdC52YWx1ZSwgc2xvdC5rZXkpOworICAgIH0KKyAgICBkYXRhTG9nRigiICAgIH1cbiIpOwor
ICAgIGRhdGFMb2dGKCJ9XG4iKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBDb250ZW50
RXh0ZW5zaW9ucworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvREZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYTkyMmIxMDgzNzQzNzlhODU3N2I5YWFkMWJlN2RhMjg4NTllOTE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgKQEAg
LTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgREZBX2gKKyNkZWZpbmUg
REZBX2gKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJERkFO
b2RlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKKy8vIFRoZSBERkEgYWJzdHJhY3QgYSBw
YXJ0aWFsIERGQSBncmFwaCBpbiBhIGNvbXBhY3QgZm9ybS4KK2NsYXNzIERGQSB7CitwdWJsaWM6
CisgICAgREZBKCk7CisgICAgREZBKFZlY3RvcjxERkFOb2RlPiYmIG5vZGVzLCB1bnNpZ25lZCBy
b290SW5kZXgpOworICAgIERGQShjb25zdCBERkEmIGRmYSk7CisKKyAgICBERkEmIG9wZXJhdG9y
PShjb25zdCBERkEmKTsKKworICAgIHVuc2lnbmVkIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jv
b3Q7IH0KKyAgICAvLyBJZiB0aGVyZSBpcyBhIHRyYW5zaXRpb24gdG8gYSB2YWxpZCBzdGF0ZSBv
biAiY2hhcmFjdGVyIiwgcmV0dXJuIHRoYXQgc3RhdGUgYW5kIHNldCBvayB0byB0cnVlLgorICAg
IC8vIE90aGVyd2lzZSwgdGhlIHJldHVybiB2YWx1ZSBpcyB1bmRlZmluZWQgYW5kIG9rIGlzIGZh
bHNlLgorICAgIHVuc2lnbmVkIG5leHRTdGF0ZSh1bnNpZ25lZCBjdXJyZW50U3RhdGUsIGNoYXIg
Y2hhcmFjdGVyLCBib29sJiBvaykgY29uc3Q7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBhY3Rpb25z
KHVuc2lnbmVkIGN1cnJlbnRTdGF0ZSkgY29uc3Q7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9p
ZCBkZWJ1Z1ByaW50RG90KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8
REZBTm9kZT4gbV9ub2RlczsKKyAgICB1bnNpZ25lZCBtX3Jvb3Q7Cit9OworCit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CisKKyNlbmRpZiAvLyBERkFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvREZBTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZB
Tm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQyMjAzMDA2NzM2ZjJmOGFiOWZiOTlmMWQzYWQzNGRmN2M2YjYy
NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9E
RkFOb2RlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgREZB
Tm9kZV9oCisjZGVmaW5lIERGQU5vZGVfaAorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisK
Ky8vIEEgREZBTm9kZSBhYnN0cmFjdCB0aGUgdHJhbnNpdGlvbiB0YWJsZSBvdXQgb2YgYSBERkEg
c3RhdGUuIElmIGEgc3RhdGUgaXMgYWNjZXB0aW5nLCB0aGUgREZBTm9kZSBhbHNvIGhhdmUKKy8v
IHRoZSBhY3Rpb25zIGZvciB0aGF0IHN0YXRlLgorY2xhc3MgREZBTm9kZSB7CitwdWJsaWM6Cisg
ICAgSGFzaE1hcDx1aW50MTZfdCwgdW5zaWduZWQ+IHRyYW5zaXRpb25zOworICAgIFZlY3Rvcjx1
aW50NjRfdD4gYWN0aW9uczsKKworI2lmbmRlZiBOREVCVUcKKyAgICBWZWN0b3I8dW5zaWduZWQ+
IGNvcnJlc3BvbmRpbmdERkFOb2RlczsKKyNlbmRpZgorfTsKKworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjZW5k
aWYgLy8gREZBTm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9ORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MWU5YTdlMjc4NGIyYjE1ZWUwMGRjODBhMjhjZDJkMTIwNTc4OGM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmNwcApA
QCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJORkEuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNp
bmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKworTkZBOjpO
RkEoKQorICAgIDogbV9yb290KGNyZWF0ZU5vZGUoKSkKK3sKK30KKwordW5zaWduZWQgTkZBOjpj
cmVhdGVOb2RlKHVpbnQ2NF90IHJ1bGVJZCkKK3sKKyAgICB1bnNpZ25lZCBuZXh0SWQgPSBtX25v
ZGVzLnNpemUoKTsKKyAgICBtX25vZGVzLmFwcGVuZChORkFOb2RlKHJ1bGVJZCkpOworICAgIHJl
dHVybiBuZXh0SWQ7Cit9CisKK3ZvaWQgTkZBOjphZGRUcmFuc2l0aW9uKHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvLCBjaGFyIGNoYXJhY3RlcikKK3sKKyAgICBBU1NFUlQoZnJvbSA8IG1fbm9k
ZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQodG8gPCBtX25vZGVzLnNpemUoKSk7CisgICAgQVNTRVJU
KGNoYXJhY3Rlcik7CisKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbm9kZXNbZnJvbV0udHJhbnNp
dGlvbnMuYWRkKGNoYXJhY3RlciwgSGFzaFNldDx1bnNpZ25lZD4oKSk7CisgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5hZGQodG8pOworfQorCit2b2lkIE5GQTo6YWRkRXBzaWxvblRyYW5z
aXRpb24odW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pCit7CisgICAgQVNTRVJUKGZyb20gPCBt
X25vZGVzLnNpemUoKSk7CisgICAgQVNTRVJUKHRvIDwgbV9ub2Rlcy5zaXplKCkpOworCisgICAg
YXV0byBhZGRSZXN1bHQgPSBtX25vZGVzW2Zyb21dLnRyYW5zaXRpb25zLmFkZChlcHNpbG9uVHJh
bnNpdGlvbkNoYXJhY3RlciwgSGFzaFNldDx1bnNpZ25lZD4oKSk7CisgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5hZGQodG8pOworfQorCit2b2lkIE5GQTo6c2V0RmluYWwodW5zaWduZWQg
bm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSA8IG1fbm9kZXMuc2l6ZSgpKTsKKyAgICBtX25vZGVz
W25vZGVdLmlzRmluYWwgPSB0cnVlOworfQorCisjaWZuZGVmIE5ERUJVRwordm9pZCBORkE6OmRl
YnVnUHJpbnREb3QoKSBjb25zdAoreworICAgIGRhdGFMb2dGKCJkaWdyYXBoIE5GQV9UcmFuc2l0
aW9ucyB7XG4iKTsKKyAgICBkYXRhTG9nRigiICAgIHJhbmtkaXI9TFI7XG4iKTsKKyAgICBkYXRh
TG9nRigiICAgIG5vZGUgW3NoYXBlPWNpcmNsZV07XG4iKTsKKyAgICBkYXRhTG9nRigiICAgIHtc
biIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGVzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChtX25vZGVzW2ldLnJ1bGVJZCAgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpKQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAgICAgICVkIFtsYWJl
bD1cIk5vZGUgJWRcIl0iLCBpLCBpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YUxv
Z0YoIiAgICAgICAgICVkIFtsYWJlbD08Tm9kZSAlZDxCUi8+KFJ1bGUgJWxsdSk+XSIsIGksIGks
IG1fbm9kZXNbaV0ucnVsZUlkKTsKKworICAgICAgICBpZiAobV9ub2Rlc1tpXS5pc0ZpbmFsKQor
ICAgICAgICAgICAgZGF0YUxvZ0YoIiBbc2hhcGU9ZG91YmxlY2lyY2xlXSIpOworCisgICAgICAg
IGRhdGFMb2dGKCI7XG4iKTsKKyAgICB9CisgICAgZGF0YUxvZ0YoIiAgICB9XG4iKTsKKworICAg
IGRhdGFMb2dGKCIgICAge1xuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9k
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzbG90IDogbV9ub2Rl
c1tpXS50cmFuc2l0aW9ucykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBuZXh0U3RhdGUg
OiBzbG90LnZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKHNsb3Qua2V5ID09IGVwc2lsb25U
cmFuc2l0aW9uQ2hhcmFjdGVyKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAg
ICAlZCAtPiAlZCBbbGFiZWw9XCLJm1wiXTtcbiIsIGksIG5leHRTdGF0ZSk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAlZCAtPiAl
ZCBbbGFiZWw9XCIlY1wiXTtcbiIsIGksIG5leHRTdGF0ZSwgc2xvdC5rZXkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIGRhdGFMb2dGKCIgICAgfVxuIik7CisgICAgZGF0
YUxvZ0YoIn1cbiIpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNp
b25zCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ORkEuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdjYzE0NDU3NDkyNDc3ZDE2MWVmYWE4OTJjYzYxODNlMTBhNmRhZDcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuaApAQCAtMCwwICsx
LDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBORkFfaAorI2RlZmluZSBORkFfaAorCisjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIk5GQU5vZGUuaCIKKyNpbmNs
dWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKK2NsYXNzIE5GQVRvREZBOwor
CisvLyBUaGUgTkZBIHByb3ZpZGVzIGEgd2F5IHRvIGJ1aWxkIGEgTkZBIGdyYXBoIHdpdGggY2hh
cmFjdGVycyBvciBlcHNpbG9uIGFzIHRyYW5zaXRpb25zLgorLy8gVGhlIG5vZGVzIGFyZSBhY2Nl
c3NlZCB0aHJvdWdoIGFuIGlkZW50aWZpZXIuCitjbGFzcyBORkEgeworcHVibGljOgorICAgIE5G
QSgpOworICAgIHVuc2lnbmVkIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KKyAgICB1
bnNpZ25lZCBjcmVhdGVOb2RlKHVpbnQ2NF90IHJ1bGVJZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDY0X3Q+OjptYXgoKSk7CisKKyAgICB2b2lkIGFkZFRyYW5zaXRpb24odW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8sIGNoYXIgY2hhcmFjdGVyKTsKKyAgICB2b2lkIGFkZEVwc2lsb25UcmFu
c2l0aW9uKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKTsKKyAgICB2b2lkIHNldEZpbmFsKHVu
c2lnbmVkIG5vZGUpOworCisjaWZuZGVmIE5ERUJVRworICAgIHZvaWQgZGVidWdQcmludERvdCgp
IGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5GQVRvREZBOwor
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVwc2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVyID0g
MjU2OworCisgICAgVmVjdG9yPE5GQU5vZGU+IG1fbm9kZXM7CisgICAgdW5zaWduZWQgbV9yb290
OworfTsKKworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQorCisjZW5kaWYgLy8gTkZBX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY5OTE3YzQ2OThmYTYy
ZjI3OTU2YmI4MTc5M2ZjYzVlMjRlM2FlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTkZBTm9kZS5oIgorCisjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworCitORkFOb2RlOjpORkFOb2RlKHVpbnQ2NF90IHJ1
bGVJZCkKKyAgICA6IGlzRmluYWwoZmFsc2UpCisgICAgLCBydWxlSWQocnVsZUlkKQoreworfQor
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ORkFOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzIzOWQ2NjNmYTM5OTc0NTI1MjgxZjRlMTZjMjllZTViMTZkMWM4OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUu
aApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBORkFOb2RlX2gK
KyNkZWZpbmUgTkZBTm9kZV9oCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKKy8vIEEg
TkZBTm9kZSBhYnN0cmFjdCB0aGUgdHJhbnNpdGlvbiB0YWJsZSBvdXQgb2YgYSBORkEgc3RhdGUu
CitjbGFzcyBORkFOb2RlIHsKK3B1YmxpYzoKKyAgICBORkFOb2RlKHVpbnQ2NF90IHJ1bGVJZCk7
CisKKyAgICBIYXNoTWFwPHVpbnQxNl90LCBIYXNoU2V0PHVuc2lnbmVkPj4gdHJhbnNpdGlvbnM7
CisgICAgYm9vbCBpc0ZpbmFsOworICAgIGNvbnN0IHVpbnQ2NF90IHJ1bGVJZDsKK307CisKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKKworI2VuZGlmIC8vIE5GQU5vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2NjZmZGNiNWE5MGYyODI2NDc2
YWM3Y2IzOGFkMzI1OTFkZDA3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTkZBVG9ERkEuaCIKKwor
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJERkFOb2RlLmgiCisj
aW5jbHVkZSAiTkZBLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CisKK3R5cGVkZWYgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4g
Tm9kZUlkU2V0OworCitzdGF0aWMgTm9kZUlkU2V0IGVwc2lsb25DbG9zdXJlKGNvbnN0IE5vZGVJ
ZFNldCYgbm9kZVNldCwgY29uc3QgVmVjdG9yPE5GQU5vZGU+JiBncmFwaCwgdW5zaWduZWQgZXBz
aWxvblRyYW5zaXRpb25DaGFyYWN0ZXIpCit7CisgICAgQVNTRVJUKCFub2RlU2V0LmlzRW1wdHko
KSk7CisgICAgQVNTRVJUKCFncmFwaC5pc0VtcHR5KCkpOworCisgICAgLy8gV2UgZ28gYnJlYWR0
aC1maXJzdCBmaXJzdCBpbnRvIG91ciBncmFwaCBmb2xsb3dpbmcgYWxsIHRoZSBlcHNpbG9uIHRy
YW5zaXRpb24uIEF0IGVhY2ggZ2VuZXJhdGlvbiwKKyAgICAvLyBkaXNjb3ZlcmVkTm9kZXMgY29u
dGFpbnMgYWxsIHRoZSBuZXcgbm9kZXMgd2UgaGF2ZSBkaXNjb3ZlcmVkIGJ5IGZvbGxvd2luZyBh
IHNpbmdsZSBlcHNpbG9uIHRyYW5zaXRpb24KKyAgICAvLyBvdXQgb2YgdGhlIHByZXZpb3VzIHNl
dCBvZiBub2Rlcy4KKyAgICBOb2RlSWRTZXQgb3V0cHV0Tm9kZVNldCA9IG5vZGVTZXQ7CisgICAg
Tm9kZUlkU2V0IGRpc2NvdmVyZWROb2RlcyA9IG5vZGVTZXQ7CisgICAgZG8geworICAgICAgICBv
dXRwdXROb2RlU2V0LmFkZChkaXNjb3ZlcmVkTm9kZXMuYmVnaW4oKSwgZGlzY292ZXJlZE5vZGVz
LmVuZCgpKTsKKworICAgICAgICBOb2RlSWRTZXQgbmV4dEdlbmVyYXRpb25EaXNjb3ZlcmVkTm9k
ZXM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSWQgOiBkaXNjb3ZlcmVkTm9kZXMpIHsK
KyAgICAgICAgICAgIGNvbnN0IE5GQU5vZGUmIG5vZGUgPSBncmFwaFtub2RlSWRdOworICAgICAg
ICAgICAgYXV0byBlcHNpbG9uVHJhbnNpdGlvblNsb3QgPSBub2RlLnRyYW5zaXRpb25zLmZpbmQo
ZXBzaWxvblRyYW5zaXRpb25DaGFyYWN0ZXIpOworICAgICAgICAgICAgaWYgKGVwc2lsb25UcmFu
c2l0aW9uU2xvdCAhPSBub2RlLnRyYW5zaXRpb25zLmVuZCgpKSB7CisgICAgICAgICAgICAgICAg
Y29uc3QgSGFzaFNldDx1bnNpZ25lZD4mIHRhcmdldHMgPSBlcHNpbG9uVHJhbnNpdGlvblNsb3Qt
PnZhbHVlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgdGFyZ2V0Tm9kZUlkIDogdGFy
Z2V0cykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW91dHB1dE5vZGVTZXQuY29udGFpbnMo
dGFyZ2V0Tm9kZUlkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRHZW5lcmF0aW9uRGlz
Y292ZXJlZE5vZGVzLmFkZCh0YXJnZXROb2RlSWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRpc2NvdmVyZWROb2RlcyA9IG5leHRHZW5l
cmF0aW9uRGlzY292ZXJlZE5vZGVzOworICAgIH0gd2hpbGUgKCFkaXNjb3ZlcmVkTm9kZXMuaXNF
bXB0eSgpKTsKKworICAgIEFTU0VSVCghb3V0cHV0Tm9kZVNldC5pc0VtcHR5KCkpOworICAgIHJl
dHVybiBvdXRwdXROb2RlU2V0OworfQorCit0eXBlZGVmIEhhc2hNYXA8dWludDE2X3QsIE5vZGVJ
ZFNldCwgRGVmYXVsdEhhc2g8dWludDE2X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVpbnQxNl90Pj4gU2V0VHJhbnNpdGlvbnNFeGNsdWRpbmdFcHNpbG9uOwor
CitzdGF0aWMgU2V0VHJhbnNpdGlvbnNFeGNsdWRpbmdFcHNpbG9uIHNldFRyYW5zaXRpb25zRXhj
bHVkaW5nRXBzaWxvbihjb25zdCBOb2RlSWRTZXQmIG5vZGVTZXQsIGNvbnN0IFZlY3RvcjxORkFO
b2RlPiYgZ3JhcGgsIHVuc2lnbmVkIGVwc2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVyKQoreworICAg
IEFTU0VSVCghbm9kZVNldC5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghZ3JhcGguaXNFbXB0eSgp
KTsKKworICAgIFNldFRyYW5zaXRpb25zRXhjbHVkaW5nRXBzaWxvbiBvdXRwdXRTZXRUcmFuc2l0
aW9uc0V4Y2x1ZGluZ0Vwc2lsb247CisKKyAgICBmb3IgKHVuc2lnbmVkIG5vZGVJZCA6IG5vZGVT
ZXQpIHsKKyAgICAgICAgY29uc3QgTkZBTm9kZSYgbm9kZSA9IGdyYXBoW25vZGVJZF07CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgdHJhbnNpdGlvblNsb3QgOiBub2RlLnRyYW5zaXRpb25zKSB7
CisgICAgICAgICAgICBpZiAodHJhbnNpdGlvblNsb3Qua2V5ICE9IGVwc2lsb25UcmFuc2l0aW9u
Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICAgICAgYXV0byBleGlzdGluZ1RyYW5zaXRpb24gPSBv
dXRwdXRTZXRUcmFuc2l0aW9uc0V4Y2x1ZGluZ0Vwc2lsb24uZmluZCh0cmFuc2l0aW9uU2xvdC5r
ZXkpOworICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1RyYW5zaXRpb24gIT0gb3V0cHV0U2V0
VHJhbnNpdGlvbnNFeGNsdWRpbmdFcHNpbG9uLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICBl
eGlzdGluZ1RyYW5zaXRpb24tPnZhbHVlLmFkZCh0cmFuc2l0aW9uU2xvdC52YWx1ZS5iZWdpbigp
LCB0cmFuc2l0aW9uU2xvdC52YWx1ZS5lbmQoKSk7CisgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGVJZFNldCBuZXdTZXQ7CisgICAgICAgICAgICAgICAgICAg
IG5ld1NldC5hZGQodHJhbnNpdGlvblNsb3QudmFsdWUuYmVnaW4oKSwgdHJhbnNpdGlvblNsb3Qu
dmFsdWUuZW5kKCkpOworICAgICAgICAgICAgICAgICAgICBvdXRwdXRTZXRUcmFuc2l0aW9uc0V4
Y2x1ZGluZ0Vwc2lsb24uYWRkKHRyYW5zaXRpb25TbG90LmtleSwgbmV3U2V0KTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
b3V0cHV0U2V0VHJhbnNpdGlvbnNFeGNsdWRpbmdFcHNpbG9uOworfQorCitjbGFzcyBIYXNoYWJs
ZU5vZGVJZFNldCB7CitwdWJsaWM6CisgICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1
ZSB9OworICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRlZFZhbHVlIH07CisKKyAgICBI
YXNoYWJsZU5vZGVJZFNldChFbXB0eVZhbHVlVGFnKSB7IH0KKyAgICBIYXNoYWJsZU5vZGVJZFNl
dChEZWxldGVkVmFsdWVUYWcpCisgICAgICAgIDogbV9pc0RlbGV0ZWQodHJ1ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgSGFzaGFibGVOb2RlSWRTZXQoY29uc3QgTm9kZUlkU2V0JiBub2RlSWRTZXQp
CisgICAgICAgIDogbV9ub2RlSWRTZXQobm9kZUlkU2V0KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFub2RlSWRTZXQuaXNFbXB0eSgpKTsKKyAgICB9CisKKyAgICBIYXNoYWJsZU5vZGVJZFNldChI
YXNoYWJsZU5vZGVJZFNldCYmIG90aGVyKQorICAgICAgICA6IG1fbm9kZUlkU2V0KG90aGVyLm1f
bm9kZUlkU2V0KQorICAgICAgICAsIG1faXNEZWxldGVkKG90aGVyLm1faXNEZWxldGVkKQorICAg
IHsKKyAgICAgICAgb3RoZXIubV9ub2RlSWRTZXQuY2xlYXIoKTsKKyAgICAgICAgb3RoZXIubV9p
c0RlbGV0ZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBIYXNoYWJsZU5vZGVJZFNldCYgb3BlcmF0
b3I9KEhhc2hhYmxlTm9kZUlkU2V0JiYgb3RoZXIpCisgICAgeworICAgICAgICBtX25vZGVJZFNl
dCA9IG90aGVyLm1fbm9kZUlkU2V0OworICAgICAgICBvdGhlci5tX25vZGVJZFNldC5jbGVhcigp
OworICAgICAgICBtX2lzRGVsZXRlZCA9IG90aGVyLm1faXNEZWxldGVkOworICAgICAgICBvdGhl
ci5tX2lzRGVsZXRlZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX25vZGVJZFNldC5pc0VtcHR5
KCk7IH0KKyAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlbGV0
ZWQ7IH0KKworICAgIE5vZGVJZFNldCBub2RlSWRTZXQoKSBjb25zdCB7IHJldHVybiBtX25vZGVJ
ZFNldDsgfQorCitwcml2YXRlOgorICAgIE5vZGVJZFNldCBtX25vZGVJZFNldDsKKyAgICBib29s
IG1faXNEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgSGFzaGFibGVOb2RlSWRTZXRIYXNo
IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBIYXNoYWJsZU5vZGVJZFNldCYgcCkK
KyAgICB7CisgICAgICAgIHVuc2lnbmVkIGhhc2ggPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVk
IG5vZGVJZCA6IHAubm9kZUlkU2V0KCkpCisgICAgICAgICAgICBoYXNoIF49IERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaDo6aGFzaChub2RlSWQpOworICAgICAgICByZXR1cm4gaGFzaDsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoYWJsZU5vZGVJZFNldCYgYSwg
Y29uc3QgSGFzaGFibGVOb2RlSWRTZXQmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5ub2Rl
SWRTZXQoKSA9PSBiLm5vZGVJZFNldCgpICYmIGEuaXNEZWxldGVkVmFsdWUoKSA9PSBiLmlzRGVs
ZXRlZFZhbHVlKCk7CisgICAgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3N0cnVjdCBIYXNoYWJsZU5vZGVJZFNldEhh
c2hUcmFpdHMgOiBwdWJsaWMgV1RGOjpDdXN0b21IYXNoVHJhaXRzPEhhc2hhYmxlTm9kZUlkU2V0
PiB7IH07CisKK3R5cGVkZWYgSGFzaE1hcDxIYXNoYWJsZU5vZGVJZFNldCwgdW5zaWduZWQsIEhh
c2hhYmxlTm9kZUlkU2V0SGFzaCwgSGFzaGFibGVOb2RlSWRTZXRIYXNoVHJhaXRzPiBORkFUb0RG
QU5vZGVNYXA7CisKK3N0YXRpYyB1bnNpZ25lZCBhZGRERkFTdGF0ZShWZWN0b3I8REZBTm9kZT4m
IGRmYUdyYXBoLCBORkFUb0RGQU5vZGVNYXAmIG5mYVRvREZBTm9kZU1hcCwgY29uc3QgVmVjdG9y
PE5GQU5vZGU+JiBuZmFHcmFwaCwgTm9kZUlkU2V0IG5mYU5vZGVzLCB1bnNpZ25lZCBlcHNpbG9u
VHJhbnNpdGlvbkNoYXJhY3RlcikKK3sKKyAgICBBU1NFUlQoIW5mYVRvREZBTm9kZU1hcC5jb250
YWlucyhuZmFOb2RlcykpOworICAgIEFTU0VSVF9VTlVTRUQoZXBzaWxvblRyYW5zaXRpb25DaGFy
YWN0ZXIsIGVwc2lsb25DbG9zdXJlKG5mYU5vZGVzLCBuZmFHcmFwaCwgZXBzaWxvblRyYW5zaXRp
b25DaGFyYWN0ZXIpID09ICBuZmFOb2Rlcyk7CisKKyAgICBERkFOb2RlIG5ld0RGQU5vZGU7CisK
KyAgICBIYXNoU2V0PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBhY3Rpb25zOworICAgIGZv
ciAodW5zaWduZWQgbmZhTm9kZUlkIDogbmZhTm9kZXMpIHsKKyAgICAgICAgY29uc3QgTkZBTm9k
ZSYgbmZhTm9kZSA9IG5mYUdyYXBoW25mYU5vZGVJZF07CisgICAgICAgIGlmIChuZmFOb2RlLmlz
RmluYWwpCisgICAgICAgICAgICBhY3Rpb25zLmFkZChuZmFOb2RlLnJ1bGVJZCk7CisjaWZuZGVm
IE5ERUJVRworICAgICAgICBuZXdERkFOb2RlLmNvcnJlc3BvbmRpbmdERkFOb2Rlcy5hcHBlbmQo
bmZhTm9kZUlkKTsKKyNlbmRpZgorICAgIH0KKworICAgIGZvciAodWludDY0X3QgYWN0aW9uIDog
YWN0aW9ucykKKyAgICAgICAgbmV3REZBTm9kZS5hY3Rpb25zLmFwcGVuZChhY3Rpb24pOworCisg
ICAgdW5zaWduZWQgZGZhTm9kZUlkID0gZGZhR3JhcGguc2l6ZSgpOworICAgIGRmYUdyYXBoLmFw
cGVuZChuZXdERkFOb2RlKTsKKyAgICBuZmFUb0RGQU5vZGVNYXAuYWRkKG5mYU5vZGVzLCBkZmFO
b2RlSWQpOworICAgIHJldHVybiBkZmFOb2RlSWQ7Cit9CisKK3R5cGVkZWYgSGFzaFNldDxIYXNo
YWJsZU5vZGVJZFNldCwgSGFzaGFibGVOb2RlSWRTZXRIYXNoLCBIYXNoYWJsZU5vZGVJZFNldEhh
c2hUcmFpdHM+IFNldE9mTm9kZVNldDsKKworREZBIE5GQVRvREZBOjpjb252ZXJ0KGNvbnN0IE5G
QSYgbmZhKQoreworICAgIFZlY3RvcjxERkFOb2RlPiBkZmFHcmFwaDsKKyAgICBORkFUb0RGQU5v
ZGVNYXAgbmZhVG9ERkFOb2RlTWFwOworCisgICAgU2V0T2ZOb2RlU2V0IHByb2Nlc3NlZFN0YXRl
U2V0czsKKyAgICBTZXRPZk5vZGVTZXQgdW5wcm9jZXNzZWRTdGF0ZVNldHM7CisKKyAgICBjb25z
dCBWZWN0b3I8TkZBTm9kZT4mIG5mYUdyYXBoID0gbmZhLm1fbm9kZXM7CisKKyAgICBOb2RlSWRT
ZXQgaW5pdGlhbFNldCh7IG5mYS5yb290KCkgfSk7CisgICAgTm9kZUlkU2V0IGNsb3NlZEluaXRp
YWxTZXQgPSBlcHNpbG9uQ2xvc3VyZShpbml0aWFsU2V0LCBuZmFHcmFwaCwgTkZBOjplcHNpbG9u
VHJhbnNpdGlvbkNoYXJhY3Rlcik7CisKKyAgICBhZGRERkFTdGF0ZShkZmFHcmFwaCwgbmZhVG9E
RkFOb2RlTWFwLCBuZmFHcmFwaCwgY2xvc2VkSW5pdGlhbFNldCwgTkZBOjplcHNpbG9uVHJhbnNp
dGlvbkNoYXJhY3Rlcik7CisgICAgdW5wcm9jZXNzZWRTdGF0ZVNldHMuYWRkKGNsb3NlZEluaXRp
YWxTZXQpOworCisgICAgZG8geworICAgICAgICBIYXNoYWJsZU5vZGVJZFNldCBzdGF0ZVNldCA9
IHVucHJvY2Vzc2VkU3RhdGVTZXRzLnRha2VBbnkoKTsKKworICAgICAgICBBU1NFUlQoIXByb2Nl
c3NlZFN0YXRlU2V0cy5jb250YWlucyhzdGF0ZVNldCkpOworICAgICAgICBwcm9jZXNzZWRTdGF0
ZVNldHMuYWRkKHN0YXRlU2V0Lm5vZGVJZFNldCgpKTsKKworICAgICAgICB1bnNpZ25lZCBkZmFO
b2RlSWQgPSBuZmFUb0RGQU5vZGVNYXAuZ2V0KHN0YXRlU2V0KTsKKworICAgICAgICBTZXRUcmFu
c2l0aW9uc0V4Y2x1ZGluZ0Vwc2lsb24gdHJhbnNpdGlvbnNGcm9tQ2xvc2VkU2V0ID0gc2V0VHJh
bnNpdGlvbnNFeGNsdWRpbmdFcHNpbG9uKHN0YXRlU2V0Lm5vZGVJZFNldCgpLCBuZmFHcmFwaCwg
TkZBOjplcHNpbG9uVHJhbnNpdGlvbkNoYXJhY3Rlcik7CisgICAgICAgIGZvciAoY29uc3QgYXV0
byYgdHJhbnNpdGlvblNsb3QgOiB0cmFuc2l0aW9uc0Zyb21DbG9zZWRTZXQpIHsKKyAgICAgICAg
ICAgIE5vZGVJZFNldCBjbG9zZWRUYXJnZXROb2RlU2V0ID0gZXBzaWxvbkNsb3N1cmUodHJhbnNp
dGlvblNsb3QudmFsdWUsIG5mYUdyYXBoLCBORkE6OmVwc2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVy
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG5ld0RGQU5vZGVJZDsKKworICAgICAgICAgICAgY29u
c3QgYXV0byYgZXhpc3RpbmdORkFUb0RGQUFzc29jaWF0aW9uID0gbmZhVG9ERkFOb2RlTWFwLmZp
bmQoY2xvc2VkVGFyZ2V0Tm9kZVNldCk7CisgICAgICAgICAgICBpZiAoZXhpc3RpbmdORkFUb0RG
QUFzc29jaWF0aW9uICE9IG5mYVRvREZBTm9kZU1hcC5lbmQoKSkKKyAgICAgICAgICAgICAgICBu
ZXdERkFOb2RlSWQgPSBleGlzdGluZ05GQVRvREZBQXNzb2NpYXRpb24tPnZhbHVlOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0RGQU5vZGVJZCA9IGFkZERGQVN0YXRlKGRm
YUdyYXBoLCBuZmFUb0RGQU5vZGVNYXAsIG5mYUdyYXBoLCBjbG9zZWRUYXJnZXROb2RlU2V0LCBO
RkE6OmVwc2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVyKTsKKworICAgICAgICAgICAgQVNTRVJUKG5l
d0RGQU5vZGVJZCA8IGRmYUdyYXBoLnNpemUoKSk7CisKKyAgICAgICAgICAgIGNvbnN0IGF1dG8g
YWRkUmVzdWx0ID0gZGZhR3JhcGhbZGZhTm9kZUlkXS50cmFuc2l0aW9ucy5zZXQodHJhbnNpdGlv
blNsb3Qua2V5LCBuZXdERkFOb2RlSWQpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgICAgICAgICAgaWYgKCFwcm9jZXNz
ZWRTdGF0ZVNldHMuY29udGFpbnMoY2xvc2VkVGFyZ2V0Tm9kZVNldCkpCisgICAgICAgICAgICAg
ICAgdW5wcm9jZXNzZWRTdGF0ZVNldHMuYWRkKGNsb3NlZFRhcmdldE5vZGVTZXQpOworICAgICAg
ICB9CisgICAgfSB3aGlsZSAoIXVucHJvY2Vzc2VkU3RhdGVTZXRzLmlzRW1wdHkoKSk7CisKKyAg
ICBBU1NFUlQocHJvY2Vzc2VkU3RhdGVTZXRzLnNpemUoKSA9PSBuZmFUb0RGQU5vZGVNYXAuc2l6
ZSgpKTsKKworICAgIHJldHVybiBERkEoV1RGOjptb3ZlKGRmYUdyYXBoKSwgMCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5oIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDZhNWY3MjU3ODhmODU3
ZmJiMzQ0OGZlNjBkMGIzNDIxNGMyNzA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuaApAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBORkFUb0RGQV9oCisjZGVmaW5lIE5GQVRvREZBX2gKKworI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJERkEuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworCitjbGFzcyBO
RkE7CisKKy8vIE5GQVRvREZBIHByb3ZpZGVzIGEgd2F5IHRvIGJ1aWxkIGEgREZBIGNvcnJlc3Bv
bmRpbmcgdG8gYSBORkEuCitjbGFzcyBORkFUb0RGQSB7CitwdWJsaWM6CisgICAgc3RhdGljIERG
QSBjb252ZXJ0KGNvbnN0IE5GQSYpOworfTsKKworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjZW5kaWYgLy8gTkZB
VG9ERkFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggOTkwYWU4OTk4Y2ExZGY2YTYwYmI4MDk5MjcxOTZiZGViYzRk
NzQ1OC4uODdhYjM5ZjIyM2QyZWRlZDc4YmVlODY1OThjOTk4MGZkNTNkMTc2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkWFNMU3R5bGVTaGVldC5oIgogI2lu
Y2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNv
bnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAg
LTQ1Myw2ICs0NTQsMTEgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICBpZiAoIWNhblJl
cXVlc3QodHlwZSwgdXJsLCByZXF1ZXN0Lm9wdGlvbnMoKSwgcmVxdWVzdC5mb3JQcmVsb2FkKCkp
KQogICAgICAgICByZXR1cm4gMDsKIAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisg
ICAgaWYgKENvbnRlbnRFeHRlbnNpb25zOjpzaG91bGRCbG9ja1VSTCh1cmwpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorCiAgICAgaWYgKG1lbW9yeUNhY2hlKCkuZGlzYWJsZWQo
KSkgewogICAgICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1l
bnRSZXNvdXJjZXMuZmluZCh1cmwuc3RyaW5nKCkpOwogICAgICAgICBpZiAoaXQgIT0gbV9kb2N1
bWVudFJlc291cmNlcy5lbmQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDE2M2Y2MjM3YWJiOTNiMGNmM2UzZmU3
YjUzN2I2MTE0ODQ5N2RlNDIuLjhhODU2NWZiMDBlYWUyZmEwZjZkNzZlMjdmNjBkZGUwZjFlYTY3
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW0KQEAgLTI0NCw2ICsyNDQsMjAgQEAgc3RhdGljIFdlYktpdDo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3koTlNIVFRQQ29va2llQWNjZXAK
ICAgICBfcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0ZXIocGFyYW1ldGVyLCBJUEM6OkRhdGFSZWZlcmVu
Y2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0
aF0pKSk7CiB9CiAKKy0gKHZvaWQpX2xvYWRDb250ZW50RXh0ZW5zaW9uV2l0aElkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllciBzZXJpYWxpemVkUnVsZXM6KE5TU3RyaW5nICopc2VyaWFs
aXplZFJ1bGVzIHN1Y2Nlc3NDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEaWN0aW9uYXJ5
ICppbmZvKSlzdWNjZXNzQ29tcGxldGlvbkhhbmRsZXIgZXJyb3JDb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoTlNFcnJvciAqZXJyb3IpKWVycm9yQ29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIC8vIEZvciB0aGlzIGV4cGVyaW1lbnRhdGlv
biwgdGhlIENvbnRlbnRFeHRlbnNpb25zIGFyZSBoYW5kbGVkIGJ5IGVhY2ggV2ViUHJvY2Vzcy4K
KyAgICAvLyBFdmVudHVhbGx5IHRoZSBDb250ZW50RXh0ZW5zaW9uIHdpbGwgaGF2ZSB0byBiZSBo
YW5kbGVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgV2ViUHJvY2Vzc2VzIGFuZCB3ZSdsbCBiZSBhYmxl
CisgICAgLy8gdG8gcHJvdmlkZSBtZWFuaW5nZnVsIGNvbXBsZXRpb24gaGFuZGxlcnMuCisgICAg
VU5VU0VEX1BBUkFNKGVycm9yQ29tcGxldGlvbkhhbmRsZXIpOworCisgICAgX3Byb2Nlc3NQb29s
LT5sb2FkQ29udGVudEV4dGVuc2lvbihpZGVudGlmaWVyLCBzZXJpYWxpemVkUnVsZXMpOworCisg
ICAgc3VjY2Vzc0NvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisjZW5kaWYKK30KKwogLSAoaWQgPF9X
S0Rvd25sb2FkRGVsZWdhdGU+KV9kb3dubG9hZERlbGVnYXRlCiB7CiAgICAgcmV0dXJuIF9kb3du
bG9hZERlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IGFj
MjAzM2U0OTJmOGNlZGNlMTc1YWM3YjI0NmRlZjI3NDM5ZDk3OGQuLmJlZDdmMGNiNzFmZTY3NGI3
Y2QzNzQzM2RkNDkyMWQwNTk1ZGViYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTQzLDYgKzQz
LDggQEAKIC0gKGlkKV9vYmplY3RGb3JCdW5kbGVQYXJhbWV0ZXI6KE5TU3RyaW5nICopcGFyYW1l
dGVyOwogLSAodm9pZClfc2V0T2JqZWN0OihpZCA8TlNDb3B5aW5nLCBOU1NlY3VyZUNvZGluZz4p
b2JqZWN0IGZvckJ1bmRsZVBhcmFtZXRlcjooTlNTdHJpbmcgKilwYXJhbWV0ZXI7CiAKKy0gKHZv
aWQpX2xvYWRDb250ZW50RXh0ZW5zaW9uV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRp
ZmllciBzZXJpYWxpemVkUnVsZXM6KE5TU3RyaW5nICopc2VyaWFsaXplZFJ1bGVzIHN1Y2Nlc3ND
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEaWN0aW9uYXJ5ICppbmZvKSlzdWNjZXNzQ29t
cGxldGlvbkhhbmRsZXIgZXJyb3JDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAq
ZXJyb3IpKWVycm9yQ29tcGxldGlvbkhhbmRsZXI7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0
ZT4gX2Rvd25sb2FkRGVsZWdhdGU7CiAKICsgKE5TVVJMICopX3dlYnNpdGVEYXRhVVJMRm9yQ29u
dGFpbmVyV2l0aFVSTDooTlNVUkwgKiljb250YWluZXJVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBlOTcyZGYwNzcwZTc0ZjA2YjY3MGFiYjQ0
ZmNkY2UwNGQyZmYwNmViLi5hOGM1NTUzY2I3MzEwYzdkZDgwZWMyZGI2MDZiMzQ4MWJjNGZkMGI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTgx
MCw2ICs4MTAsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5j
aGluZyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlN0YXJ0TWVtb3J5U2FtcGxlcihzYW1wbGVMb2dTYW5kYm94SGFu
ZGxlLCBzYW1wbGVMb2dGaWxlUGF0aCwgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWwpLCAwKTsKICAg
ICB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGZvciAoY29uc3QgYXV0
byYgc2xvdCA6IG1fZW5jb2RlZENvbnRlbnRFeHRlbnNpb25zKQorICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpMb2FkQ29udGVudEV4dGVuc2lvbihzbG90LmtleSwg
c2xvdC52YWx1ZSksIDApOworI2VuZGlmCisKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3Jl
YXRlQ29ubmVjdGlvbih0aGlzLCBwcm9jZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogfQogCkBAIC0x
NDMxLDQgKzE0MzYsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TWVtb3J5Q2FjaGVEaXNh
YmxlZChib29sIGRpc2FibGVkKQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6U2V0TWVtb3J5Q2FjaGVEaXNhYmxlZChkaXNhYmxlZCkpOwogfQogCisjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmxvYWRDb250ZW50
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzZXJpYWxp
emVkUnVsZXMpCit7CisgICAgbV9lbmNvZGVkQ29udGVudEV4dGVuc2lvbnMuc2V0KGlkZW50aWZp
ZXIsIHNlcmlhbGl6ZWRSdWxlcyk7CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpMb2FkQ29udGVudEV4dGVuc2lvbihpZGVudGlmaWVyLCBzZXJpYWxpemVkUnVs
ZXMpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZGRjNGZiNmM5OWFlMzlkZjAyYzE2NDc3
ZTFjMGIwM2Q1MmY0NWRhNi4uNDMzNDdlYTE5ZjllMzFjNTQ4YjRhOGE3NDRhN2MwNmM1MzExNzRl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM1Nyw2
ICszNTcsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9wcm9jZXNzU3VwcHJlc3Npb25E
aXNhYmxlZEZvclBhZ2VDb3VudGVyLnRva2VuPFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9r
ZW5UeXBlPigpOwogICAgIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAg
dm9pZCBsb2FkQ29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc2VyaWFsaXplZFJ1bGVzKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTU0MCw2ICs1NDQsMTAgQEAgcHJpdmF0ZToKICAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbV9idW5kbGVQYXJhbWV0ZXJzOwogICAg
IFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW4gbV9wbHVnaW5Qcm9jZXNzTWFuYWdlclBy
b2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW47CiAjZW5kaWYKKworI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9lbmNvZGVkQ29u
dGVudEV4dGVuc2lvbnM7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBiNzg1Yjg5OTA0OTljN2M2
YjhmZmNhMDAwNjIzMWY0NTRmY2UxZGUyLi5kZGY5MGI5NTdiZmE2ZmY3YTFmMGM4MDUxYTI4YmU4
YjZjMWU2N2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4
dGVuc2lvbnNNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Gb250Q2FjaGUuaD4KQEAgLTEzMTUsNiArMTMxNiwxMyBAQCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+IFdlYlByb2Nlc3M6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMoQVBJOjpPYmplY3QqIG9i
amVjdCkKICAgICByZXR1cm4gVXNlckRhdGE6OnRyYW5zZm9ybShvYmplY3QsIFRyYW5zZm9ybWVy
KCkpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKK3ZvaWQgV2ViUHJvY2Vz
czo6bG9hZENvbnRlbnRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNlcmlhbGl6ZWRSdWxlcykKK3sKKyAgICBDb250ZW50RXh0ZW5zaW9uczo6RXh0ZW5z
aW9uc01hbmFnZXI6OmxvYWRFeHRlbnNpb24oaWRlbnRpZmllciwgc2VyaWFsaXplZFJ1bGVzKTsK
K30KKyNlbmRpZgorCiB2b2lkIFdlYlByb2Nlc3M6OnNldE1lbW9yeUNhY2hlRGlzYWJsZWQoYm9v
bCBkaXNhYmxlZCkKIHsKICAgICBpZiAobWVtb3J5Q2FjaGUoKS5kaXNhYmxlZCgpICE9IGRpc2Fi
bGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBmMmU3MjFmNDY4
YjE1ZWExZDY0YWExYmUzNDA0NDViNzFjMzc3NjIzLi5hMTEyNGQ1ZGIwMDI3MjA2YjQ2ZDVlYmU1
MTllMDRjZWI2MTJiYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApA
QCAtMjAyLDYgKzIwMiwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNSaWNoQ29udGVudFNlcnZp
Y2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSaWNoQ29udGVudFNlcnZpY2VzOyB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgdm9pZCBsb2FkQ29udGVudEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VyaWFsaXpl
ZFJ1bGVzKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlByb2Nlc3MoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDk0
ZWZlMjBiMmIwMDIyMzJkZDkxOWMwYzEwMTlmZjI2NDI2NTU0NzcuLjg0MTUyODU1M2I0NTU4MWMy
MmIzNDA2MmE3NmU2YjQ1Yzc1NmY1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTkzLDYgKzkzLDEwIEBAIG1lc3NhZ2VzIC0+
IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEVuYWJsZWRTZXJ2aWNlcyhib29s
IGhhc0ltYWdlU2VydmljZXMsIGJvb2wgaGFzU2VsZWN0aW9uU2VydmljZXMsIGJvb2wgaGFzUmlj
aENvbnRlbnRTZXJ2aWNlcykKICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKKyAgICBMb2FkQ29udGVudEV4dGVuc2lvbihTdHJpbmcgaWRlbnRpZmllciwgU3RyaW5nIHNl
cmlhbGl6ZWRSdWxlcykKKyNlbmRpZgorCiAgICAgUHJvY2Vzc1dpbGxTdXNwZW5kKCkKICAgICBD
YW5jZWxQcm9jZXNzV2lsbFN1c3BlbmQoKQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244136</attachid>
            <date>2015-01-06 21:01:37 -0800</date>
            <delta_ts>2015-01-08 17:01:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140160-20150106210141.patch</filename>
            <type>text/plain</type>
            <size>96555</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5YWIwNDAyYWNjMmZlNTEzMmM1MTBj
ZmEzYjU1YmQ1YjliNjE4OWQuLmFmOTJhYmVlNWJhOWE0ZDRlYmYwODAwMGNjYWUwMDkwNmRhMTA3
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDEtMDYgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFN0YXJ0IGEgcHJvdG90eXBlIGZv
ciBkZWNsYXJhdGl2ZSBzaXRlIHNwZWNpZmljIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDE2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisK
IDIwMTUtMDEtMDYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQUREUkVTU19TQU5JVElaRVIgbWFjcm8gaXMgb3ZlcmxvYWRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJk
MjFhNGRlMTViNGFiMDYwZjQwOTdkMTQxOTUxNjIwZmEzOWZkYTkuLmIwODVhYzlkOWUyMjEwMmI4
N2M3NDBkNjc3NmY4ZTUxMWQzMTQwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAx
NS0wMS0wNiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1dLMl0gU3RhcnQgYSBwcm90b3R5cGUgZm9yIGRlY2xhcmF0aXZlIHNpdGUgc3BlY2lmaWMg
ZXh0ZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwMTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ3VycmVudGx5LCBjbGllbnRzIGhhdmUgdmFyaW91cyB3YXlzIHRvIGV4ZWN1dGUgY3VzdG9t
IGNvZGUgZm9yIGNlcnRhaW4gVVJMcy4KKyAgICAgICAgRWFjaCBvZiB0aG9zZSBtZWNoYW5pc20g
aW1wbGllcyBtZXNzYWdpbmcgdGhlIFVJUHJvY2VzcywgZXhlY3V0aW5nIHNvbWUgY29kZQorICAg
ICAgICBjYWxsaW5nIGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MsIHRoZW4gYWN0dWFsbHkgbG9hZCB0
aGUgcmVzb3VyY2UuCisgICAgICAgIEFsbCB0aGlzIGJhY2sgYW5kIGZvcnRoIGludHJvZHVjZXMg
ZGVsYXlzIGJlZm9yZSB3ZSBhY3R1YWxseSBsb2FkIHJlc291cmNlcy4KKworICAgICAgICBTaW5j
ZSB0aGUgc2V0IG9mIGFjdGlvbnMgaXMgZG9uZSBwZXIgc2l0ZSBpcyBhY3R1YWxseSBzaW1wbGUg
YW5kIGxpbWl0ZWQsCisgICAgICAgIGl0IG1heSBiZSBwb3NzaWJsZSB0byBkbyBldmVyeXRoaW5n
IGluIFdlYkNvcmUgYW5kIHNob3J0Y3V0IHRoZSBkZWZlcmVkIGxvYWRpbmcuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBwcm92aWRlcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgaWRlYS4gVGhl
ICJydWxlcyIgKGN1cnJlbnRseSBqdXN0IGJsb2NraW5nKQorICAgICAgICBhcmUgYmUgcGFzc2Vk
IHRvIFdlYkNvcmUgaW4gYSBKU09OIGZvcm1hdC4gSW4gV2ViQ29yZSwgd2UgY3JlYXRlIGEgc3Rh
dGUKKyAgICAgICAgbWFjaGluZSB0byBtYXRjaCB0aGUgcnVsZXMgYW5kIHdlIGV4ZWN1dGUgdGhl
IGFjdGlvbiB3aGVuIHRoZSBzdGF0ZSBtYWNoaW5lIHRlbGxzCisgICAgICAgIHVzIHRvLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25SdWxlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkNvbnRlbnRFeHRlbnNpb25SdWxlOjpDb250ZW50RXh0ZW5zaW9uUnVsZSk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNp
b25SdWxlOjp0cmlnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uUnVsZTo6YWN0aW9uKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnNoYXJlZEluc3Rh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ6OnNldFJ1bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnJlbW92ZVJ1bGVMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6
OnNob3VsZEJsb2NrVVJMKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuaDogQWRkZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmguCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c2hvdWxkQmxvY2tVUkwpOgorICAgICAgICAqIGNvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaC4K
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpFeHRlbnNpb25z
TWFuYWdlcjo6bG9hZFRyaWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkV4dGVuc2lvbnNNYW5hZ2VyOjpsb2FkQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpFeHRlbnNpb25zTWFuYWdlcjo6bG9hZFJ1bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkV4dGVuc2lvbnNNYW5hZ2VyOjpsb2FkRXh0ZW5z
aW9uKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFn
ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6REZBKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkE6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBOjpuZXh0U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6YWN0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBOjpkZWJ1Z1ByaW50RG90KToKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkEuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oLgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6cm9vdCk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvREZBTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmguCisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvTkZBLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6TkZBOjpORkEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQTo6
Y3JlYXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TkZBOjph
ZGRUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpORkE6
OmFkZEVwc2lsb25UcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpORkE6OnNldEZpbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpORkE6OmRlYnVnUHJpbnREb3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TkZB
Ojpyb290KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQU5vZGU6Ok5G
QU5vZGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6ZXBzaWxvbkNsb3N1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnNldFRyYW5zaXRpb25zRXhjbHVkaW5n
RXBzaWxvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SGFzaGFibGVO
b2RlSWRTZXQ6Okhhc2hhYmxlTm9kZUlkU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpIYXNoYWJsZU5vZGVJZFNldDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpIYXNoYWJsZU5vZGVJZFNldDo6aXNFbXB0eVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpIYXNoYWJsZU5vZGVJZFNldDo6
aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Okhh
c2hhYmxlTm9kZUlkU2V0Ojpub2RlSWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6Okhhc2hhYmxlTm9kZUlkU2V0SGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6SGFzaGFibGVOb2RlSWRTZXRIYXNoOjplcXVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6YWRkREZBU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQVRvREZBOjpjb252ZXJ0KToKKyAgICAgICAg
KiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmguCisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorCiAyMDE1LTAxLTA2ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgTWF0aE1MIGluIGRh
c2hib2FyZCBjb21wYXRpYmlsaXR5IG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMDhmNzM3OTYzYjMzNjM3
YzVkY2NkYWU2NTIxMWViYmY5MzEzMzI2Li45NTNlNzVlZjIwZDQ2NTBjMTM5ZDRlNDYwMGU3NDlh
YjcyOTU0M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMDEtMDYgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFN0YXJ0
IGEgcHJvdG90eXBlIGZvciBkZWNsYXJhdGl2ZSBzaXRlIHNwZWNpZmljIGV4dGVuc2lvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDE2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb3ZpZGUgYSBz
bWFsbCBTUEkgZm9yIE9TIFguIFRoaXMgd2lsbCBsaWtlbHkgbW92ZQorICAgICAgICB0byBhIGJl
dHRlciBwbGFjZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfbG9hZENvbnRlbnRFeHRlbnNpb25XaXRo
SWRlbnRpZmllcjpzZXJpYWxpemVkUnVsZXM6c3VjY2Vzc0NvbXBsZXRpb25IYW5kbGVyOmVycm9y
Q29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmluaXNoTGF1
bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxvYWRDb250ZW50RXh0
ZW5zaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojpsb2FkQ29udGVudEV4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE1
LTAxLTA2ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBWaWV3IHN0YXRlIGNoYW5nZSBjYWxsYmFja3MgYXJlIHNvbWV0aW1lcyBkcm9wcGVkIG9u
IHRoZSBmbG9vcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBi
L1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggMTMyOGM1NmFkOTMwNjA5NmQy
ZmVkOWY5MTFjZWQzZTFlODA4ZDZhZi4uNzExZmU0YzhhNGM4NTA0NDU3MzA1ZGFiZTMwMDQ0OGEw
NjYxYTBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC01OCw2ICs1OCwxMCBAQAogI2Rl
ZmluZSBFTkFCTEVfQVNZTkNfU0NST0xMSU5HIDEKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5B
QkxFX0NPTlRFTlRfRVhURU5TSU9OUykKKyNkZWZpbmUgRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9O
UyAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DT05URVhUX01FTlVTKQogI2RlZmlu
ZSBFTkFCTEVfQ09OVEVYVF9NRU5VUyAwCiAjZW5kaWYKQEAgLTE2Nyw2ICsxNzEsMTAgQEAgdGhl
IHB1YmxpYyBpT1MgU0RLLiBXZSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnIGZpbGUKIC8qIC0tLS0tLS0tLSBBcHBsZSBNQUMgcG9ydCAobm90IElP
UykgLS0tLS0tLS0tICovCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaWYgIWRlZmluZWQoRU5BQkxF
X0NPTlRFTlRfRVhURU5TSU9OUykKKyNkZWZpbmUgRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9OUyAx
CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DU1NfSU1BR0VfU0VUKQogI2RlZmluZSBF
TkFCTEVfQ1NTX0lNQUdFX1NFVCAxCiAjZW5kaWYKQEAgLTMyOSw2ICszMzcsMTAgQEAgdGhlIHB1
YmxpYyBpT1MgU0RLLiBXZSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnIGZpbGUKICNkZWZpbmUgRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HIDEKICNl
bmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9OUykKKyNkZWZpbmUg
RU5BQkxFX0NPTlRFTlRfRVhURU5TSU9OUyAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJM
RV9DT05URVhUX01FTlVTKQogI2RlZmluZSBFTkFCTEVfQ09OVEVYVF9NRU5VUyAxCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYzY4MTIwYTg3N2Y4N2NjOTg1ZjFiNGVjNzZjMzMwZDA5
MjFjNzIwOC4uYmI4YmFhY2ZlZmJmZmIyOGY4ZmZhZTNiNWIyYmIzNWYzMWNkMTUyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTMwMTMsNiArMzAxMywxMCBAQCBfX1pON1dlYkNvcmUxNFJlc291
cmNlSGFuZGxlMjVjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlRVAxOU5TQ2FjaGVkVVJMUmVzcG9u
c2UKIF9fWk43V2ViQ29yZTM3c3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeUVQ
MTVOU1VSTENvbm5lY3Rpb25QMTJOU1VSTFJlcXVlc3RQMTNOU1VSTFJlc3BvbnNlCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCitfX1pON1dlYkNvcmUxN0NvbnRlbnRF
eHRlbnNpb25zMTdFeHRlbnNpb25zTWFuYWdlcjEzbG9hZEV4dGVuc2lvbkVSS04zV1RGNlN0cmlu
Z0VTNV8KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogX19aTjdXZWJD
b3JlMTNDb250ZW50RmlsdGVyNmRlY29kZUVQMTdOU0tleWVkVW5hcmNoaXZlclJTMF8KIF9fWk43
V2ViQ29yZTEzQ29udGVudEZpbHRlckMxRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYWMyYjhkNDEzYjg3M2VkYmYxY2ZlNjI3
NTM0YzU5MDQ4ZTdiMTQxLi40NjVjZmY2ZmNlODBhMjgwMmJjYTAyN2E2Nzg5Njc2ZGUxMzM5ZTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDIzLDcgKzEwMjMsMTYgQEAKIAkJMjY1NTQxNTIxNDg5QjIzMzAwMERGQzVEIC8q
IEN1cnNvcklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyNjU1NDE0QjE0ODlBQTJCMDAwREZDNUQgLyogQ3Vyc29ySU9TLmNwcCAqLzsgfTsKIAkJ
MjY2MDFFQkYxNEIzQjlBRDAwMTJDMEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjYwMUVCRDE0QjNC
OUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNjYwMUVDMDE0QjNCOUFEMDAxMkMw
RkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjYwMUVCRTE0QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZv
cm1FdmVudEZhY3RvcnlJT1MubW0gKi87IH07CisJCTI2NzcyNUZDMUE1QjNBRDkwMDNDMjRERCAv
KiBERkEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjY3NzI1RjYxQTVCM0FEOTAwM0MyNEREIC8qIERGQS5jcHAgKi87IH07CisJCTI2NzcyNUZEMUE1
QjNBRDkwMDNDMjRERCAvKiBERkEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI2NzcyNUY3MUE1QjNBRDkwMDNDMjRERCAvKiBERkEuaCAqLzsgfTsKKwkJ
MjY3NzI1RkYxQTVCM0FEOTAwM0MyNEREIC8qIERGQU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NzcyNUY5MUE1QjNBRDkwMDNDMjRERCAvKiBE
RkFOb2RlLmggKi87IH07CisJCTI2NzcyNjAwMUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjc3MjVG
QTFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuY3BwICovOyB9OworCQkyNjc3MjYwMTFBNUIz
QUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2NzcyNUZCMUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5oICov
OyB9OwogCQkyNjkyMzk5NjE1MDVFMUFBMDA5RTU3RkMgLyogSlNJREJWZXJzaW9uQ2hhbmdlRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2OTIz
OTkyMTUwNUUxQUEwMDlFNTdGQyAvKiBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oICovOyB9Owor
CQkyNjkzOTcyMTFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjkzOTcxRjFBNEE0MTJGMDBFODM0OUQg
LyogTkZBTm9kZS5jcHAgKi87IH07CisJCTI2OTM5NzIyMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFO
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjkz
OTcyMDFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5oICovOyB9OworCQkyNjkzOTcyNDFBNEE1
QjY0MDBFODM0OUQgLyogTkZBLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmggKi87IH07CisJCTI2
OTM5NzI2MUE0QTVGQkQwMEU4MzQ5RCAvKiBORkEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY5Mzk3MjUxQTRBNUZCRDAwRTgzNDlEIC8qIE5GQS5j
cHAgKi87IH07CiAJCTI2QUEwRjlFMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0Vs
ZW1lbnRUeXBlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI2QUEwRjlEMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRU
eXBlTWFwLmNwcCAqLzsgfTsKIAkJMjZCOTk5OEYxODAzQUU3MjAwRDAxMTIxIC8qIFJlZ2lzdGVy
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNkI5OTk4RTE4MDNBRTcyMDBEMDExMjEgLyogUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLzsgfTsK
IAkJMjZCOTk5OTExODAzQjNDOTAwRDAxMTIxIC8qIFN0YWNrQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkI5OTk5MDE4MDNCM0M5MDBE
MDExMjEgLyogU3RhY2tBbGxvY2F0b3IuaCAqLzsgfTsKQEAgLTEwMzUsNiArMTA0NCwxNCBAQAog
CQkyNkMxN0EzRTE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZDMTdBM0MxNDkxRDJENDAwRDEy
QkEyIC8qIEZpbGVTeXN0ZW1JT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkyNkMxN0EzRjE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2QzE3
QTNEMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1tICovOyB9OwogCQkyNkU5OEEx
MDEzMEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZFOThBMEYxMzBBOUZDQTAwOEVC
N0IyIC8qIFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaCAqLzsgfTsKKwkJMjZGMEM4OTIxQTJENzlD
QjAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkYwQzg5MTFBMkQ3OUNCMDAyNzk0Rjgg
LyogQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCAqLzsgfTsKKwkJMjZGMEM4OTQxQTJEN0E3
NjAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjBDODkzMUEyRDdBNzYwMDI3OTRG
OCAvKiBDb250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5jcHAgKi87IH07CisJCTI2RjBDODk3MUEy
RTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMEM4OTUxQTJFNzI0QjAwMjc5
NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHAgKi87IH07CisJCTI2RjBDODk4MUEy
RTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjBDODk2MUEyRTcyNEIwMDI3OTRG
OCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyNkYwQzg5QjFBMkVDMTEwMDAyNzk0RjggLyogQ29u
dGVudEV4dGVuc2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGMEM4OTkxQTJFQzExMDAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25S
dWxlLmNwcCAqLzsgfTsKKwkJMjZGMEM4OUMxQTJFQzExMDAwMjc5NEY4IC8qIENvbnRlbnRFeHRl
bnNpb25SdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNkYwQzg5QTFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1bGUuaCAqLzsg
fTsKKwkJMjZGMEM4OUYxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkYw
Qzg5RDFBMkVDM0JFMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCAqLzsg
fTsKKwkJMjZGMEM4QTAxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMEM4
OUUxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oICovOyB9Owog
CQkyNkY0MEQ0QTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNDBENDkxNDkwNEE2MzAwQ0E2
N0M0IC8qIEV2ZW50TG9vcElPUy5tbSAqLzsgfTsKIAkJMjZGOUE4MzgxOEEwNDZBQzAwQUVCODhB
IC8qIFZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY5QTgzNjE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRD
b25maWd1cmF0aW9uLmNwcCAqLzsgfTsKIAkJMjZGOUE4MzkxOEEwNDZBQzAwQUVCODhBIC8qIFZp
ZXdwb3J0Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGOUE4MzcxOEEwNDZBQzAwQUVCODhBIC8qIFZpZXdwb3J0Q29uZmlndXJh
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC04MDQ2LDggKzgwNjMsMTcgQEAKIAkJMjY1NTQxNEIxNDg5QUEyQjAwMERGQzVEIC8qIEN1cnNv
cklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXJzb3JJT1Mu
Y3BwOyBwYXRoID0gaW9zL0N1cnNvcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI2NjAxRUJEMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlP
Uy5oOyBwYXRoID0gaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI2NjAxRUJFMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0Zm9ybUV2ZW50
RmFjdG9yeUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBs
YXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tOyBwYXRoID0gaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjc3MjVGNjFBNUIzQUQ5MDAz
QzI0REQgLyogREZBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERG
QS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2NzcyNUY3MUE1QjNBRDkwMDND
MjRERCAvKiBERkEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZBLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2NzcyNUY5MUE1QjNBRDkwMDNDMjRERCAvKiBE
RkFOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGQU5vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY3NzI1RkExQTVCM0FEOTAwM0MyNEREIC8qIE5G
QVRvREZBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5GQVRvREZB
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY3NzI1RkIxQTVCM0FEOTAwM0My
NEREIC8qIE5GQVRvREZBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5GQVRv
REZBLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2OTIzOTkxMTUwNUUxQUEwMDlF
NTdGQyAvKiBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI2OTIzOTkyMTUwNUUxQUEwMDlFNTdGQyAvKiBKU0lEQlZlcnNp
b25DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjkzOTcx
RjFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBORkFOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MjY5Mzk3MjAxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTkZBTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
NjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5GQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjkzOTcyNTFB
NEE1RkJEMDBFODM0OUQgLyogTkZBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5GQS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2QUEwRjk5MThE
Mjk3M0QwMDQxOTM4MSAvKiBtYWtlU2VsZWN0b3JQc2V1ZG9FbGVtZW50c01hcC5weSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IG1ha2VTZWxlY3RvclBzZXVkb0VsZW1lbnRzTWFwLnB5OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyNkFBMEY5QTE4RDI5NzNEMDA0MTkzODEgLyogU2VsZWN0b3JQ
c2V1ZG9FbGVtZW50VHlwZU1hcC5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFw
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkFBMEY5RDE4RDJBMThCMDA0MTkz
ODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgwNjIsNiArODA4OCwxNCBAQAogCQkyNkMxN0Ez
QzE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBGaWxlU3lzdGVtSU9TLmg7IHBhdGggPSBpb3MvRmlsZVN5c3RlbUlPUy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkMxN0EzRDE0OTFEMkQ0MDBEMTJCQTIg
LyogRmlsZVN5c3RlbUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IEZpbGVTeXN0ZW1JT1MubW07IHBhdGggPSBpb3MvRmlsZVN5c3RlbUlPUy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZFOThBMEYxMzBBOUZDQTAwOEVCN0IyIC8qIFRleHRD
b2RlY0FTQ0lJRmFzdFBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dENvZGVjQVNDSUlGYXN0UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkYw
Qzg5MTFBMkQ3OUNCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZGMEM4OTMxQTJEN0E3NjAwMjc5NEY4
IC8qIENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZGMEM4OTUxQTJFNzI0QjAwMjc5NEY4IC8qIENvbnRlbnRF
eHRlbnNpb25zTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyNkYwQzg5NjFBMkU3MjRCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNNYW5hZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25zTWFu
YWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkYwQzg5OTFBMkVDMTEwMDAy
Nzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyNkYwQzg5QTFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
blJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEV4dGVuc2lv
blJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZGMEM4OUQxQTJFQzNCRTAw
Mjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyNkYwQzg5RTFBMkVDM0JFMDAyNzk0RjggLyogQ29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
NkY0MEQ0OTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRXZlbnRMb29wSU9TLm1tOyBwYXRoID0gaW9zL0V2
ZW50TG9vcElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZGOUE4MzYxOEEw
NDZBQzAwQUVCODhBIC8qIFZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyNkY5QTgzNzE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3Bv
cnRDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdw
b3J0Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3MjYs
NiArMTQ3NjAsNyBAQAogCQkJCTI5QTgxMjA0MEZCQjlCNDEwMDUxMDI5MyAvKiBhY2Nlc3NpYmls
aXR5ICovLAogCQkJCUJDMUEzNzkwMDk3QzZGOTcwMDE5RjNEOCAvKiBiaW5kaW5ncyAqLywKIAkJ
CQkxQTU2OUNDNDBEN0UyQjYwMDA3QzM5ODMgLyogYnJpZGdlICovLAorCQkJCTI2RjBDODkwMUEy
RDc5Q0IwMDI3OTRGOCAvKiBjb250ZW50ZXh0ZW5zaW9ucyAqLywKIAkJCQlFMUZGOEY1QjE4MDcz
NjJCMDAxMzI2NzQgLyogY3J5cHRvICovLAogCQkJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAv
KiBjc3MgKi8sCiAJCQkJMjZCOTk5OEQxODAzQURGQTAwRDAxMTIxIC8qIGNzc2ppdCAqLywKQEAg
LTE1MzcyLDYgKzE1NDA3LDMwIEBACiAJCQluYW1lID0gY3Nzaml0OwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMjZGMEM4OTAxQTJENzlDQjAwMjc5NEY4IC8qIGNvbnRlbnRl
eHRlbnNpb25zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkyNkYwQzg5OTFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwICov
LAorCQkJCTI2RjBDODlBMUEyRUMxMTAwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uUnVsZS5o
ICovLAorCQkJCTI2RjBDODlEMUEyRUMzQkUwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQuY3BwICovLAorCQkJCTI2RjBDODlFMUEyRUMzQkUwMDI3OTRGOCAvKiBDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuaCAqLywKKwkJCQkyNkYwQzg5MzFBMkQ3QTc2MDAyNzk0RjggLyogQ29u
dGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwICovLAorCQkJCTI2RjBDODkxMUEyRDc5Q0IwMDI3
OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5oICovLAorCQkJCTI2RjBDODk1MUEy
RTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwICovLAorCQkJCTI2
RjBDODk2MUEyRTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCAqLywK
KwkJCQkyNjc3MjVGNjFBNUIzQUQ5MDAzQzI0REQgLyogREZBLmNwcCAqLywKKwkJCQkyNjc3MjVG
NzFBNUIzQUQ5MDAzQzI0REQgLyogREZBLmggKi8sCisJCQkJMjY3NzI1RjkxQTVCM0FEOTAwM0My
NEREIC8qIERGQU5vZGUuaCAqLywKKwkJCQkyNjkzOTcyNTFBNEE1RkJEMDBFODM0OUQgLyogTkZB
LmNwcCAqLywKKwkJCQkyNjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmggKi8sCisJCQkJ
MjY5Mzk3MUYxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuY3BwICovLAorCQkJCTI2OTM5NzIw
MUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggKi8sCisJCQkJMjY3NzI1RkExQTVCM0FEOTAw
M0MyNEREIC8qIE5GQVRvREZBLmNwcCAqLywKKwkJCQkyNjc3MjVGQjFBNUIzQUQ5MDAzQzI0REQg
LyogTkZBVG9ERkEuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY29udGVudGV4dGVuc2lvbnM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkyOUE4MTIwNDBGQkI5QjQxMDA1MTAy
OTMgLyogYWNjZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0yMzYxOSw2ICsyMzY3OCw3IEBACiAJCQkJQ0QzMTg2MjMxOTlGMUUyQTAwMzBB
MEY3IC8qIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEREQ1NzE1MThCNTdBODIwMEE5NEZDQiAvKiBDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1RkE5MDRDQTE3OEU2MUY1MDA0QzhBMkQgLyogQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyNkYwQzg5QzFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
blJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFODI0NUYwMTlCNjcxQkEwMEFDMDEyMiAvKiBD
Rk5ldHdvcmtDb25uZWN0aW9uQ2FjaGVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTI1MjVC
MUExQzAxODIwMDg2NDQ4MCAvKiBDRk5ldHdvcmtTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QThFNTY3MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNDA2NCw2ICsyNDEyNCw3IEBACiAJCQkJODUxODNCNDQwQUE2OTI2MTAwRjE5RkEzIC8qIERP
TUhUTUxIZWFkaW5nRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQUUwQUM1RDUz
NTAwNTMyNzBGIC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUVDQkVGMTBBQTc2MjY5MDA1NDRGMEIgLyogRE9NSFRNTEhSRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMjY5Mzk3MjIxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RTcxMUFGMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSFJF
bGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTkyRUJDMEFBNTA2OTUwMEFD
MDc4NSAvKiBET01IVE1MSHRtbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUIw
MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSHRtbEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNDE3Miw2ICsyNDIzMyw3IEBACiAJCQkJRTEyODRCRDYxMDQ0QTAxRTAwRUFF
QjUyIC8qIERPTVBhZ2VUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1
M0U4MEE4RDE4RTcwMDIyOTQ3RCAvKiBET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdB
NTQ4ODE3MTRFNDMyQTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTI2OTM5NzI0MUE0QTVCNjQwMEU4MzQ5RCAvKiBORkEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZCOTEzOTI0MTZBRTRDMTcwMDFGRTY4MiAvKiBET01QYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOUM2RTRFQzBENzQ1RTJCMDA2NDQyRTkgLyogRE9NUGx1Z2luLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOUM2RTRGMDBENzQ1RTM4MDA2NDQyRTkgLyogRE9NUGx1Z2luQXJyYXkuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjQ2OTMsNiArMjQ3NTUsNyBAQAogCQkJCTMxNkZFMTE4MEU2RTFEQTcw
MEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU5NjFD
NTUxOEFEMzM4QzAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCUJFMTZDNTkzMTdDRkUxNzIwMDg1MkMwNCAvKiBJbmJhbmRHZW5lcmljVGV4dFRyYWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyNjc3MjYwMTFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9E
RkEuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTlFMTJFMThGNUUyNzYwMDExQTNBNCAvKiBJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTQx
NzkyMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3OTQxNzk0MTY2RUEwNEUwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI1MTQyLDYgKzI1MjA1LDcgQEAKIAkJCQlCMkZBM0Q1NzBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkZBM0Q1OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDaXJjbGVFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0Q1QjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDbGlwUGF0aEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2RjBDODk4MUEyRTcyNEIwMDI3OTRGOCAvKiBD
b250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDVEMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1
RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
Q3Vyc29yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU2MCw2ICsyNTYyNCw3IEBACiAJ
CQkJOThFQjFGOTUxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTU2OUQwQjBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBOTI3RkQyMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMjY3NzI1RkYxQTVCM0FEOTAwM0MyNEREIC8qIERGQU5vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMjE5QjNCMERDQTg3QUIwMDQwRTNBMCAvKiBucGZ1bmN0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MjdGRDMxNDE2QTE1QjAwM0E4M0M4IC8qIG5wcnVudGlt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMEYwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVu
dGltZV9pbXBsLmggaW4gSGVhZGVycyAqLywKQEAgLTI1ODIyLDYgKzI1ODg3LDcgQEAKIAkJCQlC
QzFBN0Q5ODE4RkNCNUIwMDA0MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCThBQzgyMkZEMTgwRkMwMzMwMEZCNjRENSAvKiBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4NUYyM0QxNTE5
MTVFMDAwQkMxN0JFIC8qIFJlbmRlck5hbWVkRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMjY3NzI1RkQxQTVCM0FEOTAwM0MyNEREIC8qIERGQS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFQTQ4ODAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNGQTkzMDgxMDMzMzE5MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJmbG93LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNDNCRjU5RDExNDkyOTI4MDBDNjQzQ0EgLyogUmVuZGVyUHJvZ3Jlc3Mu
aCBpbiBIZWFkZXJzICovLApAQCAtMjYzNjcsNiArMjY0MzMsNyBAQAogCQkJCTg0MTlEMkFEMTIw
RDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODQ3NkM5RUMxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzE1MzdBMDExNDZCRDlENzAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkyNkYwQzg5MjFBMkQ3OUNCMDAyNzk0RjggLyogQ29udGVudEV4
dGVuc2lvbnNJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU5MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RjAx
MURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTVCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2NTcwLDYgKzI2NjM3LDcgQEAKIAkJCQlCRTg4RTBDMjE3MTVDRTI2MDA2NThEOTggLyogVHJh
Y2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU5MTNEODAxODFFRjkyNDAwRENCMDlF
IC8qIFRyYWNrUHJpdmF0ZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGQUMzMEZFMTg0RkIx
NDUwMDhDNEYxRSAvKiBUcmFpbGluZ09iamVjdHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2RjBD
OEEwMUEyRUMzQkUwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI0ODRGNEQxNzFGODIxRTAwMDQwNzU1IC8qIFRy
YW5zZm9ybUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0UwRUY4NkQ0NzAw
OUQwQ0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzI1Niw2
ICsyNzMyNCw3IEBACiAJCQkJRkRCMDUyREYxNTYxQTQyQzAwQjUwMEQ2IC8qIEF1ZGlvU3VtbWlu
Z0p1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5
OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMERCMTcxNUQyQTIw
MDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNjc3MjYw
MDFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RF
M0E4NTcxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUNENTRBNzYyMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA4QTEy
QjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
NzU1OSw2ICsyNzYyOCw3IEBACiAJCQkJOTMzMDlEREUwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0
ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERTAwOTlF
NjQ5MjAwNTZFNTgxIC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTdDOUFCRjgxMzU3QTNCRjAwRjU1MDNGIC8qIERldGFpbHNNYXJrZXJDb250cm9sLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTI2RjBDODk0MUEyRDdBNzYwMDI3OTRGOCAvKiBDb250ZW50
RXh0ZW5zaW9uc0ludGVyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDQ0MyQjUxNTE1RjYx
MzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MUVBRjk3RjEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzFGQjFBNTgxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkNv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzU2Niw2ICsyNzYzNiw3IEBACiAJCQkJ
MzFGQjFBNUMxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxNDAzNzlFMTI0QkVBN0YwMEFGNDBFNCAvKiBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU5MzA5QTExMTFGNEFFNTgwMDI1MDYw
MyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MjY5Mzk3MjYxQTRBNUZCRDAwRTgzNDlEIC8qIE5GQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
OUE4RjFENDExQTY5NTA4MDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTU5RDFDMTA0MTFFQjVEQ0YwMEI2MzhDOCAvKiBEZXZpY2VP
cmllbnRhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlBODVFQTIxMTlENjhEOTAw
REVGMUVGIC8qIERldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
ODIwNyw2ICsyODI3OCw3IEBACiAJCQkJQTU4NDBFMUMxODdCNzRENTAwODQzQjEwIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MUIxRTEy
NjE2NDA0OTFBMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTA0QUFDQ0QxODM0NDU1OTAwRTNEOUJDIC8qIEluc3BlY3Rvck5vZGVGaW5k
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZGMEM4OUIxQTJFQzExMDAwMjc5NEY4IC8qIENv
bnRlbnRFeHRlbnNpb25SdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNTIyRDRCMTVCNDc3
RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRG
NkZERDY0MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTlDQzBCNjYxOEJFOUYxNTAwNkNFQkNDIC8qIEluc3BlY3RvclJlcGxheUFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjgzNTAsNiArMjg0MjIsNyBAQAogCQkJCTFBQ0U1
M0RGMEE4RDE4ODEwMDIyOTQ3RCAvKiBKU0RPTVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGQjkxMzkyQjE2QUU0RkMwMDAxRkU2ODIgLyogSlNET01QYXRoLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE5RDI0N0ZFMEQ3NTdFNjkwMEZERjk1OSAvKiBKU0RPTVBsdWdpbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkyNkYwQzg5NzFBMkU3MjRCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
bnNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0ODAwMEQ3NTdFNjkwMEZERjk1
OSAvKiBKU0RPTVBsdWdpbkFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5QzZFNjRDMEQ3
NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE5QzZFNjREMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI4ODA3LDYgKzI4ODgwLDcgQEAKIAkJCQlCMkZBM0RGMjBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdTY3JpcHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyRkEzREY0MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1NldEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjJGQTNERjYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU3RvcEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZGMEM4OUYxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RGODBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdTdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
RkEzREZBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1N0eWxlRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMkZBM0RGQzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTVkdFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjkzNTgsNiArMjk0MzIsNyBAQAogCQkJCTkzMzA5RTA5MDk5
RTY0OTIwMDU2RTU4MSAvKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5OUNDMEI1MzE4QkU5ODQ5MDA2Q0VCQ0MgLyogUmVwbGF5Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5OUNDMEI1NTE4QkU5ODQ5MDA2Q0VCQ0MgLyogUmVwbGF5aW5n
SW5wdXRDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjY3NzI1RkMxQTVCM0FEOTAwM0My
NEREIC8qIERGQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OUNDMEI1NzE4QkU5ODRBMDA2Q0VC
Q0MgLyogUmVwbGF5SW5wdXRDcmVhdGlvbk1ldGhvZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTlDQzBCNTgxOEJFOTg0QTAwNkNFQkNDIC8qIFJlcGxheUlucHV0RGlzcGF0Y2hNZXRob2RzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk5Q0MwQjU5MThCRTk4NEEwMDZDRUJDQyAvKiBSZXBsYXlT
ZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3ODUsNiArMjk4NjAsNyBAQAogCQkJCUIy
MjI3QTk2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI1NDNCODU3MTdFQjc1OEYwMDNCRTkzQSAvKiBTVkdQcm9wZXJ0eUlu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNjkzOTcyMTFB
NEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E5
RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUmVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMyMjc0NzgwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMjI3NDdBMEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURl
ZnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTliOGUw
YmQ0ZDUxM2JlYzIxYzliODkwYzExNGY0NTgyNDFmMzIwNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcApA
QCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25SdWxlLmgiCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CisKK0NvbnRlbnRFeHRlbnNpb25SdWxlOjpDb250ZW50RXh0ZW5zaW9uUnVsZShj
b25zdCBUcmlnZ2VyJiB0cmlnZ2VyLCBjb25zdCBBY3Rpb24mIGFjdGlvbikKKyAgICA6IG1fdHJp
Z2dlcih0cmlnZ2VyKQorICAgICwgbV9hY3Rpb24oYWN0aW9uKQoreworICAgIEFTU0VSVCghbV90
cmlnZ2VyLnVybEZpbHRlci5pc0VtcHR5KCkpOworfQorCit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5o
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OGQzZWNjM2VhZjE3NmY5NjE2ZGE4MDE2MzU2MzI3ZmQ3MDU5NjU1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvblJ1bGUuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDb250ZW50RXh0ZW5zaW9uUnVsZV9oCisjZGVmaW5lIENvbnRlbnRFeHRlbnNpb25SdWxl
X2gKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgQ29udGVu
dEV4dGVuc2lvbnMgeworCitlbnVtIGNsYXNzIEV4dGVuc2lvbkFjdGlvblR5cGUgeworICAgIEJs
b2NrTG9hZAorfTsKKworLy8gQSBDb250ZW50RXh0ZW5zaW9uUnVsZSBpcyB0aGUgc21hbGxlc3Qg
dW5pdCBpbiBhIENvbnRlbnRFeHRlbnNpb24uCisvLworLy8gSXQgaXMgY29tcG9zZWQgb2YgYSB0
cmlnZ2VyIGFuZCBhbiBhY3Rpb24uIFRoZSB0cmlnZ2VyIGRlZmluZXMgb24gd2hhdCBraW5kIG9m
IGNvbnRlbnQgdGhpcyBleHRlbnNpb24gc2hvdWxkIGFwcGx5LgorLy8gVGhlIGFjdGlvbiBkZWZp
bmVzIHdoYXQgdG8gcGVyZm9ybSBvbiB0aGF0IGNvbnRlbnQuCitjbGFzcyBDb250ZW50RXh0ZW5z
aW9uUnVsZSB7CitwdWJsaWM6CisgICAgc3RydWN0IFRyaWdnZXIgeworICAgICAgICBTdHJpbmcg
dXJsRmlsdGVyOworICAgIH07CisKKyAgICBzdHJ1Y3QgQWN0aW9uIHsKKyAgICAgICAgRXh0ZW5z
aW9uQWN0aW9uVHlwZSB0eXBlOworICAgIH07CisKKyAgICBDb250ZW50RXh0ZW5zaW9uUnVsZShj
b25zdCBUcmlnZ2VyJiwgY29uc3QgQWN0aW9uJik7CisKKyAgICBjb25zdCBUcmlnZ2VyJiB0cmln
Z2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2VyOyB9CisgICAgY29uc3QgQWN0aW9uJiBhY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQorCitwcml2YXRlOgorICAgIFRyaWdnZXIg
bV90cmlnZ2VyOworICAgIEFjdGlvbiBtX2FjdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIENv
bnRlbnRFeHRlbnNpb25zCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNlbmRpZiAvLyBDb250ZW50RXh0ZW5zaW9uUnVs
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmQxYWEzMDlhZWFiMDU4
MWYxZWZlZDMyZGVlMjMwYWQ1YTQyNDM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtMCww
ICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisKKyNpbmNsdWRlICJORkEuaCIKKyNpbmNsdWRlICJORkFUb0RGQS5oIgorI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKK0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCYgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpzaGFyZWRJbnN0YW5jZSgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4gaW5z
dGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCit2b2lkIENvbnRlbnRFeHRlbnNpb25z
QmFja2VuZDo6c2V0UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBWZWN0
b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+JiBydWxlTGlzdCkKK3sKKyAgICBBU1NFUlQoIWlkZW50
aWZpZXIuaXNFbXB0eSgpKTsKKyAgICBpZiAoaWRlbnRpZmllci5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChydWxlTGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVtb3Zl
UnVsZUxpc3QoaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBORkEg
bmZhOworICAgIHVuc2lnbmVkIHJvb3ROb2RlID0gbmZhLnJvb3QoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIHJ1bGVJbmRleCA9IDA7IHJ1bGVJbmRleCA8IHJ1bGVMaXN0LnNpemUoKTsgKytydWxlSW5k
ZXgpIHsKKyAgICAgICAgY29uc3QgQ29udGVudEV4dGVuc2lvblJ1bGUmIGNvbnRlbnRFeHRlbnNp
b25SdWxlID0gcnVsZUxpc3RbcnVsZUluZGV4XTsKKyAgICAgICAgY29uc3QgQ29udGVudEV4dGVu
c2lvblJ1bGU6OlRyaWdnZXImIHRyaWdnZXIgPSBjb250ZW50RXh0ZW5zaW9uUnVsZS50cmlnZ2Vy
KCk7CisgICAgICAgIEFTU0VSVCh0cmlnZ2VyLnVybEZpbHRlci5sZW5ndGgoKSk7CisKKyAgICAg
ICAgdW5zaWduZWQgbGFzdE5vZGUgPSByb290Tm9kZTsKKworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdHJpZ2dlci51cmxGaWx0ZXIubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAg
ICAgdW5zaWduZWQgbmV3Tm9kZSA9IG5mYS5jcmVhdGVOb2RlKHJ1bGVJbmRleCk7CisgICAgICAg
ICAgICBuZmEuYWRkVHJhbnNpdGlvbihsYXN0Tm9kZSwgbmV3Tm9kZSwgdHJpZ2dlci51cmxGaWx0
ZXJbaV0pOworICAgICAgICAgICAgbGFzdE5vZGUgPSBuZXdOb2RlOworICAgICAgICB9CisKKyAg
ICAgICAgbmZhLnNldEZpbmFsKGxhc3ROb2RlKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogbmV2
ZXIgYWRkIGEgREZBIHRoYXQgb25seSBtYXRjaGVzIHRoZSBlbXB0eSBzZXQuCisgICAgQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uIGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbiA9IHsgTkZBVG9ERkE6
OmNvbnZlcnQobmZhKSwgcnVsZUxpc3QgfTsKKyAgICBtX3J1bGVMaXN0cy5zZXQoaWRlbnRpZmll
ciwgY29tcGlsZWRDb250ZW50RXh0ZW5zaW9uKTsKK30KKwordm9pZCBDb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQ6OnJlbW92ZVJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAg
ICBtX3J1bGVMaXN0cy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK2Jvb2wgQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kOjpzaG91bGRCbG9ja1VSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBjb25z
dCBTdHJpbmcmIHVybFN0cmluZyA9IHVybC5zdHJpbmcoKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHVybFN0cmluZy5jb250YWluc09ubHlBU0NJSSgpLCAiQSBkZWNvZGVkIFVSTCBzaG91bGQg
b25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnMuIFRoZSBtYXRjaGluZyBhbGdvcml0aG0gYXNz
dW1lcyB0aGUgaW5wdXQgaXMgQVNDSUkuIik7CisKKyAgICBmb3IgKGF1dG8mIHJ1bGVMaXN0U2xv
dCA6IG1fcnVsZUxpc3RzKSB7CisgICAgICAgIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbiYgY29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uID0gcnVsZUxpc3RTbG90LnZhbHVlOworICAgICAgICB1bnNp
Z25lZCBzdGF0ZSA9IGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5kZmEucm9vdCgpOworCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1cmxTdHJpbmcubGVuZ3RoKCk7ICsraSkgewor
ICAgICAgICAgICAgY2hhciBjaGFyYWN0ZXIgPSBzdGF0aWNfY2FzdDxjaGFyPih1cmxTdHJpbmdb
aV0pOworICAgICAgICAgICAgYm9vbCBvazsKKyAgICAgICAgICAgIHN0YXRlID0gY29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uLmRmYS5uZXh0U3RhdGUoc3RhdGUsIGNoYXJhY3Rlciwgb2spOworICAg
ICAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBhY2N1bXVsYXRlIHRoZSBhY3Rpb25zLgorICAgICAgICAgICAgaWYg
KCFjb21waWxlZENvbnRlbnRFeHRlbnNpb24uZGZhLmFjdGlvbnMoc3RhdGUpLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQwNWFhNmQyMTY4YWNkNGNiNGNh
ZDY0MGY2YjkwMjA3YjY3NjMwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC0wLDAgKzEsNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZF9o
CisjZGVmaW5lIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZF9oCisKKyNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKKyNpbmNs
dWRlICJERkEuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBVUkw7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9u
cyB7CisKKy8vIFRoZSBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgaXMgdGhlIGludGVybmFsIG1v
ZGVsIG9mIGFsbCB0aGUgY29udGVudCBleHRlbnNpb25zLgorLy8KKy8vIEl0IHByb3ZpZGVzIHR3
byBzZXJ2aWNlczoKKy8vIDEpIEl0IHN0b3JlcyB0aGUgcnVsZXMgZm9yIGVhY2ggY29udGVudCBl
eHRlbnNpb24uCisvLyAyKSBJdCBwcm92aWRlcyBBUElzIGZvciB0aGUgV2ViQ29yZSBpbnRlcmZh
Y2VzIHRvIHVzZSB0aG9zZSBydWxlcyBlZmZpY2llbnRseS4KK2NsYXNzIENvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCB7CitwdWJsaWM6CisgICAgc3RhdGljIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZCYgc2hhcmVkSW5zdGFuY2UoKTsKKworICAgIC8vIC0gUnVsZSBtYW5hZ2VtZW50IGludGVyZmFj
ZS4gVGhpcyBjYW4gYmUgdXNlZCBieSB1cHBlciBsYXllci4KKworICAgIC8vIFNldCBhIGxpc3Qg
b2YgcnVsZXMgZm9yIGEgZ2l2ZW4gbmFtZS4gSWYgdGhlcmUgd2VyZSBleGlzdGluZyBydWxlcyBm
b3IgdGhlIG5hbWUsIHRoZXkgYXJlIG92ZXJyaWRlbi4KKyAgICAvLyBUaGUgaWRlbnRpZmllciBj
YW5ub3QgYmUgZW1wdHkuCisgICAgdm9pZCBzZXRSdWxlTGlzdChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4mKTsKKworICAgIHZvaWQg
cmVtb3ZlUnVsZUxpc3QoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKworICAgIC8vIC0gSW50
ZXJuYWwgV2ViQ29yZSBJbnRlcmZhY2UuCisgICAgYm9vbCBzaG91bGRCbG9ja1VSTChjb25zdCBV
UkwmKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uIHsK
KyAgICAgICAgREZBIGRmYTsKKyAgICAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiBy
dWxlTGlzdDsKKyAgICB9OworCisgICAgSGFzaE1hcDxTdHJpbmcsIENvbXBpbGVkQ29udGVudEV4
dGVuc2lvbj4gbV9ydWxlTGlzdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5z
aW9ucworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQorCisjZW5kaWYgLy8gQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmI4YjIwNmQzMjVkYTczMjhj
MGFhNTZhNzEyZmZkODVlYTcyZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29u
dGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisKKyNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKworYm9vbCBzaG91bGRC
bG9ja1VSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kOjpzaGFyZWRJbnN0YW5jZSgpLnNob3VsZEJsb2NrVVJMKHVybCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmRkMTIzZTI0Yjc5N2M2Y2U3MzRiNTI5MWFmMDc1YWQ5OTgyZDQ3MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2VfaAorI2RlZmluZSBDb250ZW50
RXh0ZW5zaW9uc0ludGVyZmFjZV9oCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFVSTDsKKworLy8gVGhpcyBkZWZpbmVzIHRo
ZSBpbnRlcmZhY2UgYnkgd2hpY2ggV2ViQ29yZSBpbnRlcmFjdCB3aXRoIENvbnRlbnQgRXh0ZW5z
aW9ucy4KK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7Citib29sIHNob3VsZEJsb2NrVVJM
KGNvbnN0IFVSTCYpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjZW5kaWYgLy8gQ29udGVudEV4dGVuc2lvbnNJ
bnRlcmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkwYTQ0NDU0
MjEzNWZkM2E0NDI5ZGFmYmZmZGE3NjNiMmMyODM5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHAK
QEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQorCisjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKKyNpbmNsdWRl
ICJDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
ZGVudGlmaWVySW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsK
KworbmFtZXNwYWNlIEV4dGVuc2lvbnNNYW5hZ2VyIHsKKworc3RhdGljIGJvb2wgbG9hZFRyaWdn
ZXIoRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwgQ29udGVudEV4dGVuc2lv
blJ1bGU6OlRyaWdnZXImIHRyaWdnZXIpCit7CisgICAgSlNWYWx1ZSB0cmlnZ2VyT2JqZWN0ID0g
cnVsZU9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ0cmlnZ2VyIikpOworICAg
IGlmICghdHJpZ2dlck9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICF0cmlnZ2VyT2Jq
ZWN0LmlzT2JqZWN0KCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlkIHRyaWdnZXIg
b2JqZWN0LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgSlNWYWx1ZSB1
cmxGaWx0ZXJPYmplY3QgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigmZXhl
YywgInVybC1maWx0ZXIiKSk7CisgICAgaWYgKCF1cmxGaWx0ZXJPYmplY3QgfHwgZXhlYy5oYWRF
eGNlcHRpb24oKSB8fCAhdXJsRmlsdGVyT2JqZWN0LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJJbnZhbGlkIHVybC1maWx0ZXIgb2JqZWN0LiIpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgU3RyaW5nIHVybEZpbHRlciA9IHVybEZpbHRlck9iamVjdC50
b1dURlN0cmluZygmZXhlYyk7CisgICAgaWYgKHVybEZpbHRlci5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlkIHVybC1maWx0ZXIgb2JqZWN0LiBUaGUgdXJsIGlzIGVt
cHR5LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdHJpZ2dlci51cmxG
aWx0ZXIgPSB1cmxGaWx0ZXI7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGxv
YWRBY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwgQ29udGVudEV4
dGVuc2lvblJ1bGU6OkFjdGlvbiYgYWN0aW9uKQoreworICAgIEpTVmFsdWUgYWN0aW9uT2JqZWN0
ID0gcnVsZU9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJhY3Rpb24iKSk7Cisg
ICAgaWYgKCFhY3Rpb25PYmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8fCAhYWN0aW9uT2Jq
ZWN0LmlzT2JqZWN0KCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlkIGFjdGlvbiBv
YmplY3QuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBKU1ZhbHVlIHR5
cGVPYmplY3QgPSBhY3Rpb25PYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidHlw
ZSIpKTsKKyAgICBpZiAoIXR5cGVPYmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8fCAhdHlw
ZU9iamVjdC5pc1N0cmluZygpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxpZCB1cmwt
ZmlsdGVyIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFN0
cmluZyBhY3Rpb25UeXBlID0gdHlwZU9iamVjdC50b1dURlN0cmluZygmZXhlYyk7CisgICAgaWYg
KGFjdGlvblR5cGUgIT0gImJsb2NrIikgeworICAgICAgICBXVEZMb2dBbHdheXMoIlVucm9jb2du
aXplZCBhY3Rpb246IFwiJXNcIiIsIGFjdGlvblR5cGUudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBhY3Rpb24udHlwZSA9IEV4dGVuc2lvbkFjdGlv
blR5cGU6OkJsb2NrTG9hZDsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBs
b2FkUnVsZShFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2JqZWN0LCBWZWN0b3I8Q29u
dGVudEV4dGVuc2lvblJ1bGU+JiBydWxlTGlzdCkKK3sKKyAgICBDb250ZW50RXh0ZW5zaW9uUnVs
ZTo6VHJpZ2dlciB0cmlnZ2VyOworICAgIGlmICghbG9hZFRyaWdnZXIoZXhlYywgcnVsZU9iamVj
dCwgdHJpZ2dlcikpCisgICAgICAgIHJldHVybjsKKworICAgIENvbnRlbnRFeHRlbnNpb25SdWxl
OjpBY3Rpb24gYWN0aW9uOworICAgIGlmICghbG9hZEFjdGlvbihleGVjLCBydWxlT2JqZWN0LCBh
Y3Rpb24pKQorICAgICAgICByZXR1cm47CisKKyAgICBydWxlTGlzdC5hcHBlbmQoQ29udGVudEV4
dGVuc2lvblJ1bGUodHJpZ2dlciwgYWN0aW9uKSk7Cit9CisKK3ZvaWQgbG9hZEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcnVsZXMpCit7CisgICAgVmVj
dG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiBydWxlTGlzdDsKKworICAgIFJlZlB0cjxWTT4gdm0g
PSBWTTo6Y3JlYXRlKCk7CisKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLmdldCgpKTsKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSgq
dm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnZtLCBqc051bGwoKSkpOworCisg
ICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNW
YWx1ZSBkZWNvZGVkUnVsZXMgPSBKU09OUGFyc2UoZXhlYywgcnVsZXMpOworICAgIGlmIChkZWNv
ZGVkUnVsZXMuaXNPYmplY3QoKSkgeworICAgICAgICBKU09iamVjdCogdG9wTGV2ZWxPYmplY3Qg
PSBkZWNvZGVkUnVsZXMudG9PYmplY3QoZXhlYyk7CisgICAgICAgIGlmICghdG9wTGV2ZWxPYmpl
Y3QgfHwgZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
SW52YWxpZCBpbnB1dCwgdGhlIHRvcCBsZXZlbCBzdHJ1Y3R1cmUgaXMgbm90IGFuIG9iamVjdC4i
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghaXNKU0Fy
cmF5KHRvcExldmVsT2JqZWN0KSkgeworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlk
IGlucHV0LCB0aGUgdG9wIGxldmVsIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBKU0FycmF5KiB0b3BMZXZlbEFycmF5
ID0ganNDYXN0PEpTQXJyYXkqPih0b3BMZXZlbE9iamVjdCk7CisKKyAgICAgICAgdW5zaWduZWQg
bGVuZ3RoID0gdG9wTGV2ZWxBcnJheS0+bGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRv
cExldmVsQXJyYXktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpIHx8ICF2YWx1ZSkgeworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
SW52YWxpZCBvYmplY3QgaW4gdGhlIGFycmF5LiIpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBKU09iamVjdCogcnVsZU9iamVjdCA9IHZh
bHVlLnRvT2JqZWN0KGV4ZWMpOworICAgICAgICAgICAgaWYgKCFydWxlT2JqZWN0IHx8IGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbnZhbGlk
IHJ1bGUiKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGxvYWRSdWxlKCpleGVjLCAqcnVsZU9iamVjdCwgcnVsZUxpc3QpOworICAgICAgICB9
CisgICAgfQorCisgICAgdm0uY2xlYXIoKTsKKworICAgIGlmIChydWxlTGlzdC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFbXB0eSBleHRlbnNpb24uIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnNoYXJlZEluc3Rh
bmNlKCkuc2V0UnVsZUxpc3QoaWRlbnRpZmllciwgcnVsZUxpc3QpOworfQorCit9IC8vIG5hbWVz
cGFjZSBFeHRlbnNpb25zTWFuYWdlcgorfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjMzgzNmE1NDMyZGQyOTUy
YjhjMmZmYjg1YzczZTM1ZjA5OGIxNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXJfaAor
I2RlZmluZSBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXJfaAorCisjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKworLy8gVGhlIEV4dGVuc2lv
bnNNYW5hZ2VyIGxvYWRzIHNlcmlhbGl6ZWQgY29udGVudCBleHRlbnNpb24gcnVsZXMgZGlyZWN0
bHkgaW50byBXZWJDb3JlLgorbmFtZXNwYWNlIEV4dGVuc2lvbnNNYW5hZ2VyIHsKKwordm9pZCBs
b2FkRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBydWxl
cyk7CisKK30gLy8gbmFtZXNwYWNlIEV4dGVuc2lvbnNNYW5hZ2VyCisKK30gLy8gbmFtZXNwYWNl
IENvbnRlbnRFeHRlbnNpb25zCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjZW5kaWYgLy8gQ29udGVudEV4dGVuc2lvbnNN
YW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RG
QS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM3NDQ1YTFjYWU4ZmY1NWY5ODk5YmExNTI1NTdkMWQ5ZmJlOWNjNmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwCkBAIC0wLDAg
KzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRGQS5oIgorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUg
PHd0Zi9EYXRhTG9nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIENvbnRl
bnRFeHRlbnNpb25zIHsKKworREZBOjpERkEoKQorICAgIDogbV9yb290KDApCit7Cit9CisKK0RG
QTo6REZBKFZlY3RvcjxERkFOb2RlPiYmIG5vZGVzLCB1bnNpZ25lZCByb290SW5kZXgpCisgICAg
OiBtX25vZGVzKG5vZGVzKQorICAgICwgbV9yb290KHJvb3RJbmRleCkKK3sKKyAgICBBU1NFUlQo
cm9vdEluZGV4IDwgbm9kZXMuc2l6ZSgpKTsKK30KKworREZBOjpERkEoY29uc3QgREZBJiBkZmEp
CisgICAgOiBtX25vZGVzKGRmYS5tX25vZGVzKQorICAgICwgbV9yb290KGRmYS5tX3Jvb3QpCit7
Cit9CisKK0RGQSYgREZBOjpvcGVyYXRvcj0oY29uc3QgREZBJiBkZmEpCit7CisgICAgbV9ub2Rl
cyA9IGRmYS5tX25vZGVzOworICAgIG1fcm9vdCA9IGRmYS5tX3Jvb3Q7CisgICAgcmV0dXJuICp0
aGlzOworfQorCit1bnNpZ25lZCBERkE6Om5leHRTdGF0ZSh1bnNpZ25lZCBjdXJyZW50U3RhdGUs
IGNoYXIgY2hhcmFjdGVyLCBib29sJiBvaykgY29uc3QKK3sKKyAgICBBU1NFUlQoY3VycmVudFN0
YXRlIDwgbV9ub2Rlcy5zaXplKCkpOworCisgICAgY29uc3QgREZBTm9kZSYgbm9kZSA9IG1fbm9k
ZXNbY3VycmVudFN0YXRlXTsKKyAgICBhdXRvIG5leHROb2RlID0gbm9kZS50cmFuc2l0aW9ucy5m
aW5kKGNoYXJhY3Rlcik7CisgICAgaWYgKG5leHROb2RlID09IG5vZGUudHJhbnNpdGlvbnMuZW5k
KCkpIHsKKyAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg
IG9rID0gdHJ1ZTsKKyAgICByZXR1cm4gbmV4dE5vZGUtPnZhbHVlOworfQorCitWZWN0b3I8dWlu
dDY0X3Q+IERGQTo6YWN0aW9ucyh1bnNpZ25lZCBjdXJyZW50U3RhdGUpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGN1cnJlbnRTdGF0ZSA8IG1fbm9kZXMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbV9ub2Rl
c1tjdXJyZW50U3RhdGVdLmFjdGlvbnM7Cit9CisKKyNpZm5kZWYgTkRFQlVHCit2b2lkIERGQTo6
ZGVidWdQcmludERvdCgpIGNvbnN0Cit7CisgICAgZGF0YUxvZ0YoImRpZ3JhcGggREZBX1RyYW5z
aXRpb25zIHtcbiIpOworICAgIGRhdGFMb2dGKCIgICAgcmFua2Rpcj1MUjtcbiIpOworICAgIGRh
dGFMb2dGKCIgICAgbm9kZSBbc2hhcGU9Y2lyY2xlXTtcbiIpOworICAgIGRhdGFMb2dGKCIgICAg
e1xuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9kZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgZGF0YUxvZ0YoIiAgICAgICAgICVkIFtsYWJlbD08Tm9kZSAlZCIsIGksIGkp
OworICAgICAgICBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBhY3Rpb25zID0gbV9ub2Rlc1tpXS5h
Y3Rpb25zOworICAgICAgICBpZiAoIWFjdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBk
YXRhTG9nRigiPEJSLz5BY3Rpb25zOiAiKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYWN0
aW9uSW5kZXggPSAwOyBhY3Rpb25JbmRleCA8IGFjdGlvbnMuc2l6ZSgpOyArK2FjdGlvbkluZGV4
KSB7CisgICAgICAgICAgICAgICAgaWYgKGFjdGlvbkluZGV4KQorICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nRigiLCAiKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiJWxsdSIsIGFjdGlv
bnNbYWN0aW9uSW5kZXhdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gY29ycmVzcG9uZGluZ0RGQU5vZGVzID0gbV9ub2Rlc1tpXS5jb3JyZXNw
b25kaW5nREZBTm9kZXM7CisgICAgICAgIEFTU0VSVCghY29ycmVzcG9uZGluZ0RGQU5vZGVzLmlz
RW1wdHkoKSk7CisgICAgICAgIGRhdGFMb2dGKCI8QlIvPk5GQSBOb2RlczogIik7CisgICAgICAg
IGZvciAodW5zaWduZWQgY29ycmVzcG9uZGluZ0RGQU5vZGVJbmRleCA9IDA7IGNvcnJlc3BvbmRp
bmdERkFOb2RlSW5kZXggPCBjb3JyZXNwb25kaW5nREZBTm9kZXMuc2l6ZSgpOyArK2NvcnJlc3Bv
bmRpbmdERkFOb2RlSW5kZXgpIHsKKyAgICAgICAgICAgIGlmIChjb3JyZXNwb25kaW5nREZBTm9k
ZUluZGV4KQorICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOworICAgICAgICAgICAgZGF0
YUxvZ0YoIiVkIiwgY29ycmVzcG9uZGluZ0RGQU5vZGVzW2NvcnJlc3BvbmRpbmdERkFOb2RlSW5k
ZXhdKTsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGFMb2dGKCI+XSIpOworCisgICAgICAgIGlm
ICghYWN0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICBkYXRhTG9nRigiIFtzaGFwZT1kb3Vi
bGVjaXJjbGVdIik7CisKKyAgICAgICAgZGF0YUxvZ0YoIjtcbiIpOworICAgIH0KKyAgICBkYXRh
TG9nRigiICAgIH1cbiIpOworCisgICAgZGF0YUxvZ0YoIiAgICB7XG4iKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9ub2Rlcy5zaXplKCk7ICsraSkgeworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIHNsb3QgOiBtX25vZGVzW2ldLnRyYW5zaXRpb25zKQorICAgICAgICAgICAgZGF0
YUxvZ0YoIiAgICAgICAgJWQgLT4gJWQgW2xhYmVsPVwiJWNcIl07XG4iLCBpLCBzbG90LnZhbHVl
LCBzbG90LmtleSk7CisgICAgfQorICAgIGRhdGFMb2dGKCIgICAgfVxuIik7CisgICAgZGF0YUxv
Z0YoIn1cbiIpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25z
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9E
RkEuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhOTIyYjEwODM3NDM3OWE4NTc3YjlhYWQxYmU3ZGEyODg1OWU5MTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuaApAQCAtMCwwICsxLDY4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBERkFfaAorI2RlZmluZSBERkFfaAorCisj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIkRGQU5vZGUuaCIKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IENvbnRlbnRFeHRlbnNpb25zIHsKKworLy8gVGhlIERGQSBhYnN0cmFjdCBhIHBhcnRpYWwgREZB
IGdyYXBoIGluIGEgY29tcGFjdCBmb3JtLgorY2xhc3MgREZBIHsKK3B1YmxpYzoKKyAgICBERkEo
KTsKKyAgICBERkEoVmVjdG9yPERGQU5vZGU+JiYgbm9kZXMsIHVuc2lnbmVkIHJvb3RJbmRleCk7
CisgICAgREZBKGNvbnN0IERGQSYgZGZhKTsKKworICAgIERGQSYgb3BlcmF0b3I9KGNvbnN0IERG
QSYpOworCisgICAgdW5zaWduZWQgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQorICAg
IC8vIElmIHRoZXJlIGlzIGEgdHJhbnNpdGlvbiB0byBhIHZhbGlkIHN0YXRlIG9uICJjaGFyYWN0
ZXIiLCByZXR1cm4gdGhhdCBzdGF0ZSBhbmQgc2V0IG9rIHRvIHRydWUuCisgICAgLy8gT3RoZXJ3
aXNlLCB0aGUgcmV0dXJuIHZhbHVlIGlzIHVuZGVmaW5lZCBhbmQgb2sgaXMgZmFsc2UuCisgICAg
dW5zaWduZWQgbmV4dFN0YXRlKHVuc2lnbmVkIGN1cnJlbnRTdGF0ZSwgY2hhciBjaGFyYWN0ZXIs
IGJvb2wmIG9rKSBjb25zdDsKKyAgICBWZWN0b3I8dWludDY0X3Q+IGFjdGlvbnModW5zaWduZWQg
Y3VycmVudFN0YXRlKSBjb25zdDsKKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIGRlYnVnUHJp
bnREb3QoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFZlY3RvcjxERkFOb2RlPiBt
X25vZGVzOworICAgIHVuc2lnbmVkIG1fcm9vdDsKK307CisKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2VuZGlm
IC8vIERGQV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9E
RkFOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDIyMDMwMDY3MzZmMmY4YWI5ZmI5OWYxZDNhZDM0ZGY3YzZiNjI3NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuaApA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBERkFOb2RlX2gKKyNk
ZWZpbmUgREZBTm9kZV9oCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKworLy8gQSBERkFO
b2RlIGFic3RyYWN0IHRoZSB0cmFuc2l0aW9uIHRhYmxlIG91dCBvZiBhIERGQSBzdGF0ZS4gSWYg
YSBzdGF0ZSBpcyBhY2NlcHRpbmcsIHRoZSBERkFOb2RlIGFsc28gaGF2ZQorLy8gdGhlIGFjdGlv
bnMgZm9yIHRoYXQgc3RhdGUuCitjbGFzcyBERkFOb2RlIHsKK3B1YmxpYzoKKyAgICBIYXNoTWFw
PHVpbnQxNl90LCB1bnNpZ25lZD4gdHJhbnNpdGlvbnM7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBh
Y3Rpb25zOworCisjaWZuZGVmIE5ERUJVRworICAgIFZlY3Rvcjx1bnNpZ25lZD4gY29ycmVzcG9u
ZGluZ0RGQU5vZGVzOworI2VuZGlmCit9OworCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNlbmRpZiAvLyBERkFO
b2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUxZTlhN2UyNzg0YjJiMTVlZTAwZGM4MGEyOGNkMmQxMjA1Nzg4YzYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuY3BwCkBAIC0wLDAgKzEs
MTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik5GQS5oIgorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUgPHd0
Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCituYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworCitORkE6Ok5GQSgpCisgICAg
OiBtX3Jvb3QoY3JlYXRlTm9kZSgpKQoreworfQorCit1bnNpZ25lZCBORkE6OmNyZWF0ZU5vZGUo
dWludDY0X3QgcnVsZUlkKQoreworICAgIHVuc2lnbmVkIG5leHRJZCA9IG1fbm9kZXMuc2l6ZSgp
OworICAgIG1fbm9kZXMuYXBwZW5kKE5GQU5vZGUocnVsZUlkKSk7CisgICAgcmV0dXJuIG5leHRJ
ZDsKK30KKwordm9pZCBORkE6OmFkZFRyYW5zaXRpb24odW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
dG8sIGNoYXIgY2hhcmFjdGVyKQoreworICAgIEFTU0VSVChmcm9tIDwgbV9ub2Rlcy5zaXplKCkp
OworICAgIEFTU0VSVCh0byA8IG1fbm9kZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQoY2hhcmFjdGVy
KTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ub2Rlc1tmcm9tXS50cmFuc2l0aW9ucy5hZGQo
Y2hhcmFjdGVyLCBIYXNoU2V0PHVuc2lnbmVkPigpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmFkZCh0byk7Cit9CisKK3ZvaWQgTkZBOjphZGRFcHNpbG9uVHJhbnNpdGlvbih1bnNp
Z25lZCBmcm9tLCB1bnNpZ25lZCB0bykKK3sKKyAgICBBU1NFUlQoZnJvbSA8IG1fbm9kZXMuc2l6
ZSgpKTsKKyAgICBBU1NFUlQodG8gPCBtX25vZGVzLnNpemUoKSk7CisKKyAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fbm9kZXNbZnJvbV0udHJhbnNpdGlvbnMuYWRkKGVwc2lsb25UcmFuc2l0aW9uQ2hh
cmFjdGVyLCBIYXNoU2V0PHVuc2lnbmVkPigpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLmFkZCh0byk7Cit9CisKK3ZvaWQgTkZBOjpzZXRGaW5hbCh1bnNpZ25lZCBub2RlKQorewor
ICAgIEFTU0VSVChub2RlIDwgbV9ub2Rlcy5zaXplKCkpOworICAgIG1fbm9kZXNbbm9kZV0uaXNG
aW5hbCA9IHRydWU7Cit9CisKKyNpZm5kZWYgTkRFQlVHCit2b2lkIE5GQTo6ZGVidWdQcmludERv
dCgpIGNvbnN0Cit7CisgICAgZGF0YUxvZ0YoImRpZ3JhcGggTkZBX1RyYW5zaXRpb25zIHtcbiIp
OworICAgIGRhdGFMb2dGKCIgICAgcmFua2Rpcj1MUjtcbiIpOworICAgIGRhdGFMb2dGKCIgICAg
bm9kZSBbc2hhcGU9Y2lyY2xlXTtcbiIpOworICAgIGRhdGFMb2dGKCIgICAge1xuIik7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9kZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
aWYgKG1fbm9kZXNbaV0ucnVsZUlkICA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6
bWF4KCkpCisgICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAgJWQgW2xhYmVsPVwiTm9kZSAl
ZFwiXSIsIGksIGkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhTG9nRigiICAgICAg
ICAgJWQgW2xhYmVsPTxOb2RlICVkPEJSLz4oUnVsZSAlbGx1KT5dIiwgaSwgaSwgbV9ub2Rlc1tp
XS5ydWxlSWQpOworCisgICAgICAgIGlmIChtX25vZGVzW2ldLmlzRmluYWwpCisgICAgICAgICAg
ICBkYXRhTG9nRigiIFtzaGFwZT1kb3VibGVjaXJjbGVdIik7CisKKyAgICAgICAgZGF0YUxvZ0Yo
IjtcbiIpOworICAgIH0KKyAgICBkYXRhTG9nRigiICAgIH1cbiIpOworCisgICAgZGF0YUxvZ0Yo
IiAgICB7XG4iKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ub2Rlcy5zaXplKCk7
ICsraSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNsb3QgOiBtX25vZGVzW2ldLnRyYW5z
aXRpb25zKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5leHRTdGF0ZSA6IHNsb3QudmFs
dWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2xvdC5rZXkgPT0gZXBzaWxvblRyYW5zaXRpb25D
aGFyYWN0ZXIpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICAgICVkIC0+ICVk
IFtsYWJlbD1cIsmbXCJdO1xuIiwgaSwgbmV4dFN0YXRlKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICAgICVkIC0+ICVkIFtsYWJlbD1c
IiVjXCJdO1xuIiwgaSwgbmV4dFN0YXRlLCBzbG90LmtleSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgZGF0YUxvZ0YoIiAgICB9XG4iKTsKKyAgICBkYXRhTG9nRigifVxu
Iik7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQS5oIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NjMTQ0
NTc0OTI0NzdkMTYxZWZhYTg5MmNjNjE4M2UxMGE2ZGFkNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE5GQV9oCisjZGVmaW5lIE5GQV9oCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiTkZBTm9kZS5oIgorI2luY2x1ZGUgPGxpbWl0
cz4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFt
ZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKworY2xhc3MgTkZBVG9ERkE7CisKKy8vIFRoZSBO
RkEgcHJvdmlkZXMgYSB3YXkgdG8gYnVpbGQgYSBORkEgZ3JhcGggd2l0aCBjaGFyYWN0ZXJzIG9y
IGVwc2lsb24gYXMgdHJhbnNpdGlvbnMuCisvLyBUaGUgbm9kZXMgYXJlIGFjY2Vzc2VkIHRocm91
Z2ggYW4gaWRlbnRpZmllci4KK2NsYXNzIE5GQSB7CitwdWJsaWM6CisgICAgTkZBKCk7CisgICAg
dW5zaWduZWQgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQorICAgIHVuc2lnbmVkIGNy
ZWF0ZU5vZGUodWludDY0X3QgcnVsZUlkID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46
Om1heCgpKTsKKworICAgIHZvaWQgYWRkVHJhbnNpdGlvbih1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCB0bywgY2hhciBjaGFyYWN0ZXIpOworICAgIHZvaWQgYWRkRXBzaWxvblRyYW5zaXRpb24odW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8pOworICAgIHZvaWQgc2V0RmluYWwodW5zaWduZWQgbm9k
ZSk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9pZCBkZWJ1Z1ByaW50RG90KCkgY29uc3Q7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTkZBVG9ERkE7CisKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgZXBzaWxvblRyYW5zaXRpb25DaGFyYWN0ZXIgPSAyNTY7CisKKyAg
ICBWZWN0b3I8TkZBTm9kZT4gbV9ub2RlczsKKyAgICB1bnNpZ25lZCBtX3Jvb3Q7Cit9OworCit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCisKKyNlbmRpZiAvLyBORkFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ORkFOb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjk5MTdjNDY5OGZhNjJmMjc5NTZiYjgx
NzkzZmNjNWUyNGUzYWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvTkZBTm9kZS5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJORkFOb2RlLmgiCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250
ZW50RXh0ZW5zaW9ucyB7CisKK05GQU5vZGU6Ok5GQU5vZGUodWludDY0X3QgcnVsZUlkKQorICAg
IDogaXNGaW5hbChmYWxzZSkKKyAgICAsIHJ1bGVJZChydWxlSWQpCit7Cit9CisKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMjM5ZDY2M2ZhMzk5NzQ1MjUyODFmNGUxNmMyOWVlNWIxNmQxYzg4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5oCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5GQU5vZGVfaAorI2RlZmluZSBO
RkFOb2RlX2gKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKworLy8gQSBORkFOb2RlIGFi
c3RyYWN0IHRoZSB0cmFuc2l0aW9uIHRhYmxlIG91dCBvZiBhIE5GQSBzdGF0ZS4KK2NsYXNzIE5G
QU5vZGUgeworcHVibGljOgorICAgIE5GQU5vZGUodWludDY0X3QgcnVsZUlkKTsKKworICAgIEhh
c2hNYXA8dWludDE2X3QsIEhhc2hTZXQ8dW5zaWduZWQ+PiB0cmFuc2l0aW9uczsKKyAgICBib29s
IGlzRmluYWw7CisgICAgY29uc3QgdWludDY0X3QgcnVsZUlkOworfTsKKworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQor
CisjZW5kaWYgLy8gTkZBTm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ORkFUb0RGQS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY2NmZkY2I1YTkwZjI4MjY0NzZhYzdjYjM4YWQz
MjU5MWRkMDdjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL05GQVRvREZBLmNwcApAQCAtMCwwICsxLDI1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJORkFUb0RGQS5oIgorCisjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIkRGQU5vZGUuaCIKKyNpbmNsdWRlICJO
RkEuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsK
KwordHlwZWRlZiBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBOb2RlSWRTZXQ7
CisKK3N0YXRpYyBOb2RlSWRTZXQgZXBzaWxvbkNsb3N1cmUoY29uc3QgTm9kZUlkU2V0JiBub2Rl
U2V0LCBjb25zdCBWZWN0b3I8TkZBTm9kZT4mIGdyYXBoLCB1bnNpZ25lZCBlcHNpbG9uVHJhbnNp
dGlvbkNoYXJhY3RlcikKK3sKKyAgICBBU1NFUlQoIW5vZGVTZXQuaXNFbXB0eSgpKTsKKyAgICBB
U1NFUlQoIWdyYXBoLmlzRW1wdHkoKSk7CisKKyAgICAvLyBXZSBnbyBicmVhZHRoLWZpcnN0IGZp
cnN0IGludG8gb3VyIGdyYXBoIGZvbGxvd2luZyBhbGwgdGhlIGVwc2lsb24gdHJhbnNpdGlvbi4g
QXQgZWFjaCBnZW5lcmF0aW9uLAorICAgIC8vIGRpc2NvdmVyZWROb2RlcyBjb250YWlucyBhbGwg
dGhlIG5ldyBub2RlcyB3ZSBoYXZlIGRpc2NvdmVyZWQgYnkgZm9sbG93aW5nIGEgc2luZ2xlIGVw
c2lsb24gdHJhbnNpdGlvbgorICAgIC8vIG91dCBvZiB0aGUgcHJldmlvdXMgc2V0IG9mIG5vZGVz
LgorICAgIE5vZGVJZFNldCBvdXRwdXROb2RlU2V0ID0gbm9kZVNldDsKKyAgICBOb2RlSWRTZXQg
ZGlzY292ZXJlZE5vZGVzID0gbm9kZVNldDsKKyAgICBkbyB7CisgICAgICAgIG91dHB1dE5vZGVT
ZXQuYWRkKGRpc2NvdmVyZWROb2Rlcy5iZWdpbigpLCBkaXNjb3ZlcmVkTm9kZXMuZW5kKCkpOwor
CisgICAgICAgIE5vZGVJZFNldCBuZXh0R2VuZXJhdGlvbkRpc2NvdmVyZWROb2RlczsKKworICAg
ICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJZCA6IGRpc2NvdmVyZWROb2RlcykgeworICAgICAgICAg
ICAgY29uc3QgTkZBTm9kZSYgbm9kZSA9IGdyYXBoW25vZGVJZF07CisgICAgICAgICAgICBhdXRv
IGVwc2lsb25UcmFuc2l0aW9uU2xvdCA9IG5vZGUudHJhbnNpdGlvbnMuZmluZChlcHNpbG9uVHJh
bnNpdGlvbkNoYXJhY3Rlcik7CisgICAgICAgICAgICBpZiAoZXBzaWxvblRyYW5zaXRpb25TbG90
ICE9IG5vZGUudHJhbnNpdGlvbnMuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBIYXNo
U2V0PHVuc2lnbmVkPiYgdGFyZ2V0cyA9IGVwc2lsb25UcmFuc2l0aW9uU2xvdC0+dmFsdWU7Cisg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB0YXJnZXROb2RlSWQgOiB0YXJnZXRzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghb3V0cHV0Tm9kZVNldC5jb250YWlucyh0YXJnZXROb2Rl
SWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEdlbmVyYXRpb25EaXNjb3ZlcmVkTm9k
ZXMuYWRkKHRhcmdldE5vZGVJZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgZGlzY292ZXJlZE5vZGVzID0gbmV4dEdlbmVyYXRpb25EaXNj
b3ZlcmVkTm9kZXM7CisgICAgfSB3aGlsZSAoIWRpc2NvdmVyZWROb2Rlcy5pc0VtcHR5KCkpOwor
CisgICAgQVNTRVJUKCFvdXRwdXROb2RlU2V0LmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIG91dHB1
dE5vZGVTZXQ7Cit9CisKK3R5cGVkZWYgSGFzaE1hcDx1aW50MTZfdCwgTm9kZUlkU2V0LCBEZWZh
dWx0SGFzaDx1aW50MTZfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dWludDE2X3Q+PiBTZXRUcmFuc2l0aW9uc0V4Y2x1ZGluZ0Vwc2lsb247CisKK3N0YXRpYyBT
ZXRUcmFuc2l0aW9uc0V4Y2x1ZGluZ0Vwc2lsb24gc2V0VHJhbnNpdGlvbnNFeGNsdWRpbmdFcHNp
bG9uKGNvbnN0IE5vZGVJZFNldCYgbm9kZVNldCwgY29uc3QgVmVjdG9yPE5GQU5vZGU+JiBncmFw
aCwgdW5zaWduZWQgZXBzaWxvblRyYW5zaXRpb25DaGFyYWN0ZXIpCit7CisgICAgQVNTRVJUKCFu
b2RlU2V0LmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFncmFwaC5pc0VtcHR5KCkpOworCisgICAg
U2V0VHJhbnNpdGlvbnNFeGNsdWRpbmdFcHNpbG9uIG91dHB1dFNldFRyYW5zaXRpb25zRXhjbHVk
aW5nRXBzaWxvbjsKKworICAgIGZvciAodW5zaWduZWQgbm9kZUlkIDogbm9kZVNldCkgeworICAg
ICAgICBjb25zdCBORkFOb2RlJiBub2RlID0gZ3JhcGhbbm9kZUlkXTsKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvJiB0cmFuc2l0aW9uU2xvdCA6IG5vZGUudHJhbnNpdGlvbnMpIHsKKyAgICAgICAg
ICAgIGlmICh0cmFuc2l0aW9uU2xvdC5rZXkgIT0gZXBzaWxvblRyYW5zaXRpb25DaGFyYWN0ZXIp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGV4aXN0aW5nVHJhbnNpdGlvbiA9IG91dHB1dFNldFRy
YW5zaXRpb25zRXhjbHVkaW5nRXBzaWxvbi5maW5kKHRyYW5zaXRpb25TbG90LmtleSk7CisgICAg
ICAgICAgICAgICAgaWYgKGV4aXN0aW5nVHJhbnNpdGlvbiAhPSBvdXRwdXRTZXRUcmFuc2l0aW9u
c0V4Y2x1ZGluZ0Vwc2lsb24uZW5kKCkpCisgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJh
bnNpdGlvbi0+dmFsdWUuYWRkKHRyYW5zaXRpb25TbG90LnZhbHVlLmJlZ2luKCksIHRyYW5zaXRp
b25TbG90LnZhbHVlLmVuZCgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZUlkU2V0IG5ld1NldDsKKyAgICAgICAgICAgICAgICAgICAgbmV3U2V0LmFk
ZCh0cmFuc2l0aW9uU2xvdC52YWx1ZS5iZWdpbigpLCB0cmFuc2l0aW9uU2xvdC52YWx1ZS5lbmQo
KSk7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dFNldFRyYW5zaXRpb25zRXhjbHVkaW5nRXBz
aWxvbi5hZGQodHJhbnNpdGlvblNsb3Qua2V5LCBuZXdTZXQpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBvdXRwdXRTZXRU
cmFuc2l0aW9uc0V4Y2x1ZGluZ0Vwc2lsb247Cit9CisKK2NsYXNzIEhhc2hhYmxlTm9kZUlkU2V0
IHsKK3B1YmxpYzoKKyAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVlIH07CisgICAg
ZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKKworICAgIEhhc2hhYmxlTm9k
ZUlkU2V0KEVtcHR5VmFsdWVUYWcpIHsgfQorICAgIEhhc2hhYmxlTm9kZUlkU2V0KERlbGV0ZWRW
YWx1ZVRhZykKKyAgICAgICAgOiBtX2lzRGVsZXRlZCh0cnVlKQorICAgIHsKKyAgICB9CisKKyAg
ICBIYXNoYWJsZU5vZGVJZFNldChjb25zdCBOb2RlSWRTZXQmIG5vZGVJZFNldCkKKyAgICAgICAg
OiBtX25vZGVJZFNldChub2RlSWRTZXQpCisgICAgeworICAgICAgICBBU1NFUlQoIW5vZGVJZFNl
dC5pc0VtcHR5KCkpOworICAgIH0KKworICAgIEhhc2hhYmxlTm9kZUlkU2V0KEhhc2hhYmxlTm9k
ZUlkU2V0JiYgb3RoZXIpCisgICAgICAgIDogbV9ub2RlSWRTZXQob3RoZXIubV9ub2RlSWRTZXQp
CisgICAgICAgICwgbV9pc0RlbGV0ZWQob3RoZXIubV9pc0RlbGV0ZWQpCisgICAgeworICAgICAg
ICBvdGhlci5tX25vZGVJZFNldC5jbGVhcigpOworICAgICAgICBvdGhlci5tX2lzRGVsZXRlZCA9
IGZhbHNlOworICAgIH0KKworICAgIEhhc2hhYmxlTm9kZUlkU2V0JiBvcGVyYXRvcj0oSGFzaGFi
bGVOb2RlSWRTZXQmJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fbm9kZUlkU2V0ID0gb3RoZXIu
bV9ub2RlSWRTZXQ7CisgICAgICAgIG90aGVyLm1fbm9kZUlkU2V0LmNsZWFyKCk7CisgICAgICAg
IG1faXNEZWxldGVkID0gb3RoZXIubV9pc0RlbGV0ZWQ7CisgICAgICAgIG90aGVyLm1faXNEZWxl
dGVkID0gZmFsc2U7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBib29sIGlz
RW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUlkU2V0LmlzRW1wdHkoKTsgfQorICAg
IGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2lzRGVsZXRlZDsgfQorCisg
ICAgTm9kZUlkU2V0IG5vZGVJZFNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUlkU2V0OyB9CisK
K3ByaXZhdGU6CisgICAgTm9kZUlkU2V0IG1fbm9kZUlkU2V0OworICAgIGJvb2wgbV9pc0RlbGV0
ZWQgPSBmYWxzZTsKK307CisKK3N0cnVjdCBIYXNoYWJsZU5vZGVJZFNldEhhc2ggeworICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEhhc2hhYmxlTm9kZUlkU2V0JiBwKQorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgaGFzaCA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUlkIDog
cC5ub2RlSWRTZXQoKSkKKyAgICAgICAgICAgIGhhc2ggXj0gRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoOjpoYXNoKG5vZGVJZCk7CisgICAgICAgIHJldHVybiBoYXNoOworICAgIH0KKworICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhhc2hhYmxlTm9kZUlkU2V0JiBhLCBjb25zdCBIYXNo
YWJsZU5vZGVJZFNldCYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhLm5vZGVJZFNldCgpID09
IGIubm9kZUlkU2V0KCkgJiYgYS5pc0RlbGV0ZWRWYWx1ZSgpID09IGIuaXNEZWxldGVkVmFsdWUo
KTsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSB0cnVlOworfTsKKworc3RydWN0IEhhc2hhYmxlTm9kZUlkU2V0SGFzaFRyYWl0cyA6
IHB1YmxpYyBXVEY6OkN1c3RvbUhhc2hUcmFpdHM8SGFzaGFibGVOb2RlSWRTZXQ+IHsgfTsKKwor
dHlwZWRlZiBIYXNoTWFwPEhhc2hhYmxlTm9kZUlkU2V0LCB1bnNpZ25lZCwgSGFzaGFibGVOb2Rl
SWRTZXRIYXNoLCBIYXNoYWJsZU5vZGVJZFNldEhhc2hUcmFpdHM+IE5GQVRvREZBTm9kZU1hcDsK
Kworc3RhdGljIHVuc2lnbmVkIGFkZERGQVN0YXRlKFZlY3RvcjxERkFOb2RlPiYgZGZhR3JhcGgs
IE5GQVRvREZBTm9kZU1hcCYgbmZhVG9ERkFOb2RlTWFwLCBjb25zdCBWZWN0b3I8TkZBTm9kZT4m
IG5mYUdyYXBoLCBOb2RlSWRTZXQgbmZhTm9kZXMsIHVuc2lnbmVkIGVwc2lsb25UcmFuc2l0aW9u
Q2hhcmFjdGVyKQoreworICAgIEFTU0VSVCghbmZhVG9ERkFOb2RlTWFwLmNvbnRhaW5zKG5mYU5v
ZGVzKSk7CisgICAgQVNTRVJUX1VOVVNFRChlcHNpbG9uVHJhbnNpdGlvbkNoYXJhY3RlciwgZXBz
aWxvbkNsb3N1cmUobmZhTm9kZXMsIG5mYUdyYXBoLCBlcHNpbG9uVHJhbnNpdGlvbkNoYXJhY3Rl
cikgPT0gIG5mYU5vZGVzKTsKKworICAgIERGQU5vZGUgbmV3REZBTm9kZTsKKworICAgIEhhc2hT
ZXQ8dWludDY0X3QsIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IGFjdGlvbnM7CisgICAgZm9yICh1bnNpZ25l
ZCBuZmFOb2RlSWQgOiBuZmFOb2RlcykgeworICAgICAgICBjb25zdCBORkFOb2RlJiBuZmFOb2Rl
ID0gbmZhR3JhcGhbbmZhTm9kZUlkXTsKKyAgICAgICAgaWYgKG5mYU5vZGUuaXNGaW5hbCkKKyAg
ICAgICAgICAgIGFjdGlvbnMuYWRkKG5mYU5vZGUucnVsZUlkKTsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICAgIG5ld0RGQU5vZGUuY29ycmVzcG9uZGluZ0RGQU5vZGVzLmFwcGVuZChuZmFOb2RlSWQp
OworI2VuZGlmCisgICAgfQorCisgICAgZm9yICh1aW50NjRfdCBhY3Rpb24gOiBhY3Rpb25zKQor
ICAgICAgICBuZXdERkFOb2RlLmFjdGlvbnMuYXBwZW5kKGFjdGlvbik7CisKKyAgICB1bnNpZ25l
ZCBkZmFOb2RlSWQgPSBkZmFHcmFwaC5zaXplKCk7CisgICAgZGZhR3JhcGguYXBwZW5kKG5ld0RG
QU5vZGUpOworICAgIG5mYVRvREZBTm9kZU1hcC5hZGQobmZhTm9kZXMsIGRmYU5vZGVJZCk7Cisg
ICAgcmV0dXJuIGRmYU5vZGVJZDsKK30KKwordHlwZWRlZiBIYXNoU2V0PEhhc2hhYmxlTm9kZUlk
U2V0LCBIYXNoYWJsZU5vZGVJZFNldEhhc2gsIEhhc2hhYmxlTm9kZUlkU2V0SGFzaFRyYWl0cz4g
U2V0T2ZOb2RlU2V0OworCitERkEgTkZBVG9ERkE6OmNvbnZlcnQoY29uc3QgTkZBJiBuZmEpCit7
CisgICAgVmVjdG9yPERGQU5vZGU+IGRmYUdyYXBoOworICAgIE5GQVRvREZBTm9kZU1hcCBuZmFU
b0RGQU5vZGVNYXA7CisKKyAgICBTZXRPZk5vZGVTZXQgcHJvY2Vzc2VkU3RhdGVTZXRzOworICAg
IFNldE9mTm9kZVNldCB1bnByb2Nlc3NlZFN0YXRlU2V0czsKKworICAgIGNvbnN0IFZlY3RvcjxO
RkFOb2RlPiYgbmZhR3JhcGggPSBuZmEubV9ub2RlczsKKworICAgIE5vZGVJZFNldCBpbml0aWFs
U2V0KHsgbmZhLnJvb3QoKSB9KTsKKyAgICBOb2RlSWRTZXQgY2xvc2VkSW5pdGlhbFNldCA9IGVw
c2lsb25DbG9zdXJlKGluaXRpYWxTZXQsIG5mYUdyYXBoLCBORkE6OmVwc2lsb25UcmFuc2l0aW9u
Q2hhcmFjdGVyKTsKKworICAgIGFkZERGQVN0YXRlKGRmYUdyYXBoLCBuZmFUb0RGQU5vZGVNYXAs
IG5mYUdyYXBoLCBjbG9zZWRJbml0aWFsU2V0LCBORkE6OmVwc2lsb25UcmFuc2l0aW9uQ2hhcmFj
dGVyKTsKKyAgICB1bnByb2Nlc3NlZFN0YXRlU2V0cy5hZGQoY2xvc2VkSW5pdGlhbFNldCk7CisK
KyAgICBkbyB7CisgICAgICAgIEhhc2hhYmxlTm9kZUlkU2V0IHN0YXRlU2V0ID0gdW5wcm9jZXNz
ZWRTdGF0ZVNldHMudGFrZUFueSgpOworCisgICAgICAgIEFTU0VSVCghcHJvY2Vzc2VkU3RhdGVT
ZXRzLmNvbnRhaW5zKHN0YXRlU2V0KSk7CisgICAgICAgIHByb2Nlc3NlZFN0YXRlU2V0cy5hZGQo
c3RhdGVTZXQubm9kZUlkU2V0KCkpOworCisgICAgICAgIHVuc2lnbmVkIGRmYU5vZGVJZCA9IG5m
YVRvREZBTm9kZU1hcC5nZXQoc3RhdGVTZXQpOworCisgICAgICAgIFNldFRyYW5zaXRpb25zRXhj
bHVkaW5nRXBzaWxvbiB0cmFuc2l0aW9uc0Zyb21DbG9zZWRTZXQgPSBzZXRUcmFuc2l0aW9uc0V4
Y2x1ZGluZ0Vwc2lsb24oc3RhdGVTZXQubm9kZUlkU2V0KCksIG5mYUdyYXBoLCBORkE6OmVwc2ls
b25UcmFuc2l0aW9uQ2hhcmFjdGVyKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0
aW9uU2xvdCA6IHRyYW5zaXRpb25zRnJvbUNsb3NlZFNldCkgeworICAgICAgICAgICAgTm9kZUlk
U2V0IGNsb3NlZFRhcmdldE5vZGVTZXQgPSBlcHNpbG9uQ2xvc3VyZSh0cmFuc2l0aW9uU2xvdC52
YWx1ZSwgbmZhR3JhcGgsIE5GQTo6ZXBzaWxvblRyYW5zaXRpb25DaGFyYWN0ZXIpOworICAgICAg
ICAgICAgdW5zaWduZWQgbmV3REZBTm9kZUlkOworCisgICAgICAgICAgICBjb25zdCBhdXRvJiBl
eGlzdGluZ05GQVRvREZBQXNzb2NpYXRpb24gPSBuZmFUb0RGQU5vZGVNYXAuZmluZChjbG9zZWRU
YXJnZXROb2RlU2V0KTsKKyAgICAgICAgICAgIGlmIChleGlzdGluZ05GQVRvREZBQXNzb2NpYXRp
b24gIT0gbmZhVG9ERkFOb2RlTWFwLmVuZCgpKQorICAgICAgICAgICAgICAgIG5ld0RGQU5vZGVJ
ZCA9IGV4aXN0aW5nTkZBVG9ERkFBc3NvY2lhdGlvbi0+dmFsdWU7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgbmV3REZBTm9kZUlkID0gYWRkREZBU3RhdGUoZGZhR3JhcGgsIG5m
YVRvREZBTm9kZU1hcCwgbmZhR3JhcGgsIGNsb3NlZFRhcmdldE5vZGVTZXQsIE5GQTo6ZXBzaWxv
blRyYW5zaXRpb25DaGFyYWN0ZXIpOworCisgICAgICAgICAgICBBU1NFUlQobmV3REZBTm9kZUlk
IDwgZGZhR3JhcGguc2l6ZSgpKTsKKworICAgICAgICAgICAgY29uc3QgYXV0byBhZGRSZXN1bHQg
PSBkZmFHcmFwaFtkZmFOb2RlSWRdLnRyYW5zaXRpb25zLnNldCh0cmFuc2l0aW9uU2xvdC5rZXks
IG5ld0RGQU5vZGVJZCk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgICAgICAgICBpZiAoIXByb2Nlc3NlZFN0YXRlU2V0
cy5jb250YWlucyhjbG9zZWRUYXJnZXROb2RlU2V0KSkKKyAgICAgICAgICAgICAgICB1bnByb2Nl
c3NlZFN0YXRlU2V0cy5hZGQoY2xvc2VkVGFyZ2V0Tm9kZVNldCk7CisgICAgICAgIH0KKyAgICB9
IHdoaWxlICghdW5wcm9jZXNzZWRTdGF0ZVNldHMuaXNFbXB0eSgpKTsKKworICAgIEFTU0VSVChw
cm9jZXNzZWRTdGF0ZVNldHMuc2l6ZSgpID09IG5mYVRvREZBTm9kZU1hcC5zaXplKCkpOworCisg
ICAgcmV0dXJuIERGQShXVEY6Om1vdmUoZGZhR3JhcGgpLCAwKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ORkFUb0RGQS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNmE1ZjcyNTc4OGY4NTdmYmIzNDQ4ZmU2
MGQwYjM0MjE0YzI3MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ORkFUb0RGQS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE5GQVRvREZBX2gKKyNkZWZpbmUgTkZBVG9ERkFfaAorCisjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIkRGQS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKK2NsYXNzIE5GQTsKKworLy8g
TkZBVG9ERkEgcHJvdmlkZXMgYSB3YXkgdG8gYnVpbGQgYSBERkEgY29ycmVzcG9uZGluZyB0byBh
IE5GQS4KK2NsYXNzIE5GQVRvREZBIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgREZBIGNvbnZlcnQo
Y29uc3QgTkZBJik7Cit9OworCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNlbmRpZiAvLyBORkFUb0RGQV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAppbmRleCA5OTBhZTg5OThjYTFkZjZhNjBiYjgwOTkyNzE5NmJkZWJjNGQ3NDU4Li43NmIz
NGIyZDc5NWUxMWJkNmNjMGQ0ODMxM2ZkZjRiYjNkNTg1OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTYzLDYg
KzYzLDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyNpbmNs
dWRlICJDb250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAjaW5jbHVkZSAiQ2FjaGVkVGV4dFRyYWNrLmgiCiAjZW5kaWYKQEAgLTQ1
Myw2ICs0NTcsMTEgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICBpZiAoIWNhblJlcXVl
c3QodHlwZSwgdXJsLCByZXF1ZXN0Lm9wdGlvbnMoKSwgcmVxdWVzdC5mb3JQcmVsb2FkKCkpKQog
ICAgICAgICByZXR1cm4gMDsKIAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAg
aWYgKENvbnRlbnRFeHRlbnNpb25zOjpzaG91bGRCbG9ja1VSTCh1cmwpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyNlbmRpZgorCiAgICAgaWYgKG1lbW9yeUNhY2hlKCkuZGlzYWJsZWQoKSkg
ewogICAgICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1lbnRS
ZXNvdXJjZXMuZmluZCh1cmwuc3RyaW5nKCkpOwogICAgICAgICBpZiAoaXQgIT0gbV9kb2N1bWVu
dFJlc291cmNlcy5lbmQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDE2M2Y2MjM3YWJiOTNiMGNmM2UzZmU3YjUz
N2I2MTE0ODQ5N2RlNDIuLjhhODU2NWZiMDBlYWUyZmEwZjZkNzZlMjdmNjBkZGUwZjFlYTY3N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW0KQEAgLTI0NCw2ICsyNDQsMjAgQEAgc3RhdGljIFdlYktpdDo6SFRUUENvb2tpZUFj
Y2VwdFBvbGljeSB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3koTlNIVFRQQ29va2llQWNjZXAKICAg
ICBfcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0ZXIocGFyYW1ldGVyLCBJUEM6OkRhdGFSZWZlcmVuY2Uo
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0p
KSk7CiB9CiAKKy0gKHZvaWQpX2xvYWRDb250ZW50RXh0ZW5zaW9uV2l0aElkZW50aWZpZXI6KE5T
U3RyaW5nICopaWRlbnRpZmllciBzZXJpYWxpemVkUnVsZXM6KE5TU3RyaW5nICopc2VyaWFsaXpl
ZFJ1bGVzIHN1Y2Nlc3NDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEaWN0aW9uYXJ5ICpp
bmZvKSlzdWNjZXNzQ29tcGxldGlvbkhhbmRsZXIgZXJyb3JDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNFcnJvciAqZXJyb3IpKWVycm9yQ29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIC8vIEZvciB0aGlzIGV4cGVyaW1lbnRhdGlvbiwg
dGhlIENvbnRlbnRFeHRlbnNpb25zIGFyZSBoYW5kbGVkIGJ5IGVhY2ggV2ViUHJvY2Vzcy4KKyAg
ICAvLyBFdmVudHVhbGx5IHRoZSBDb250ZW50RXh0ZW5zaW9uIHdpbGwgaGF2ZSB0byBiZSBoYW5k
bGVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgV2ViUHJvY2Vzc2VzIGFuZCB3ZSdsbCBiZSBhYmxlCisg
ICAgLy8gdG8gcHJvdmlkZSBtZWFuaW5nZnVsIGNvbXBsZXRpb24gaGFuZGxlcnMuCisgICAgVU5V
U0VEX1BBUkFNKGVycm9yQ29tcGxldGlvbkhhbmRsZXIpOworCisgICAgX3Byb2Nlc3NQb29sLT5s
b2FkQ29udGVudEV4dGVuc2lvbihpZGVudGlmaWVyLCBzZXJpYWxpemVkUnVsZXMpOworCisgICAg
c3VjY2Vzc0NvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisjZW5kaWYKK30KKwogLSAoaWQgPF9XS0Rv
d25sb2FkRGVsZWdhdGU+KV9kb3dubG9hZERlbGVnYXRlCiB7CiAgICAgcmV0dXJuIF9kb3dubG9h
ZERlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IGFjMjAz
M2U0OTJmOGNlZGNlMTc1YWM3YjI0NmRlZjI3NDM5ZDk3OGQuLmJlZDdmMGNiNzFmZTY3NGI3Y2Qz
NzQzM2RkNDkyMWQwNTk1ZGViYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTQzLDYgKzQzLDgg
QEAKIC0gKGlkKV9vYmplY3RGb3JCdW5kbGVQYXJhbWV0ZXI6KE5TU3RyaW5nICopcGFyYW1ldGVy
OwogLSAodm9pZClfc2V0T2JqZWN0OihpZCA8TlNDb3B5aW5nLCBOU1NlY3VyZUNvZGluZz4pb2Jq
ZWN0IGZvckJ1bmRsZVBhcmFtZXRlcjooTlNTdHJpbmcgKilwYXJhbWV0ZXI7CiAKKy0gKHZvaWQp
X2xvYWRDb250ZW50RXh0ZW5zaW9uV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmll
ciBzZXJpYWxpemVkUnVsZXM6KE5TU3RyaW5nICopc2VyaWFsaXplZFJ1bGVzIHN1Y2Nlc3NDb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEaWN0aW9uYXJ5ICppbmZvKSlzdWNjZXNzQ29tcGxl
dGlvbkhhbmRsZXIgZXJyb3JDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqZXJy
b3IpKWVycm9yQ29tcGxldGlvbkhhbmRsZXI7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFr
LCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4g
X2Rvd25sb2FkRGVsZWdhdGU7CiAKICsgKE5TVVJMICopX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFp
bmVyV2l0aFVSTDooTlNVUkwgKiljb250YWluZXJVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBlOTcyZGYwNzcwZTc0ZjA2YjY3MGFiYjQ0ZmNk
Y2UwNGQyZmYwNmViLi5hOGM1NTUzY2I3MzEwYzdkZDgwZWMyZGI2MDZiMzQ4MWJjNGZkMGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTgxMCw2
ICs4MTAsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGlu
ZyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlN0YXJ0TWVtb3J5U2FtcGxlcihzYW1wbGVMb2dTYW5kYm94SGFuZGxl
LCBzYW1wbGVMb2dGaWxlUGF0aCwgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWwpLCAwKTsKICAgICB9
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGZvciAoY29uc3QgYXV0byYg
c2xvdCA6IG1fZW5jb2RlZENvbnRlbnRFeHRlbnNpb25zKQorICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpMb2FkQ29udGVudEV4dGVuc2lvbihzbG90LmtleSwgc2xv
dC52YWx1ZSksIDApOworI2VuZGlmCisKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRl
Q29ubmVjdGlvbih0aGlzLCBwcm9jZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogfQogCkBAIC0xNDMx
LDQgKzE0MzYsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TWVtb3J5Q2FjaGVEaXNhYmxl
ZChib29sIGRpc2FibGVkKQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6U2V0TWVtb3J5Q2FjaGVEaXNhYmxlZChkaXNhYmxlZCkpOwogfQogCisjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmxvYWRDb250ZW50RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzZXJpYWxpemVk
UnVsZXMpCit7CisgICAgbV9lbmNvZGVkQ29udGVudEV4dGVuc2lvbnMuc2V0KGlkZW50aWZpZXIs
IHNlcmlhbGl6ZWRSdWxlcyk7CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpMb2FkQ29udGVudEV4dGVuc2lvbihpZGVudGlmaWVyLCBzZXJpYWxpemVkUnVsZXMp
KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZGRjNGZiNmM5OWFlMzlkZjAyYzE2NDc3ZTFj
MGIwM2Q1MmY0NWRhNi4uNDMzNDdlYTE5ZjllMzFjNTQ4YjRhOGE3NDRhN2MwNmM1MzExNzRlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM1Nyw2ICsz
NTcsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNh
YmxlZEZvclBhZ2VDb3VudGVyLnRva2VuPFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW5U
eXBlPigpOwogICAgIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgdm9p
ZCBsb2FkQ29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc2VyaWFsaXplZFJ1bGVzKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTU0MCw2ICs1NDQsMTAgQEAgcHJpdmF0ZToKICAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbV9idW5kbGVQYXJhbWV0ZXJzOwogICAgIFBy
b2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW4gbV9wbHVnaW5Qcm9jZXNzTWFuYWdlclByb2Nl
c3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW47CiAjZW5kaWYKKworI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9lbmNvZGVkQ29udGVu
dEV4dGVuc2lvbnM7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBiNzg1Yjg5OTA0OTljN2M2Yjhm
ZmNhMDAwNjIzMWY0NTRmY2UxZGUyLi4wMzI0YzM3MTliMWQ2MDAyMzUyNmY0NThiMmQ3MmE1YmRm
ZGZmM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEw
Myw2ICsxMDMsMTAgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5oPgorI2VuZGlmCisKICNpZiBFTkFCTEUoU0VDX0lU
RU1fU0hJTSkKICNpbmNsdWRlICJTZWNJdGVtU2hpbS5oIgogI2VuZGlmCkBAIC0xMzE1LDYgKzEz
MTksMTMgQEAgUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJQcm9jZXNzOjp0cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKEFQSTo6T2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIFVzZXJEYXRhOjp0cmFu
c2Zvcm0ob2JqZWN0LCBUcmFuc2Zvcm1lcigpKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCit2b2lkIFdlYlByb2Nlc3M6OmxvYWRDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzZXJpYWxpemVkUnVsZXMpCit7CisgICAg
Q29udGVudEV4dGVuc2lvbnM6OkV4dGVuc2lvbnNNYW5hZ2VyOjpsb2FkRXh0ZW5zaW9uKGlkZW50
aWZpZXIsIHNlcmlhbGl6ZWRSdWxlcyk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQcm9jZXNzOjpz
ZXRNZW1vcnlDYWNoZURpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7CiAgICAgaWYgKG1lbW9yeUNh
Y2hlKCkuZGlzYWJsZWQoKSAhPSBkaXNhYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKaW5kZXggZjJlNzIxZjQ2OGIxNWVhMWQ2NGFhMWJlMzQwNDQ1YjcxYzM3NzYyMy4u
YTExMjRkNWRiMDAyNzIwNmI0NmQ1ZWJlNTE5ZTA0Y2ViNjEyYmM2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTIwMiw2ICsyMDIsMTAgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzUmljaENvbnRlbnRTZXJ2aWNlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmljaENv
bnRlbnRTZXJ2aWNlczsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQorICAgIHZvaWQgbG9hZENvbnRlbnRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNlcmlhbGl6ZWRSdWxlcyk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBXZWJQcm9jZXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5NGVmZTIwYjJiMDAyMjMyZGQ5MTljMGMxMDE5ZmYyNjQy
NjU1NDc3Li44NDE1Mjg1NTNiNDU1ODFjMjJiMzQwNjJhNzZlNmI0NWM3NTZmNTZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05
Myw2ICs5MywxMCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBTZXRFbmFibGVkU2VydmljZXMoYm9vbCBoYXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1NlbGVj
dGlvblNlcnZpY2VzLCBib29sIGhhc1JpY2hDb250ZW50U2VydmljZXMpCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgTG9hZENvbnRlbnRFeHRlbnNpb24oU3Ry
aW5nIGlkZW50aWZpZXIsIFN0cmluZyBzZXJpYWxpemVkUnVsZXMpCisjZW5kaWYKKwogICAgIFBy
b2Nlc3NXaWxsU3VzcGVuZCgpCiAgICAgQ2FuY2VsUHJvY2Vzc1dpbGxTdXNwZW5kKCkKIH0K
</data>
<flag name="review"
          id="269059"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>