<?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>169044</bug_id>
          
          <creation_ts>2017-03-01 10:38:26 -0800</creation_ts>
          <short_desc>Add SPI to create WebsiteDataStore objects pointing to custom paths</short_desc>
          <delta_ts>2017-03-01 20:38:29 -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>WebKit Misc.</component>
          <version>WebKit 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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1282329</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-01 10:38:26 -0800</bug_when>
    <thetext>Add SPI to create WebsiteDataStore objects pointing to custom paths

This is not comprehensive quite yet; Baby steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282330</commentid>
    <comment_count>1</comment_count>
      <attachid>303079</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-01 10:39:47 -0800</bug_when>
    <thetext>Created attachment 303079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282331</commentid>
    <comment_count>2</comment_count>
      <attachid>303080</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-01 10:41:49 -0800</bug_when>
    <thetext>Created attachment 303080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282335</commentid>
    <comment_count>3</comment_count>
      <attachid>303080</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-01 10:46:05 -0800</bug_when>
    <thetext>Comment on attachment 303080
Patch

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

&gt; Source/WebKit2/UIProcess/API/APIWebsiteDataStore.h:42
&gt; +    WebsiteDataStore(WebKit::WebsiteDataStore::Configuration);

+explicit

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:34
&gt; +WK_CLASS_AVAILABLE(macosx(10.12), ios(10.0))

This does not seem accurate.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:37
&gt; +@property (nonatomic, strong) NSString *webStorageDirectory;

Don&apos;t we usually copy string properties? I guess it doesn&apos;t really matter because you toss the configuration immediately after it&apos;s passed in, but it&apos;s good practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282392</commentid>
    <comment_count>4</comment_count>
      <attachid>303099</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-01 12:48:01 -0800</bug_when>
    <thetext>Created attachment 303099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282396</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-01 12:50:51 -0800</bug_when>
    <thetext>Attachment 303099 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282438</commentid>
    <comment_count>6</comment_count>
      <attachid>303099</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-01 14:03:07 -0800</bug_when>
    <thetext>Comment on attachment 303099
Patch

Clearing flags on attachment: 303099

Committed r213241: &lt;http://trac.webkit.org/changeset/213241&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282439</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-01 14:03:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282448</commentid>
    <comment_count>8</comment_count>
      <attachid>303099</attachid>
    <who name="">mitz</who>
    <bug_when>2017-03-01 14:24:10 -0800</bug_when>
    <thetext>Comment on attachment 303099
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:39
&gt; +@property (nonatomic, copy) NSString *webStorageDirectory;
&gt; +@property (nonatomic, copy) NSString *indexedDBDatabaseDirectory;
&gt; +@property (nonatomic, copy) NSString *webSQLDatabaseDirectory;

Modern Cocoa APIs use file NSURLs for filesystem locations rather than path NSStrings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282497</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-01 15:20:24 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 303099 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=303099&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:39
&gt; &gt; +@property (nonatomic, copy) NSString *webStorageDirectory;
&gt; &gt; +@property (nonatomic, copy) NSString *indexedDBDatabaseDirectory;
&gt; &gt; +@property (nonatomic, copy) NSString *webSQLDatabaseDirectory;
&gt; 
&gt; Modern Cocoa APIs use file NSURLs for filesystem locations rather than path
&gt; NSStrings.

What would you suggest the failure mode be if somebody puts in a remote URL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282509</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-01 15:44:10 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 303099 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=303099&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:39
&gt; &gt; &gt; +@property (nonatomic, copy) NSString *webStorageDirectory;
&gt; &gt; &gt; +@property (nonatomic, copy) NSString *indexedDBDatabaseDirectory;
&gt; &gt; &gt; +@property (nonatomic, copy) NSString *webSQLDatabaseDirectory;
&gt; &gt; 
&gt; &gt; Modern Cocoa APIs use file NSURLs for filesystem locations rather than path
&gt; &gt; NSStrings.
&gt; 
&gt; What would you suggest the failure mode be if somebody puts in a remote URL?

What is the failure mode if somebody puts in a garbage string? They should probably be the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282511</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-01 15:49:37 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Comment on attachment 303099 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=303099&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:39
&gt; &gt; &gt; &gt; +@property (nonatomic, copy) NSString *webStorageDirectory;
&gt; &gt; &gt; &gt; +@property (nonatomic, copy) NSString *indexedDBDatabaseDirectory;
&gt; &gt; &gt; &gt; +@property (nonatomic, copy) NSString *webSQLDatabaseDirectory;
&gt; &gt; &gt; 
&gt; &gt; &gt; Modern Cocoa APIs use file NSURLs for filesystem locations rather than path
&gt; &gt; &gt; NSStrings.
&gt; &gt; 
&gt; &gt; What would you suggest the failure mode be if somebody puts in a remote URL?
&gt; 
&gt; What is the failure mode if somebody puts in a garbage string? They should
&gt; probably be the same.

Currently a garbage string would result in &quot;things just don&apos;t work right&quot;, simply because we have no special handling.

Transitioning to NSURLs - without specifically addressing the failure mode - could mean that storage/websql/indexeddb reads might actually try to go to the network.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282513</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-01 15:50:00 -0800</bug_when>
    <thetext>I&apos;m definitely willing to iterate on this once we identify the appropriate failure mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282514</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-01 15:53:38 -0800</bug_when>
    <thetext>It&apos;s a programming error, not a &quot;we don&apos;t expect this to happen&quot; error, so why not throw an exception?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282523</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-01 16:05:32 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; It&apos;s a programming error, not a &quot;we don&apos;t expect this to happen&quot; error, so
&gt; why not throw an exception?

If that&apos;s the desired behavior, I can implement it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282562</commentid>
    <comment_count>15</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-03-01 18:26:01 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 303099 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=303099&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:39
&gt; &gt; &gt; +@property (nonatomic, copy) NSString *webStorageDirectory;
&gt; &gt; &gt; +@property (nonatomic, copy) NSString *indexedDBDatabaseDirectory;
&gt; &gt; &gt; +@property (nonatomic, copy) NSString *webSQLDatabaseDirectory;
&gt; &gt; 
&gt; &gt; Modern Cocoa APIs use file NSURLs for filesystem locations rather than path
&gt; &gt; NSStrings.
&gt; 
&gt; What would you suggest the failure mode be if somebody puts in a remote URL?

Same thing we do in -[WKWebView loadFileURL:allowingReadAccessToURL:].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282604</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-01 20:38:29 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Comment on attachment 303099 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=303099&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:39
&gt; &gt; &gt; &gt; +@property (nonatomic, copy) NSString *webStorageDirectory;
&gt; &gt; &gt; &gt; +@property (nonatomic, copy) NSString *indexedDBDatabaseDirectory;
&gt; &gt; &gt; &gt; +@property (nonatomic, copy) NSString *webSQLDatabaseDirectory;
&gt; &gt; &gt; 
&gt; &gt; &gt; Modern Cocoa APIs use file NSURLs for filesystem locations rather than path
&gt; &gt; &gt; NSStrings.
&gt; &gt; 
&gt; &gt; What would you suggest the failure mode be if somebody puts in a remote URL?
&gt; 
&gt; Same thing we do in -[WKWebView loadFileURL:allowingReadAccessToURL:].

A concrete example! I like those. :)

Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>303079</attachid>
            <date>2017-03-01 10:39:47 -0800</date>
            <delta_ts>2017-03-01 10:40:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169044-20170301103649.patch</filename>
            <type>text/plain</type>
            <size>22488</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWE4OGNlM2RiODQ5NjAw
MDgwODkyMWRlYmNkMTNhNzc1MGU3ZmY4ZS4uOWVkNzI4MWViMmViNjEzNjVlMTU1MTE1ZTU1Njgy
ZTc4ZmQ2YWVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE3LTAzLTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIGNyZWF0
ZSBXZWJzaXRlRGF0YVN0b3JlIG9iamVjdHMgcG9pbnRpbmcgdG8gY3VzdG9tIHBhdGhzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUg
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBXZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKzIwMTctMDItMjggIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcmVzb2x2aW5nIHN5bWxpbmtzIG9mIHNv
bWUgV2Vic2l0ZURhdGFTdG9yZSBwYXRocyBmcm9tIFdlYlByb2Nlc3NQb29sIHRvLi4uIFdlYnNp
dGVEYXRhU3RvcmUhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY4Njk2LgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZE1lZGlhQ2Fj
aGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZl
ZE1lZGlhS2V5c0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnJlc29sdmVkRGF0YWJhc2VEaXJlY3RvcnkpOgorCiAyMDE3LTAyLTI4ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggQVBJIHRlc3QgcmVncmVzc2lvbihz
KToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKaW5kZXggMGRhYWY4NWEzNWRmODNkYjFhMmY0ZDg2N2JkNDQ3NTgwZTIzNTZlOC4uOWJi
YWYzMGE0NGViYTI2YmQ1M2YxZTFmYmQyNWI1NTdiMjFiODk1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTM4LDYgKzM4
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVs
dERhdGFTdG9yZSgpOwogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSgpOwogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4g
Y3JlYXRlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbik7CisKKyAgICBX
ZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbik7
CiAgICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgYm9vbCBpc1BlcnNpc3Rl
bnQoKTsKQEAgLTU4LDE2ICs2MCwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBkZWZh
dWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAKKyAgICBzdGF0aWMgV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0
aW9uKCk7CisKIHByaXZhdGU6Ci0gICAgV2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24pOwogICAgIFdlYnNpdGVEYXRhU3RvcmUoKTsKIAogICAg
IHN0YXRpYyBTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwogICAgIHN0YXRpYyBTdHJpbmcgY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsK
ICAgICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKLSAgICBzdGF0aWMgV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGRlZmF1bHREYXRhU3RvcmVDb25maWd1
cmF0aW9uKCk7Ci0KICAgICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNp
dGVEYXRhU3RvcmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDMwN2M3YWM3MzA0ZWZhMGM0
MWVhNmE2M2VkZjJlMDc0YTE0NTg0ZTUuLmI5NDQ0OGIyNGJiYTYyNDJlZmI0OThjM2Y0ZDEyNjBk
Y2UyZWZlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJX
S05TQXJyYXkuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgorI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiBAaW1wbGVt
ZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlCkBAIC0xNDUsNiArMTQ2LDI1IEBAIEBlbmQKIAog
QGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZSAoV0tQcml2YXRlKQogCistIChpbnN0
YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gKiljb25maWd1cmF0aW9uCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvIGNvbmZpZyA9IEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKKworICAgIGlmIChj
b25maWd1cmF0aW9uLndlYlN0b3JhZ2VEaXJlY3RvcnkpCisgICAgICAgIGNvbmZpZy5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkgPSBjb25maWd1cmF0aW9uLndlYlN0b3JhZ2VEaXJlY3Rvcnk7CisgICAg
aWYgKGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpCisgICAgICAgIGNvbmZp
Zy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkpCisgICAgICAgIGNvbmZpZy5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGNvbmZpZ3Vy
YXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CisKKyAgICBBUEk6Ok9iamVjdDo6Y29u
c3RydWN0SW5XcmFwcGVyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgY29uZmlnKTsKKwor
ICAgIHJldHVybiBzZWxmOworfQorCiAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczoo
TlNTZXQ8TlNTdHJpbmcgKj4gKilkYXRhVHlwZXMgd2l0aE9wdGlvbnM6KF9XS1dlYnNpdGVEYXRh
U3RvcmVGZXRjaE9wdGlvbnMpb3B0aW9ucyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNB
cnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAg
YXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCAzYzcyMzEyOTc0MjYwODQzNDdj
NmI0MmZkODFjODM3M2Y4MTA2MGIyLi40OWQ5YmU2YWQxMTliM2ExMTIxNTJiNmJhZmUzOGFkZTI2
NjJlNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMiArMjksMTYgQEAKIAog
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAorQGNsYXNzIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOworCiB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURh
dGFTdG9yZUZldGNoT3B0aW9ucykgewogICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlv
bkNvbXB1dGVTaXplcyA9IDEgPDwgMCwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIp
LCBpb3MoMTAuMCkpOwogCiBAaW50ZXJmYWNlIFdLV2Vic2l0ZURhdGFTdG9yZSAoV0tQcml2YXRl
KQogCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uOworCiAtICh2b2lkKV9mZXRjaERh
dGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8TlNTdHJpbmcgKj4gKilkYXRhVHlwZXMgd2l0aE9wdGlv
bnM6KF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpb3B0aW9ucyBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICopKWNvbXBsZXRp
b25IYW5kbGVyOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZDopIEJPT0wgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2YzNWJkYmUzYTdiNTc4
ZTc4ZGQ1YTk0N2NlNmIwNWVkMDgwNDUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
CkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0
aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSkKK0BpbnRlcmZhY2UgX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gOiBOU09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25n
KSBOU1N0cmluZyAqd2ViU3RvcmFnZURpcmVjdG9yeTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBz
dHJvbmcpIE5TU3RyaW5nICppbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICp3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKKwor
QGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDc2YTQxNDJiYzE4M2QyZTJl
ZDMzYWUwM2I1OGNiZWJiZWE2MmNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQpA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKworQGltcGxlbWVudGF0aW9uIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uCisK
K0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCA4MmM3NzVjZmUyYTI1YzkyMDlmNzkzNjdkMzExODc1MjU2YzE1MTFmLi4yYjY0
ZTYzMGUzOWU3YjUxZWUxZjI4MjAwMTI4NDdkYjNjMzE0MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU2NSwyNSArNTY1LDM2IEBAIFdlYlBy
b2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURh
dGFTdG9yZSogd2Vic2l0ZURhCiAKICAgICBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBh
cmFtZXRlcnM7CiAKKyAgICBpZiAod2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgd2Vic2l0ZURh
dGFTdG9yZS0+cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKKwogICAgIHBhcmFtZXRl
cnMuaW5qZWN0ZWRCdW5kbGVQYXRoID0gbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0
aDsKICAgICBpZiAoIXBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgo
cGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5
LCBwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBw
YXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMuYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeTsKKyAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlID8gd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBtX3Jlc29sdmVkUGF0aHMuYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsKKyAgICBpZiAocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gbV9yZXNvbHZlZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgaWYg
KCFwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJh
bWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRX
cml0ZSwgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKIAogICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0
b3J5TmFtZSgpOwogCi0gICAgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1f
cmVzb2x2ZWRQYXRocy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKKyAgICBwYXJhbWV0ZXJzLndl
YlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZSA/IHdlYnNpdGVEYXRhU3Rv
cmUtPnJlc29sdmVkRGF0YWJhc2VEaXJlY3RvcnkoKSA6IG1fcmVzb2x2ZWRQYXRocy53ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAocGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkgPSBtX3Jlc29sdmVkUGF0aHMud2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFw
YXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVy
cy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBw
YXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAg
IHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUNh
Y2hlRGlyZWN0b3J5OworICAgIHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHdlYnNp
dGVEYXRhU3RvcmUgPyB3ZWJzaXRlRGF0YVN0b3JlLT5yZXNvbHZlZE1lZGlhQ2FjaGVEaXJlY3Rv
cnkoKSA6IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUNhY2hlRGlyZWN0b3J5OworICAgIGlmIChwYXJh
bWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBwYXJhbWV0ZXJz
Lm1lZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9y
eTsKICAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdy
aXRlLCBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0g
ICAgcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMu
bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OworICAgIHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZSA/IHdlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVk
TWVkaWFLZXlzRGlyZWN0b3J5KCkgOiBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdlRGly
ZWN0b3J5OworICAgIGlmIChwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCisgICAgICAgIHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5ID0gbV9y
ZXNvbHZlZFBhdGhzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeTsKICAgICBpZiAoIXBhcmFtZXRl
cnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5tZWRp
YUtleVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1l
dGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKaW5kZXggMTZmNmRkODBlNTg2MDEyODk1ZWJkMGM1NjAwMTNhYWU0N2JhOWU1OS4u
NGJhZDczODM3Yzk4NTZjMmE3NWFiYzRiMjg5Zjg2OWNkZGY2YWI5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcApAQCAtMTA0LDYgKzEwNCwxOCBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFT
dG9yZSgpCiAgICAgfQogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rv
cmllc0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9oYXNSZXNvbHZlZERpcmVjdG9yaWVzKQor
ICAgICAgICByZXR1cm47CisgICAgbV9oYXNSZXNvbHZlZERpcmVjdG9yaWVzID0gdHJ1ZTsKKwor
ICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBy
ZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2Nv
bmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk7CisgICAgbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3Jp
dGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hl
RGlyZWN0b3J5KTsKKyAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOworICAg
IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2
ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1
cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTsKK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpjbG9uZVNlc3Npb25EYXRhKFdlYlBhZ2VQcm94eSYgc291cmNlUGFnZSwgV2ViUGFnZVBy
b3h5JiBuZXdQYWdlKQogewogICAgIGF1dG8mIHNvdXJjZURhdGFTdG9yZSA9IHNvdXJjZVBhZ2Uu
d2Vic2l0ZURhdGFTdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOGE4ZmNhM2NmNzkyMzZjMTRl
MWQzMGMxY2M1MTUxYjQ2YTM2NWE3YS4uOTRlMzQzZTU3YTllYzI3OGFkZTA1MzY3YWI3M2I1Nzc1
MjQyNzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CiAKICAg
ICAgICAgU3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3Rvcnk7CisgICAgICAgIFN0cmluZyBpbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5OwogICAgICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgICAgICBTdHJp
bmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKQEAgLTg5LDYgKzkwLDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZl
Y3RvcjxXZWJzaXRlRGF0YVJlY29yZD4mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRp
b25IYW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZURhdGFGb3JUb3BQcml2YXRlbHlPd25lZERvbWFp
bnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRvcFByaXZhdGVseU93bmVkRG9tYWlucywg
c3RkOjpmdW5jdGlvbjx2b2lkKFZlY3RvcjxTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIpOwog
CisgICAgdm9pZCByZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOworICAgIGNvbnN0IFN0
cmluZyYgcmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQorICAg
IGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsgfQorICAgIGNv
bnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUtleXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X3Jlc29sdmVkQ29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAg
Y29uc3QgU3RyaW5nJiByZXNvbHZlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KKwogICAg
IFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigpIHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFn
ZXIuZ2V0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTEyMSw2ICsxMjgsOCBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFdlYkNvcmU6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAogICAgIGNvbnN0IENvbmZp
Z3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworICAgIENvbmZpZ3VyYXRpb24gbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb247CisgICAgYm9vbCBtX2hhc1Jlc29sdmVkRGlyZWN0b3JpZXMgeyBmYWxzZSB9
OwogCiAgICAgY29uc3QgUmVmUHRyPFN0b3JhZ2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOwog
ICAgIGNvbnN0IFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyNTMyOGE5MTMwZDExMTkyZGUzZmRjOTkwYTc4YzZlMzQz
MGU5MjlkLi5iYzJlMWY0YzBmNzgyY2EyMzE2YzQ5ZjJjOTFhN2I5Y2VkOTVjY2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MzUsNiArOTM1LDggQEAKIAkJNTExRjhBN0IxMzhCNDYwOTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGlt
TGlicmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTExRjhBNzcxMzhCNDYwOTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5oICovOyB9Owog
CQk1MTFGOEE4MTEzOEI0ODVEMDBBOTVGNDQgLyogU2VjSXRlbVNoaW1MaWJyYXJ5Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjhBNzgxMzhCNDYw
OTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5tbSAqLzsgfTsKIAkJNTEyMEM4MzExRTU0
RURERTAwMjVCMjUwIC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcklPUy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjBDODMwMUU1NEUyNjUw
MDI1QjI1MCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXJJT1MubW0gKi87IH07CisJCTUx
MjBDODM1MUU1Qjc0QjkwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMEM4
MzMxRTVCNzE1NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTEyMEM4
MzYxRTVCNzRCRTAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMEM4MzQx
RTVCNzE1NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tICov
OyB9OwogCQk1MTIxMjdDMzE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJyaWRl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIx
MjdDMTE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAgKi87IH07
CiAJCTUxMjEyN0M0MTkwODIzOUEwMERBRjM1QyAvKiBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIxMjdDMjE5
MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5oICovOyB9OwogCQk1MTIx
NzQ2MDE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMTc0NUUxNjRDMjBFMzAwMzdB
NUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCAqLzsgfTsKQEAgLTMxMTEsNiArMzExMyw4IEBA
CiAJCTUxMUY4QTc3MTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbUxpYnJhcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2VjSXRlbVNoaW1MaWJyYXJ5Lmg7IHBhdGgg
PSAuLi8uLi9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbUxpYnJhcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjhBNzgxMzhCNDYwOTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGlt
TGlicmFyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNlY0l0
ZW1TaGltTGlicmFyeS5tbTsgcGF0aCA9IC4uLy4uL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGlt
TGlicmFyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyMEM4MzAxRTU0RTI2
NTAwMjVCMjUwIC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcklPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyMEM4MzMxRTVCNzE1NzAw
MjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMjBDODM0MUU1QjcxNTcwMDI1QjI1MCAv
KiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTIxMjdDMTE5MDgyMzlBMDBEQUYzNUMg
LyogV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEyMTI3QzIxOTA4MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVy
cmlkZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFzdGVib2FyZE92
ZXJyaWRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTIxNzQ1RTE2NEMyMEUz
MDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcmVhYmxlUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTQ1Miw2ICs1NDU2LDggQEAKIAkJCQkxQUUyODY3NjFDN0U3NjUxMDA2OUFD
NEYgLyogX1dLV2Vic2l0ZURhdGFTaXplLmggKi8sCiAJCQkJMUFFMjg2NzUxQzdFNzY1MTAwNjlB
QzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZS5tbSAqLywKIAkJCQkxQUUyODY3RjFDN0Y5MkJGMDA2
OUFDNEYgLyogX1dLV2Vic2l0ZURhdGFTaXplSW50ZXJuYWwuaCAqLywKKwkJCQk1MTIwQzgzMzFF
NUI3MTU3MDAyNUIyNTAgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCAqLywK
KwkJCQk1MTIwQzgzNDFFNUI3MTU3MDAyNUIyNTAgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24ubW0gKi8sCiAJCQkJNUNCMjM3ODkxREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNp
dGVQb2xpY2llcy5oICovLAogCQkJCTVDQjIzNzhBMURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJz
aXRlUG9saWNpZXMubW0gKi8sCiAJCQkJNUNCMjM3OEQxREYwRTBDMjAwMTE3QUEzIC8qIF9XS1dl
YnNpdGVQb2xpY2llc0ludGVybmFsLmggKi8sCkBAIC04NDY2LDYgKzg0NzIsNyBAQAogCQkJCTFB
QjFGNzdFMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxRjc5OTFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRTcz
NjExMUNDMjY1OTAwN0JENTM5IC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTEyMEM4MzUxRTVCNzRCOTAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEyOUExQjFDQkRCRjQxMDA5MDFD
Q0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RB
MjlBMjkxQ0JFQjY3QTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMjAxQ0JFQjVGQjAwOTAxQ0NGIC8qIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzQ4LDYgKzk3
NTUsNyBAQAogCQkJCTFBNkZCN0QyMTFFNjUxRTIwMERCMTM3MSAvKiBQbHVnaW4uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzFBNjdFMEMxNjVCMkE5OTAwNkNCQTY2IC8qIFBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEVGNENDMTI1MjQwMzcwMEY3MDY3
RiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEyMEM4
MzYxRTVCNzRCRTAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDkxQTYxMjgxRDczOTAwMUVCOTYyIC8qIFBsdWdpbkNv
bnRyb2xsZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBOEVGOTZFMTI1MkFGNkIw
MEY3MDY3RiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUExNzk3N0YxMzdFRTgyQzAwRjk3RDQ1IC8qIFBsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303080</attachid>
            <date>2017-03-01 10:41:49 -0800</date>
            <delta_ts>2017-03-01 12:47:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169044-20170301103851.patch</filename>
            <type>text/plain</type>
            <size>15652</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjYyOWMxYjQwNTFiNWMy
MDdkZjg0MmY3YzYzZGIzYjY4OWFjMTYwOC4uY2I3NTZiYTVhNGZkZmI0OWY5NmVmYjExNjMzMmMz
NTc4MGYyZTY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTAzLTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIGNyZWF0
ZSBXZWJzaXRlRGF0YVN0b3JlIG9iamVjdHMgcG9pbnRpbmcgdG8gY3VzdG9tIHBhdGhzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUg
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBXZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMDMtMDEgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBwZWVyIGNvbm5lY3Rpb24gcHJlZmVyZW5jZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
aAppbmRleCAwZGFhZjg1YTM1ZGY4M2RiMWEyZjRkODY3YmQ0NDc1ODBlMjM1NmU4Li45YmJhZjMw
YTQ0ZWJhMjZiZDUzZjFlMWZiZDI1YjU1N2IyMWI4OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzgsNiArMzgsOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0
YVN0b3JlKCk7CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJz
aXN0ZW50RGF0YVN0b3JlKCk7CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVh
dGUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uKTsKKworICAgIFdlYnNp
dGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uKTsKICAg
ICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3JlKCk7CiAKICAgICBib29sIGlzUGVyc2lzdGVudCgp
OwpAQCAtNTgsMTYgKzYwLDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKIAorICAgIHN0YXRpYyBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24o
KTsKKwogcHJpdmF0ZToKLSAgICBXZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6Q29uZmlndXJhdGlvbik7CiAgICAgV2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgc3Rh
dGljIFN0cmluZyB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAgICAgc3RhdGljIFN0cmluZyBjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwogICAg
IHN0YXRpYyBTdHJpbmcgd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKIAotICAgIHN0YXRpYyBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRp
b24oKTsKLQogICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURh
dGFTdG9yZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggMzA3YzdhYzczMDRlZmEwYzQxZWE2
YTYzZWRmMmUwNzRhMTQ1ODRlNS4uYjk0NDQ4YjI0YmJhNjI0MmVmYjQ5OGMzZjRkMTI2MGRjZTJl
ZmVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldLTlNB
cnJheS5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgiCiAjaW1wb3J0
ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCisjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKIEBpbXBsZW1lbnRh
dGlvbiBXS1dlYnNpdGVEYXRhU3RvcmUKQEAgLTE0NSw2ICsxNDYsMjUgQEAgQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlIChXS1ByaXZhdGUpCiAKKy0gKGluc3RhbmNl
dHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiAqKWNvbmZpZ3VyYXRpb24KK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gY29uZmlnID0gQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOworCisgICAgaWYgKGNvbmZp
Z3VyYXRpb24ud2ViU3RvcmFnZURpcmVjdG9yeSkKKyAgICAgICAgY29uZmlnLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24ud2ViU3RvcmFnZURpcmVjdG9yeTsKKyAgICBpZiAo
Y29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkKKyAgICAgICAgY29uZmlnLndl
YlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeTsKKyAgICBpZiAoY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkK
KyAgICAgICAgY29uZmlnLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gY29uZmlndXJhdGlv
bi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKKworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1
Y3RJbldyYXBwZXI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPihzZWxmLCBjb25maWcpOworCisgICAg
cmV0dXJuIHNlbGY7Cit9CisKIC0gKHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1Nl
dDxOU1N0cmluZyAqPiAqKWRhdGFUeXBlcyB3aXRoT3B0aW9uczooX1dLV2Vic2l0ZURhdGFTdG9y
ZUZldGNoT3B0aW9ucylvcHRpb25zIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5
PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBhdXRv
IGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDNjNzIzMTI5NzQyNjA4NDM0N2M2YjQy
ZmQ4MWM4MzczZjgxMDYwYjIuLjQ5ZDliZTZhZDExOWIzYTExMjE1MmI2YmFmZTM4YWRlMjY2MmU2
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEyICsyOSwxNiBAQAogCiBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb247CisKIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0
b3JlRmV0Y2hPcHRpb25zKSB7CiAgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29t
cHV0ZVNpemVzID0gMSA8PCAwLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlv
cygxMC4wKSk7CiAKIEBpbnRlcmZhY2UgV0tXZWJzaXRlRGF0YVN0b3JlIChXS1ByaXZhdGUpCiAK
Ky0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb247CisKIC0gKHZvaWQpX2ZldGNoRGF0YVJl
Y29yZHNPZlR5cGVzOihOU1NldDxOU1N0cmluZyAqPiAqKWRhdGFUeXBlcyB3aXRoT3B0aW9uczoo
X1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucylvcHRpb25zIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKikpY29tcGxldGlvbkhh
bmRsZXI7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzZjM1YmRiZTNhN2I1NzhlNzhk
ZDVhOTQ3Y2U2YjA1ZWQwODA0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAg
LTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24u
aD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFj
b3N4KDEwLjEyKSwgaW9zKDEwLjApKQorQGludGVyZmFjZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5T
U3RyaW5nICp3ZWJTdG9yYWdlRGlyZWN0b3J5OworQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9u
ZykgTlNTdHJpbmcgKmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OworQHByb3BlcnR5IChub25h
dG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKndlYlNRTERhdGFiYXNlRGlyZWN0b3J5OworCitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNzZhNDE0MmJjMTgzZDJlMmVkMzNh
ZTAzYjU4Y2JlYmJlYTYyY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCkBAIC0w
LDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAor
CitAaW1wbGVtZW50YXRpb24gX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24KKworQGVu
ZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGQ0MmQ3OWRmMDNhMjgwOTEyNDY3ZGQ0OTBk
NTA4MjQ1ZjExNzI2MzEuLjk0ZTM0M2U1N2E5ZWMyNzhhZGUwNTM2N2FiNzNiNTc3NTI0MjcxMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmlu
ZyBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwogCiAgICAgICAgIFN0
cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5OworICAgICAgICBTdHJpbmcgaW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7CiAgICAgICAgIFN0cmluZyB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAg
ICAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjUzMjhhOTEzMGQxMTE5MmRlM2ZkYzk5MGE3OGM2
ZTM0MzBlOTI5ZC4uYmMyZTFmNGMwZjc4MmNhMjMxNmM0OWYyYzkxYTdiOWNlZDk1Y2NmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTM1LDYgKzkzNSw4IEBACiAJCTUxMUY4QTdCMTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVt
U2hpbUxpYnJhcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMUY4QTc3MTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbUxpYnJhcnkuaCAqLzsg
fTsKIAkJNTExRjhBODExMzhCNDg1RDAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUY4QTc4MTM4
QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbUxpYnJhcnkubW0gKi87IH07CiAJCTUxMjBDODMx
MUU1NEVEREUwMDI1QjI1MCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXJJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIwQzgzMDFFNTRF
MjY1MDAyNUIyNTAgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VySU9TLm1tICovOyB9Owor
CQk1MTIwQzgzNTFFNUI3NEI5MDAyNUIyNTAgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MjBDODMzMUU1QjcxNTcwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUx
MjBDODM2MUU1Qjc0QkUwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjBD
ODM0MUU1QjcxNTcwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5t
bSAqLzsgfTsKIAkJNTEyMTI3QzMxOTA4MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVy
cmlkZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEyMTI3QzExOTA4MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwICov
OyB9OwogCQk1MTIxMjdDNDE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJyaWRl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMTI3
QzIxOTA4MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMuaCAqLzsgfTsKIAkJ
NTEyMTc0NjAxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjE3NDVFMTY0QzIwRTMw
MDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgKi87IH07CkBAIC0zMTExLDYgKzMxMTMs
OCBAQAogCQk1MTFGOEE3NzEzOEI0NjA5MDBBOTVGNDQgLyogU2VjSXRlbVNoaW1MaWJyYXJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNlY0l0ZW1TaGltTGlicmFyeS5oOyBw
YXRoID0gLi4vLi4vV2ViUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1MaWJyYXJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUY4QTc4MTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVt
U2hpbUxpYnJhcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBT
ZWNJdGVtU2hpbUxpYnJhcnkubW07IHBhdGggPSAuLi8uLi9XZWJQcm9jZXNzL21hYy9TZWNJdGVt
U2hpbUxpYnJhcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjBDODMwMUU1
NEUyNjUwMDI1QjI1MCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXJJT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMjBDODMzMUU1Qjcx
NTcwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTIwQzgzNDFFNUI3MTU3MDAyNUIy
NTAgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyMTI3QzExOTA4MjM5QTAwREFG
MzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMjEyN0MyMTkwODIzOUEwMERBRjM1QyAvKiBXZWJQYXN0ZWJvYXJk
T3ZlcnJpZGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhc3RlYm9h
cmRPdmVycmlkZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyMTc0NUUxNjRD
MjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlYWJsZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU0NTIsNiArNTQ1Niw4IEBACiAJCQkJMUFFMjg2NzYxQzdFNzY1MTAw
NjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZS5oICovLAogCQkJCTFBRTI4Njc1MUM3RTc2NTEw
MDY5QUM0RiAvKiBfV0tXZWJzaXRlRGF0YVNpemUubW0gKi8sCiAJCQkJMUFFMjg2N0YxQzdGOTJC
RjAwNjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZUludGVybmFsLmggKi8sCisJCQkJNTEyMEM4
MzMxRTVCNzE1NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgg
Ki8sCisJCQkJNTEyMEM4MzQxRTVCNzE1NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLm1tICovLAogCQkJCTVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBfV0tX
ZWJzaXRlUG9saWNpZXMuaCAqLywKIAkJCQk1Q0IyMzc4QTFERjBERDQzMDAxMTdBQTMgLyogX1dL
V2Vic2l0ZVBvbGljaWVzLm1tICovLAogCQkJCTVDQjIzNzhEMURGMEUwQzIwMDExN0FBMyAvKiBf
V0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oICovLApAQCAtODQ2Niw2ICs4NDcyLDcgQEAKIAkJ
CQkxQUIxRjc3RTFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMUY3OTkxRDFCMzYxMzAwN0M5QkQxIC8qIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
M0U3MzYxMTFDQzI2NTkwMDdCRDUzOSAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxMjBDODM1MUU1Qjc0QjkwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMUIxQ0JEQkY0MTAw
OTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQTI5QTI5MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTI5QTIwMUNCRUI1RkIwMDkwMUNDRiAvKiBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtOTc0OCw2
ICs5NzU1LDcgQEAKIAkJCQkxQTZGQjdEMjExRTY1MUUyMDBEQjEzNzEgLyogUGx1Z2luLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMxQTY3RTBDMTY1QjJBOTkwMDZDQkE2NiAvKiBQbHVnSW5BdXRv
U3RhcnRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThFRjRDQzEyNTI0MDM3MDBG
NzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUx
MjBDODM2MUU1Qjc0QkUwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ5MUE2MTI4MUQ3MzkwMDFFQjk2MiAvKiBQbHVn
aW5Db250cm9sbGVyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQThFRjk2RTEyNTJB
RjZCMDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBMTc5NzdGMTM3RUU4MkMwMEY5N0Q0NSAvKiBQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303099</attachid>
            <date>2017-03-01 12:48:01 -0800</date>
            <delta_ts>2017-03-01 14:03:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169044-20170301124502.patch</filename>
            <type>text/plain</type>
            <size>28868</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjYyOWMxYjQwNTFiNWMy
MDdkZjg0MmY3YzYzZGIzYjY4OWFjMTYwOC4uY2I3NTZiYTVhNGZkZmI0OWY5NmVmYjExNjMzMmMz
NTc4MGYyZTY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTAzLTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIGNyZWF0
ZSBXZWJzaXRlRGF0YVN0b3JlIG9iamVjdHMgcG9pbnRpbmcgdG8gY3VzdG9tIHBhdGhzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUg
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBXZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMDMtMDEgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBwZWVyIGNvbm5lY3Rpb24gcHJlZmVyZW5jZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
aAppbmRleCAwZGFhZjg1YTM1ZGY4M2RiMWEyZjRkODY3YmQ0NDc1ODBlMjM1NmU4Li4yNjdkNjlj
MzM4NDlhMDhmODIyODg3MWUwMWVkODYxYWQ4M2I4YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzgsNiArMzgsOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0
YVN0b3JlKCk7CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJz
aXN0ZW50RGF0YVN0b3JlKCk7CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVh
dGUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uKTsKKworICAgIGV4cGxp
Y2l0IFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0
aW9uKTsKICAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3JlKCk7CiAKICAgICBib29sIGlzUGVy
c2lzdGVudCgpOwpAQCAtNTgsMTYgKzYwLDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5n
IGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKIAorICAgIHN0YXRpYyBXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gZGVmYXVsdERhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oKTsKKwogcHJpdmF0ZToKLSAgICBXZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbik7CiAgICAgV2Vic2l0ZURhdGFTdG9yZSgpOwog
CiAgICAgc3RhdGljIFN0cmluZyB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAgICAgc3RhdGljIFN0cmluZyBjYWNoZURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5h
bWUpOwogICAgIHN0YXRpYyBTdHJpbmcgd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKIAotICAgIHN0YXRpYyBX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gZGVmYXVsdERhdGFTdG9yZUNv
bmZpZ3VyYXRpb24oKTsKLQogICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1f
d2Vic2l0ZURhdGFTdG9yZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggMzA3YzdhYzczMDRl
ZmEwYzQxZWE2YTYzZWRmMmUwNzRhMTQ1ODRlNS4uYjk0NDQ4YjI0YmJhNjI0MmVmYjQ5OGMzZjRk
MTI2MGRjZTJlZmVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBv
cnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgi
CiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCisjaW1wb3J0ICJfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKIEBp
bXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVEYXRhU3RvcmUKQEAgLTE0NSw2ICsxNDYsMjUgQEAgQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlIChXS1ByaXZhdGUpCiAKKy0g
KGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gY29uZmlnID0gQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOworCisgICAg
aWYgKGNvbmZpZ3VyYXRpb24ud2ViU3RvcmFnZURpcmVjdG9yeSkKKyAgICAgICAgY29uZmlnLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IGNvbmZpZ3VyYXRpb24ud2ViU3RvcmFnZURpcmVjdG9yeTsK
KyAgICBpZiAoY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkKKyAgICAgICAg
Y29uZmlnLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gY29uZmlndXJhdGlvbi53ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeTsKKyAgICBpZiAoY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSkKKyAgICAgICAgY29uZmlnLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gY29u
ZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKKworICAgIEFQSTo6T2JqZWN0
Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPihzZWxmLCBjb25maWcp
OworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKIC0gKHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5
cGVzOihOU1NldDxOU1N0cmluZyAqPiAqKWRhdGFUeXBlcyB3aXRoT3B0aW9uczooX1dLV2Vic2l0
ZURhdGFTdG9yZUZldGNoT3B0aW9ucylvcHRpb25zIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKIHsK
ICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDNjNzIzMTI5NzQyNjA4
NDM0N2M2YjQyZmQ4MWM4MzczZjgxMDYwYjIuLjQ5ZDliZTZhZDExOWIzYTExMjE1MmI2YmFmZTM4
YWRlMjY2MmU2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEyICsyOSwxNiBA
QAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb247CisKIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJz
aXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNo
T3B0aW9uQ29tcHV0ZVNpemVzID0gMSA8PCAwLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgx
MC4xMiksIGlvcygxMC4wKSk7CiAKIEBpbnRlcmZhY2UgV0tXZWJzaXRlRGF0YVN0b3JlIChXS1By
aXZhdGUpCiAKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb247CisKIC0gKHZvaWQpX2Zl
dGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldDxOU1N0cmluZyAqPiAqKWRhdGFUeXBlcyB3aXRo
T3B0aW9uczooX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucylvcHRpb25zIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKikpY29t
cGxldGlvbkhhbmRsZXI7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1NTNhNzViNzhk
NGYyZDcwNjg2ZjlkZTE1YTIyOWRhYjA1NjgzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0Zv
dW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJ
TEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKQorQGludGVyZmFjZSBfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSBOU1N0cmluZyAqd2ViU3RvcmFnZURpcmVjdG9yeTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSBOU1N0cmluZyAqaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKndlYlNRTERhdGFiYXNlRGlyZWN0b3J5OworCitA
ZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNzZhNDE0MmJjMTgzZDJlMmVk
MzNhZTAzYjU4Y2JlYmJlYTYyY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCkBA
IC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
Il9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxF
RAorCitAaW1wbGVtZW50YXRpb24gX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24KKwor
QGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGQ0MmQ3OWRmMDNhMjgwOTEyNDY3ZGQ0
OTBkNTA4MjQ1ZjExNzI2MzEuLjk0ZTM0M2U1N2E5ZWMyNzhhZGUwNTM2N2FiNzNiNTc3NTI0Mjcx
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0
cmluZyBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwogCiAgICAgICAg
IFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5OworICAgICAgICBTdHJpbmcgaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3Rvcnk7CiAgICAgICAgIFN0cmluZyB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsK
ICAgICAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjUzMjhhOTEzMGQxMTE5MmRlM2ZkYzk5MGE3
OGM2ZTM0MzBlOTI5ZC4uYmMyZTFmNGMwZjc4MmNhMjMxNmM0OWYyYzkxYTdiOWNlZDk1Y2NmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtOTM1LDYgKzkzNSw4IEBACiAJCTUxMUY4QTdCMTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJ
dGVtU2hpbUxpYnJhcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMUY4QTc3MTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbUxpYnJhcnkuaCAq
LzsgfTsKIAkJNTExRjhBODExMzhCNDg1RDAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUY4QTc4
MTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbUxpYnJhcnkubW0gKi87IH07CiAJCTUxMjBD
ODMxMUU1NEVEREUwMDI1QjI1MCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXJJT1MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIwQzgzMDFF
NTRFMjY1MDAyNUIyNTAgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VySU9TLm1tICovOyB9
OworCQk1MTIwQzgzNTFFNUI3NEI5MDAyNUIyNTAgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMjBDODMzMUU1QjcxNTcwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTUxMjBDODM2MUU1Qjc0QkUwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MjBDODM0MUU1QjcxNTcwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5tbSAqLzsgfTsKIAkJNTEyMTI3QzMxOTA4MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRP
dmVycmlkZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEyMTI3QzExOTA4MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3Bw
ICovOyB9OwogCQk1MTIxMjdDNDE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJy
aWRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEy
MTI3QzIxOTA4MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMuaCAqLzsgfTsK
IAkJNTEyMTc0NjAxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjE3NDVFMTY0QzIw
RTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgKi87IH07CkBAIC0zMTExLDYgKzMx
MTMsOCBAQAogCQk1MTFGOEE3NzEzOEI0NjA5MDBBOTVGNDQgLyogU2VjSXRlbVNoaW1MaWJyYXJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNlY0l0ZW1TaGltTGlicmFyeS5o
OyBwYXRoID0gLi4vLi4vV2ViUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1MaWJyYXJ5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUY4QTc4MTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJ
dGVtU2hpbUxpYnJhcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBTZWNJdGVtU2hpbUxpYnJhcnkubW07IHBhdGggPSAuLi8uLi9XZWJQcm9jZXNzL21hYy9TZWNJ
dGVtU2hpbUxpYnJhcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjBDODMw
MUU1NEUyNjUwMDI1QjI1MCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXJJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMjBDODMzMUU1
QjcxNTcwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTIwQzgzNDFFNUI3MTU3MDAy
NUIyNTAgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyMTI3QzExOTA4MjM5QTAw
REFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMjEyN0MyMTkwODIzOUEwMERBRjM1QyAvKiBXZWJQYXN0ZWJv
YXJkT3ZlcnJpZGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhc3Rl
Ym9hcmRPdmVycmlkZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyMTc0NUUx
NjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlYWJsZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTU0NTIsNiArNTQ1Niw4IEBACiAJCQkJMUFFMjg2NzYxQzdFNzY1
MTAwNjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZS5oICovLAogCQkJCTFBRTI4Njc1MUM3RTc2
NTEwMDY5QUM0RiAvKiBfV0tXZWJzaXRlRGF0YVNpemUubW0gKi8sCiAJCQkJMUFFMjg2N0YxQzdG
OTJCRjAwNjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZUludGVybmFsLmggKi8sCisJCQkJNTEy
MEM4MzMxRTVCNzE1NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmggKi8sCisJCQkJNTEyMEM4MzQxRTVCNzE1NzAwMjVCMjUwIC8qIF9XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBf
V0tXZWJzaXRlUG9saWNpZXMuaCAqLywKIAkJCQk1Q0IyMzc4QTFERjBERDQzMDAxMTdBQTMgLyog
X1dLV2Vic2l0ZVBvbGljaWVzLm1tICovLAogCQkJCTVDQjIzNzhEMURGMEUwQzIwMDExN0FBMyAv
KiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oICovLApAQCAtODQ2Niw2ICs4NDcyLDcgQEAK
IAkJCQkxQUIxRjc3RTFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMUY3OTkxRDFCMzYxMzAwN0M5QkQxIC8q
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBM0U3MzYxMTFDQzI2NTkwMDdCRDUzOSAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxMjBDODM1MUU1Qjc0QjkwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMUIxQ0JEQkY0
MTAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEQTI5QTI5MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTI5QTIwMUNCRUI1RkIwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtOTc0
OCw2ICs5NzU1LDcgQEAKIAkJCQkxQTZGQjdEMjExRTY1MUUyMDBEQjEzNzEgLyogUGx1Z2luLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTY3RTBDMTY1QjJBOTkwMDZDQkE2NiAvKiBQbHVnSW5B
dXRvU3RhcnRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThFRjRDQzEyNTI0MDM3
MDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxMjBDODM2MUU1Qjc0QkUwMDI1QjI1MCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ5MUE2MTI4MUQ3MzkwMDFFQjk2MiAvKiBQ
bHVnaW5Db250cm9sbGVyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQThFRjk2RTEy
NTJBRjZCMDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMTc5NzdGMTM3RUU4MkMwMEY5N0Q0NSAvKiBQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTVhYjZhZWZjMGE2YzMzOTJmYjZjOGZj
ZmM4NGMwOTE4NDY3NDA5Yi4uYzYwYTc0NDlkYzlkMzkzZjAwZDQxZWJlYzMyNTA0ODFlMjc0YmU0
YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDE3LTAzLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgU1BJIHRvIGNyZWF0ZSBXZWJzaXRlRGF0YVN0b3JlIG9iamVjdHMg
cG9pbnRpbmcgdG8gY3VzdG9tIHBhdGhzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRocy5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRoc01lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2Ny
aXB0TWVzc2FnZTpdKToKKyAgICAgICAgKGdldE5leHRNZXNzYWdlKToKKyAgICAgICAgKFRFU1Qp
OgorCiAyMDE3LTAzLTAxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIEluZGV4ZWREQi5JbmRleGVkREJNdWx0aVByb2Nlc3MgaXMgYSBmbGFreSB0aW1lb3V0
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE0OTQ0NzlhOGM0YjdlNTQ5MTcwMzI5YmNmNjIy
NDg0OGM0MWRkODYuLjg3N2I5ZTg1YWQ0MzJjOTQwODcyYmRjODgzOTUwZTcxYjUwZWQxYTkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjksNiArMTI5LDggQEAKIAkJNTExMEZDRjYxRTAx
Q0Q4MzAwNkY4RDBCIC8qIEluZGV4VXBncmFkZS5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBGQ0YzMUUwMUNENzcwMDZGOEQw
QiAvKiBJbmRleFVwZ3JhZGUuc3FsaXRlMyAqLzsgfTsKIAkJNTExMEZDRjkxRTAxQ0Q4QTAwNkY4
RDBCIC8qIEluZGV4VXBncmFkZS5ibG9iIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBGQ0YyMUUwMUNENzcwMDZGOEQwQiAvKiBJbmRleFVw
Z3JhZGUuYmxvYiAqLzsgfTsKIAkJNTExMEZDRkExRTAxQ0RCODAwNkY4RDBCIC8qIElEQkluZGV4
VXBncmFkZVRvVjIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTEwRkNFRjFFMDFDQkFBMDA2RjhEMEIgLyogSURCSW5kZXhVcGdyYWRlVG9WMi5tbSAq
LzsgfTsKKwkJNTEyMEM4M0QxRTY3NTEyOTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMjBDODNDMUU2NzUwNzkwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0gKi87IH07CisJCTUxMjBDODNFMUU2NzY3OEYwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3Jl
Q3VzdG9tUGF0aHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTIwQzgzQjFFNjc0RTM1MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzLmh0bWwgKi87IH07CiAJCTUxMzkzRTIyMTUyMzk1MkQwMDVGMzlDNSAvKiBE
T01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzOTNFMUQxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdp
bmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgKi87IH07CiAJCTUxNDJCMjczMTUxN0M4Qzgw
MEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQyQjI3MjE1MTdDODkxMDBDMzJC
MTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLmh0bWwgKi87IH07CiAJCTUxNUJFMTZGMUQ0MjhC
QjEwMEREN0M2OCAvKiBTdG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMTZFMUQ0Mjg4RkYwMERE
N0M2OCAvKiBTdG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sICovOyB9OwpAQCAtNjQwLDYgKzY0Miw3
IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xk
ZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTUxMjBDODNFMUU2NzY3OEYwMDI1QjI1MCAv
KiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQlGNDg1NkNBMzFFNjQ5RUE4MDA5RDdFRTcgLyogYXR0YWNobWVudC1lbGVtZW50Lmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJODM2MUYxNzgxRTYxMEI0RTAwNzU5QjI1IC8qIGxp
bmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJRjRGQTkxODMxRTYxODU3QjAwN0I4QzFEIC8qIGRvdWJsZS1jbGljay1k
b2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
QEAgLTEwMDYsNiArMTAwOSw4IEBACiAJCTUxMTBGQ0YwMUUwMUNENTMwMDZGOEQwQiAvKiBJREJJ
bmRleFVwZ3JhZGVUb1YyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJREJJbmRl
eFVwZ3JhZGVUb1YyLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTBGQ0Yy
MUUwMUNENzcwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuYmxvYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBJbmRleFVwZ3JhZGUuYmxvYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEx
MEZDRjMxRTAxQ0Q3NzAwNkY4RDBCIC8qIEluZGV4VXBncmFkZS5zcWxpdGUzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9IEluZGV4
VXBncmFkZS5zcWxpdGUzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTIwQzgzQjFF
Njc0RTM1MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMuaHRtbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyMEM4M0MxRTY3NTA3OTAwMjVCMjUwIC8q
IFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzOTNFMUQxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRv
d0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTM5M0UxRTE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0
ZW5zaW9uQmFzaWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9N
V2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTQyQjI3MDE1MTdDODhCMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVDYW5Db3B5VVJM
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyNyw2ICsxNjMyLDcgQEAKIAkJ
CQk3Q0NCOTkyMDFEM0I0MUY2MDAzOTIyRjYgLyogVXNlckluaXRpYXRlZEFjdGlvbkluTmF2aWdh
dGlvbkFjdGlvbi5tbSAqLywKIAkJCQk5M0U5NDNGMTFDRDNFODdFMDBBQzA4QzIgLyogVmlkZW9D
b250cm9sc01hbmFnZXIubW0gKi8sCiAJCQkJNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0IC8qIFdl
YlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbSAqLywKKwkJCQk1MTIwQzgzQzFFNjc1MDc5MDAyNUIy
NTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tICovLAogCQkJCTVDOUU1Njg0MURG
OTE0M0QwMEM5RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMubW0gKi8sCiAJCQkJMUY4MzU3MUExRDNG
RkIwRTAwRTM5NjdCIC8qIFdLQmFja0ZvcndhcmRMaXN0Lm1tICovLAogCQkJCTM3NUUwRTE1MUQ2
NjY3NDQwMEVGRUMyQyAvKiBXS05TTnVtYmVyLm1tICovLApAQCAtMTgwNyw2ICsxODEzLDcgQEAK
IAkJCQk1MTVCRTE2RTFENDI4OEZGMDBERDdDNjggLyogU3RvcmVCbG9iVG9CZURlbGV0ZWQuaHRt
bCAqLywKIAkJCQk1MTcxNEVCMjFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJD
bGVhbnVwLTEuaHRtbCAqLywKIAkJCQk1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJv
Y2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCAqLywKKwkJCQk1MTIwQzgzQjFFNjc0RTM1MDAyNUIy
NTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLmh0bWwgKi8sCiAJCQkJQzI1Q0NBMEEx
RTUxM0Y0OTAwMjZDQjhBIC8qIExpbmVCcmVha2luZy5odG1sICovLAogCQkJCUMyNUNDQTBDMUU1
MTQwRTUwMDI2Q0I4QSAvKiBBbGxBaGVtLnN2ZyAqLywKIAkJCQlGNDg1NkNBMjFFNjQ5OEE4MDA5
RDdFRTcgLyogYXR0YWNobWVudC1lbGVtZW50Lmh0bWwgKi8sCkBAIC0yODQ4LDYgKzI4NTUsNyBA
QAogCQkJCUNEQ0ZBN0FBMUU0NTE4MzIwMEMyNDMzRCAvKiBTYW1wbGVNYXAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdGMUExQTQxMUFFNjAwNDQ3QzRDIC8qIFdlYkNvcmVTdGF0aXN0aWNz
V2l0aE5vV2ViUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBQjFBNDExQTI0
MDA0NDdDNEMgLyogV2ViS2l0QWdub3N0aWNUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTEy
MEM4M0QxRTY3NTEyOTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUxNzE0RUI4MUNGOENBMTcwMDQ3MjNDNCAvKiBXZWJQcm9jZXNz
S2lsbElEQkNsZWFudXAubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzY3NzAzNDFDQzgwMjI4MDBE
NDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQ0FEMUY4NjFFNUNFN0RBMDBBRjJDMkMgLyogRm9udENhY2hlLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lNjc1NjA2NzNhMmQ1NmY3Njk3OWI4YTJlODIwNjEzYjkwMmIxMWE4Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPHNjcmlwdD4KKworLy8gVGhp
cyB0ZXN0IG9wZW5zIGFuIEluZGV4ZWREQiwgYSBXZWJTUUwgZGIsIGFuZCBtYWtlcyBhIGxvY2Fs
U3RvcmFnZSB3cml0ZS4KKworZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShtc2cpOworICAgIC8vYWxl
cnQobXNnKTsKK30KKworbG9jYWxTdG9yYWdlLmZvbyA9ICJiYXIiOworbG9nKCdsb2NhbHN0b3Jh
Z2Ugd3JpdHRlbicpOworCit2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzIik7CisKK3JlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZXZlbnQpCit7CisgICAgbG9nKCdTdWNjZXNzIG9wZW5pbmcgaW5kZXhlZCBkYXRhYmFzZScp
OworfQorCityZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpCit7CisgICAgbG9nKCdVbmV4cGVj
dGVkIGVycm9yIG9wZW5pbmcgaW5kZXhlZCBkYXRhYmFzZScpOworfQorCit0cnkgeworb3BlbkRh
dGFiYXNlKCdXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHNTUUwnLCAnMS4wJywgJ1Rlc3QgREIn
LCA1MjQyODgsIGZ1bmN0aW9uKCkgeworICAgIGxvZygnV2ViU1FMIGRhdGFiYXNlIGNyZWF0ZWQn
KTsKK30pOworfSBjYXRjaChlKSB7CisgICAgLy8gQW4gZXhjZXB0aW9uIGlzIGZpbmUsIGJlY2F1
c2UgdGhlIGRhdGFiYXNlIHRyYWNrZXIgd2lsbCBzdGlsbCBiZSBpbnN0YWxsZWQgYXQgdGhlIGV4
cGVjdGVkIHBhdGgKKyAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOworfQorCis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWE3
YWM5NzJjZTUzNTdiN2ZjNjc3YjA4NWJmOTYyNTJiYzE3ZjJhCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1
c3RvbVBhdGhzLm1tCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0Lmgi
CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisKKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgor
I2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CisjaW1w
b3J0IDx3dGYvRGVxdWUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKK3N0YXRpYyBib29sIHJlY2VpdmVkU2NyaXB0TWVzc2FnZTsKK3N0YXRpYyBE
ZXF1ZTxSZXRhaW5QdHI8V0tTY3JpcHRNZXNzYWdlPj4gc2NyaXB0TWVzc2FnZXM7CisKK0BpbnRl
cmZhY2UgV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzTWVzc2FnZUhhbmRsZXIgOiBOU09iamVj
dCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyCisKKy0gKHZvaWQpdXNlckNvbnRl
bnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJv
bGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQor
eworICAgIHByaW50ZigiTWVzc2FnZSFcbiIpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IHRydWU7CisgICAgc2NyaXB0TWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpOworfQorCitAZW5kCisK
K3N0YXRpYyBXS1NjcmlwdE1lc3NhZ2UgKmdldE5leHRNZXNzYWdlKCkKK3sKKyAgICBpZiAoc2Ny
aXB0TWVzc2FnZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IGZhbHNlOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0
TWVzc2FnZSk7CisgICAgfQorCisgICAgcmV0dXJuIFtbc2NyaXB0TWVzc2FnZXMudGFrZUZpcnN0
KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07Cit9CisKK1RFU1QoV2ViS2l0MiwgV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzKQoreworICAgIFJldGFpblB0cjxXZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHNNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tXZWJzaXRlRGF0YVN0b3Jl
Q3VzdG9tUGF0aHNNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxX
S1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5h
bWU6QCJ0ZXN0SGFuZGxlciJdOworCisgICAgTlNTdHJpbmcgKnNxbFBhdGggPSBbQCJ+L0xpYnJh
cnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvV2ViU1FMLyIgc3RyaW5n
QnlFeHBhbmRpbmdUaWxkZUluUGF0aF07CisgICAgTlNTdHJpbmcgKmlkYlBhdGggPSBbQCJ+L0xp
YnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvSW5kZXhlZERCLyIg
c3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07CisgICAgTlNTdHJpbmcgKmxvY2FsU3RvcmFn
ZVBhdGggPSBbQCJ+L0xpYnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURh
dGEvTG9jYWxTdG9yYWdlLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07CisKKyAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpbTlNVUkwgZmls
ZVVSTFdpdGhQYXRoOnNxbFBhdGhdIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDppZGJQ
YXRoXSBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVt
b3ZlSXRlbUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6bG9jYWxTdG9yYWdlUGF0aF0gZXJy
b3I6bmlsXTsKKworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3FsUGF0aF0pOworICAgIEVYUEVDVF9GQUxTRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6bG9jYWxTdG9yYWdlUGF0
aF0pOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6aWRiUGF0aF0pOworCisgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gKndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gW1tfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CisgICAgd2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBzcWxQYXRoOworICAgIHdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaWRi
UGF0aDsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi53ZWJTdG9yYWdlRGlyZWN0
b3J5ID0gbG9jYWxTdG9yYWdlUGF0aDsKKyAgICAKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndl
YnNpdGVEYXRhU3RvcmUgPSBbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbl07CisgICAgW3dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIHJlbGVhc2VdOworCisgICAgUmV0YWluUHRyPFdLV2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJXZWJzaXRlRGF0
YVN0b3JlQ3VzdG9tUGF0aHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1
ZXN0XTsKKworICAgIC8vIFdlIGV4cGVjdCAzIG1lc3NhZ2VzLCAxIGVhY2ggZm9yIFdlYlNRTCwg
SW5kZXhlZERCLCBhbmQgbG9jYWxTdG9yYWdlLgorICAgIGdldE5leHRNZXNzYWdlKCk7CisgICAg
Z2V0TmV4dE1lc3NhZ2UoKTsKKyAgICBnZXROZXh0TWVzc2FnZSgpOworCisgICAgRVhQRUNUX1RS
VUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnNxbFBh
dGhdKTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6bG9jYWxTdG9yYWdlUGF0aF0pOworCisgICAgLy8gRklYTUU6IDxyZGFy
Oi8vcHJvYmxlbS8zMDc4NTYxOD4gLSBXZSBkb24ndCB5ZXQgc3VwcG9ydCBJREIgZGF0YWJhc2Ug
cHJvY2Vzc2VzIGF0IGN1c3RvbSBwYXRocyBwZXIgV2Vic2l0ZURhdGFTdG9yZQorICAgIC8vIEVY
UEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDppZGJQYXRoXSk7Cit9CisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>