<?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>164894</bug_id>
          
          <creation_ts>2016-11-17 15:34:55 -0800</creation_ts>
          <short_desc>Add _WKIconLoadingDelegate SPI</short_desc>
          <delta_ts>2016-12-09 17:26: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>WebKit2</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>InRadar</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>achristensen</cc>
    
    <cc>barraclough</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>ossy</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252484</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-17 15:34:55 -0800</bug_when>
    <thetext>Add _WKIconLoadingDelegate SPI

When installed, this will switch WebKit over to a mode that doesn&apos;t use the WebKit Icon Database at all.

Instead, WebKit will ask the embedder whether or not to load each icon it finds in the &lt;head&gt; for a page.
Once an icon is loaded, WebKit will give the data to the embedder instead of storing it in its own database.

This is step 1 towards getting rid of the WebKit IconDatabase altogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252485</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-17 15:35:09 -0800</bug_when>
    <thetext>&lt;rdar://problem/28662226&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252489</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-17 15:37:50 -0800</bug_when>
    <thetext>Manual testing is supported with the changes to MiniBrowser.

Automated testing will be covered in https://bugs.webkit.org/show_bug.cgi?id=164895</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252494</commentid>
    <comment_count>3</comment_count>
      <attachid>295096</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-17 15:46:02 -0800</bug_when>
    <thetext>Created attachment 295096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252499</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-17 15:48:20 -0800</bug_when>
    <thetext>Attachment 295096 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.mm:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.mm:89:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.mm:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:661:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6658:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 8 in 34 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>1252516</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-17 16:23:10 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/208865</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252608</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-17 22:33:15 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/208879</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258098</commentid>
    <comment_count>7</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-12-09 00:10:26 -0800</bug_when>
    <thetext>Rolled out in r209599 due to performance regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258104</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-12-09 01:28:30 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Rolled out in r209599 due to performance regression.

It broke the Apple Mac build everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258107</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-12-09 01:57:15 -0800</bug_when>
    <thetext>It seems you missed to revert Tools/MiniBrowser changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258156</commentid>
    <comment_count>10</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-12-09 09:51:34 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Rolled out in r209599 due to performance regression.
&gt; 
&gt; It broke the Apple Mac build everywhere.

I cleaned this up in http://trac.webkit.org/projects/webkit/changeset/209609</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258393</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-12-09 15:19:33 -0800</bug_when>
    <thetext>Found the one line culprit.

Uploading fixed patch for EWS/CQ</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258396</commentid>
    <comment_count>12</comment_count>
      <attachid>296719</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-12-09 15:20:00 -0800</bug_when>
    <thetext>Created attachment 296719
Fixed for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258428</commentid>
    <comment_count>13</comment_count>
      <attachid>296728</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-12-09 15:55:38 -0800</bug_when>
    <thetext>Created attachment 296728
Fixed for EWS/CQ</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258429</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 15:57:27 -0800</bug_when>
    <thetext>Attachment 296728 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.mm:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.mm:89:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.mm:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:662:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6696:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 8 in 32 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>1258485</commentid>
    <comment_count>15</comment_count>
      <attachid>296728</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 17:26:23 -0800</bug_when>
    <thetext>Comment on attachment 296728
Fixed for EWS/CQ

Clearing flags on attachment: 296728

Committed r209640: &lt;http://trac.webkit.org/changeset/209640&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258486</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 17:26:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295096</attachid>
            <date>2016-11-17 15:46:02 -0800</date>
            <delta_ts>2016-12-09 15:20:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164894-20161117154557.patch</filename>
            <type>text/plain</type>
            <size>75097</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4ODQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZmMWNjZjZiMjljNTkw
YjZmNTZlZDhkZDBiYTFkMzQ5OTc5NWU3Yy4uYWU3NjE4OGNkZDJjY2FhN2YzNjEyYWYzOTQ4MjI3
NjdjYjU4Y2Y0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTExLTE3ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgX1dLSWNvbkxvYWRp
bmdEZWxlZ2F0ZSBTUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjQ4OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgKE1hbnVhbCB0ZXN0aW5nIHBvc3NpYmxlIGluIE1pbmlCcm93
c2VyIG5vdywgV0tUUiB0ZXN0cyBjb21pbmcgc29vbiBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODk1KS4KKworICAgICAgICBXaXRoIHRoaXMgY2xpZW50LCBX
ZWJDb3JlIHdpbGwgYXNrIHRoZSBGcmFtZUxvYWRlckNsaWVudCBhYm91dCBlYWNoIGljb24gZm91
bmQgaW4gdGhlIDxoZWFkPi4KKworICAgICAgICBXZWJLaXQyIHdpbGwgdGhlbiBhc2sgdGhlIGVt
YmVkZGluZyBhcHAgLSBmb3IgZWFjaCBpY29uIC0gaWYgaXQgd2FudHMgdGhhdCBpY29uIHRvIGxv
YWQuCisKKyAgICAgICAgRm9yIGljb25zIHRoZSBhcHAgZGVjaWRlcyB0byBsb2FkLCBXZWJLaXQg
d2lsbCBwYXNzIHRoZSBkYXRhIHRvIHRoZSBhcHAgd2l0aG91dCBzdG9yaW5nIGxvY2FsbHkuCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0
Q2xvc2UpOgorCisgICAgICAgICogaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppY29uU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlSWNvbnMpOgor
ICAgICAgICAqIGh0bWwvTGlua0ljb25Db2xsZWN0b3IuaDoKKworICAgICAgICAqIGxvYWRlci9E
b2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3Rh
cnRJY29uTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6
CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKworICAgICAgICAqIGxv
YWRlci9pY29uL0ljb25Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6
SWNvbkxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpJY29uTG9hZGVyOjpzdGFydExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL0xpbmtJ
Y29uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3Iu
aC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmtJY29uOjplbmNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGlua0ljb246OmRlY29kZSk6CisKIDIwMTYtMTEtMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYXR0ZW1wdCB0byBmaXgg
bGluayBlcnJvciBhZnRlciByMjA4ODQxIHBhcnQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDIxNDdlMTg5ZTk2
ZjgzYjUyNTg5NGRlZGJhMTNlZTI1MDg4NzkwZi4uN2MxOTQyOTE2ZjJmYjk0ZjEyNzQxNTEyMDli
NjYxMTI2ZDkxNzVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE2LTExLTE3ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgX1dLSWNvbkxv
YWRpbmdEZWxlZ2F0ZSBTUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ4OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXaXRoIHRoaXMgY2xpZW50LCBXZWJDb3JlIHdpbGwgYXNrIHRoZSBGcmFtZUxv
YWRlckNsaWVudCBhYm91dCBlYWNoIGljb24gZm91bmQgaW4gdGhlIDxoZWFkPi4KKworICAgICAg
ICBXZWJLaXQyIHdpbGwgdGhlbiBhc2sgdGhlIGVtYmVkZGluZyBhcHAgLSBmb3IgZWFjaCBpY29u
IC0gaWYgaXQgd2FudHMgdGhhdCBpY29uIHRvIGxvYWQuCisKKyAgICAgICAgRm9yIGljb25zIHRo
ZSBhcHAgZGVjaWRlcyB0byBsb2FkLCBXZWJLaXQgd2lsbCBwYXNzIHRoZSBkYXRhIHRvIHRoZSBh
cHAgd2l0aG91dCBzdG9yaW5nIGxvY2FsbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUljb25Mb2FkaW5nQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTGlu
a0ljb25Db2xsZWN0b3IuaC4KKyAgICAgICAgKEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ6On5JY29u
TG9hZGluZ0NsaWVudCk6CisgICAgICAgIChBUEk6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pY29uTG9hZGluZ0RlbGVnYXRlXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfc2V0SWNvbkxvYWRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmguCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFyYW1ldGVycy5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuaC4KKyAgICAgICAgKC1bX1dLTGlua0ljb25QYXJh
bWV0ZXJzIF9pbml0V2l0aExpbmtJY29uOl0pOgorICAgICAgICAoLVtfV0tMaW5rSWNvblBhcmFt
ZXRlcnMgdXJsXSk6CisgICAgICAgICgtW19XS0xpbmtJY29uUGFyYW1ldGVycyBtaW1lVHlwZV0p
OgorICAgICAgICAoLVtfV0tMaW5rSWNvblBhcmFtZXRlcnMgc2l6ZV0pOgorICAgICAgICAoLVtf
V0tMaW5rSWNvblBhcmFtZXRlcnMgaWNvblR5cGVdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvTGlua0ljb25Db2xsZWN0b3IuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5n
RGVsZWdhdGU6Okljb25Mb2FkaW5nRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpJY29uTG9h
ZGluZ0RlbGVnYXRlOjp+SWNvbkxvYWRpbmdEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Oklj
b25Mb2FkaW5nRGVsZWdhdGU6OmNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZTo6ZGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpJ
Y29uTG9hZGluZ0RlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Okljb25M
b2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50OjpJY29uTG9hZGluZ0NsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojp+
SWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRl
OjpJY29uTG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omljb25Mb2FkaW5nQ2xpZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VJY29uTG9hZGluZ0NsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
Z0ljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFVz
ZUljb25Mb2FkaW5nQ2xpZW50KToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFVzZUljb25Mb2FkaW5nQ2xpZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE2LTExLTE3ICBTYWFt
IEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhc3luYy9hd2Fp
dCBjb21waWxlIHRpbWUgZmxhZyBhbmQgZW5hYmxlIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGM4MTExMjBjMzg1ZmY1
YWJiYTIxZmNmNTg5OWUzZGRlM2FlZWMyYS4uMDNkZjQ3NWIyM2Y0YjkzYjliNzNmOWU5ZmY2MmU0
NmMyZTUwNjllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjA2Nyw2ICsyMDY3LDcgQEAKIAkJNTE0MTI5OTgxQzY5NzY5MDAw
NTlFNzE0IC8qIElEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MTI5OTYxQzY5NzYxNTAwNTlFNzE0IC8q
IElEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQuY3BwICovOyB9OwogCQk1MTQxMjk5OTFDNjk3Njkw
MDA1OUU3MTQgLyogSURCUmVxdWVzdENvbXBsZXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MTI5OTcxQzY5NzYxNTAwNTlFNzE0IC8q
IElEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQuaCAqLzsgfTsKIAkJNTE0MTI5OUIxQzZDMTY3NDAw
NTlFNzE0IC8qIEpTSURCSW5kZXhDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MTI5OUExQzZDMTY2RDAwNTlFNzE0IC8qIEpTSURCSW5k
ZXhDdXN0b20uY3BwICovOyB9OworCQk1MTQzQjI2MzFEREQxNTIwMDAxNEZBQzYgLyogTGlua0lj
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDNC
MjYyMURERDE0OTAwMDE0RkFDNiAvKiBMaW5rSWNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNDVCMTA5MUJDNDhFMkUwMEU4NjIxOSAvKiBJ
REJSZXNvdXJjZUlkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE0NUIxMDcxQkM0ODkwQjAwRTg2MjE5IC8qIElEQlJlc291cmNlSWRl
bnRpZmllci5jcHAgKi87IH07CiAJCTUxNDVCMTBBMUJDNDhFMkUwMEU4NjIxOSAvKiBJREJSZXNv
dXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNDVCMTA4MUJDNDg5MEIwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTQ4
NDUzRTFCQjlEMDdFMDA2QTcyRUQgLyogSURCRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0ODQ1M0MxQkI5RDA3NjAwNkE3MkVEIC8qIElE
QkVycm9yLmNwcCAqLzsgfTsKQEAgLTkyNzAsNiArOTI3MSw3IEBACiAJCTUxNDEyOTk2MUM2OTc2
MTUwMDU5RTcxNCAvKiBJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQxMjk5NzFDNjk3NjE1MDA1OUU3MTQgLyog
SURCUmVxdWVzdENvbXBsZXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNDEyOTlBMUM2QzE2NkQwMDU5RTcxNCAvKiBKU0lEQkluZGV4Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSURCSW5kZXhDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTQzQjI2MjFEREQxNDkwMDAxNEZBQzYg
LyogTGlua0ljb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua0ljb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0NUIxMDcxQkM0ODkwQjAwRTg2MjE5
IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJREJSZXNvdXJjZUlkZW50aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTQ1QjEwODFCQzQ4OTBCMDBFODYyMTkgLyogSURCUmVzb3VyY2VJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlJlc291cmNlSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ4NDUzQzFCQjlEMDc2MDA2
QTcyRUQgLyogSURCRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSURCRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI0MzAsNiAr
MjI0MzIsNyBAQAogCQkJCUJDRkY2NDkwMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhTaXplLmgg
Ki8sCiAJCQkJQTdBRDJGODUwRUM4OUQwNzAwOEFCMDAyIC8qIExpbmtIYXNoLmNwcCAqLywKIAkJ
CQlBN0FEMkY4NjBFQzg5RDA3MDA4QUIwMDIgLyogTGlua0hhc2guaCAqLywKKwkJCQk1MTQzQjI2
MjFEREQxNDkwMDAxNEZBQzYgLyogTGlua0ljb24uaCAqLywKIAkJCQlDMDQ2RTFBQjEyMDhBOUZF
MDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5ncy5jcHAgKi8sCiAJCQkJOTM1MjA3QkQwOUJENDEw
QTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLywKIAkJCQlBODIzOURGRTA5QjNDRjhB
MDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgKi8sCkBAIC0yNzYzNCw2ICsyNzYzNyw3IEBACiAJCQkJ
QjIyMjc5RjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyNzlGNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDIyNDE5NDEwN0U3OEE3MDA3NjZBODcgLyogU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE0M0IyNjMxREREMTUy
MDAwMTRGQUM2IC8qIExpbmtJY29uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlGQTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVPZmZzZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyNzlGRDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjdBMDAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggYmYyYWFhYjBmZjI4Yzg3ZDM4MzM0Y2U0NTIzNGFmZDA2MmJkYmUyNi4uNmFiNDNmMDY0ZjE1
MGY5YWFhOTA1M2Y3OTgwYTZkYmFiZGVjMGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0yNjU0LDcgKzI2NTQsMTIgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAg
Ly8gcmFtaWZpY2F0aW9ucywgYW5kIHdlIG5lZWQgdG8gZGVjaWRlIHdoYXQgaXMgdGhlIFJpZ2h0
IFRoaW5nIFRvIERvKHRtKQogICAgIEZyYW1lKiBmID0gZnJhbWUoKTsKICAgICBpZiAoZikgewot
ICAgICAgICBmLT5sb2FkZXIoKS5pY29uKCkuc3RhcnRMb2FkZXIoKTsKKyAgICAgICAgaWYgKGYt
PmxvYWRlcigpLmNsaWVudCgpLnVzZUljb25Mb2FkaW5nQ2xpZW50KCkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpKQorICAgICAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyLT5zdGFydEljb25Mb2FkaW5nKCk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgZi0+bG9hZGVyKCkuaWNvbigpLnN0YXJ0TG9hZGVyKCk7CisKICAgICAgICAgZi0+YW5p
bWF0aW9uKCkuc3RhcnRBbmltYXRpb25zSWZOb3RTdXNwZW5kZWQodGhpcyk7CiAKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBkaXNwYXRjaGluZyBwZW5kaW5nIGV2ZW50cyBnbG9i
YWxseSBvbiBhbGwgRG9jdW1lbnRzIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0xpbmtJY29uQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25D
b2xsZWN0b3IuY3BwCmluZGV4IDEzZTc2MGFlZmZjYzlhMTdiZjc3MTc1MTUwOTBlZDQyOTQ2ZDY2
YjIuLmQwMGUwNmI1ZDczYTFhODc1MzQ5ZjU5YjlmZDY5MWNiYjFiNDM0M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY29uc3QgdW5zaWduZWQgZGVmYXVsdFRvdWNoSWNvbldpZHRoID0g
NjA7CiAKLXN0YXRpYyB1bnNpZ25lZCBpY29uU2l6ZShjb25zdCBMaW5rSWNvbkNvbGxlY3Rvcjo6
SWNvbiYgaWNvbikKK3N0YXRpYyB1bnNpZ25lZCBpY29uU2l6ZShjb25zdCBMaW5rSWNvbiYgaWNv
bikKIHsKICAgICBpZiAoaWNvbi5zaXplKQogICAgICAgICByZXR1cm4gKmljb24uc2l6ZTsKQEAg
LTQ3LDcgKzQ3LDcgQEAgc3RhdGljIHVuc2lnbmVkIGljb25TaXplKGNvbnN0IExpbmtJY29uQ29s
bGVjdG9yOjpJY29uJiBpY29uKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNvbXBh
cmVJY29ucyhjb25zdCBMaW5rSWNvbkNvbGxlY3Rvcjo6SWNvbiYgYSwgY29uc3QgTGlua0ljb25D
b2xsZWN0b3I6Okljb24mIGIpCitzdGF0aWMgaW50IGNvbXBhcmVJY29ucyhjb25zdCBMaW5rSWNv
biYgYSwgY29uc3QgTGlua0ljb24mIGIpCiB7CiAgICAgLy8gQXBwbGUgVG91Y2ggaWNvbnMgYWx3
YXlzIGNvbWUgZmlyc3QuCiAgICAgaWYgKGEudHlwZSA9PSBMaW5rSWNvblR5cGU6OkZhdmljb24g
JiYgYi50eXBlICE9IExpbmtJY29uVHlwZTo6RmF2aWNvbikKQEAgLTcyLDEzICs3MiwxMyBAQCBz
dGF0aWMgaW50IGNvbXBhcmVJY29ucyhjb25zdCBMaW5rSWNvbkNvbGxlY3Rvcjo6SWNvbiYgYSwg
Y29uc3QgTGlua0ljb25Db2xsZWN0bwogICAgIHJldHVybiAwOwogfQogCi1hdXRvIExpbmtJY29u
Q29sbGVjdG9yOjppY29uc09mVHlwZXMoT3B0aW9uU2V0PExpbmtJY29uVHlwZT4gaWNvblR5cGVz
KSAtPiBWZWN0b3I8SWNvbj4KK2F1dG8gTGlua0ljb25Db2xsZWN0b3I6Omljb25zT2ZUeXBlcyhP
cHRpb25TZXQ8TGlua0ljb25UeXBlPiBpY29uVHlwZXMpIC0+IFZlY3RvcjxMaW5rSWNvbj4KIHsK
ICAgICBhdXRvKiBoZWFkID0gbV9kb2N1bWVudC5oZWFkKCk7CiAgICAgaWYgKCFoZWFkKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPEljb24+IGljb25zOworICAgIFZlY3RvcjxM
aW5rSWNvbj4gaWNvbnM7CiAKICAgICBmb3IgKGF1dG8mIGxpbmtFbGVtZW50IDogY2hpbGRyZW5P
ZlR5cGU8SFRNTExpbmtFbGVtZW50PigqaGVhZCkpIHsKICAgICAgICAgaWYgKCFsaW5rRWxlbWVu
dC5pY29uVHlwZSgpKQpAQCAtMTA0LDcgKzEwNCw3IEBAIGF1dG8gTGlua0ljb25Db2xsZWN0b3I6
Omljb25zT2ZUeXBlcyhPcHRpb25TZXQ8TGlua0ljb25UeXBlPiBpY29uVHlwZXMpIC0+IFZlY3Rv
CiAgICAgICAgICAgICAgICAgaWNvblNpemUgPSBzaXplOwogICAgICAgICB9CiAKLSAgICAgICAg
aWNvbnMuYXBwZW5kKHsgdXJsLCBpY29uVHlwZSwgaWNvblNpemUgfSk7CisgICAgICAgIGljb25z
LmFwcGVuZCh7IHVybCwgaWNvblR5cGUsIGxpbmtFbGVtZW50LnR5cGUoKSwgaWNvblNpemUgfSk7
CiAgICAgfQogCiAgICAgc3RkOjpzb3J0KGljb25zLmJlZ2luKCksIGljb25zLmVuZCgpLCBbXShh
dXRvJiBhLCBhdXRvJiBiKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJ
Y29uQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmgK
aW5kZXggNmYxMTQ5NTMzYTk3YWQ3OTdiMGEwZjY4NTA4YWI0YTAxMzQ3ODM3OS4uNDNmMjJiODZk
NDQ3MTE2OWQzNmYwYWNkN2UyMWNkNTVkYTc0NDY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlu
a0ljb25Db2xsZWN0b3IuaApAQCAtMjUsOSArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIkxpbmtJY29uLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlv
blNldC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQxLDE0ICs0MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgc3RydWN0
IEljb24gewotICAgICAgICBVUkwgdXJsOwotCi0gICAgICAgIExpbmtJY29uVHlwZSB0eXBlOwot
ICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2l6ZTsKLSAgICB9OwotCi0gICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPEljb24+IGljb25zT2ZUeXBlcyhPcHRpb25TZXQ8TGlua0ljb25UeXBlPik7
CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPExpbmtJY29uPiBpY29uc09mVHlwZXMoT3B0aW9u
U2V0PExpbmtJY29uVHlwZT4pOwogCiBwcml2YXRlOgogICAgIERvY3VtZW50JiBtX2RvY3VtZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYTBkOTI2MGMx
ZTBjMjE4OGJhMGE2ZjFlNWNhYmY2ZDc0OTgzNmMxYi4uZGI0Nzk5ODQxNTJlMzU2MmYzMTk0Njhi
ZTk1OTVlZWJiZTkwODc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJE
b2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50V3JpdGVyLmgiCisjaW5jbHVkZSAi
RWxlbWVudENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeHRlbnNpb25TdHlsZVNoZWV0cy5oIgpAQCAtNTMsNyAr
NTQsMTAgQEAKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJIaXN0b3J5
SXRlbS5oIgogI2luY2x1ZGUgIkljb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiSWNvbkxvYWRl
ci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkxp
bmtJY29uQ29sbGVjdG9yLmgiCisjaW5jbHVkZSAiTGlua0ljb25UeXBlLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hl
LmgiCkBAIC0xNjk4LDYgKzE3MDIsNDYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Z2V0SWNvbkRh
dGFGb3JJY29uVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIGljb25EYXRhYmFzZSgp
Lmljb25EYXRhRm9ySWNvblVSTCh1cmxTdHJpbmcsIG1faWNvbkRhdGFDYWxsYmFjayk7CiB9CiAK
K3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQoreworICAgIEFTU0VSVCht
X2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS51c2VJY29uTG9hZGluZ0NsaWVudCgpKTsKKworICAg
IHN0YXRpYyB1aW50NjRfdCBuZXh0SWNvbkNhbGxiYWNrSUQgPSAxOworCisgICAgYXV0byogZG9j
dW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFZlY3RvcjxMaW5rSWNvbj4gaWNvbnMgPSBMaW5rSWNvbkNvbGxlY3RvciB7
ICpkb2N1bWVudCB9Lmljb25zT2ZUeXBlcyh7IExpbmtJY29uVHlwZTo6RmF2aWNvbiwgTGlua0lj
b25UeXBlOjpUb3VjaEljb24sIExpbmtJY29uVHlwZTo6VG91Y2hQcmVjb21wb3NlZEljb24gfSk7
CisKKyAgICBpZiAoaWNvbnMuaXNFbXB0eSgpKQorICAgICAgICBpY29ucy5hcHBlbmQoeyBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChBU0NJSUxpdGVyYWwoIi9mYXZpY29uLmljbyIp
KSwgTGlua0ljb25UeXBlOjpGYXZpY29uLCBTdHJpbmcoKSwgTnVsbG9wdCB9KTsKKworICAgIGZv
ciAoYXV0byYgaWNvbiA6IGljb25zKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9pY29uc1Bl
bmRpbmdMb2FkRGVjaXNpb24uYWRkKG5leHRJY29uQ2FsbGJhY2tJRCsrLCBpY29uKTsKKyAgICAg
ICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihpY29u
LCByZXN1bHQuaXRlcmF0b3ItPmtleSk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50TG9hZGVy
OjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQoreworICAgIGF1dG8gaWNvbiA9IG1f
aWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRha2UobG9hZElkZW50aWZpZXIpOworICAgIGlmICgh
ZGVjaXNpb24gfHwgaWNvbi51cmwuaXNFbXB0eSgpIHx8ICFtX2ZyYW1lKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIGljb25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkZXI+
KCp0aGlzLCBpY29uLnVybCk7CisgICAgaWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CisgICAg
bV9pY29uTG9hZGVycy5zZXQoV1RGTW92ZShpY29uTG9hZGVyKSwgbmV3Q2FsbGJhY2tJRCk7Cit9
CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYg
bG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGxvYWRJZGVudGlmaWVy
ID0gbV9pY29uTG9hZGVycy50YWtlKCZsb2FkZXIpOworICAgIEFTU0VSVChsb2FkSWRlbnRpZmll
cik7CisKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5maW5pc2hlZExvYWRpbmdJY29u
KGxvYWRJZGVudGlmaWVyLCBidWZmZXIpOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkaXNw
YXRjaE9ubG9hZEV2ZW50cygpCiB7CiAgICAgbV93YXNPbmxvYWREaXNwYXRjaGVkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNTQxZGZiZTRkZTg1OWZj
ZGZlZTZmZWQyNDc1N2MxZTQ1MTI2NTBlOS4uNGQ3M2Y0OGZhYjYxZGU2YjYzYTViNWY4ODljYjc1
YWEzMmQ3Y2E1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50V3JpdGVyLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlQmFzZS5oIgorI2luY2x1
ZGUgIkxpbmtJY29uLmgiCiAjaW5jbHVkZSAiTG9hZFRpbWluZy5oIgogI2luY2x1ZGUgIk5hdmln
YXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCkBAIC03MSw2ICs3Miw3
IEBAIGNsYXNzIENvbnRlbnRGaWx0ZXI7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lTG9hZGVyOworY2xhc3MgSWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7CiBjbGFz
cyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTI4OSw2ICsyOTEsMTAg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsK
IAorICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRl
bnRpZmllciwgdWludDY0X3QgbmV3Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImLCBTaGFyZWRCdWZmZXIqKTsKKwogcHJvdGVjdGVkOgogICAgIFdF
QkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTQ0MSw5ICs0NDcsMTQgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0
aW5nRm9yTmF2aWdhdGlvblBvbGljeSB7IGZhbHNlIH07CiAKKyAgICAvLyBGb3IgSWNvbkRhdGFi
YXNlLXN0eWxlIGxvYWRzCiAgICAgUmVmUHRyPEljb25Mb2FkRGVjaXNpb25DYWxsYmFjaz4gbV9p
Y29uTG9hZERlY2lzaW9uQ2FsbGJhY2s7CiAgICAgUmVmUHRyPEljb25EYXRhQ2FsbGJhY2s+IG1f
aWNvbkRhdGFDYWxsYmFjazsKIAorICAgIC8vIEZvciBJY29uTG9hZGluZ0NsaWVudC1zdHlsZSBs
b2FkcworICAgIEhhc2hNYXA8dWludDY0X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWRE
ZWNpc2lvbjsKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgdWludDY0
X3Q+IG1faWNvbkxvYWRlcnM7CisKICAgICBib29sIG1fc3VicmVzb3VyY2VMb2FkZXJzQXJlUGFn
ZUNhY2hlQWNjZXB0YWJsZTsKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1fc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggNTk4YjNmZTM3Mjg5OGZmMGQ5Y2UyMzcwMDljNDhjMGYyNGQzNmNkOC4uYjY1
MzBkZTViZDNmZTU1MTNiMjdmYTc4MGQ1ZGMyZjY2ZWIyZTgxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCisjaW5j
bHVkZSAiTGlua0ljb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM1NCw2ICsz
NTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJp
bmcmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkg
eyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IExp
bmtJY29uJiwgdWludDY0X3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmdJ
Y29uKHVpbnQ2NF90LCBTaGFyZWRCdWZmZXIqKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKaW5kZXggZjlh
NjI5YTUzMGUzNGIwNzY4Y2YyYTBkZWNlNDBlMWEyYmM2NDkxMS4uMDk4MDM4ZjAyYTUxZTkyNWNh
Y2FiZjA0YWZjMjdjMDgwNWJmMGEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkxvYWRlci5jcHAKQEAgLTQ0LDcgKzQ0LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElj
b25Mb2FkZXI6Okljb25Mb2FkZXIoRnJhbWUmIGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkK
KyAgICA6IG1fZnJhbWUoJmZyYW1lKQorICAgICwgbV91cmwoZnJhbWUubG9hZGVyKCkuaWNvbigp
LnVybCgpKQoreworfQorCitJY29uTG9hZGVyOjpJY29uTG9hZGVyKERvY3VtZW50TG9hZGVyJiBk
b2N1bWVudExvYWRlciwgY29uc3QgVVJMJiB1cmwpCisgICAgOiBtX2RvY3VtZW50TG9hZGVyKCZk
b2N1bWVudExvYWRlcikKKyAgICAsIG1fdXJsKHVybCkKIHsKIH0KIApAQCAtNTUsMTAgKzYyLDE4
IEBAIEljb25Mb2FkZXI6On5JY29uTG9hZGVyKCkKIAogdm9pZCBJY29uTG9hZGVyOjpzdGFydExv
YWRpbmcoKQogewotICAgIGlmIChtX3Jlc291cmNlIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCkpCisg
ICAgQVNTRVJUKG1fZnJhbWUgfHwgbV9kb2N1bWVudExvYWRlcik7CisKKyAgICBpZiAobV9yZXNv
dXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZnJhbWUgJiYgIW1fZnJhbWUtPmRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJj
ZVJlcXVlc3QobV9mcmFtZS5sb2FkZXIoKS5pY29uKCkudXJsKCkpOworICAgIGlmIChtX2RvY3Vt
ZW50TG9hZGVyICYmICFtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KG1fdXJsKTsKICAgICByZXNv
dXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7CiAKICAg
ICAvLyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrIGlzIGEg
cGxhY2Vob2xkZXIgdmFsdWUuIEl0IGRvZXMgbm90IGFmZmVjdCB0aGUgcmVxdWVzdCBzaW5jZSBD
b250ZW50IFNlY3VyaXR5IFBvbGljeSBkb2VzIG5vdCBhcHBseSB0byByYXcgcmVzb3VyY2VzLgpA
QCAtNjYsMTEgKzgxLDEyIEBAIHZvaWQgSWNvbkxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKIAogICAg
IHJlcXVlc3Quc2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5p
Y29uKTsKIAotICAgIG1fcmVzb3VyY2UgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmNhY2hlZFJlc291
cmNlTG9hZGVyKCkucmVxdWVzdFJhd1Jlc291cmNlKFdURk1vdmUocmVxdWVzdCkpOworICAgIGF1
dG8qIGZyYW1lID0gbV9mcmFtZSA/IG1fZnJhbWUgOiBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgp
OworICAgIG1fcmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgaWYgKG1fcmVz
b3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgZWxzZQot
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzdGFydCBsb2FkIGZvciBpY29uIGF0IHVybCAl
cyIsIG1fZnJhbWUubG9hZGVyKCkuaWNvbigpLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3IgaWNvbiBhdCB1
cmwgJXMiLCBmcmFtZS0+bG9hZGVyKCkuaWNvbigpLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0
YSgpKTsKIH0KIAogdm9pZCBJY29uTG9hZGVyOjpzdG9wTG9hZGluZygpCkBAIC0xMDAsMTIgKzEx
NiwxOSBAQCB2b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkKICAgICB9CiAKICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6Zmlu
aXNoTG9hZGluZygpIC0gQ29tbWl0dGluZyBpY29uVVJMICVzIHRvIGRhdGFiYXNlIiwgbV9yZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIG1fZnJhbWUubG9hZGVy
KCkuaWNvbigpLmNvbW1pdFRvRGF0YWJhc2UobV9yZXNvdXJjZS0+dXJsKCkpOwotICAgIC8vIFNl
dHRpbmcgdGhlIGljb24gZGF0YSBvbmx5IGFmdGVyIGNvbW1pdHRpbmcgdG8gdGhlIGRhdGFiYXNl
IGVuc3VyZXMgdGhhdCB0aGUgZGF0YSBpcwotICAgIC8vIGtlcHQgaW4gbWVtb3J5IChzbyBpdCBk
b2VzIG5vdCBoYXZlIHRvIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkp
LCBzaW5jZQotICAgIC8vIHRoZXJlIGlzIGEgcGFnZSBVUkwgcmVmZXJlbmNpbmcgaXQuCi0gICAg
aWNvbkRhdGFiYXNlKCkuc2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEsIG1fcmVzb3VyY2UtPnVy
bCgpLnN0cmluZygpKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKTsKKworICAgIGlmIChtX2ZyYW1lKSB7CisgICAgICAgIG1fZnJhbWUtPmxv
YWRlcigpLmljb24oKS5jb21taXRUb0RhdGFiYXNlKG1fcmVzb3VyY2UtPnVybCgpKTsKKworICAg
ICAgICAvLyBTZXR0aW5nIHRoZSBpY29uIGRhdGEgb25seSBhZnRlciBjb21taXR0aW5nIHRvIHRo
ZSBkYXRhYmFzZSBlbnN1cmVzIHRoYXQgdGhlIGRhdGEgaXMKKyAgICAgICAgLy8ga2VwdCBpbiBt
ZW1vcnkgKHNvIGl0IGRvZXMgbm90IGhhdmUgdG8gYmUgcmVhZCBmcm9tIHRoZSBkYXRhYmFzZSBh
c3luY2hyb25vdXNseSksIHNpbmNlCisgICAgICAgIC8vIHRoZXJlIGlzIGEgcGFnZSBVUkwgcmVm
ZXJlbmNpbmcgaXQuCisgICAgICAgIGljb25EYXRhYmFzZSgpLnNldEljb25EYXRhRm9ySWNvblVS
TChkYXRhLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIG1fZnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKKworICAgIH0gZWxzZQor
ICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5maW5pc2hlZExvYWRpbmdJY29uKCp0aGlzLCBkYXRh
KTsKKwogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25Mb2FkZXIuaAppbmRleCBmZWIwMzcwMjE2OTQ2Y2RkOWIzODdkMzQ5YjNiMzMwNjE4ZTI2NDI0
Li4yZGU1M2U4ZTI1MDhlNjMzYjRhYmI0NDU0MGRlNjBmMjU5OGVmNWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCkBAIC0yNywxOCArMjcsMjEgQEAKIAogI2luY2x1
ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VI
YW5kbGUuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENhY2hlZFJhd1Jlc291cmNlOworY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsK
IAogY2xhc3MgSWNvbkxvYWRlciBmaW5hbCA6IHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEljb25Mb2FkZXIpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJY29uTG9hZGVyKEZyYW1lJik7Cisg
ICAgSWNvbkxvYWRlcihEb2N1bWVudExvYWRlciYsIGNvbnN0IFVSTCYpOwogICAgIHZpcnR1YWwg
fkljb25Mb2FkZXIoKTsKIAogICAgIHZvaWQgc3RhcnRMb2FkaW5nKCk7CkBAIC00Nyw3ICs1MCw5
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYpIGZpbmFsOwogCi0gICAgRnJhbWUmIG1fZnJhbWU7CisgICAgRnJhbWUqIG1fZnJhbWUg
eyBudWxscHRyIH07CisgICAgRG9jdW1lbnRMb2FkZXIqIG1fZG9jdW1lbnRMb2FkZXIgeyBudWxs
cHRyIH07CisgICAgVVJMIG1fdXJsOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBtX3Jlc291cmNlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGlua0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmU4MjNjNDI0NTE5ZWJmNzljN2E1Mzk2MGQ1NTliOTY4NTVlMzZkZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKQEAgLTAs
MCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTGlua0lj
b25UeXBlLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IExpbmtJY29uIHsKKyAgICBVUkwgdXJsOworICAgIExpbmtJY29uVHlwZSB0eXBlOwor
ICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2l6ZTsKKworICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIExp
bmtJY29uJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBMaW5rSWNvbjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB1cmwgPDwg
bWltZVR5cGUgPDwgc2l6ZTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0odHlwZSk7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIExpbmtJY29uOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgTGlua0ljb24mIHJlc3VsdCkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC51cmwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5taW1lVHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQudHlwZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmJiYTM0Yzg4MGUyODEzYzg3NDlkMTkxMGNmZTQzNDZmMWE2MGZkMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xpbmtJY29u
Lmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEljb25Mb2FkaW5n
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JY29uTG9hZGluZ0NsaWVudCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6
TGlua0ljb24mLCBGdW5jdGlvbjx2b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICB9Cit9OworCit9IC8vIG5h
bWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggY2I2NDhjNThiZTIwOTcyZTY4NGRhNGYwZGUxYzU2MTNiN2E1OGRjNC4u
N2Y5NzZmYmJiMWIxMmQ1Yjc0MmUyOThhYjE2ODE5MTNmMjZiM2FkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTM1LDYgKzM1LDcg
QEAKICNpbXBvcnQgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCiAjaW1wb3J0ICJGaW5kQ2xp
ZW50LmgiCiAjaW1wb3J0ICJGdWxsc2NyZWVuQ2xpZW50LmgiCisjaW1wb3J0ICJJY29uTG9hZGlu
Z0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuaCIKICNpbXBv
cnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk5hdmlnYXRpb25TdGF0ZS5oIgpAQCAtMTk1LDYgKzE5
Niw3IEBAIFdLV2ViVmlldyogZnJvbVdlYlBhZ2VQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYg
cGFnZSkKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4gX25hdmlnYXRpb25TdGF0ZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0OjpVSURlbGVnYXRlPiBfdWlEZWxlZ2F0ZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPiBfaWNvbkxvYWRpbmdEZWxlZ2F0ZTsKIAog
ICAgIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzIF9vYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNz
RXZlbnRzOwogCkBAIC01NjIsNiArNTY0LDggQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogICAgIF9w
YWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50Pihz
ZWxmKSk7CiAgICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOwogCisgICAgX2lj
b25Mb2FkaW5nRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SWNvbkxvYWRpbmdE
ZWxlZ2F0ZT4oc2VsZik7CisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgX3BhZ2Ut
PnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5D
bGllbnQ+KHNlbGYpKTsKICNlbmRpZgpAQCAtNjc2LDYgKzY4MCwxNyBAQCAtICh2b2lkKXNldFVJ
RGVsZWdhdGU6KGlkPFdLVUlEZWxlZ2F0ZT4pVUlEZWxlZ2F0ZQogICAgIF91aURlbGVnYXRlLT5z
ZXREZWxlZ2F0ZShVSURlbGVnYXRlKTsKIH0KIAorLSAoaWQgPF9XS0ljb25Mb2FkaW5nRGVsZWdh
dGU+KV9pY29uTG9hZGluZ0RlbGVnYXRlCit7CisgICAgcmV0dXJuIF9pY29uTG9hZGluZ0RlbGVn
YXRlLT5kZWxlZ2F0ZSgpLmF1dG9yZWxlYXNlKCk7Cit9CisKKy0gKHZvaWQpX3NldEljb25Mb2Fk
aW5nRGVsZWdhdGU6KGlkPF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+KWljb25Mb2FkaW5nRGVsZWdh
dGUKK3sKKyAgICBfcGFnZS0+c2V0SWNvbkxvYWRpbmdDbGllbnQoX2ljb25Mb2FkaW5nRGVsZWdh
dGUtPmNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50KCkpOworICAgIF9pY29uTG9hZGluZ0RlbGVnYXRl
LT5zZXREZWxlZ2F0ZShpY29uTG9hZGluZ0RlbGVnYXRlKTsKK30KKwogLSAoV0tOYXZpZ2F0aW9u
ICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKICAgICBhdXRvIG5hdmln
YXRpb24gPSBfcGFnZS0+bG9hZFJlcXVlc3QocmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDY5NzY1
MGFhYjliMzQ1ZjE4NTNmZjA2ODYwOGRmMzRiYzZiZGIzMmQuLmFiZWM0ZDAxOGIyZWNiNjdiYWNm
ZWM4MTcwMzQ4Nzc2ZDYwN2QyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC01Niw2ICs1Niw3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUpIHsKIEBjbGFzcyBX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKIEBjbGFzcyBf
V0tIaXRUZXN0UmVzdWx0OworQGNsYXNzIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU7CiBAY2xhc3Mg
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CiBAY2xhc3MgX1dLU2Vzc2lvblN0YXRlOwogQGNsYXNz
IF9XS1dlYlZpZXdQcmludEZvcm1hdHRlcjsKQEAgLTYzLDYgKzY0LDcgQEAgdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogQHByb3RvY29sIFdLSGlz
dG9yeURlbGVnYXRlUHJpdmF0ZTsKIEBwcm90b2NvbCBfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVn
YXRlOwogQHByb3RvY29sIF9XS0ZpbmREZWxlZ2F0ZTsKK0Bwcm90b2NvbCBfV0tJY29uTG9hZGlu
Z0RlbGVnYXRlOwogQHByb3RvY29sIF9XS0lucHV0RGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLRnVs
bHNjcmVlbkRlbGVnYXRlOwogCkBAIC03NSw2ICs3Nyw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBz
ZXR0ZXI9X3NldE9ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHM6KSBfV0tSZW5kZXJpbmdQ
cm9ncmVzc0V2ZW50cyBfb2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50czsKIAogQHByb3Bl
cnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0SGlzdG9yeURlbGVnYXRlOikgaWQgPFdL
SGlzdG9yeURlbGVnYXRlUHJpdmF0ZT4gX2hpc3RvcnlEZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEljb25Mb2FkaW5nRGVsZWdhdGU6KSBpZCA8X1dLSWNv
bkxvYWRpbmdEZWxlZ2F0ZT4gX2ljb25Mb2FkaW5nRGVsZWdhdGU7CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgTlNVUkwgKl91bnJlYWNoYWJsZVVSTDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJY29uTG9hZGluZ0RlbGVnYXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ljb25Mb2FkaW5nRGVs
ZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MjQyZmZkMDZmYWE4MmNhZTliMmI0YjRkZjY0YjA0MmYwMzNh
ZGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJY29uTG9hZGluZ0RlbGVnYXRlLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisK
K05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BjbGFzcyBfV0tMaW5rSWNvblBhcmFtZXRlcnM7
CisKK0Bwcm90b2NvbCBfV0tJY29uTG9hZGluZ0RlbGVnYXRlIDxOU09iamVjdD4KK0BvcHRpb25h
bAorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkTG9hZEljb25X
aXRoUGFyYW1ldGVyczooX1dLTGlua0ljb25QYXJhbWV0ZXJzICopcGFyYW1ldGVycyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCAoXikoTlNEYXRhKikpKWNvbXBsZXRpb25IYW5kbGVy
OworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFyYW1l
dGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZiNDlhN2FjOTZhZDZmN2IzYTU0YjQxNTY2NjAxMTgzYjQ1YjIz
ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0xpbmtJY29uUGFyYW1ldGVycy5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKwordHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgV0tMaW5rSWNvblR5cGUpIHsKKyAgICBXS0xpbmtJY29uVHlwZUZhdmljb24sCisgICAg
V0tMaW5rSWNvblR5cGVUb3VjaEljb24sCisgICAgV0tMaW5rSWNvblR5cGVUb3VjaFByZWNvbXBv
c2VkSWNvbiwKK307CisKK0BpbnRlcmZhY2UgX1dLTGlua0ljb25QYXJhbWV0ZXJzIDogTlNPYmpl
Y3QKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1VSTCAqdXJsOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0xpbmtJY29uVHlwZSBpY29uVHlwZTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm1pbWVUeXBl
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU051bWJlciAqc2l6ZTsK
KworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU0NWRm
YzdmZTgxYzZjMGFlYTAyMzdhNWE5YmZmYTc3ODUwNzk5YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJzLm1t
CkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIl9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxF
RAorCisjaW1wb3J0IDxXZWJDb3JlL0xpbmtJY29uLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBfV0tM
aW5rSWNvblBhcmFtZXRlcnMgeworICAgIFJldGFpblB0cjxOU1VSTD4gX3VybDsKKyAgICBXS0xp
bmtJY29uVHlwZSBfaWNvblR5cGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWltZVR5cGU7
CisgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBfc2l6ZTsKK30KKworLSAoaW5zdGFuY2V0eXBlKV9p
bml0V2l0aExpbmtJY29uOihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYpbGlua0ljb24KK3sKKyAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IF91cmwgPSBhZG9wdE5TKFsoTlNVUkwgKilsaW5rSWNvbi51cmwgY29weV0pOworICAgIF9taW1l
VHlwZSA9IGFkb3B0TlMoWyhOU1N0cmluZyAqKWxpbmtJY29uLm1pbWVUeXBlIGNvcHldKTsKKwor
ICAgIGlmIChsaW5rSWNvbi5zaXplKQorICAgICAgICBfc2l6ZSA9IGFkb3B0TlMoW1tOU051bWJl
ciBhbGxvY10gaW5pdFdpdGhVbnNpZ25lZEludDpsaW5rSWNvbi5zaXplLnZhbHVlKCldKTsKKwor
ICAgIHN3aXRjaCAobGlua0ljb24udHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6TGlua0ljb25U
eXBlOjpGYXZpY29uOgorICAgICAgICBfaWNvblR5cGUgPSBXS0xpbmtJY29uVHlwZUZhdmljb247
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6TGlua0ljb25UeXBlOjpUb3VjaElj
b246CisgICAgICAgIF9pY29uVHlwZSA9IFdLTGlua0ljb25UeXBlVG91Y2hJY29uOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OkxpbmtJY29uVHlwZTo6VG91Y2hQcmVjb21wb3Nl
ZEljb246CisgICAgICAgIF9pY29uVHlwZSA9IFdLTGlua0ljb25UeXBlVG91Y2hQcmVjb21wb3Nl
ZEljb247CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBzZWxmOworfQorCist
IChOU1VSTCAqKXVybAoreworICAgIHJldHVybiBfdXJsLmdldCgpOworfQorCistIChOU1N0cmlu
ZyAqKW1pbWVUeXBlCit7CisgICAgcmV0dXJuIF9taW1lVHlwZS5nZXQoKTsKK30KKworLSAoTlNO
dW1iZXIgKilzaXplCit7CisgICAgcmV0dXJuIF9zaXplLmdldCgpOworfQorCistIChXS0xpbmtJ
Y29uVHlwZSlpY29uVHlwZQoreworICAgIHJldHVybiBfaWNvblR5cGU7Cit9CisKK0BlbmQKKwor
I2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjQyMWU3MWM1OGRlNTVkMzM2YmY1MjMzZWE3NmM2NWE2N2MyNzg5Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
TGlua0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiX1dLTGlua0ljb25QYXJhbWV0ZXJzLmgiCisKKyNpZiBXS19BUElfRU5BQkxF
RAorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgTGlua0ljb247Cit9CisKK0BpbnRlcmZh
Y2UgX1dLTGlua0ljb25QYXJhbWV0ZXJzICgpCisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhM
aW5rSWNvbjooY29uc3QgV2ViQ29yZTo6TGlua0ljb24mKWxpbmtJY29uOworCitAZW5kCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2Fk
aW5nRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGlu
Z0RlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjcyOWQ5OTk2MWJkMGZlZWM0MGUxZjQ4YjA3ZTNiYzBj
ZTZiMDQ3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKKworI2lmIFdLX0FQSV9FTkFC
TEVECisKKyNpbXBvcnQgIkFQSUljb25Mb2FkaW5nQ2xpZW50LmgiCisjaW1wb3J0ICJXZWFrT2Jq
Q1B0ci5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAY2xhc3MgV0tXZWJWaWV3Owor
QHByb3RvY29sIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBJY29uTG9hZGluZ0RlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJY29u
TG9hZGluZ0RlbGVnYXRlKFdLV2ViVmlldyAqKTsKKyAgICB+SWNvbkxvYWRpbmdEZWxlZ2F0ZSgp
OworCisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+IGNyZWF0ZUlj
b25Mb2FkaW5nQ2xpZW50KCk7CisKKyAgICBSZXRhaW5QdHI8aWQgPF9XS0ljb25Mb2FkaW5nRGVs
ZWdhdGU+ID4gZGVsZWdhdGUoKTsKKyAgICB2b2lkIHNldERlbGVnYXRlKGlkIDxfV0tJY29uTG9h
ZGluZ0RlbGVnYXRlPik7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQg
OiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBl
eHBsaWNpdCBJY29uTG9hZGluZ0NsaWVudChJY29uTG9hZGluZ0RlbGVnYXRlJik7CisgICAgICAg
IH5JY29uTG9hZGluZ0NsaWVudCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBnZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgRnVuY3Rpb248dm9p
ZCAoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IpPik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworCisgICAgICAgIEljb25M
b2FkaW5nRGVsZWdhdGUmIG1faWNvbkxvYWRpbmdEZWxlZ2F0ZTsKKyAgICB9OworCisgICAgV0tX
ZWJWaWV3ICptX3dlYlZpZXc7CisgICAgV2Vha09iakNQdHI8aWQgPF9XS0ljb25Mb2FkaW5nRGVs
ZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKKworICAgIHN0cnVjdCB7CisgICAgICAgIGJvb2wgd2ViVmll
d1Nob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnNDb21wbGV0aW9uSGFuZGxlciA6IDE7CisgICAg
fSBtX2RlbGVnYXRlTWV0aG9kczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVmOTYyODI5YzA1NTEw
OGYwZDdiMWI1NDZlMTViNjhkOWFiZWZlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCkBAIC0wLDAgKzEsMTA0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJJY29uTG9hZGlu
Z0RlbGVnYXRlLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW5jbHVkZSAiV0tOU0RhdGEu
aCIKKyNpbmNsdWRlICJfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmgiCisjaW5jbHVkZSAiX1dLTGlu
a0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0ljb25M
b2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nRGVsZWdhdGUoV0tXZWJWaWV3ICp3ZWJWaWV3KQor
ICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisKK0ljb25Mb2FkaW5nRGVsZWdhdGU6On5J
Y29uTG9hZGluZ0RlbGVnYXRlKCkKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxv
YWRpbmdDbGllbnQ+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50
KCkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oKnRo
aXMpOworfQorCitSZXRhaW5QdHI8aWQgPF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+ID4gSWNvbkxv
YWRpbmdEZWxlZ2F0ZTo6ZGVsZWdhdGUoKQoreworICAgIHJldHVybiBtX2RlbGVnYXRlLmdldCgp
OworfQorCit2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxfV0tJY29u
TG9hZGluZ0RlbGVnYXRlPiBkZWxlZ2F0ZSkKK3sKKyAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGU7
CisKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2hvdWxkTG9hZEljb25XaXRoUGFyYW1l
dGVyc0NvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Iod2ViVmlldzpzaG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzOmNvbXBsZXRpb25IYW5k
bGVyOildOworfQorCitJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6SWNv
bkxvYWRpbmdDbGllbnQoSWNvbkxvYWRpbmdEZWxlZ2F0ZSYgaWNvbkxvYWRpbmdEZWxlZ2F0ZSkK
KyAgICA6IG1faWNvbkxvYWRpbmdEZWxlZ2F0ZShpY29uTG9hZGluZ0RlbGVnYXRlKQoreworfQor
CitJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6fkljb25Mb2FkaW5nQ2xp
ZW50KCkKK3sKK30KKwordHlwZWRlZiB2b2lkICheSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlciko
TlNEYXRhKik7CisKK3ZvaWQgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNvbkxvYWRpbmdDbGllbnQ6
OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGxpbmtJY29u
LCBGdW5jdGlvbjx2b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
IW1faWNvbkxvYWRpbmdEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2hvdWxkTG9h
ZEljb25XaXRoUGFyYW1ldGVyc0NvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBk
ZWxlZ2F0ZSA9IG1faWNvbkxvYWRpbmdEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlm
ICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8X1dLTGlua0ljb25QYXJhbWV0ZXJz
PiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19XS0xpbmtJY29uUGFyYW1ldGVycyBhbGxvY10gX2lu
aXRXaXRoTGlua0ljb246bGlua0ljb25dKTsKKworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1faWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tX3dlYlZpZXcgc2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVyczpw
YXJhbWV0ZXJzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl52b2lkIChJY29uTG9hZENvbXBsZXRp
b25IYW5kbGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBpZiAobG9hZENvbXBs
ZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbbG9hZENvbXBs
ZXRpb25IYW5kbGVyID0gQmxvY2tfY29weShsb2FkQ29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRh
dGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICAg
ICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lIHx8ICFkYXRhKQor
ICAgICAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFuZGxlcih3
cmFwcGVyKCpkYXRhKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICB9XTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiZTJmMjIxY2JiNTVjNmY4YmIzZDAyMjc2
ODdiM2E5NmNkMmZmODVjLi4xNWJkMDc3NmI3OWYzOGM5NGRhMzI0ZGE0OWMyN2E0OTcyNTZmZTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkFQSUdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiQVBJSGlzdG9yeUNs
aWVudC5oIgogI2luY2x1ZGUgIkFQSUhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJBUElJY29u
TG9hZGluZ0NsaWVudC5oIgogI2luY2x1ZGUgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50
LmgiCiAjaW5jbHVkZSAiQVBJTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlv
bi5oIgpAQCAtNjI3LDYgKzYyOCwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+IHVpQ2xpZW50KQogICAgIHNldENhblJ1bk1v
ZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGll
bnQ+IGljb25Mb2FkaW5nQ2xpZW50KQoreworICAgIGJvb2wgaGFzQ2xpZW50ID0gaWNvbkxvYWRp
bmdDbGllbnQuZ2V0KCk7CisgICAgaWYgKCFpY29uTG9hZGluZ0NsaWVudCkKKyAgICAgICAgbV9p
Y29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVu
dD4oKTsKKyAgICBlbHNlCisgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBXVEZNb3ZlKGlj
b25Mb2FkaW5nQ2xpZW50KTsKKworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUljb25Mb2Fk
aW5nQ2xpZW50KGhhc0NsaWVudCksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6
OnNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4gZmluZENsaWVu
dCkKIHsKICAgICBpZiAoIWZpbmRDbGllbnQpIHsKQEAgLTY2MzUsNiArNjY1MCwzMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKICAgICBtX3BhZ2VDbGll
bnQuZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCB1aW50
NjRfdCBsb2FkSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1faWNvbkxvYWRpbmdDbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1faWNvbkxvYWRpbmdDbGllbnQtPmdldExvYWREZWNpc2lv
bkZvckljb24oaWNvbiwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8V2ViUGFnZVByb3h5Pigq
dGhpcyksIGxvYWRJZGVudGlmaWVyXShzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKSB7CisgICAgICAgIGlmICghaXNW
YWxpZCgpKSB7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2tGdW5jdGlvbikKKyAgICAgICAgICAg
ICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25v
d24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBkZWNp
c2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247CisgICAgICAgIHVpbnQ2NF90IG5ld0NhbGxi
YWNrSWRlbnRpZmllciA9IGRlY2lzaW9uID8gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSkgOiAwOworCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIsIG5ld0Nh
bGxiYWNrSWRlbnRpZmllciksIG1fcGFnZUlEKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJQYWdl
UHJveHk6OmZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgZGF0YUNhbGxiYWNrKGRhdGEs
IGNhbGxiYWNrSWRlbnRpZmllcik7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRSZXNvdXJj
ZUNhY2hpbmdEaXNhYmxlZChib29sIGRpc2FibGVkKQogewogICAgIGlmIChtX2lzUmVzb3VyY2VD
YWNoaW5nRGlzYWJsZWQgPT0gZGlzYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggZDVmZmE2NWIzY2IwM2U2YzA0NGM1NmYxZDVjNzZlZDIwODQ1YjVkMS4u
YThkZmNkNzUzOTAzNmFkNmYxMDhlYjcyYzNiMDliNjBiMjA0YzUyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI5LDYgKzEyOSw3IEBAIGNsYXNzIEZpbmRN
YXRjaGVzQ2xpZW50OwogY2xhc3MgRm9ybUNsaWVudDsKIGNsYXNzIEZ1bGxzY3JlZW5DbGllbnQ7
CiBjbGFzcyBIaXN0b3J5Q2xpZW50OworY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQ7CiBjbGFzcyBM
b2FkZXJDbGllbnQ7CiBjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgTmF2aWdhdGlvbkNsaWVudDsK
QEAgLTM2Niw2ICszNjcsOSBAQCBwdWJsaWM6CiAgICAgQVBJOjpVSUNsaWVudCYgdWlDbGllbnQo
KSB7IHJldHVybiAqbV91aUNsaWVudDsgfQogICAgIHZvaWQgc2V0VUlDbGllbnQoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6VUlDbGllbnQ+KTsKIAorICAgIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQmIGlj
b25Mb2FkaW5nQ2xpZW50KCkgeyByZXR1cm4gKm1faWNvbkxvYWRpbmdDbGllbnQ7IH0KKyAgICB2
b2lkIHNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5n
Q2xpZW50Pik7CisKICAgICB2b2lkIGluaXRpYWxpemVXZWJQYWdlKCk7CiAKICAgICB2b2lkIGNs
b3NlKCk7CkBAIC0xMTM2LDYgKzExNDAsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpOwogCisgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNv
bnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBm
aW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJik7CisKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAg
ICAgdm9pZCBzZXRXaW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2
b2lkIGdldFdpbmRvd0ZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCYpOwpAQCAtMTU4Myw2ICsxNTkw
LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IG1f
cG9saWN5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+
IG1fbmF2aWdhdGlvbkNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpIaXN0b3J5Q2xp
ZW50PiBtX2hpc3RvcnlDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRp
bmdDbGllbnQ+IG1faWNvbkxvYWRpbmdDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
Rm9ybUNsaWVudD4gbV9mb3JtQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xp
ZW50PiBtX3VpQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+IG1f
ZmluZENsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDdkY2I5MmNiZTMxZmIxOGM0MTA1MzI0N2UzNGY5ZjIyNTIyMTYx
YTIuLjkwMjNkNTcxOWQyMzEwMDhkMjg5ZDE1N2UwMmJjODA3OWExMGZlOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDc4
LDYgKzQ3OCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBEaWRSZXN0b3Jl
U2Nyb2xsUG9zaXRpb24oKQogCisgICAgR2V0TG9hZERlY2lzaW9uRm9ySWNvbihzdHJ1Y3QgV2Vi
Q29yZTo6TGlua0ljb24gaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBGaW5pc2hlZExv
YWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGEpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpZEhhbmRsZUFjY2VwdGVkQ2FuZGlk
YXRlKCkKICAgICBIYW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZShib29s
IGhhc0FjdGl2ZVNlc3Npb24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUg
ZWxhcHNlZFRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOTgzNTY1MzU1ZjE1MDA5NDhjMDlmY2YyZDE4ODlkYjZhYWJhZWYx
Ni4uYTE3YTExNGZiMDdhNjMwYWExNTc2NTkzZjgwYjJiOTgwMmQ0NDI1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODgxLDYg
Kzg4MSw5IEBACiAJCTUxMDZEN0M0MThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRl
eHREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oICovOyB9
OwogCQk1MTBBRkZCOTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQUZGQjcxNjU0
MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCAqLzsgfTsKIAkJNTEwQUZGQkEx
NjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBRkZCODE2NTQyMDQ4MDAxQkEwNUUgLyog
V2ViUmVzb3VyY2VMb2FkZXIuaCAqLzsgfTsKKwkJNTEwRjU5MTAxRERFMjk2OTAwNDEyRkY1IC8q
IF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNDNCMjVFMUREQ0RGRDEwMDE0RkFDNiAvKiBfV0tJY29uTG9hZGlu
Z0RlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNTEwRjU5MTExRERFMjk3MDAwNDEyRkY1IC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEM5Nzkx
RERENzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxMEY1OTEyMURERTI5NzcwMDQx
MkZGNSAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQzk3QTFEREQ3ODU0MDAzMkNBRDMgLyogX1dLTGlu
a0ljb25QYXJhbWV0ZXJzLm1tICovOyB9OwogCQk1MTBGQkI5QTEyODhDOTVFMDBBRkZERjQgLyog
V2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBGQkI5ODEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1l
bnVJdGVtRGF0YS5jcHAgKi87IH07CiAJCTUxMEZCQjlCMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTBGQkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVt
RGF0YS5oICovOyB9OwogCQk1MTEwQUUwQzEzM0MxNkNCMDA3MjcxN0EgLyogV0tJY29uRGF0YWJh
c2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
MEFFMEExMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmNwcCAqLzsgfTsKQEAgLTk5
Niw2ICs5OTksOCBAQAogCQk1MUFDQkJBMTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1l
bnVQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQUNCQjlGMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1t
ICovOyB9OwogCQk1MUIxNUE4NDEzODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRp
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFC
MTVBODIxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmNwcCAqLzsgfTsK
IAkJNTFCMTVBODUxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxNUE4MzEzODQz
QTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCAqLzsgfTsKKwkJNTFDMEM5NzQx
RERENzYwMDAwMzJDQUQzIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzBDOTcyMURERDc0RjAwMDMyQ0FEMyAv
KiBJY29uTG9hZGluZ0RlbGVnYXRlLmggKi87IH07CisJCTUxQzBDOTc1MURERDc2MDMwMDMyQ0FE
MyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFDMEM5NzMxRERENzRGMDAwMzJDQUQzIC8qIEljb25Mb2FkaW5n
RGVsZWdhdGUubW0gKi87IH07CiAJCTUxQ0QxQzVEMUIzNDkzQUYwMDE0MkNBNSAvKiBXS1NlY3Vy
aXR5T3JpZ2luUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQ0QxQzU5MUIzNDkzQTkwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luUmVmLmNw
cCAqLzsgfTsKIAkJNTFDRDFDNUUxQjM0OTNCNDAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5S
ZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0Qx
QzVBMUIzNDkzQTkwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luUmVmLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDRDFDNjUxQjM0QjlENDAw
MTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0QxQzVGMUIzNEI5QzkwMDE0MkNBNSAvKiBXS1NlY3VyaXR5
T3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpA
QCAtMzAxMiw2ICszMDE3LDggQEAKIAkJNTEzRTQ2MkMxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0MTI5OTExQzY0MjgxMDAwNTlFNzE0IC8qIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTQxMjk5MjFDNjQyODEwMDA1OUU3MTQgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTQzQjI1RTFERENERkQxMDAx
NEZBQzYgLyogX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxNDNCMjYxMURERDBEQTAwMDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJY29uTG9hZGluZ0NsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUy
NUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3RhdGlzdGljc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0
RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29u
dHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZp
Y2VzQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwODEsNiAr
MzA4OCwxMSBAQAogCQk1MUFDQzkzNTE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
c01lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjE1QTgyMTM4NDNB
MzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHA7IHBhdGggPSB1bml4
L0Vudmlyb25tZW50VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFCMTVBODMxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVudmlyb25tZW50VXRpbGl0aWVzLmg7IHBhdGgg
PSB1bml4L0Vudmlyb25tZW50VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxQzBDOTcyMURERDc0RjAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEljb25Mb2FkaW5nRGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDMEM5NzMxRERENzRGMDAwMzJDQUQzIC8qIElj
b25Mb2FkaW5nRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBJY29uTG9hZGluZ0RlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MUMwQzk3OTFEREQ3ODU0MDAzMkNBRDMgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0xpbmtJY29uUGFyYW1ldGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUMwQzk3QTFEREQ3ODU0MDAzMkNBRDMgLyog
X1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gX1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUMwQzk3QjFEREQ3ODU0MDAzMkNBRDMgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJz
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLTGlua0ljb25Q
YXJhbWV0ZXJzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFD
NTkxQjM0OTNBOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5SZWYuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tTZWN1cml0eU9yaWdpblJlZi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzVBMUIzNDkzQTkwMDE0MkNBNSAvKiBXS1Nl
Y3VyaXR5T3JpZ2luUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2Vj
dXJpdHlPcmlnaW5SZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFDNUYx
QjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tTZWN1cml0eU9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDgyMCw2ICs0ODMyLDggQEAKIAkJCQkwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODgg
LyogRmluZENsaWVudC5tbSAqLywKIAkJCQlDRDc4RTExMjFEQjdEN0VEMDAxNEEyREUgLyogRnVs
bHNjcmVlbkNsaWVudC5tbSAqLywKIAkJCQlDRDc4RTExMzFEQjdEN0VEMDAxNEEyREUgLyogRnVs
bHNjcmVlbkNsaWVudC5oICovLAorCQkJCTUxQzBDOTcyMURERDc0RjAwMDMyQ0FEMyAvKiBJY29u
TG9hZGluZ0RlbGVnYXRlLmggKi8sCisJCQkJNTFDMEM5NzMxRERENzRGMDAwMzJDQUQzIC8qIElj
b25Mb2FkaW5nRGVsZWdhdGUubW0gKi8sCiAJCQkJMEYwQzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8q
IExheWVyUmVwcmVzZW50YXRpb24uaCAqLywKIAkJCQkxQUJDM0RGNDE4OTlFNDM3MDA0RjA2MjYg
LyogTmF2aWdhdGlvblN0YXRlLmggKi8sCiAJCQkJMUFCQzNERjMxODk5RTQzNzAwNEYwNjI2IC8q
IE5hdmlnYXRpb25TdGF0ZS5tbSAqLywKQEAgLTUyMDIsOCArNTIxNiwxMiBAQAogCQkJCTJFN0E5
NDQ5MUJCRDk1QzYwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8uaCAqLywKIAkJCQkz
N0E2NEU1NjE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oICovLAogCQkJ
CUNENzhFMTE4MURCN0U1QUQwMDE0QTJERSAvKiBfV0tGdWxsc2NyZWVuRGVsZWdhdGUuaCAqLywK
KwkJCQk1MTQzQjI1RTFERENERkQxMDAxNEZBQzYgLyogX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5o
ICovLAogCQkJCTM3QTY0RTU0MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tJbnB1dERlbGVnYXRlLmgg
Ki8sCiAJCQkJMkQ3OTBBOUMxQUQ3MDUwRDAwQUI5MEIzIC8qIF9XS0xheW91dE1vZGUuaCAqLywK
KwkJCQk1MUMwQzk3OTFEREQ3ODU0MDAzMkNBRDMgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLmgg
Ki8sCisJCQkJNTFDMEM5N0ExRERENzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVy
cy5tbSAqLywKKwkJCQk1MUMwQzk3QjFEREQ3ODU0MDAzMkNBRDMgLyogX1dLTGlua0ljb25QYXJh
bWV0ZXJzSW50ZXJuYWwuaCAqLywKIAkJCQk5MzIzNjExRDFCMDE1REE4MDBGQTkyMzIgLyogX1dL
T3ZlcmxheVNjcm9sbGJhclN0eWxlLmggKi8sCiAJCQkJMUE0M0U4MjgxODhGM0NEQzAwOUU0RDMw
IC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTFBNDNFODI3MTg4RjND
REMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0gKi8sCkBAIC02Mjkw
LDYgKzYzMDgsNyBAQAogCQkJCTkzQTg4QjQzMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0
UmVzdWx0LmggKi8sCiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCiAJCQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0QzVCIC8q
IEFQSUxvYWRlckNsaWVudC5oICovLAorCQkJCTUxNDNCMjYxMURERDBEQTAwMDE0RkFDNiAvKiBB
UElJY29uTG9hZGluZ0NsaWVudC5oICovLAogCQkJCTdDRDNBNDgwMUE1RDAyRkEwMDk2MjNCOCAv
KiBBUElOYXZpZ2F0aW9uLmNwcCAqLywKIAkJCQk3Q0QzQTQ4MTFBNUQwMkZBMDA5NjIzQjggLyog
QVBJTmF2aWdhdGlvbi5oICovLAogCQkJCTJERjlFRUVBMUE3ODM2RUUwMEI2Q0ZCRSAvKiBBUElO
YXZpZ2F0aW9uQWN0aW9uLmggKi8sCkBAIC03ODM3LDYgKzc4NTYsNyBAQAogCQkJCTFBNzg2NUJB
MTZDQUM3MTUwMEFDRTgzQSAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyQkI2RDExNDExN0I0RDAwMEYzNUQ0IC8qIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ5MEQy
MTI4MUM5NjYwMDFFQjk2MiAvKiBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTBGNTkxMDFEREUyOTY5MDA0MTJGRjUgLyogX1dLSWNvbkxvYWRp
bmdEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRUM2MDMxMjRBOUYyQzAwN0VGNEE1
IC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBFQzZDMDEy
NEJCRDlCMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTBFQzc1RTEyNEJDN0IyMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5LmggaW4g
SGVhZGVycyAqLywKQEAgLTc5MjMsNiArNzk0Myw3IEBACiAJCQkJNEEzQ0MxOEQxOUIwNjQxOTAw
RDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0RTg2NDkzMUIxNjc1MDcwMEM4MkY0MCAvKiBWZXJzaW9uQ2hlY2tzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDEyNUM1RTE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBGNTkxMTFEREUyOTcwMDA0MTJGRjUgLyog
X1dLTGlua0ljb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDFCNUQ1RTE4NTg2
OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJEODE5QkEyMTg2MjgwMEUwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkNEMTE5MTg5MDU4QTUw
MEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04Mjg0LDYg
KzgzMDUsNyBAQAogCQkJCTFBQTEzMjEyMTkxRDU5MjQwMDlDMTQ4OSAvKiBXS05hdmlnYXRpb25S
ZXNwb25zZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEM0E2NURGMUE3QzNBN0QwMENB
QzYzNyAvKiBXS05hdmlnYXRpb25SZXNwb25zZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE4
QkUxNzkxNDc0M0U2RjAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MUMwQzk3NDFEREQ3NjAwMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzE4QkUxNzExNDc0M0RCMTAwQThGQkIyIC8qIFdLTm90aWZpY2F0
aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVDNzQxNDhENTlDQTAwODEwRDcx
IC8qIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxMkMwQzRBMTQ2RERDOEEwMDE2QzkxMSAvKiBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTk1MTEsNiArOTUzMyw3IEBACiAJCQkJQkMxQkUxRTExMkQ1NEE0MTAw
MDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
MEU1RkU2MTJENjk3MTYwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkMwRTYwNjExMkQ2QkE5MTAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9u
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTBGNTkxMjFE
REUyOTc3MDA0MTJGRjUgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM1NENBQ0MxMkQ2NDI5MTAwNUM2N0IwIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MTgyMTJENkNCMUQwMDEyQTcyQSAvKiBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzBFNjA3NDEyRDZCQzIwMDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk2MDgsNiArOTYzMSw3IEBACiAJCQkJQkNENTk4MDAx
MTJCNTdCRTAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODVGRDdGMTkzNDE2NjUwMDAxNzdDNCAvKiBXZWJQcmVmZXJlbmNlc0tleXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM4NEVCMTgxMkE3MTAwQzAwODNGMkRBIC8qIFdlYlByZWZlcmVuY2Vz
TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFDMEM5NzUxRERENzYwMzAwMzJDQUQzIC8qIElj
b25Mb2FkaW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q1OThBRDExMkI3RkRG
MDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzExMUFFNDExMkY1QzI2MDAzMzdCQUIgLyogV2ViUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzZFNzBGQjE4QjJEQzdBMDBGMjRFMkUgLyogV2ViUHJvY2Vzc0NvY29hLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGQxNTQ4Y2Zh
NmY4N2QxMGRiNTA1ZWFiYzg2YjA1ZTk0MzcyOWNkNGMuLjFjODgxNTMwYWE0MWFhZjdlYWMyMmEx
ZmIwMjY3Yzg3YmZkMjY1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0xNzQ5LDQgKzE3NDksMjUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCkKICAgICB3ZWJQYWdlLT5kaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24o
KTsKIH0KIAorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRpbmdDbGllbnQo
KQoreworICAgIHJldHVybiBtX3VzZUljb25Mb2FkaW5nQ2xpZW50OworfQorCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IExpbmtJY29uJiBp
Y29uLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsg
bV9mcmFtZS0+cGFnZSgpIH0pCisgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6R2V0TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCBjYWxsYmFja0lEKSk7Cit9CisK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3Qg
bG9hZElkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciogZGF0YSkKK3sKKyAgICBpZiAoV2ViUGFnZSog
d2ViUGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KSB7CisgICAgICAgIGlmIChkYXRhKQorICAgICAg
ICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRp
bmdJY29uKGxvYWRJZGVudGlmaWVyLCB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5n
SWNvbihsb2FkSWRlbnRpZmllciwgeyBudWxscHRyLCAwIH0pKTsKKyAgICB9Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGRkMzMw
ZDdmZGVhZWUyZWYwODY0ODZhY2Q0YjE5YTFlZGRkZTFkNGQuLmYyYmJiYWY1N2E3Nzg2NzBkZTI0
OWZlMTZkNDFmZTNmNzEyNmU3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTQ2LDYgKzQ2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXI7
IH0KIAorICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1c2VJY29uTG9hZGlu
Z0NsaWVudCkgeyBtX3VzZUljb25Mb2FkaW5nQ2xpZW50ID0gdXNlSWNvbkxvYWRpbmdDbGllbnQ7
IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7
CiAKQEAgLTI1NSwxMiArMjU3LDE3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlc3RvcmVT
Y3JvbGxQb3NpdGlvbigpIG92ZXJyaWRlOwogCisgICAgYm9vbCB1c2VJY29uTG9hZGluZ0NsaWVu
dCgpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJD
b3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKikgb3ZlcnJpZGU7CisKICAgICBXZWJGcmFtZSogbV9mcmFtZTsKICAgICBSZWZQ
dHI8UGx1Z2luVmlldz4gbV9wbHVnaW5WaWV3OwogICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VU
b1BsdWdpblZpZXc7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlUGFnZVRyYW5zaXRpb247CiAgICAg
Ym9vbCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyOwogICAgIGJvb2wgbV9mcmFtZUNh
bWVGcm9tUGFnZUNhY2hlOworICAgIGJvb2wgbV91c2VJY29uTG9hZGluZ0NsaWVudCB7IGZhbHNl
IH07CiB9OwogCiAvLyBBcyBsb25nIGFzIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgZXhpc3RzIGlu
IFdlYkNvcmUsIHRoaXMgY2FuIHJldHVybiAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM0N2YxZDRlODIyMmQ5Y2Q2Yzc0NGFjODNhY2Zh
OGMyMzdiMzRlMzEuLjA2OTBlOTBmMDcxM2Y0MTRiMjNlNjAzNDVjNDYyOGM2ZjYwMGI2ZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU2
NjMsNCArNTY2MywxNSBAQCB2b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jaygpCiB9CiAj
ZW5kaWYKIAordm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVj
aXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQor
eworICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJh
Y2tJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1
c2VJY29uTG9hZGluZ0NsaWVudCkKK3sKKyAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNs
aWVudCY+KGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpKS5zZXRVc2VJ
Y29uTG9hZGluZ0NsaWVudCh1c2VJY29uTG9hZGluZ0NsaWVudCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggMDkxZDhlYTJmOTE5MjZlYjU2ZWFmNzNlODY4YjY4NmE0MmUyY2U1NC4uMmI1NjBlMjU3
OWU5NmFlNDIwNTc2Y2U1ZDgyZmJkZWU2YmM0MzQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05NjgsNiArOTY4LDkgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwg
dWludDY0X3QgbmV3Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRVc2VJY29uTG9hZGluZ0NsaWVu
dChib29sKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGEzMWM2NDZiM2Uy
ZDc2NmRjNGVhNzMzMjg4NTM5ZDg5NDIxMDA1N2UuLjYyZjU1ZDU0NTlhYWY0Mjc1MzE5OWYxMDM4
MjU2ZTNlOThlMTQ2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00NDYsNiArNDQ2LDkgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBTZXRVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIAorICAgIERpZEdldExvYWREZWNpc2lvbkZv
ckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IG5l
d0NhbGxiYWNrSUQpCisgICAgU2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1c2VJY29uTG9h
ZGluZ0NsaWVudCkKKwogI2lmIEVOQUJMRShHQU1FUEFEKQogICAgIEdhbWVwYWRBY3Rpdml0eShW
ZWN0b3I8V2ViS2l0OjpHYW1lcGFkRGF0YT4gZ2FtZXBhZERhdGFzKQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGE0Yzc2NTc0NjQ0
MTlmNTAwNWIyOTJlODZiYTBhMjhmMmYxZWI4Yy4uNWNhZjQ1NjZkZjU0ZjIwMjdmNDk1NmI1MmMw
ZTk4MTlhMGE0OTVmMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTExLTE3ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZSBTUEku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgTWlu
aUJyb3dzZXIgc3VwcG9ydCBmb3IgdGhpcyBuZXcgU1BJLCBjb25maWd1cmFibGUgd2l0aCBhIHNl
dHRpbmcuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmg6
CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tOgorICAgICAg
ICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgX3BvcHVsYXRlTWVudV0pOgorICAgICAgICAoLVtTZXR0
aW5nc0NvbnRyb2xsZXIgdmFsaWRhdGVNZW51SXRlbTpdKToKKyAgICAgICAgKC1bU2V0dGluZ3ND
b250cm9sbGVyIGxvYWRzQWxsU2l0ZUljb25zXSk6CisgICAgICAgICgtW1NldHRpbmdzQ29udHJv
bGxlciB0b2dnbGVMb2Fkc0FsbFNpdGVJY29uczpdKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9t
YWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIgYXdha2VGcm9tTmliXSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyIHdlYlZpZXc6c2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVyczpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKwogMjAxNi0xMS0xNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gcnVuLWFwaS10ZXN0cyBpcyBmYWlsaW5nLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oIGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oCmluZGV4IGE4MzY3NDM3OWE3
YmJhZjViNDJkMWFkODg2MzE0OWFkNjBmNDBkNjYuLmY4ODE5ZDNhNjJlZDJlOWVmNmI0MGNmNzhj
OTNhN2ZhMGM0ZTM0ZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5n
c0NvbnRyb2xsZXIuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9s
bGVyLmgKQEAgLTUxLDYgKzUxLDcgQEAgQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBC
T09MIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIEJPT0wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIEJPT0wgdmlzdWFsVmlld3BvcnRFbmFibGVkOwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGFzeW5jSW1hZ2VEZWNvZGluZ0VuYWJsZWQ7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgbG9hZHNBbGxTaXRlSWNvbnM7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgdXNlc0dhbWVDb250cm9sbGVyRnJh
bWV3b3JrOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpkZWZh
dWx0VVJMOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJv
bGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCmluZGV4
IDBjN2MxZGEyOTYxYWQ0NDdmN2RlYjkwMDcxMGM2ZjgzYTU1NWIwMDYuLjE1Yzc0NjgzZTJkMDQ2
YTM4ODc5MTc1MmU1NDBmZWM1NGE3MzEyODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0
dGluZ3NDb250cm9sbGVyLm0KQEAgLTQxLDYgKzQxLDcgQEAKIHN0YXRpYyBOU1N0cmluZyAqIGNv
bnN0IFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkUHJlZmVyZW5jZUtleSA9IEAi
U2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQiOwogc3RhdGljIE5TU3RyaW5nICog
Y29uc3QgVGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlUHJlZmVyZW5jZUtleSA9IEAiVGls
ZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFJl
c291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXkgPSBAIlJlc291cmNlVXNhZ2VP
dmVybGF5VmlzaWJsZSI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBMb2Fkc0FsbFNpdGVJY29u
c0tleSA9IEAiTG9hZHNBbGxTaXRlSWNvbnMiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVXNl
c0dhbWVDb250cm9sbGVyRnJhbWV3b3JrS2V5ID0gQCJVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdv
cmsiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVz
c2VkUHJlZmVyZW5jZUtleSA9IEAiSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2VkIjsKIHN0
YXRpYyBOU1N0cmluZyAqIGNvbnN0IEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWRQcmVmZXJlbmNl
S2V5ID0gQCJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIjsKQEAgLTEzNSw2ICsxMzYsNyBAQCAt
ICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIlVzZSBV
SS1TaWRlIENvbXBvc2l0aW5nIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVVzZVVJU2lkZUNvbXBv
c2l0aW5nOikgaW5kZW50ZWQ6WUVTXTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkRp
c2FibGUgUGVyLVdpbmRvdyBXZWIgUHJvY2Vzc2VzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVBl
cldpbmRvd1dlYlByb2Nlc3Nlc0Rpc2FibGVkOikgaW5kZW50ZWQ6WUVTXTsKICAgICBbc2VsZiBf
YWRkSXRlbVdpdGhUaXRsZTpAIlNob3cgUmVzb3VyY2UgVXNhZ2UgT3ZlcmxheSIgYWN0aW9uOkBz
ZWxlY3Rvcih0b2dnbGVTaG93UmVzb3VyY2VVc2FnZU92ZXJsYXk6KSBpbmRlbnRlZDpZRVNdOwor
ICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiTG9hZCBBbGwgU2l0ZSBJY29ucyBQZXItUGFn
ZSIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVMb2Fkc0FsbFNpdGVJY29uczopIGluZGVudGVkOllF
U107CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJVc2UgR2FtZUNvbnRyb2xsZXIuZnJh
bWV3b3JrIG9uIG1hY09TIChSZXN0YXJ0IHJlcXVpcmVkKSIgYWN0aW9uOkBzZWxlY3Rvcih0b2dn
bGVVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcms6KSBpbmRlbnRlZDpZRVNdOwogCiAgICAgTlNN
ZW51SXRlbSAqZGVidWdPdmVybGF5c1N1Ym1lbnVJdGVtID0gW1tOU01lbnVJdGVtIGFsbG9jXSBp
bml0V2l0aFRpdGxlOkAiRGVidWcgT3ZlcmxheXMiIGFjdGlvbjpuaWwga2V5RXF1aXZhbGVudDpA
IiJdOwpAQCAtMjA5LDYgKzIxMSw4IEBAIC0gKEJPT0wpdmFsaWRhdGVNZW51SXRlbTooTlNNZW51
SXRlbSAqKW1lbnVJdGVtCiAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiB0aWxlZFNj
cm9sbGluZ0luZGljYXRvclZpc2libGVdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CiAgICAg
ZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVTaG93UmVzb3VyY2VVc2FnZU92ZXJs
YXk6KSkKICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIHJlc291cmNlVXNhZ2VPdmVy
bGF5VmlzaWJsZV0gPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAgICBlbHNlIGlmIChhY3Rp
b24gPT0gQHNlbGVjdG9yKHRvZ2dsZUxvYWRzQWxsU2l0ZUljb25zOikpCisgICAgICAgIFttZW51
SXRlbSBzZXRTdGF0ZTpbc2VsZiBsb2Fkc0FsbFNpdGVJY29uc10gPyBOU09uU3RhdGUgOiBOU09m
ZlN0YXRlXTsKICAgICBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVVzZXNHYW1l
Q29udHJvbGxlckZyYW1ld29yazopKQogICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYg
dXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrXSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOwog
ICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlVXNlVUlTaWRlQ29tcG9zaXRp
bmc6KSkKQEAgLTM1OCw2ICszNjIsMTYgQEAgLSAodm9pZCl0b2dnbGVTaG93UmVzb3VyY2VVc2Fn
ZU92ZXJsYXk6KGlkKXNlbmRlcgogICAgIFtzZWxmIF90b2dnbGVCb29sZWFuRGVmYXVsdDpSZXNv
dXJjZVVzYWdlT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAoQk9PTClsb2Fk
c0FsbFNpdGVJY29ucworeworICAgIHJldHVybiBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBib29sRm9yS2V5OkxvYWRzQWxsU2l0ZUljb25zS2V5XTsKK30KKworLSAodm9p
ZCl0b2dnbGVMb2Fkc0FsbFNpdGVJY29uczooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgX3RvZ2ds
ZUJvb2xlYW5EZWZhdWx0OkxvYWRzQWxsU2l0ZUljb25zS2V5XTsKK30KKwogLSAoQk9PTCl1c2Vz
R2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsKIHsKICAgICByZXR1cm4gW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdv
cmtLZXldOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQppbmRleCBkZTBmZDZlOWMxNjBhZmRhYWZlNzgzYmRhY2EwYTI4M2I2ZGY1Mzhh
Li4xNDU2ZTI0MGRhODdlNjE0ZmNjOTc4MWM5MDg3MDQzZWMwMzAwMzEyIDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtMzgs
MTEgKzM4LDEzIEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJOU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0ljb25Mb2FkaW5nRGVsZWdhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9fV0tMaW5rSWNvblBhcmFtZXRlcnMuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tVc2VySW5pdGlhdGVkQWN0aW9uLmg+CiAKIHN0YXRpYyB2b2lkKiBrZXlWYWx1ZU9i
c2VydmluZ0NvbnRleHQgPSAma2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0OwogCi1AaW50ZXJmYWNl
IFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICgpIDxXS05hdmlnYXRpb25EZWxlZ2F0ZSwgV0tV
SURlbGVnYXRlPgorQGludGVyZmFjZSBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciAoKSA8V0tO
YXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZSwgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4K
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHsKQEAg
LTczLDYgKzc1LDExIEBAIC0gKHZvaWQpYXdha2VGcm9tTmliCiAKICAgICBfd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBzZWxmOwogICAgIF93ZWJWaWV3LlVJRGVsZWdhdGUgPSBzZWxmOwor
CisgICAgLy8gVGhpcyBzZXR0aW5nIGluc3RhbGxzIHRoZSBuZXcgV0syIEljb24gTG9hZGluZyBE
ZWxlZ2F0ZSBhbmQgdGVzdHMgdGhhdCBtZWNoYW5pc20gYnkKKyAgICAvLyB0ZWxsaW5nIFdlYktp
dCB0byBsb2FkIGV2ZXJ5IGljb24gcmVmZXJlbmNlZCBieSB0aGUgcGFnZS4KKyAgICBpZiAoW1tT
ZXR0aW5nc0NvbnRyb2xsZXIgc2hhcmVkXSBsb2Fkc0FsbFNpdGVJY29uc10pCisgICAgICAgIF93
ZWJWaWV3Ll9pY29uTG9hZGluZ0RlbGVnYXRlID0gc2VsZjsKICAgICAKICAgICBfd2ViVmlldy5f
b2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyA9IF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZl
bnRGaXJzdExheW91dAogICAgICAgICB8IF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQKQEAgLTY0OSw2ICs2NTYsMTMgQEAgLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZTooX1dLUmVu
ZGVyaW5nUHIKICAgICAgICAgTE9HKEAicmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2U6ICVAIiwg
QCJmaXJzdCBwYWludCBhZnRlciBzdXBwcmVzc2VkIGluY3JlbWVudGFsIHJlbmRlcmluZyIpOwog
fQogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkTG9hZEljb25X
aXRoUGFyYW1ldGVyczooX1dLTGlua0ljb25QYXJhbWV0ZXJzICopcGFyYW1ldGVycyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCAoXikoTlNEYXRhKikpKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoXnZvaWQgKE5TRGF0YSAqZGF0YSkgeworICAgICAg
ICBMT0coQCJJY29uIFVSTCAlQCByZWNlaXZlZCBpY29uIGRhdGEgb2YgbGVuZ3RoICV1IiwgcGFy
YW1ldGVycy51cmwsICh1bnNpZ25lZClkYXRhLmxlbmd0aCk7CisgICAgfSk7Cit9CisKIEBlbmQK
IAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>
<flag name="review"
          id="317727"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296719</attachid>
            <date>2016-12-09 15:20:00 -0800</date>
            <delta_ts>2016-12-09 15:55:38 -0800</delta_ts>
            <desc>Fixed for EWS</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>66382</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZDI5Yzg2Li42ZWY1M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDkg
QEAKIDIwMTYtMTItMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIFJlLWxhbmRpbmc6CisgICAgICAgIEFkZCBfV0tJY29uTG9hZGluZ0RlbGVnYXRlIFNQSS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDg5NAor
CisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChNYW51YWwgdGVzdGluZyBwb3NzaWJsZSBpbiBNaW5pQnJvd3NlciBub3csIFdLVFIg
dGVzdHMgY29taW5nIHNvb24gaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDg5NSkuCisKKyAgICAgICAgV2l0aCB0aGlzIGNsaWVudCwgV2ViQ29yZSB3aWxsIGFz
ayB0aGUgRnJhbWVMb2FkZXJDbGllbnQgYWJvdXQgZWFjaCBpY29uIGZvdW5kIGluIHRoZSA8aGVh
ZD4uCisKKyAgICAgICAgV2ViS2l0MiB3aWxsIHRoZW4gYXNrIHRoZSBlbWJlZGRpbmcgYXBwIC0g
Zm9yIGVhY2ggaWNvbiAtIGlmIGl0IHdhbnRzIHRoYXQgaWNvbiB0byBsb2FkLgorCisgICAgICAg
IEZvciBpY29ucyB0aGUgYXBwIGRlY2lkZXMgdG8gbG9hZCwgV2ViS2l0IHdpbGwgcGFzcyB0aGUg
ZGF0YSB0byB0aGUgYXBwIHdpdGhvdXQgc3RvcmluZyBsb2NhbGx5LgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbXBsaWNpdENsb3NlKToKKworICAg
ICAgICAqIGh0bWwvTGlua0ljb25Db2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aWNv
blNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUljb25zKToKKyAgICAgICAgKiBodG1s
L0xpbmtJY29uQ29sbGVjdG9yLmg6CisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZv
ckljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGlu
Z0ljb24pOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29u
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6Okljb25Mb2FkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6Okljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9MaW5rSWNvbi5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmguCisgICAgICAgIChX
ZWJDb3JlOjpMaW5rSWNvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtJY29uOjpk
ZWNvZGUpOgorCisyMDE2LTEyLTA5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KwogICAgICAgICBMaW5rSWNvbkNvbGxlY3RvciByZWZhY3RvcmluZy4KICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTY1NwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCBiYTU1NjY1Li5mZjYyNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTI2NTEsNyArMjY1MSwxMiBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAg
ICAvLyByYW1pZmljYXRpb25zLCBhbmQgd2UgbmVlZCB0byBkZWNpZGUgd2hhdCBpcyB0aGUgUmln
aHQgVGhpbmcgVG8gRG8odG0pCiAgICAgRnJhbWUqIGYgPSBmcmFtZSgpOwogICAgIGlmIChmKSB7
Ci0gICAgICAgIGYtPmxvYWRlcigpLmljb24oKS5zdGFydExvYWRlcigpOworICAgICAgICBpZiAo
Zi0+bG9hZGVyKCkuY2xpZW50KCkudXNlSWNvbkxvYWRpbmdDbGllbnQoKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVyID0gbG9hZGVyKCkpCisgICAgICAgICAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPnN0YXJ0SWNvbkxvYWRpbmcoKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBmLT5sb2FkZXIoKS5pY29uKCkuc3RhcnRMb2FkZXIoKTsKKwogICAgICAgICBmLT5h
bmltYXRpb24oKS5zdGFydEFuaW1hdGlvbnNJZk5vdFN1c3BlbmRlZCh0aGlzKTsKIAogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGRpc3BhdGNoaW5nIHBlbmRpbmcgZXZlbnRzIGds
b2JhbGx5IG9uIGFsbCBEb2N1bWVudHMgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCmluZGV4IGJmNjZjMmYuLjI0YmI1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFdy
aXRlci5oIgorI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVT
aGVldHMuaCIKQEAgLTUzLDcgKzU0LDEwIEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgi
CiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJJY29uQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgIkljb25Mb2FkZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKKyNpbmNsdWRlICJMaW5rSWNvbkNvbGxlY3Rvci5oIgorI2luY2x1ZGUgIkxpbmtJY29u
VHlwZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNp
bmNsdWRlICJNZW1vcnlDYWNoZS5oIgpAQCAtMTcwMiw2ICsxNzA2LDQ2IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmdldEljb25EYXRhRm9ySWNvblVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
ICAgICBpY29uRGF0YWJhc2UoKS5pY29uRGF0YUZvckljb25VUkwodXJsU3RyaW5nLCBtX2ljb25E
YXRhQ2FsbGJhY2spOwogfQogCit2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5n
KCkKK3sKKyAgICBBU1NFUlQobV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkudXNlSWNvbkxvYWRp
bmdDbGllbnQoKSk7CisKKyAgICBzdGF0aWMgdWludDY0X3QgbmV4dEljb25DYWxsYmFja0lEID0g
MTsKKworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRv
Y3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8TGlua0ljb24+IGljb25zID0g
TGlua0ljb25Db2xsZWN0b3IgeyAqZG9jdW1lbnQgfS5pY29uc09mVHlwZXMoeyBMaW5rSWNvblR5
cGU6OkZhdmljb24sIExpbmtJY29uVHlwZTo6VG91Y2hJY29uLCBMaW5rSWNvblR5cGU6OlRvdWNo
UHJlY29tcG9zZWRJY29uIH0pOworCisgICAgaWYgKGljb25zLmlzRW1wdHkoKSkKKyAgICAgICAg
aWNvbnMuYXBwZW5kKHsgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoQVNDSUlMaXRl
cmFsKCIvZmF2aWNvbi5pY28iKSksIExpbmtJY29uVHlwZTo6RmF2aWNvbiwgU3RyaW5nKCksIHN0
ZDo6bnVsbG9wdCB9KTsKKworICAgIGZvciAoYXV0byYgaWNvbiA6IGljb25zKSB7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb24uYWRkKG5leHRJY29uQ2Fs
bGJhY2tJRCsrLCBpY29uKTsKKyAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZ2V0
TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCByZXN1bHQuaXRlcmF0b3ItPmtleSk7CisgICAgfQor
fQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wg
ZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lE
KQoreworICAgIGF1dG8gaWNvbiA9IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRha2UobG9h
ZElkZW50aWZpZXIpOworICAgIGlmICghZGVjaXNpb24gfHwgaWNvbi51cmwuaXNFbXB0eSgpIHx8
ICFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGljb25Mb2FkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CisgICAgaWNvbkxvYWRl
ci0+c3RhcnRMb2FkaW5nKCk7CisgICAgbV9pY29uTG9hZGVycy5zZXQoV1RGTW92ZShpY29uTG9h
ZGVyKSwgbmV3Q2FsbGJhY2tJRCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVk
TG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3sK
KyAgICBhdXRvIGxvYWRJZGVudGlmaWVyID0gbV9pY29uTG9hZGVycy50YWtlKCZsb2FkZXIpOwor
ICAgIEFTU0VSVChsb2FkSWRlbnRpZmllcik7CisKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGll
bnQoKS5maW5pc2hlZExvYWRpbmdJY29uKGxvYWRJZGVudGlmaWVyLCBidWZmZXIpOworfQorCiB2
b2lkIERvY3VtZW50TG9hZGVyOjpkaXNwYXRjaE9ubG9hZEV2ZW50cygpCiB7CiAgICAgbV93YXNP
bmxvYWREaXNwYXRjaGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKaW5kZXggNTQxZGZiZS4uNGQ3M2Y0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50V3JpdGVyLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNl
QmFzZS5oIgorI2luY2x1ZGUgIkxpbmtJY29uLmgiCiAjaW5jbHVkZSAiTG9hZFRpbWluZy5oIgog
I2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgi
CkBAIC03MSw2ICs3Miw3IEBAIGNsYXNzIENvbnRlbnRGaWx0ZXI7CiBjbGFzcyBGb3JtU3RhdGU7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOworY2xhc3MgSWNvbkxvYWRlcjsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAg
LTI4OSw2ICsyOTEsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSBjb25zdDsKIAorICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1
aW50NjRfdCBsb2FkSWRlbnRpZmllciwgdWludDY0X3QgbmV3Q2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBTaGFyZWRCdWZmZXIqKTsKKwogcHJv
dGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTQ0MSw5ICs0NDcsMTQgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSB7IGZhbHNlIH07CiAKKyAgICAv
LyBGb3IgSWNvbkRhdGFiYXNlLXN0eWxlIGxvYWRzCiAgICAgUmVmUHRyPEljb25Mb2FkRGVjaXNp
b25DYWxsYmFjaz4gbV9pY29uTG9hZERlY2lzaW9uQ2FsbGJhY2s7CiAgICAgUmVmUHRyPEljb25E
YXRhQ2FsbGJhY2s+IG1faWNvbkRhdGFDYWxsYmFjazsKIAorICAgIC8vIEZvciBJY29uTG9hZGlu
Z0NsaWVudC1zdHlsZSBsb2FkcworICAgIEhhc2hNYXA8dWludDY0X3QsIExpbmtJY29uPiBtX2lj
b25zUGVuZGluZ0xvYWREZWNpc2lvbjsKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29u
TG9hZGVyPiwgdWludDY0X3Q+IG1faWNvbkxvYWRlcnM7CisKICAgICBib29sIG1fc3VicmVzb3Vy
Y2VMb2FkZXJzQXJlUGFnZUNhY2hlQWNjZXB0YWJsZTsKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZWZhZTU5NC4uMzBhOGI2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgi
CisjaW5jbHVkZSAiTGlua0ljb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5o
IgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM1
NCw2ICszNTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0
aW9uKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNv
bnN0IExpbmtJY29uJiwgdWludDY0X3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExv
YWRpbmdJY29uKHVpbnQ2NF90LCBTaGFyZWRCdWZmZXIqKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25M
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKaW5k
ZXggZjlhNjI5YS4uYmE1OWE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5jcHAKQEAgLTQ0LDcgKzQ0LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEljb25M
b2FkZXI6Okljb25Mb2FkZXIoRnJhbWUmIGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAg
ICA6IG1fZnJhbWUoJmZyYW1lKQorICAgICwgbV91cmwoZnJhbWUubG9hZGVyKCkuaWNvbigpLnVy
bCgpKQoreworfQorCitJY29uTG9hZGVyOjpJY29uTG9hZGVyKERvY3VtZW50TG9hZGVyJiBkb2N1
bWVudExvYWRlciwgY29uc3QgVVJMJiB1cmwpCisgICAgOiBtX2RvY3VtZW50TG9hZGVyKCZkb2N1
bWVudExvYWRlcikKKyAgICAsIG1fdXJsKHVybCkKIHsKIH0KIApAQCAtNTUsMTAgKzYyLDE5IEBA
IEljb25Mb2FkZXI6On5JY29uTG9hZGVyKCkKIAogdm9pZCBJY29uTG9hZGVyOjpzdGFydExvYWRp
bmcoKQogewotICAgIGlmIChtX3Jlc291cmNlIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCkpCisgICAg
QVNTRVJUKG1fZnJhbWUgfHwgbV9kb2N1bWVudExvYWRlcik7CisKKyAgICBpZiAobV9yZXNvdXJj
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZnJhbWUgJiYgIW1fZnJhbWUtPmRvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJl
cXVlc3QobV9mcmFtZS5sb2FkZXIoKS5pY29uKCkudXJsKCkpOworCisgICAgaWYgKG1fZG9jdW1l
bnRMb2FkZXIgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSBtX2RvY3VtZW50TG9hZGVy
ID8gbV91cmwgOiAgbV9mcmFtZS0+bG9hZGVyKCkuaWNvbigpLnVybCgpOwogICAgIHJlc291cmNl
UmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93KTsKIAogICAgIC8v
IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2sgaXMgYSBwbGFj
ZWhvbGRlciB2YWx1ZS4gSXQgZG9lcyBub3QgYWZmZWN0IHRoZSByZXF1ZXN0IHNpbmNlIENvbnRl
bnQgU2VjdXJpdHkgUG9saWN5IGRvZXMgbm90IGFwcGx5IHRvIHJhdyByZXNvdXJjZXMuCkBAIC02
NiwxMSArODIsMTIgQEAgdm9pZCBJY29uTG9hZGVyOjpzdGFydExvYWRpbmcoKQogCiAgICAgcmVx
dWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmljb24p
OwogCi0gICAgbV9yZXNvdXJjZSA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgYXV0byog
ZnJhbWUgPSBtX2ZyYW1lID8gbV9mcmFtZSA6IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCk7Cisg
ICAgbV9yZXNvdXJjZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICBpZiAobV9yZXNvdXJj
ZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICBlbHNlCi0gICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0IGxvYWQgZm9yIGljb24gYXQgdXJsICVzIiwg
bV9mcmFtZS5sb2FkZXIoKS5pY29uKCkudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwor
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzdGFydCBsb2FkIGZvciBpY29uIGF0IHVybCAl
cyIsIHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiB9CiAK
IHZvaWQgSWNvbkxvYWRlcjo6c3RvcExvYWRpbmcoKQpAQCAtMTAwLDEyICsxMTcsMTkgQEAgdm9p
ZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAg
ICAgfQogCiAgICAgTE9HKEljb25EYXRhYmFzZSwgIkljb25Mb2FkZXI6OmZpbmlzaExvYWRpbmco
KSAtIENvbW1pdHRpbmcgaWNvblVSTCAlcyB0byBkYXRhYmFzZSIsIG1fcmVzb3VyY2UtPnVybCgp
LnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmljb24oKS5j
b21taXRUb0RhdGFiYXNlKG1fcmVzb3VyY2UtPnVybCgpKTsKLSAgICAvLyBTZXR0aW5nIHRoZSBp
Y29uIGRhdGEgb25seSBhZnRlciBjb21taXR0aW5nIHRvIHRoZSBkYXRhYmFzZSBlbnN1cmVzIHRo
YXQgdGhlIGRhdGEgaXMKLSAgICAvLyBrZXB0IGluIG1lbW9yeSAoc28gaXQgZG9lcyBub3QgaGF2
ZSB0byBiZSByZWFkIGZyb20gdGhlIGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5KSwgc2luY2UKLSAg
ICAvLyB0aGVyZSBpcyBhIHBhZ2UgVVJMIHJlZmVyZW5jaW5nIGl0LgotICAgIGljb25EYXRhYmFz
ZSgpLnNldEljb25EYXRhRm9ySWNvblVSTChkYXRhLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmco
KSk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVJY29u
KCk7CisKKyAgICBpZiAobV9mcmFtZSkgeworICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5pY29u
KCkuY29tbWl0VG9EYXRhYmFzZShtX3Jlc291cmNlLT51cmwoKSk7CisKKyAgICAgICAgLy8gU2V0
dGluZyB0aGUgaWNvbiBkYXRhIG9ubHkgYWZ0ZXIgY29tbWl0dGluZyB0byB0aGUgZGF0YWJhc2Ug
ZW5zdXJlcyB0aGF0IHRoZSBkYXRhIGlzCisgICAgICAgIC8vIGtlcHQgaW4gbWVtb3J5IChzbyBp
dCBkb2VzIG5vdCBoYXZlIHRvIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJhc2UgYXN5bmNocm9ub3Vz
bHkpLCBzaW5jZQorICAgICAgICAvLyB0aGVyZSBpcyBhIHBhZ2UgVVJMIHJlZmVyZW5jaW5nIGl0
LgorICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRJY29uRGF0YUZvckljb25VUkwoZGF0YSwgbV9y
ZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGll
bnQoKS5kaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CisKKyAgICB9IGVsc2UKKyAgICAgICAgbV9k
b2N1bWVudExvYWRlci0+ZmluaXNoZWRMb2FkaW5nSWNvbigqdGhpcywgZGF0YSk7CisKICAgICBz
dG9wTG9hZGluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgK
aW5kZXggZmViMDM3MC4uMmRlNTNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25M
b2FkZXIuaApAQCAtMjcsMTggKzI3LDIxIEBACiAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsK
K2NsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiAKIGNsYXNzIEljb25Mb2FkZXIg
ZmluYWwgOiBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJY29uTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgSWNvbkxvYWRlcihGcmFtZSYpOworICAgIEljb25Mb2FkZXIoRG9jdW1l
bnRMb2FkZXImLCBjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIH5JY29uTG9hZGVyKCk7CiAKICAg
ICB2b2lkIHN0YXJ0TG9hZGluZygpOwpAQCAtNDcsNyArNTAsOSBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKIAotICAg
IEZyYW1lJiBtX2ZyYW1lOworICAgIEZyYW1lKiBtX2ZyYW1lIHsgbnVsbHB0ciB9OworICAgIERv
Y3VtZW50TG9hZGVyKiBtX2RvY3VtZW50TG9hZGVyIHsgbnVsbHB0ciB9OworICAgIFVSTCBtX3Vy
bDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJj
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSWNvbi5oCmluZGV4IDllNjc0ODEuLjAzMmNj
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0ljb24uaApAQCAtMzcsNiArMzcsMzQgQEAgc3Ry
dWN0IExpbmtJY29uIHsKICAgICBMaW5rSWNvblR5cGUgdHlwZTsKICAgICBTdHJpbmcgbWltZVR5
cGU7CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2l6ZTsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIExpbmtJY29uJik7CiB9
OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBMaW5rSWNvbjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB1cmwgPDwgbWltZVR5cGUgPDwg
c2l6ZTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0odHlwZSk7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IERlY29kZXI+Citib29sIExpbmtJY29uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTGlua0lj
b24mIHJlc3VsdCkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmwpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5taW1l
VHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRW51bShyZXN1bHQudHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmFh
NTEyYy4uZjAxZGNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE2LTEyLTA5ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZS1sYW5kaW5nOgor
ICAgICAgICBBZGQgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZSBTUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4OTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFdpdGggdGhpcyBjbGllbnQsIFdlYkNv
cmUgd2lsbCBhc2sgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IGFib3V0IGVhY2ggaWNvbiBmb3VuZCBp
biB0aGUgPGhlYWQ+LgorCisgICAgICAgIFdlYktpdDIgd2lsbCB0aGVuIGFzayB0aGUgZW1iZWRk
aW5nIGFwcCAtIGZvciBlYWNoIGljb24gLSBpZiBpdCB3YW50cyB0aGF0IGljb24gdG8gbG9hZC4K
KworICAgICAgICBGb3IgaWNvbnMgdGhlIGFwcCBkZWNpZGVzIHRvIGxvYWQsIFdlYktpdCB3aWxs
IHBhc3MgdGhlIGRhdGEgdG8gdGhlIGFwcCB3aXRob3V0IHN0b3JpbmcgbG9jYWxseS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5oLgorICAgICAgICAoQVBJOjpJ
Y29uTG9hZGluZ0NsaWVudDo6fkljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKEFQSTo6SWNv
bkxvYWRpbmdDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb24pOgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2ljb25M
b2FkaW5nRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRJY29uTG9hZGluZ0Rl
bGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJY29uTG9hZGluZ0RlbGVn
YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3Iu
aC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJz
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuaC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFyYW1ldGVycy5tbTog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5oLgorICAg
ICAgICAoLVtfV0tMaW5rSWNvblBhcmFtZXRlcnMgX2luaXRXaXRoTGlua0ljb246XSk6CisgICAg
ICAgICgtW19XS0xpbmtJY29uUGFyYW1ldGVycyB1cmxdKToKKyAgICAgICAgKC1bX1dLTGlua0lj
b25QYXJhbWV0ZXJzIG1pbWVUeXBlXSk6CisgICAgICAgICgtW19XS0xpbmtJY29uUGFyYW1ldGVy
cyBzaXplXSk6CisgICAgICAgICgtW19XS0xpbmtJY29uUGFyYW1ldGVycyBpY29uVHlwZV0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJzSW50ZXJu
YWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5o
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNvbkxvYWRpbmdEZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6On5JY29uTG9hZGluZ0RlbGVnYXRl
KToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRp
bmdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlOjpkZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6OnNldERlbGVnYXRlKToK
KyAgICAgICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNvbkxvYWRpbmdDbGllbnQ6
Okljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0
ZTo6SWNvbkxvYWRpbmdDbGllbnQ6On5JY29uTG9hZGluZ0NsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVzZUlj
b25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQpOgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisKIDIwMTYtMTItMDkgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25o
YUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguIFRoYW5r
cyB0byBLb25zdGFudGluIFRva2FyZXYgYW5kIENzYWJhIE9zenRyb2dvbsOhYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybU1hYy5jbWFrZQppbmRleCBjMGYxYWRhLi42ZjVmZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMjA5LDYgKzIwOSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
ICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbQogICAgIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRXJyb3JSZWNvdmVyeUF0dGVtcHRpbmcubW0KICAgICBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0V4cGVyaW1lbnRhbEZlYXR1cmUubW0KKyAgICBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0xpbmtJY29uUGFyYW1ldGVycy5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLU2Vzc2lvblN0YXRlLm1tCkBAIC0yMzIsNiArMjMzLDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCiAgICAg
VUlQcm9jZXNzL0NvY29hL0ZpbmRDbGllbnQubW0KICAgICBVSVByb2Nlc3MvQ29jb2EvRnVsbHNj
cmVlbkNsaWVudC5tbQorICAgIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1t
CiAgICAgVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQogICAgIFVJUHJvY2Vzcy9D
b2NvYS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEubW0KICAgICBVSVBy
b2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYmJiYTM0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2su
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xpbmtJY29uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNw
YWNlIEFQSSB7CisKK2NsYXNzIEljb25Mb2FkaW5nQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5JY29uTG9hZGluZ0NsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGdldExvYWRE
ZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCBGdW5jdGlvbjx2b2lkIChz
dGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cik+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihu
dWxscHRyKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggODBkMTZhNi4uY2Vk
YWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50
LmgiCiAjaW1wb3J0ICJGaW5kQ2xpZW50LmgiCiAjaW1wb3J0ICJGdWxsc2NyZWVuQ2xpZW50Lmgi
CisjaW1wb3J0ICJJY29uTG9hZGluZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJMZWdhY3lTZXNzaW9u
U3RhdGVDb2RpbmcuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk5hdmlnYXRpb25T
dGF0ZS5oIgpAQCAtMTk1LDYgKzE5Niw3IEBAIFdLV2ViVmlldyogZnJvbVdlYlBhZ2VQcm94eShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSkKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4gX25hdmlnYXRpb25T
dGF0ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpVSURlbGVnYXRlPiBfdWlEZWxlZ2F0
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPiBfaWNv
bkxvYWRpbmdEZWxlZ2F0ZTsKIAogICAgIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzIF9vYnNl
cnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzOwogCkBAIC01NjgsNiArNTcwLDggQEAgLSAodm9p
ZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICop
Y29uZmlndXJhdGlvbgogICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7CiAgICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dn
aW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dD4oc2VsZikpOwogCisgICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2VsZik7CisKICNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCiAgICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KHNlbGYpKTsKICNlbmRpZgpAQCAtNjgyLDYgKzY4
NiwxNyBAQCAtICh2b2lkKXNldFVJRGVsZWdhdGU6KGlkPFdLVUlEZWxlZ2F0ZT4pVUlEZWxlZ2F0
ZQogICAgIF91aURlbGVnYXRlLT5zZXREZWxlZ2F0ZShVSURlbGVnYXRlKTsKIH0KIAorLSAoaWQg
PF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+KV9pY29uTG9hZGluZ0RlbGVnYXRlCit7CisgICAgcmV0
dXJuIF9pY29uTG9hZGluZ0RlbGVnYXRlLT5kZWxlZ2F0ZSgpLmF1dG9yZWxlYXNlKCk7Cit9CisK
Ky0gKHZvaWQpX3NldEljb25Mb2FkaW5nRGVsZWdhdGU6KGlkPF9XS0ljb25Mb2FkaW5nRGVsZWdh
dGU+KWljb25Mb2FkaW5nRGVsZWdhdGUKK3sKKyAgICBfcGFnZS0+c2V0SWNvbkxvYWRpbmdDbGll
bnQoX2ljb25Mb2FkaW5nRGVsZWdhdGUtPmNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50KCkpOworICAg
IF9pY29uTG9hZGluZ0RlbGVnYXRlLT5zZXREZWxlZ2F0ZShpY29uTG9hZGluZ0RlbGVnYXRlKTsK
K30KKwogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QKIHsKICAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+bG9hZFJlcXVlc3QocmVxdWVzdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCmluZGV4IDdmNWE3ZmUuLjlkOTVhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC01Niw2ICs1
Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUp
IHsKIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKIEBjbGFzcyBfV0tGcmFtZUhhbmRs
ZTsKIEBjbGFzcyBfV0tIaXRUZXN0UmVzdWx0OworQGNsYXNzIF9XS0ljb25Mb2FkaW5nRGVsZWdh
dGU7CiBAY2xhc3MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CiBAY2xhc3MgX1dLU2Vzc2lvblN0
YXRlOwogQGNsYXNzIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlcjsKQEAgLTYzLDYgKzY0LDcgQEAg
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogQHBy
b3RvY29sIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZTsKIEBwcm90b2NvbCBfV0tEaWFnbm9zdGlj
TG9nZ2luZ0RlbGVnYXRlOwogQHByb3RvY29sIF9XS0ZpbmREZWxlZ2F0ZTsKK0Bwcm90b2NvbCBf
V0tJY29uTG9hZGluZ0RlbGVnYXRlOwogQHByb3RvY29sIF9XS0lucHV0RGVsZWdhdGU7CiBAcHJv
dG9jb2wgX1dLRnVsbHNjcmVlbkRlbGVnYXRlOwogCkBAIC03NSw2ICs3Nyw3IEBAIHR5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUpIHsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzZXR0ZXI9X3NldE9ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHM6KSBf
V0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBfb2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50
czsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0SGlzdG9yeURlbGVn
YXRlOikgaWQgPFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZT4gX2hpc3RvcnlEZWxlZ2F0ZTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEljb25Mb2FkaW5nRGVsZWdhdGU6
KSBpZCA8X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4gX2ljb25Mb2FkaW5nRGVsZWdhdGU7CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkwgKl91bnJlYWNoYWJsZVVSTDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJY29uTG9h
ZGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lj
b25Mb2FkaW5nRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
MjQyZmZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJY29uTG9hZGluZ0RlbGVnYXRlLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVE
CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BjbGFzcyBfV0tMaW5rSWNvblBhcmFtZXRl
cnM7CisKK0Bwcm90b2NvbCBfV0tJY29uTG9hZGluZ0RlbGVnYXRlIDxOU09iamVjdD4KK0BvcHRp
b25hbAorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkTG9hZElj
b25XaXRoUGFyYW1ldGVyczooX1dLTGlua0ljb25QYXJhbWV0ZXJzICopcGFyYW1ldGVycyBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCAoXikoTlNEYXRhKikpKWNvbXBsZXRpb25IYW5k
bGVyOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFy
YW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNDlhN2EKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0xp
bmtJY29uUGFyYW1ldGVycy5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
V0tMaW5rSWNvblR5cGUpIHsKKyAgICBXS0xpbmtJY29uVHlwZUZhdmljb24sCisgICAgV0tMaW5r
SWNvblR5cGVUb3VjaEljb24sCisgICAgV0tMaW5rSWNvblR5cGVUb3VjaFByZWNvbXBvc2VkSWNv
biwKK307CisKK0BpbnRlcmZhY2UgX1dLTGlua0ljb25QYXJhbWV0ZXJzIDogTlNPYmplY3QKKwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1VSTCAqdXJsOworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0xpbmtJY29uVHlwZSBpY29uVHlwZTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm1pbWVUeXBlOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU051bWJlciAqc2l6ZTsKKworQGVu
ZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDU0NWRmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tCkBAIC0wLDAgKzEsODgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0xpbmtJY29u
UGFyYW1ldGVyc0ludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxX
ZWJDb3JlL0xpbmtJY29uLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBfV0tMaW5rSWNvblBhcmFtZXRl
cnMgeworICAgIFJldGFpblB0cjxOU1VSTD4gX3VybDsKKyAgICBXS0xpbmtJY29uVHlwZSBfaWNv
blR5cGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWltZVR5cGU7CisgICAgUmV0YWluUHRy
PE5TTnVtYmVyPiBfc2l6ZTsKK30KKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aExpbmtJY29u
Oihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYpbGlua0ljb24KK3sKKyAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF91cmwgPSBhZG9wdE5T
KFsoTlNVUkwgKilsaW5rSWNvbi51cmwgY29weV0pOworICAgIF9taW1lVHlwZSA9IGFkb3B0TlMo
WyhOU1N0cmluZyAqKWxpbmtJY29uLm1pbWVUeXBlIGNvcHldKTsKKworICAgIGlmIChsaW5rSWNv
bi5zaXplKQorICAgICAgICBfc2l6ZSA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdp
dGhVbnNpZ25lZEludDpsaW5rSWNvbi5zaXplLnZhbHVlKCldKTsKKworICAgIHN3aXRjaCAobGlu
a0ljb24udHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6TGlua0ljb25UeXBlOjpGYXZpY29uOgor
ICAgICAgICBfaWNvblR5cGUgPSBXS0xpbmtJY29uVHlwZUZhdmljb247CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgV2ViQ29yZTo6TGlua0ljb25UeXBlOjpUb3VjaEljb246CisgICAgICAgIF9p
Y29uVHlwZSA9IFdLTGlua0ljb25UeXBlVG91Y2hJY29uOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYkNvcmU6OkxpbmtJY29uVHlwZTo6VG91Y2hQcmVjb21wb3NlZEljb246CisgICAgICAg
IF9pY29uVHlwZSA9IFdLTGlua0ljb25UeXBlVG91Y2hQcmVjb21wb3NlZEljb247CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBzZWxmOworfQorCistIChOU1VSTCAqKXVybAor
eworICAgIHJldHVybiBfdXJsLmdldCgpOworfQorCistIChOU1N0cmluZyAqKW1pbWVUeXBlCit7
CisgICAgcmV0dXJuIF9taW1lVHlwZS5nZXQoKTsKK30KKworLSAoTlNOdW1iZXIgKilzaXplCit7
CisgICAgcmV0dXJuIF9zaXplLmdldCgpOworfQorCistIChXS0xpbmtJY29uVHlwZSlpY29uVHlw
ZQoreworICAgIHJldHVybiBfaWNvblR5cGU7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQyMWU3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJzSW50ZXJu
YWwuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLTGlua0ljb25Q
YXJhbWV0ZXJzLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitzdHJ1Y3QgTGlua0ljb247Cit9CisKK0BpbnRlcmZhY2UgX1dLTGlua0ljb25QYXJhbWV0ZXJz
ICgpCisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhMaW5rSWNvbjooY29uc3QgV2ViQ29yZTo6
TGlua0ljb24mKWxpbmtJY29uOworCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjcyOWQ5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJXS0ZvdW5kYXRp
b24uaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkFQSUljb25Mb2FkaW5nQ2xp
ZW50LmgiCisjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorCitAY2xhc3MgV0tXZWJWaWV3OworQHByb3RvY29sIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJY29uTG9hZGluZ0RlbGVnYXRlIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBJY29uTG9hZGluZ0RlbGVnYXRlKFdLV2ViVmlldyAqKTsKKyAg
ICB+SWNvbkxvYWRpbmdEZWxlZ2F0ZSgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNv
bkxvYWRpbmdDbGllbnQ+IGNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50KCk7CisKKyAgICBSZXRhaW5Q
dHI8aWQgPF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+ID4gZGVsZWdhdGUoKTsKKyAgICB2b2lkIHNl
dERlbGVnYXRlKGlkIDxfV0tJY29uTG9hZGluZ0RlbGVnYXRlPik7CisKK3ByaXZhdGU6CisgICAg
Y2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7
CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0NsaWVudChJY29uTG9h
ZGluZ0RlbGVnYXRlJik7CisgICAgICAgIH5JY29uTG9hZGluZ0NsaWVudCgpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6
OkxpbmtJY29uJiwgRnVuY3Rpb248dm9pZCAoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92
ZXJyaWRlOworCisgICAgICAgIEljb25Mb2FkaW5nRGVsZWdhdGUmIG1faWNvbkxvYWRpbmdEZWxl
Z2F0ZTsKKyAgICB9OworCisgICAgV0tXZWJWaWV3ICptX3dlYlZpZXc7CisgICAgV2Vha09iakNQ
dHI8aWQgPF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKKworICAgIHN0cnVj
dCB7CisgICAgICAgIGJvb2wgd2ViVmlld1Nob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnNDb21w
bGV0aW9uSGFuZGxlciA6IDE7CisgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmOTYyOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1t
CkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJJY29uTG9hZGluZ0RlbGVnYXRlLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW5j
bHVkZSAiV0tOU0RhdGEuaCIKKyNpbmNsdWRlICJfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmgiCisj
aW5jbHVkZSAiX1dLTGlua0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK0ljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nRGVsZWdhdGUoV0tXZWJW
aWV3ICp3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisKK0ljb25Mb2Fk
aW5nRGVsZWdhdGU6On5JY29uTG9hZGluZ0RlbGVnYXRlKCkKK3sKK30KKworc3RkOjp1bmlxdWVf
cHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmNyZWF0ZUlj
b25Mb2FkaW5nQ2xpZW50KCkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9h
ZGluZ0NsaWVudD4oKnRoaXMpOworfQorCitSZXRhaW5QdHI8aWQgPF9XS0ljb25Mb2FkaW5nRGVs
ZWdhdGU+ID4gSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6ZGVsZWdhdGUoKQoreworICAgIHJldHVybiBt
X2RlbGVnYXRlLmdldCgpOworfQorCit2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6OnNldERlbGVn
YXRlKGlkIDxfV0tJY29uTG9hZGluZ0RlbGVnYXRlPiBkZWxlZ2F0ZSkKK3sKKyAgICBtX2RlbGVn
YXRlID0gZGVsZWdhdGU7CisKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2hvdWxkTG9h
ZEljb25XaXRoUGFyYW1ldGVyc0NvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpzaG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJz
OmNvbXBsZXRpb25IYW5kbGVyOildOworfQorCitJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9h
ZGluZ0NsaWVudDo6SWNvbkxvYWRpbmdDbGllbnQoSWNvbkxvYWRpbmdEZWxlZ2F0ZSYgaWNvbkxv
YWRpbmdEZWxlZ2F0ZSkKKyAgICA6IG1faWNvbkxvYWRpbmdEZWxlZ2F0ZShpY29uTG9hZGluZ0Rl
bGVnYXRlKQoreworfQorCitJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6
fkljb25Mb2FkaW5nQ2xpZW50KCkKK3sKK30KKwordHlwZWRlZiB2b2lkICheSWNvbkxvYWRDb21w
bGV0aW9uSGFuZGxlcikoTlNEYXRhKik7CisKK3ZvaWQgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNv
bkxvYWRpbmdDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlu
a0ljb24mIGxpbmtJY29uLCBGdW5jdGlvbjx2b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBpZiAoIW1faWNvbkxvYWRpbmdEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3U2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVyc0NvbXBsZXRpb25IYW5kbGVyKSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1faWNvbkxvYWRpbmdEZWxlZ2F0ZS5tX2RlbGVnYXRl
LmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8X1dLTGlu
a0ljb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19XS0xpbmtJY29uUGFyYW1l
dGVycyBhbGxvY10gX2luaXRXaXRoTGlua0ljb246bGlua0ljb25dKTsKKworICAgIFtkZWxlZ2F0
ZSB3ZWJWaWV3Om1faWNvbkxvYWRpbmdEZWxlZ2F0ZS5tX3dlYlZpZXcgc2hvdWxkTG9hZEljb25X
aXRoUGFyYW1ldGVyczpwYXJhbWV0ZXJzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl52b2lkIChJ
Y29uTG9hZENvbXBsZXRpb25IYW5kbGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAg
ICBpZiAobG9hZENvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihbbG9hZENvbXBsZXRpb25IYW5kbGVyID0gQmxvY2tfY29weShsb2FkQ29tcGxldGlvbkhh
bmRsZXIpXShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgeworICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpO
b25lIHx8ICFkYXRhKQorICAgICAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIo
bmlsKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvYWRDb21w
bGV0aW9uSGFuZGxlcih3cmFwcGVyKCpkYXRhKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICB9XTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4OTI1OGM0Li5j
NWEwODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkFQSUdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiQVBJSGlz
dG9yeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJB
UElJY29uTG9hZGluZ0NsaWVudC5oIgogI2luY2x1ZGUgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTmF2
aWdhdGlvbi5oIgpAQCAtNjI3LDYgKzYyOCwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VUlD
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+IHVpQ2xpZW50KQogICAgIHNldENh
blJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkpOwogfQogCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRp
bmdDbGllbnQ+IGljb25Mb2FkaW5nQ2xpZW50KQoreworICAgIGJvb2wgaGFzQ2xpZW50ID0gaWNv
bkxvYWRpbmdDbGllbnQuZ2V0KCk7CisgICAgaWYgKCFpY29uTG9hZGluZ0NsaWVudCkKKyAgICAg
ICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGlu
Z0NsaWVudD4oKTsKKyAgICBlbHNlCisgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBXVEZN
b3ZlKGljb25Mb2FkaW5nQ2xpZW50KTsKKworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUlj
b25Mb2FkaW5nQ2xpZW50KGhhc0NsaWVudCksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdl
UHJveHk6OnNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4gZmlu
ZENsaWVudCkKIHsKICAgICBpZiAoIWZpbmRDbGllbnQpIHsKQEAgLTY2NzMsNiArNjY4OCwzMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKICAgICBtX3Bh
Z2VDbGllbnQuZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiBpY29u
LCB1aW50NjRfdCBsb2FkSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1faWNvbkxvYWRpbmdDbGll
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faWNvbkxvYWRpbmdDbGllbnQtPmdldExvYWRE
ZWNpc2lvbkZvckljb24oaWNvbiwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8V2ViUGFnZVBy
b3h5PigqdGhpcyksIGxvYWRJZGVudGlmaWVyXShzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0
YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKSB7CisgICAgICAgIGlm
ICghaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2tGdW5jdGlvbikKKyAgICAg
ICAgICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6
OlVua25vd24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9v
bCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247CisgICAgICAgIHVpbnQ2NF90IG5l
d0NhbGxiYWNrSWRlbnRpZmllciA9IGRlY2lzaW9uID8gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSkgOiAwOworCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIs
IG5ld0NhbGxiYWNrSWRlbnRpZmllciksIG1fcGFnZUlEKTsKKyAgICB9KTsKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OmZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlm
aWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgZGF0YUNhbGxiYWNr
KGRhdGEsIGNhbGxiYWNrSWRlbnRpZmllcik7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRS
ZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChib29sIGRpc2FibGVkKQogewogICAgIGlmIChtX2lzUmVz
b3VyY2VDYWNoaW5nRGlzYWJsZWQgPT0gZGlzYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggYTViMWQ2Yi4uMDlhMTg4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTMwLDYgKzEzMCw3IEBAIGNsYXNzIEZpbmRNYXRj
aGVzQ2xpZW50OwogY2xhc3MgRm9ybUNsaWVudDsKIGNsYXNzIEZ1bGxzY3JlZW5DbGllbnQ7CiBj
bGFzcyBIaXN0b3J5Q2xpZW50OworY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQ7CiBjbGFzcyBMb2Fk
ZXJDbGllbnQ7CiBjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgTmF2aWdhdGlvbkNsaWVudDsKQEAg
LTM2OCw2ICszNjksOSBAQCBwdWJsaWM6CiAgICAgQVBJOjpVSUNsaWVudCYgdWlDbGllbnQoKSB7
IHJldHVybiAqbV91aUNsaWVudDsgfQogICAgIHZvaWQgc2V0VUlDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6VUlDbGllbnQ+KTsKIAorICAgIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQmIGljb25M
b2FkaW5nQ2xpZW50KCkgeyByZXR1cm4gKm1faWNvbkxvYWRpbmdDbGllbnQ7IH0KKyAgICB2b2lk
IHNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xp
ZW50Pik7CisKICAgICB2b2lkIGluaXRpYWxpemVXZWJQYWdlKCk7CiAKICAgICB2b2lkIGNsb3Nl
KCk7CkBAIC0xMTQxLDYgKzExNDUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlc3RvcmVT
Y3JvbGxQb3NpdGlvbigpOwogCisgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0
IFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik7CisKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAg
dm9pZCBzZXRXaW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2b2lk
IGdldFdpbmRvd0ZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCYpOwpAQCAtMTU5Myw2ICsxNjAwLDcg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IG1fcG9s
aWN5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IG1f
bmF2aWdhdGlvbkNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpIaXN0b3J5Q2xpZW50
PiBtX2hpc3RvcnlDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdD
bGllbnQ+IG1faWNvbkxvYWRpbmdDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rm9y
bUNsaWVudD4gbV9mb3JtQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50
PiBtX3VpQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+IG1fZmlu
ZENsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDA0NGM5ZmEuLjE5MzY4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDc4LDYgKzQ3OCw5IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBEaWRSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKQogCisgICAgR2V0TG9hZERlY2lzaW9uRm9ySWNvbihzdHJ1Y3QgV2ViQ29yZTo6TGlua0lj
b24gaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBGaW5pc2hlZExvYWRpbmdJY29uKHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpOworCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIERpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkKICAgICBI
YW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZShib29sIGhhc0FjdGl2ZVNl
c3Npb24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYjI4NjQxNS4uMTkxYTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODkzLDYgKzg5Myw5IEBACiAJCTUxMDZEN0M0
MThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA2RDdDMDE4QkRCRTczMDAwQUIx
NjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oICovOyB9OwogCQk1MTBBRkZCOTE2NTQyMDQ4
MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQUZGQjcxNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJl
c291cmNlTG9hZGVyLmNwcCAqLzsgfTsKIAkJNTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdl
YlJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTBBRkZCODE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuaCAq
LzsgfTsKKwkJNTEwRjU5MTAxRERFMjk2OTAwNDEyRkY1IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDNC
MjVFMUREQ0RGRDEwMDE0RkFDNiAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTEwRjU5MTExRERFMjk3
MDAwNDEyRkY1IC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEM5NzkxRERENzg1NDAwMzJDQUQzIC8qIF9X
S0xpbmtJY29uUGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTUxMEY1OTEyMURERTI5NzcwMDQxMkZGNSAvKiBfV0tMaW5rSWNvblBh
cmFtZXRlcnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUMwQzk3QTFEREQ3ODU0MDAzMkNBRDMgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tICov
OyB9OwogCQk1MTBGQkI5QTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBG
QkI5ODEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAgKi87IH07
CiAJCTUxMEZCQjlCMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBGQkI5OTEy
ODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oICovOyB9OwogCQk1MTEw
QUUwQzEzM0MxNkNCMDA3MjcxN0EgLyogV0tJY29uRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMEFFMEExMzNDMTZDQjAwNzI3MTdB
IC8qIFdLSWNvbkRhdGFiYXNlLmNwcCAqLzsgfTsKQEAgLTEwMDgsNiArMTAxMSw4IEBACiAJCTUx
QUNCQkExMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JCOUYxMjdBOEYy
QzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gKi87IH07CiAJCTUxQjE1QTg0
MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxNUE4MjEzODQzQTM5MDAzMjFB
RDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuY3BwICovOyB9OwogCQk1MUIxNUE4NTEzODQzQTM5
MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjE1QTgzMTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZp
cm9ubWVudFV0aWxpdGllcy5oICovOyB9OworCQk1MUMwQzk3NDFEREQ3NjAwMDAzMkNBRDMgLyog
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFDMEM5NzIxRERENzRGMDAwMzJDQUQzIC8qIEljb25Mb2FkaW5nRGVsZWdh
dGUuaCAqLzsgfTsKKwkJNTFDMEM5NzUxRERENzYwMzAwMzJDQUQzIC8qIEljb25Mb2FkaW5nRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUMwQzk3MzFEREQ3NEYwMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSAqLzsgfTsK
IAkJNTFDRDFDNUQxQjM0OTNBRjAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDRDFDNTkxQjM0
OTNBOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5SZWYuY3BwICovOyB9OwogCQk1MUNEMUM1
RTFCMzQ5M0I0MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpblJlZi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDRDFDNUExQjM0OTNBOTAwMTQyQ0E1
IC8qIFdLU2VjdXJpdHlPcmlnaW5SZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MUNEMUM2NTFCMzRCOUQ0MDAxNDJDQTUgLyogV0tTZWN1cml0
eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFDRDFDNUYxQjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC0zMDU5LDYgKzMwNjQsOCBA
QAogCQk1MTNFNDYyQzFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRl
bGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTQxMjk5MTFDNjQyODEwMDA1OUU3MTQgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYklEQkNvbm5lY3Rpb25U
b1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDEyOTkyMUM2NDI4
MTAwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxNDNCMjVFMUREQ0RGRDEwMDE0RkFDNiAvKiBfV0tJY29uTG9h
ZGluZ0RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0ljb25M
b2FkaW5nRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE0M0IyNjEx
REREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUljb25Mb2FkaW5nQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVx
dWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzUmVxdWVz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NTE5MTE5RDM1MDAwMDYz
QTcgLyogU2VydmljZXNDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlcnZpY2VzQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEyOCw2ICszMTM1LDExIEBACiAJCTUxQUND
OTM1MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMTVBODIxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmly
b25tZW50VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEVudmlyb25tZW50VXRpbGl0aWVzLmNwcDsgcGF0aCA9IHVuaXgvRW52aXJvbm1lbnRVdGlsaXRp
ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIxNUE4MzEzODQzQTM5MDAz
MjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRW52aXJvbm1lbnRVdGlsaXRpZXMuaDsgcGF0aCA9IHVuaXgvRW52aXJvbm1lbnRV
dGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDMEM5NzIxRERENzRG
MDAwMzJDQUQzIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUMwQzk3MzFEREQ3NEYwMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEljb25Mb2FkaW5nRGVs
ZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQzBDOTc5MURERDc4NTQw
MDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLTGlua0ljb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxQzBDOTdBMURERDc4NTQwMDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRl
cnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tMaW5rSWNv
blBhcmFtZXRlcnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQzBDOTdCMURE
RDc4NTQwMDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnNJbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tMaW5rSWNvblBhcmFtZXRlcnNJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNEMUM1OTFCMzQ5M0E5MDAxNDJDQTUg
LyogV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXS1NlY3VyaXR5T3JpZ2luUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFDRDFDNUExQjM0OTNBOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5SZWYuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTZWN1cml0eU9yaWdpblJlZi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNEMUM1RjFCMzRCOUM5MDAxNDJDQTUgLyog
V0tTZWN1cml0eU9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Nl
Y3VyaXR5T3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODkwLDYgKzQ5
MDIsOCBAQAogCQkJCTAwQjk2NjE3MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tICov
LAogCQkJCUNENzhFMTEyMURCN0Q3RUQwMDE0QTJERSAvKiBGdWxsc2NyZWVuQ2xpZW50Lm1tICov
LAogCQkJCUNENzhFMTEzMURCN0Q3RUQwMDE0QTJERSAvKiBGdWxsc2NyZWVuQ2xpZW50LmggKi8s
CisJCQkJNTFDMEM5NzIxRERENzRGMDAwMzJDQUQzIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUuaCAq
LywKKwkJCQk1MUMwQzk3MzFEREQ3NEYwMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5t
bSAqLywKIAkJCQkwRjBDMzY1OTE4QzA1NTU4MDBGNjA3RDcgLyogTGF5ZXJSZXByZXNlbnRhdGlv
bi5oICovLAogCQkJCTFBQkMzREY0MTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUu
aCAqLywKIAkJCQkxQUJDM0RGMzE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLm1t
ICovLApAQCAtNTI3OCw4ICs1MjkyLDEyIEBACiAJCQkJMkU3QTk0NDkxQkJEOTVDNjAwOTQ1NTQ3
IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oICovLAogCQkJCTM3QTY0RTU2MThGMzhGNDYwMEVC
MzBGMSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmggKi8sCiAJCQkJQ0Q3OEUxMTgxREI3RTVBRDAw
MTRBMkRFIC8qIF9XS0Z1bGxzY3JlZW5EZWxlZ2F0ZS5oICovLAorCQkJCTUxNDNCMjVFMUREQ0RG
RDEwMDE0RkFDNiAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggKi8sCiAJCQkJMzdBNjRFNTQx
OEYzOEUzQzAwRUIzMEYxIC8qIF9XS0lucHV0RGVsZWdhdGUuaCAqLywKIAkJCQkyRDc5MEE5QzFB
RDcwNTBEMDBBQjkwQjMgLyogX1dLTGF5b3V0TW9kZS5oICovLAorCQkJCTUxQzBDOTc5MURERDc4
NTQwMDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnMuaCAqLywKKwkJCQk1MUMwQzk3QTFE
REQ3ODU0MDAzMkNBRDMgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tICovLAorCQkJCTUxQzBD
OTdCMURERDc4NTQwMDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnNJbnRlcm5hbC5oICov
LAogCQkJCTkzMjM2MTFEMUIwMTVEQTgwMEZBOTIzMiAvKiBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5
bGUuaCAqLywKIAkJCQkxQTQzRTgyODE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmggKi8sCiAJCQkJMUE0M0U4MjcxODhGM0NEQzAwOUU0RDMwIC8qIF9XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSAqLywKQEAgLTYzOTUsNiArNjQxMyw3IEBACiAJCQkJ
OTNBODhCNDMxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCAqLywKIAkJCQk3
Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQu
aCAqLywKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50Lmgg
Ki8sCisJCQkJNTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50
LmggKi8sCiAJCQkJN0NEM0E0ODAxQTVEMDJGQTAwOTYyM0I4IC8qIEFQSU5hdmlnYXRpb24uY3Bw
ICovLAogCQkJCTdDRDNBNDgxMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0aW9uLmggKi8s
CiAJCQkJMkRGOUVFRUExQTc4MzZFRTAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25BY3Rpb24uaCAq
LywKQEAgLTc5NjQsNiArNzk4Myw3IEBACiAJCQkJMUE3ODY1QkExNkNBQzcxNTAwQUNFODNBIC8q
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTJCQjZEMTE0MTE3QjREMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyRDkwRDIxMjgxQzk2NjAwMUVCOTYyIC8q
IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
MEY1OTEwMURERTI5NjkwMDQxMkZGNSAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTBFQzYwMzEyNEE5RjJDMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc01h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDNkMwMTI0QkJEOUIwMDdFRjRBNSAvKiBQ
bHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDNzVFMTI0QkM3
QjIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtODA1
MCw2ICs4MDcwLDcgQEAKIAkJCQk0QTNDQzE4RDE5QjA2NDE5MDBEMTRBRUYgLyogVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRFODY0OTMxQjE2
NzUwNzAwQzgyRjQwIC8qIFZlcnNpb25DaGVja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMTI1
QzVFMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxMEY1OTExMURERTI5NzAwMDQxMkZGNSAvKiBfV0tMaW5rSWNvblBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMUI1RDVFMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3
R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4MTlCQTIx
ODYyODAwRTAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2Q0QxMTkxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFw
c2hvdFN0b3JlLmggaW4gSGVhZGVycyAqLywKQEAgLTg0MTYsNiArODQzNyw3IEBACiAJCQkJMUFB
MTMyMTIxOTFENTkyNDAwOUMxNDg5IC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkQzQTY1REYxQTdDM0E3RDAwQ0FDNjM3IC8qIFdLTmF2aWdhdGlv
blJlc3BvbnNlUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMThCRTE3OTE0NzQzRTZGMDBBOEZC
QjIgLyogV0tOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQzBDOTc0MURERDc2
MDAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MThCRTE3MTE0NzQzREIxMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMUEyRUM3NDE0OEQ1OUNBMDA4MTBENzEgLyogV0tOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyQzBDNEExNDZEREM4QTAw
MTZDOTExIC8qIFdLTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTY1
Nyw2ICs5Njc5LDcgQEAKIAkJCQlCQzFCRTFFMTEyRDU0QTQxMDAwNEEyMjggLyogV2ViR2VvbG9j
YXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTVGRTYxMkQ2OTcxNjAwMTJB
NzJBIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzBF
NjA2MTEyRDZCQTkxMDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMEY1OTEyMURERTI5NzcwMDQxMkZGNSAvKiBf
V0tMaW5rSWNvblBhcmFtZXRlcnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzU0Q0FDQzEyRDY0
MjkxMDA1QzY3QjAgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkMwRTYxODIxMkQ2Q0IxRDAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MDc0MTJE
NkJDMjAwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtOTc1Myw2ICs5Nzc2LDcgQEAKIAkJCQlCQ0Q1OTgwMDExMkI1N0JFMDBFQzhDMjMgLyog
V2ViUHJlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4NUZEN0YxOTM0MTY2NTAw
MDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzg0
RUIxODEyQTcxMDBDMDA4M0YyREEgLyogV2ViUHJlZmVyZW5jZXNNYWMubW0gaW4gU291cmNlcyAq
LywKKwkJCQk1MUMwQzk3NTFEREQ3NjAzMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDRDU5OEFEMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVm
ZXJlbmNlc1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQUU0MTEyRjVDMjYwMDMz
N0JBQiAvKiBXZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNkU3MEZCMThCMkRD
N0EwMEYyNEUyRSAvKiBXZWJQcm9jZXNzQ29jb2EubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNTQ2OTEwMi4uODRkZjI2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE3NTUsNCArMTc1NSwyNSBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogICAgIHdlYlBh
Z2UtPmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogfQogCitib29sIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojp1c2VJY29uTG9hZGluZ0NsaWVudCgpCit7CisgICAgcmV0dXJuIG1fdXNlSWNvbkxv
YWRpbmdDbGllbnQ7Cit9CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNp
c2lvbkZvckljb24oY29uc3QgTGlua0ljb24mIGljb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7
CisgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdlKCkgfSkKKyAgICAgICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGljb24sIGNhbGxiYWNrSUQpKTsKK30KKwordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgU2hhcmVkQnVmZmVy
KiBkYXRhKQoreworICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0p
IHsKKyAgICAgICAgaWYgKGRhdGEpCisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24obG9hZElkZW50aWZpZXIsIHsgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgp
IH0pKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGxvYWRJZGVudGlmaWVyLCB7IG51bGxw
dHIsIDAgfSkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMTdkZGE3Ni4uZGIyZjk0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUhhc0N1
c3RvbUNvbnRlbnRQcm92aWRlcjsgfQogCisgICAgdm9pZCBzZXRVc2VJY29uTG9hZGluZ0NsaWVu
dChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KSB7IG1fdXNlSWNvbkxvYWRpbmdDbGllbnQgPSB1
c2VJY29uTG9hZGluZ0NsaWVudDsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgZnJhbWVMb2FkZXJE
ZXN0cm95ZWQoKSBvdmVycmlkZTsKIApAQCAtMjU1LDEyICsyNTcsMTcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAKKyAgICBib29s
IHVzZUljb25Mb2FkaW5nQ2xpZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3QgY2FsbGJhY2tJRCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGxvYWRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKwogICAgIFdlYkZyYW1l
KiBtX2ZyYW1lOwogICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBtX3BsdWdpblZpZXc7CiAgICAgYm9v
bCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldzsKICAgICBib29sIG1fZGlkQ29tcGxldGVQ
YWdlVHJhbnNpdGlvbjsKICAgICBib29sIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXI7
CiAgICAgYm9vbCBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2FjaGU7CisgICAgYm9vbCBtX3VzZUljb25M
b2FkaW5nQ2xpZW50IHsgZmFsc2UgfTsKIH07CiAKIC8vIEFzIGxvbmcgYXMgRW1wdHlGcmFtZUxv
YWRlckNsaWVudCBleGlzdHMgaW4gV2ViQ29yZSwgdGhpcyBjYW4gcmV0dXJuIDAuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNDU2OTQ0OC4u
ZmFiOTUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNTY1MSw0ICs1NjUxLDE1IEBAIHZvaWQgV2ViUGFnZTo6ZGlkTG9zZVBvaW50ZXJM
b2NrKCkKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0Nh
bGxiYWNrSUQpCit7CisgICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVyID0gY29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAgZG9jdW1lbnRM
b2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LCBuZXdDYWxsYmFja0lEKTsKK30KKwordm9pZCBXZWJQYWdlOjpzZXRVc2VJY29uTG9hZGluZ0Ns
aWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KQoreworICAgIHN0YXRpY19jYXN0PFdlYkZy
YW1lTG9hZGVyQ2xpZW50Jj4oY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50
KCkpLnNldFVzZUljb25Mb2FkaW5nQ2xpZW50KHVzZUljb25Mb2FkaW5nQ2xpZW50KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCA0ODZhZjI5Li5jNTk1ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk3MSw2ICs5NzEsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKICNlbmRpZgogCisgICAgdm9pZCBkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldFVzZUljb25Mb2FkaW5nQ2xp
ZW50KGJvb2wpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNjMzYzA4OS4u
NDMzMTdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ0OCw2ICs0NDgsOSBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24odWludDMyX3QgZGlyZWN0aW9uKQogCisgICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihi
b29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgdWludDY0X3QgbmV3Q2FsbGJh
Y2tJRCkKKyAgICBTZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xp
ZW50KQorCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAgICAgR2FtZXBhZEFjdGl2aXR5KFZlY3RvcjxX
ZWJLaXQ6OkdhbWVwYWREYXRhPiBnYW1lcGFkRGF0YXMpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NThjMjU4Li42NGY3MmU5IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTYtMTItMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPiAK
KyAKKyAgICAgICAgUmUtbGFuZGluZzoKKyAgICAgICAgQWRkIF9XS0ljb25Mb2FkaW5nRGVsZWdh
dGUgU1BJLiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDg5NCAKKyAKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4gCisgICAg
ICAgIAorICAgICAgICBBZGQgTWluaUJyb3dzZXIgc3VwcG9ydCBmb3IgdGhpcyBuZXcgU1BJLCBj
b25maWd1cmFibGUgd2l0aCBhIHNldHRpbmcuIAorIAorICAgICAgICAqIE1pbmlCcm93c2VyL21h
Yy9TZXR0aW5nc0NvbnRyb2xsZXIuaDogCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRp
bmdzQ29udHJvbGxlci5tOiAKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIF9wb3B1bGF0
ZU1lbnVdKTogCisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVt
Ol0pOiAKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIGxvYWRzQWxsU2l0ZUljb25zXSk6
IAorICAgICAgICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgdG9nZ2xlTG9hZHNBbGxTaXRlSWNvbnM6
XSk6IAorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxl
ci5tOiAKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgYXdha2VGcm9tTmli
XSk6IAorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnNob3Vs
ZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6Y29tcGxldGlvbkhhbmRsZXI6XSk6IAorCiAyMDE2LTEy
LTA5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNv
LnVrPgogCiAgICAgICAgIEZlZG9yYSBhbHNvIG5lZWRzIGEgUEhQNyBjb25maWcgZmlsZSBhbHRl
cm5hdGl2ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJv
bGxlci5oIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oCmluZGV4
IGNiMjBhYmQuLjBlMDg2MmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0
aW5nc0NvbnRyb2xsZXIuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250
cm9sbGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBCT09MIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBCT09MIHZpc3VhbFZpZXdwb3J0RW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgQk9PTCBsYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQ7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYW5pbWF0ZWRJbWFnZUFzeW5jRGVj
b2RpbmdFbmFibGVkOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGFzeW5j
SW1hZ2VEZWNvZGluZ0VuYWJsZWQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJP
T0wgbG9hZHNBbGxTaXRlSWNvbnM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJP
T0wgdXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIE5TU3RyaW5nICpkZWZhdWx0VVJMOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1Nl
dHRpbmdzQ29udHJvbGxlci5tCmluZGV4IDE2MzMwNDMuLjZjMTMxZDQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KQEAgLTQxLDYgKzQxLDcgQEAKIHN0YXRp
YyBOU1N0cmluZyAqIGNvbnN0IFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkUHJl
ZmVyZW5jZUtleSA9IEAiU2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQiOwogc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgVGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlUHJlZmVy
ZW5jZUtleSA9IEAiVGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlIjsKIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXkgPSBA
IlJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBM
b2Fkc0FsbFNpdGVJY29uc0tleSA9IEAiTG9hZHNBbGxTaXRlSWNvbnMiOwogc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgVXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrS2V5ID0gQCJVc2VzR2FtZUNv
bnRyb2xsZXJGcmFtZXdvcmsiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgSW5jcmVtZW50YWxS
ZW5kZXJpbmdTdXBwcmVzc2VkUHJlZmVyZW5jZUtleSA9IEAiSW5jcmVtZW50YWxSZW5kZXJpbmdT
dXBwcmVzc2VkIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IEFjY2VsZXJhdGVkRHJhd2luZ0Vu
YWJsZWRQcmVmZXJlbmNlS2V5ID0gQCJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIjsKQEAgLTEz
Nyw2ICsxMzgsNyBAQCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbc2VsZiBfYWRkSXRlbVdp
dGhUaXRsZTpAIlVzZSBVSS1TaWRlIENvbXBvc2l0aW5nIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2ds
ZVVzZVVJU2lkZUNvbXBvc2l0aW5nOikgaW5kZW50ZWQ6WUVTXTsKICAgICBbc2VsZiBfYWRkSXRl
bVdpdGhUaXRsZTpAIkRpc2FibGUgUGVyLVdpbmRvdyBXZWIgUHJvY2Vzc2VzIiBhY3Rpb246QHNl
bGVjdG9yKHRvZ2dsZVBlcldpbmRvd1dlYlByb2Nlc3Nlc0Rpc2FibGVkOikgaW5kZW50ZWQ6WUVT
XTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIlNob3cgUmVzb3VyY2UgVXNhZ2UgT3Zl
cmxheSIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVTaG93UmVzb3VyY2VVc2FnZU92ZXJsYXk6KSBp
bmRlbnRlZDpZRVNdOworICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiTG9hZCBBbGwgU2l0
ZSBJY29ucyBQZXItUGFnZSIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVMb2Fkc0FsbFNpdGVJY29u
czopIGluZGVudGVkOllFU107CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJVc2UgR2Ft
ZUNvbnRyb2xsZXIuZnJhbWV3b3JrIG9uIG1hY09TIChSZXN0YXJ0IHJlcXVpcmVkKSIgYWN0aW9u
OkBzZWxlY3Rvcih0b2dnbGVVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcms6KSBpbmRlbnRlZDpZ
RVNdOwogCiAgICAgTlNNZW51SXRlbSAqZGVidWdPdmVybGF5c1N1Ym1lbnVJdGVtID0gW1tOU01l
bnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiRGVidWcgT3ZlcmxheXMiIGFjdGlvbjpuaWwg
a2V5RXF1aXZhbGVudDpAIiJdOwpAQCAtMjEzLDYgKzIxNSw4IEBAIC0gKEJPT0wpdmFsaWRhdGVN
ZW51SXRlbTooTlNNZW51SXRlbSAqKW1lbnVJdGVtCiAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0
ZTpbc2VsZiB0aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGVdID8gTlNPblN0YXRlIDogTlNP
ZmZTdGF0ZV07CiAgICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVTaG93UmVz
b3VyY2VVc2FnZU92ZXJsYXk6KSkKICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIHJl
c291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZV0gPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAg
ICBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUxvYWRzQWxsU2l0ZUljb25zOikp
CisgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiBsb2Fkc0FsbFNpdGVJY29uc10gPyBO
U09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAgICBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9y
KHRvZ2dsZVVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yazopKQogICAgICAgICBbbWVudUl0ZW0g
c2V0U3RhdGU6W3NlbGYgdXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrXSA/IE5TT25TdGF0ZSA6
IE5TT2ZmU3RhdGVdOwogICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlVXNl
VUlTaWRlQ29tcG9zaXRpbmc6KSkKQEAgLTM2Miw2ICszNjYsMTYgQEAgLSAodm9pZCl0b2dnbGVT
aG93UmVzb3VyY2VVc2FnZU92ZXJsYXk6KGlkKXNlbmRlcgogICAgIFtzZWxmIF90b2dnbGVCb29s
ZWFuRGVmYXVsdDpSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5XTsKIH0K
IAorLSAoQk9PTClsb2Fkc0FsbFNpdGVJY29ucworeworICAgIHJldHVybiBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkxvYWRzQWxsU2l0ZUljb25zS2V5
XTsKK30KKworLSAodm9pZCl0b2dnbGVMb2Fkc0FsbFNpdGVJY29uczooaWQpc2VuZGVyCit7Cisg
ICAgW3NlbGYgX3RvZ2dsZUJvb2xlYW5EZWZhdWx0OkxvYWRzQWxsU2l0ZUljb25zS2V5XTsKK30K
KwogLSAoQk9PTCl1c2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsKIHsKICAgICByZXR1cm4gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpVc2VzR2FtZUNv
bnRyb2xsZXJGcmFtZXdvcmtLZXldOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCBmM2FiZDlmLi5iNTg5OGZiIDEwMDY0NAot
LS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpA
QCAtMzgsMTEgKzM4LDEzIEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJOU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0ljb25Mb2FkaW5nRGVs
ZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tMaW5rSWNvblBhcmFtZXRlcnMuaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tVc2VySW5pdGlhdGVkQWN0aW9uLmg+CiAKIHN0YXRpYyB2b2lkKiBrZXlW
YWx1ZU9ic2VydmluZ0NvbnRleHQgPSAma2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0OwogCi1AaW50
ZXJmYWNlIFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICgpIDxXS05hdmlnYXRpb25EZWxlZ2F0
ZSwgV0tVSURlbGVnYXRlPgorQGludGVyZmFjZSBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciAo
KSA8V0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZSwgX1dLSWNvbkxvYWRpbmdEZWxl
Z2F0ZT4KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
IHsKQEAgLTczLDYgKzc1LDExIEBAIC0gKHZvaWQpYXdha2VGcm9tTmliCiAKICAgICBfd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBzZWxmOwogICAgIF93ZWJWaWV3LlVJRGVsZWdhdGUgPSBz
ZWxmOworCisgICAgLy8gVGhpcyBzZXR0aW5nIGluc3RhbGxzIHRoZSBuZXcgV0syIEljb24gTG9h
ZGluZyBEZWxlZ2F0ZSBhbmQgdGVzdHMgdGhhdCBtZWNoYW5pc20gYnkKKyAgICAvLyB0ZWxsaW5n
IFdlYktpdCB0byBsb2FkIGV2ZXJ5IGljb24gcmVmZXJlbmNlZCBieSB0aGUgcGFnZS4KKyAgICBp
ZiAoW1tTZXR0aW5nc0NvbnRyb2xsZXIgc2hhcmVkXSBsb2Fkc0FsbFNpdGVJY29uc10pCisgICAg
ICAgIF93ZWJWaWV3Ll9pY29uTG9hZGluZ0RlbGVnYXRlID0gc2VsZjsKICAgICAKICAgICBfd2Vi
Vmlldy5fb2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyA9IF9XS1JlbmRlcmluZ1Byb2dy
ZXNzRXZlbnRGaXJzdExheW91dAogICAgICAgICB8IF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKQEAgLTY1MCw2ICs2NTcsMTMgQEAgLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZToo
X1dLUmVuZGVyaW5nUHIKICAgICAgICAgTE9HKEAicmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2U6
ICVAIiwgQCJmaXJzdCBwYWludCBhZnRlciBzdXBwcmVzc2VkIGluY3JlbWVudGFsIHJlbmRlcmlu
ZyIpOwogfQogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkTG9h
ZEljb25XaXRoUGFyYW1ldGVyczooX1dLTGlua0ljb25QYXJhbWV0ZXJzICopcGFyYW1ldGVycyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCAoXikoTlNEYXRhKikpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoXnZvaWQgKE5TRGF0YSAqZGF0YSkgewor
ICAgICAgICBMT0coQCJJY29uIFVSTCAlQCByZWNlaXZlZCBpY29uIGRhdGEgb2YgbGVuZ3RoICV1
IiwgcGFyYW1ldGVycy51cmwsICh1bnNpZ25lZClkYXRhLmxlbmd0aCk7CisgICAgfSk7Cit9CisK
IEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296728</attachid>
            <date>2016-12-09 15:55:38 -0800</date>
            <delta_ts>2016-12-09 17:26:23 -0800</delta_ts>
            <desc>Fixed for EWS/CQ</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>66262</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZDQ4OWFmLi43MjkyZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTYtMTItMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlLWxhbmRpbmc6CisgICAgICAgIEFkZCBfV0tJY29uTG9hZGluZ0RlbGVnYXRlIFNQSS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDg5NAor
CisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChNYW51YWwgdGVzdGluZyBwb3NzaWJsZSBpbiBNaW5pQnJvd3NlciBub3csIFdLVFIg
dGVzdHMgY29taW5nIHNvb24gaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDg5NSkuCisKKyAgICAgICAgV2l0aCB0aGlzIGNsaWVudCwgV2ViQ29yZSB3aWxsIGFz
ayB0aGUgRnJhbWVMb2FkZXJDbGllbnQgYWJvdXQgZWFjaCBpY29uIGZvdW5kIGluIHRoZSA8aGVh
ZD4uCisKKyAgICAgICAgV2ViS2l0MiB3aWxsIHRoZW4gYXNrIHRoZSBlbWJlZGRpbmcgYXBwIC0g
Zm9yIGVhY2ggaWNvbiAtIGlmIGl0IHdhbnRzIHRoYXQgaWNvbiB0byBsb2FkLgorCisgICAgICAg
IEZvciBpY29ucyB0aGUgYXBwIGRlY2lkZXMgdG8gbG9hZCwgV2ViS2l0IHdpbGwgcGFzcyB0aGUg
ZGF0YSB0byB0aGUgYXBwIHdpdGhvdXQgc3RvcmluZyBsb2NhbGx5LgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbXBsaWNpdENsb3NlKToKKworICAg
ICAgICAqIGh0bWwvTGlua0ljb25Db2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aWNv
blNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUljb25zKToKKyAgICAgICAgKiBodG1s
L0xpbmtJY29uQ29sbGVjdG9yLmg6CisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZv
ckljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGlu
Z0ljb24pOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29u
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6Okljb25Mb2FkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6Okljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9MaW5rSWNvbi5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmguCisgICAgICAgIChX
ZWJDb3JlOjpMaW5rSWNvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtJY29uOjpk
ZWNvZGUpOgorCiAyMDE2LTEyLTA2ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1BhcnQgMiBvZiAyXSBBZGQgc3VwcG9ydCBmb3IgUEtDUzggZm9ybWF0IHdo
aWxlIGRvaW5nIFN1YnRsZUNyeXB0by5pbXBvcnRLZXkvZXhwb3J0S2V5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA1YzNhMmIyLi42ZGY5ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTI2NTEsNyArMjY1MSwxMiBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAg
ICAvLyByYW1pZmljYXRpb25zLCBhbmQgd2UgbmVlZCB0byBkZWNpZGUgd2hhdCBpcyB0aGUgUmln
aHQgVGhpbmcgVG8gRG8odG0pCiAgICAgRnJhbWUqIGYgPSBmcmFtZSgpOwogICAgIGlmIChmKSB7
Ci0gICAgICAgIGYtPmxvYWRlcigpLmljb24oKS5zdGFydExvYWRlcigpOworICAgICAgICBpZiAo
Zi0+bG9hZGVyKCkuY2xpZW50KCkudXNlSWNvbkxvYWRpbmdDbGllbnQoKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVyID0gbG9hZGVyKCkpCisgICAgICAgICAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPnN0YXJ0SWNvbkxvYWRpbmcoKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBmLT5sb2FkZXIoKS5pY29uKCkuc3RhcnRMb2FkZXIoKTsKKwogICAgICAgICBmLT5h
bmltYXRpb24oKS5zdGFydEFuaW1hdGlvbnNJZk5vdFN1c3BlbmRlZCh0aGlzKTsKIAogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGRpc3BhdGNoaW5nIHBlbmRpbmcgZXZlbnRzIGds
b2JhbGx5IG9uIGFsbCBEb2N1bWVudHMgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCmluZGV4IGJmNjZjMmYuLjI0YmI1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFdy
aXRlci5oIgorI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVT
aGVldHMuaCIKQEAgLTUzLDcgKzU0LDEwIEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgi
CiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJJY29uQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgIkljb25Mb2FkZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKKyNpbmNsdWRlICJMaW5rSWNvbkNvbGxlY3Rvci5oIgorI2luY2x1ZGUgIkxpbmtJY29u
VHlwZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNp
bmNsdWRlICJNZW1vcnlDYWNoZS5oIgpAQCAtMTcwMiw2ICsxNzA2LDQ2IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmdldEljb25EYXRhRm9ySWNvblVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
ICAgICBpY29uRGF0YWJhc2UoKS5pY29uRGF0YUZvckljb25VUkwodXJsU3RyaW5nLCBtX2ljb25E
YXRhQ2FsbGJhY2spOwogfQogCit2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5n
KCkKK3sKKyAgICBBU1NFUlQobV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkudXNlSWNvbkxvYWRp
bmdDbGllbnQoKSk7CisKKyAgICBzdGF0aWMgdWludDY0X3QgbmV4dEljb25DYWxsYmFja0lEID0g
MTsKKworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRv
Y3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8TGlua0ljb24+IGljb25zID0g
TGlua0ljb25Db2xsZWN0b3IgeyAqZG9jdW1lbnQgfS5pY29uc09mVHlwZXMoeyBMaW5rSWNvblR5
cGU6OkZhdmljb24sIExpbmtJY29uVHlwZTo6VG91Y2hJY29uLCBMaW5rSWNvblR5cGU6OlRvdWNo
UHJlY29tcG9zZWRJY29uIH0pOworCisgICAgaWYgKGljb25zLmlzRW1wdHkoKSkKKyAgICAgICAg
aWNvbnMuYXBwZW5kKHsgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoQVNDSUlMaXRl
cmFsKCIvZmF2aWNvbi5pY28iKSksIExpbmtJY29uVHlwZTo6RmF2aWNvbiwgU3RyaW5nKCksIHN0
ZDo6bnVsbG9wdCB9KTsKKworICAgIGZvciAoYXV0byYgaWNvbiA6IGljb25zKSB7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb24uYWRkKG5leHRJY29uQ2Fs
bGJhY2tJRCsrLCBpY29uKTsKKyAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZ2V0
TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCByZXN1bHQuaXRlcmF0b3ItPmtleSk7CisgICAgfQor
fQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wg
ZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lE
KQoreworICAgIGF1dG8gaWNvbiA9IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRha2UobG9h
ZElkZW50aWZpZXIpOworICAgIGlmICghZGVjaXNpb24gfHwgaWNvbi51cmwuaXNFbXB0eSgpIHx8
ICFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGljb25Mb2FkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CisgICAgaWNvbkxvYWRl
ci0+c3RhcnRMb2FkaW5nKCk7CisgICAgbV9pY29uTG9hZGVycy5zZXQoV1RGTW92ZShpY29uTG9h
ZGVyKSwgbmV3Q2FsbGJhY2tJRCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVk
TG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3sK
KyAgICBhdXRvIGxvYWRJZGVudGlmaWVyID0gbV9pY29uTG9hZGVycy50YWtlKCZsb2FkZXIpOwor
ICAgIEFTU0VSVChsb2FkSWRlbnRpZmllcik7CisKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGll
bnQoKS5maW5pc2hlZExvYWRpbmdJY29uKGxvYWRJZGVudGlmaWVyLCBidWZmZXIpOworfQorCiB2
b2lkIERvY3VtZW50TG9hZGVyOjpkaXNwYXRjaE9ubG9hZEV2ZW50cygpCiB7CiAgICAgbV93YXNP
bmxvYWREaXNwYXRjaGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKaW5kZXggNTQxZGZiZS4uNGQ3M2Y0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50V3JpdGVyLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNl
QmFzZS5oIgorI2luY2x1ZGUgIkxpbmtJY29uLmgiCiAjaW5jbHVkZSAiTG9hZFRpbWluZy5oIgog
I2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgi
CkBAIC03MSw2ICs3Miw3IEBAIGNsYXNzIENvbnRlbnRGaWx0ZXI7CiBjbGFzcyBGb3JtU3RhdGU7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOworY2xhc3MgSWNvbkxvYWRlcjsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAg
LTI4OSw2ICsyOTEsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSBjb25zdDsKIAorICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1
aW50NjRfdCBsb2FkSWRlbnRpZmllciwgdWludDY0X3QgbmV3Q2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBTaGFyZWRCdWZmZXIqKTsKKwogcHJv
dGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTQ0MSw5ICs0NDcsMTQgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSB7IGZhbHNlIH07CiAKKyAgICAv
LyBGb3IgSWNvbkRhdGFiYXNlLXN0eWxlIGxvYWRzCiAgICAgUmVmUHRyPEljb25Mb2FkRGVjaXNp
b25DYWxsYmFjaz4gbV9pY29uTG9hZERlY2lzaW9uQ2FsbGJhY2s7CiAgICAgUmVmUHRyPEljb25E
YXRhQ2FsbGJhY2s+IG1faWNvbkRhdGFDYWxsYmFjazsKIAorICAgIC8vIEZvciBJY29uTG9hZGlu
Z0NsaWVudC1zdHlsZSBsb2FkcworICAgIEhhc2hNYXA8dWludDY0X3QsIExpbmtJY29uPiBtX2lj
b25zUGVuZGluZ0xvYWREZWNpc2lvbjsKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29u
TG9hZGVyPiwgdWludDY0X3Q+IG1faWNvbkxvYWRlcnM7CisKICAgICBib29sIG1fc3VicmVzb3Vy
Y2VMb2FkZXJzQXJlUGFnZUNhY2hlQWNjZXB0YWJsZTsKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZWZhZTU5NC4uMzBhOGI2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgi
CisjaW5jbHVkZSAiTGlua0ljb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5o
IgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM1
NCw2ICszNTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0
aW9uKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNv
bnN0IExpbmtJY29uJiwgdWludDY0X3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExv
YWRpbmdJY29uKHVpbnQ2NF90LCBTaGFyZWRCdWZmZXIqKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25M
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKaW5k
ZXggZjlhNjI5YS4uYmE1OWE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5jcHAKQEAgLTQ0LDcgKzQ0LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEljb25M
b2FkZXI6Okljb25Mb2FkZXIoRnJhbWUmIGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKKyAg
ICA6IG1fZnJhbWUoJmZyYW1lKQorICAgICwgbV91cmwoZnJhbWUubG9hZGVyKCkuaWNvbigpLnVy
bCgpKQoreworfQorCitJY29uTG9hZGVyOjpJY29uTG9hZGVyKERvY3VtZW50TG9hZGVyJiBkb2N1
bWVudExvYWRlciwgY29uc3QgVVJMJiB1cmwpCisgICAgOiBtX2RvY3VtZW50TG9hZGVyKCZkb2N1
bWVudExvYWRlcikKKyAgICAsIG1fdXJsKHVybCkKIHsKIH0KIApAQCAtNTUsMTAgKzYyLDE5IEBA
IEljb25Mb2FkZXI6On5JY29uTG9hZGVyKCkKIAogdm9pZCBJY29uTG9hZGVyOjpzdGFydExvYWRp
bmcoKQogewotICAgIGlmIChtX3Jlc291cmNlIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCkpCisgICAg
QVNTRVJUKG1fZnJhbWUgfHwgbV9kb2N1bWVudExvYWRlcik7CisKKyAgICBpZiAobV9yZXNvdXJj
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZnJhbWUgJiYgIW1fZnJhbWUtPmRvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJl
cXVlc3QobV9mcmFtZS5sb2FkZXIoKS5pY29uKCkudXJsKCkpOworCisgICAgaWYgKG1fZG9jdW1l
bnRMb2FkZXIgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSBtX2RvY3VtZW50TG9hZGVy
ID8gbV91cmwgOiAgbV9mcmFtZS0+bG9hZGVyKCkuaWNvbigpLnVybCgpOwogICAgIHJlc291cmNl
UmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93KTsKIAogICAgIC8v
IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2sgaXMgYSBwbGFj
ZWhvbGRlciB2YWx1ZS4gSXQgZG9lcyBub3QgYWZmZWN0IHRoZSByZXF1ZXN0IHNpbmNlIENvbnRl
bnQgU2VjdXJpdHkgUG9saWN5IGRvZXMgbm90IGFwcGx5IHRvIHJhdyByZXNvdXJjZXMuCkBAIC02
NiwxMSArODIsMTIgQEAgdm9pZCBJY29uTG9hZGVyOjpzdGFydExvYWRpbmcoKQogCiAgICAgcmVx
dWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmljb24p
OwogCi0gICAgbV9yZXNvdXJjZSA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgYXV0byog
ZnJhbWUgPSBtX2ZyYW1lID8gbV9mcmFtZSA6IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCk7Cisg
ICAgbV9yZXNvdXJjZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICBpZiAobV9yZXNvdXJj
ZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICBlbHNlCi0gICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0IGxvYWQgZm9yIGljb24gYXQgdXJsICVzIiwg
bV9mcmFtZS5sb2FkZXIoKS5pY29uKCkudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwor
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzdGFydCBsb2FkIGZvciBpY29uIGF0IHVybCAl
cyIsIHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiB9CiAK
IHZvaWQgSWNvbkxvYWRlcjo6c3RvcExvYWRpbmcoKQpAQCAtMTAwLDEyICsxMTcsMTkgQEAgdm9p
ZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAg
ICAgfQogCiAgICAgTE9HKEljb25EYXRhYmFzZSwgIkljb25Mb2FkZXI6OmZpbmlzaExvYWRpbmco
KSAtIENvbW1pdHRpbmcgaWNvblVSTCAlcyB0byBkYXRhYmFzZSIsIG1fcmVzb3VyY2UtPnVybCgp
LnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmljb24oKS5j
b21taXRUb0RhdGFiYXNlKG1fcmVzb3VyY2UtPnVybCgpKTsKLSAgICAvLyBTZXR0aW5nIHRoZSBp
Y29uIGRhdGEgb25seSBhZnRlciBjb21taXR0aW5nIHRvIHRoZSBkYXRhYmFzZSBlbnN1cmVzIHRo
YXQgdGhlIGRhdGEgaXMKLSAgICAvLyBrZXB0IGluIG1lbW9yeSAoc28gaXQgZG9lcyBub3QgaGF2
ZSB0byBiZSByZWFkIGZyb20gdGhlIGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5KSwgc2luY2UKLSAg
ICAvLyB0aGVyZSBpcyBhIHBhZ2UgVVJMIHJlZmVyZW5jaW5nIGl0LgotICAgIGljb25EYXRhYmFz
ZSgpLnNldEljb25EYXRhRm9ySWNvblVSTChkYXRhLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmco
KSk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVJY29u
KCk7CisKKyAgICBpZiAobV9mcmFtZSkgeworICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5pY29u
KCkuY29tbWl0VG9EYXRhYmFzZShtX3Jlc291cmNlLT51cmwoKSk7CisKKyAgICAgICAgLy8gU2V0
dGluZyB0aGUgaWNvbiBkYXRhIG9ubHkgYWZ0ZXIgY29tbWl0dGluZyB0byB0aGUgZGF0YWJhc2Ug
ZW5zdXJlcyB0aGF0IHRoZSBkYXRhIGlzCisgICAgICAgIC8vIGtlcHQgaW4gbWVtb3J5IChzbyBp
dCBkb2VzIG5vdCBoYXZlIHRvIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJhc2UgYXN5bmNocm9ub3Vz
bHkpLCBzaW5jZQorICAgICAgICAvLyB0aGVyZSBpcyBhIHBhZ2UgVVJMIHJlZmVyZW5jaW5nIGl0
LgorICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRJY29uRGF0YUZvckljb25VUkwoZGF0YSwgbV9y
ZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGll
bnQoKS5kaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CisKKyAgICB9IGVsc2UKKyAgICAgICAgbV9k
b2N1bWVudExvYWRlci0+ZmluaXNoZWRMb2FkaW5nSWNvbigqdGhpcywgZGF0YSk7CisKICAgICBz
dG9wTG9hZGluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgK
aW5kZXggZmViMDM3MC4uMmRlNTNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25M
b2FkZXIuaApAQCAtMjcsMTggKzI3LDIxIEBACiAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsK
K2NsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiAKIGNsYXNzIEljb25Mb2FkZXIg
ZmluYWwgOiBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJY29uTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgSWNvbkxvYWRlcihGcmFtZSYpOworICAgIEljb25Mb2FkZXIoRG9jdW1l
bnRMb2FkZXImLCBjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIH5JY29uTG9hZGVyKCk7CiAKICAg
ICB2b2lkIHN0YXJ0TG9hZGluZygpOwpAQCAtNDcsNyArNTAsOSBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKIAotICAg
IEZyYW1lJiBtX2ZyYW1lOworICAgIEZyYW1lKiBtX2ZyYW1lIHsgbnVsbHB0ciB9OworICAgIERv
Y3VtZW50TG9hZGVyKiBtX2RvY3VtZW50TG9hZGVyIHsgbnVsbHB0ciB9OworICAgIFVSTCBtX3Vy
bDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJj
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSWNvbi5oCmluZGV4IDllNjc0ODEuLjAzMmNj
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0ljb24uaApAQCAtMzcsNiArMzcsMzQgQEAgc3Ry
dWN0IExpbmtJY29uIHsKICAgICBMaW5rSWNvblR5cGUgdHlwZTsKICAgICBTdHJpbmcgbWltZVR5
cGU7CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2l6ZTsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIExpbmtJY29uJik7CiB9
OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBMaW5rSWNvbjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB1cmwgPDwgbWltZVR5cGUgPDwg
c2l6ZTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0odHlwZSk7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IERlY29kZXI+Citib29sIExpbmtJY29uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTGlua0lj
b24mIHJlc3VsdCkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmwpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5taW1l
VHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRW51bShyZXN1bHQudHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTcx
ZTkyMy4uNmUzZmRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE2LTEyLTA5ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZS1sYW5kaW5nOgor
ICAgICAgICBBZGQgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZSBTUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4OTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFdpdGggdGhpcyBjbGllbnQsIFdlYkNv
cmUgd2lsbCBhc2sgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IGFib3V0IGVhY2ggaWNvbiBmb3VuZCBp
biB0aGUgPGhlYWQ+LgorCisgICAgICAgIFdlYktpdDIgd2lsbCB0aGVuIGFzayB0aGUgZW1iZWRk
aW5nIGFwcCAtIGZvciBlYWNoIGljb24gLSBpZiBpdCB3YW50cyB0aGF0IGljb24gdG8gbG9hZC4K
KworICAgICAgICBGb3IgaWNvbnMgdGhlIGFwcCBkZWNpZGVzIHRvIGxvYWQsIFdlYktpdCB3aWxs
IHBhc3MgdGhlIGRhdGEgdG8gdGhlIGFwcCB3aXRob3V0IHN0b3JpbmcgbG9jYWxseS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5oLgorICAgICAgICAoQVBJOjpJ
Y29uTG9hZGluZ0NsaWVudDo6fkljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKEFQSTo6SWNv
bkxvYWRpbmdDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb24pOgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2ljb25M
b2FkaW5nRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRJY29uTG9hZGluZ0Rl
bGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJY29uTG9hZGluZ0RlbGVn
YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3Iu
aC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJz
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuaC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFyYW1ldGVycy5tbTog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5oLgorICAg
ICAgICAoLVtfV0tMaW5rSWNvblBhcmFtZXRlcnMgX2luaXRXaXRoTGlua0ljb246XSk6CisgICAg
ICAgICgtW19XS0xpbmtJY29uUGFyYW1ldGVycyB1cmxdKToKKyAgICAgICAgKC1bX1dLTGlua0lj
b25QYXJhbWV0ZXJzIG1pbWVUeXBlXSk6CisgICAgICAgICgtW19XS0xpbmtJY29uUGFyYW1ldGVy
cyBzaXplXSk6CisgICAgICAgICgtW19XS0xpbmtJY29uUGFyYW1ldGVycyBpY29uVHlwZV0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJzSW50ZXJu
YWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5o
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNvbkxvYWRpbmdEZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6On5JY29uTG9hZGluZ0RlbGVnYXRl
KToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRp
bmdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlOjpkZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6OnNldERlbGVnYXRlKToK
KyAgICAgICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNvbkxvYWRpbmdDbGllbnQ6
Okljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0
ZTo6SWNvbkxvYWRpbmdDbGllbnQ6On5JY29uTG9hZGluZ0NsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVzZUlj
b25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQpOgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisKIDIwMTYtMTItMDkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBPbmNlIHdlIGNhbiBzZW5kIE1hY2ggbWVzc2FnZXMgYWdhaW4sIG1ha2Ugc3Vy
ZSB0byBzZW5kIGFueSBwZW5kaW5nIG91dGdvaW5nIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IGMwZjFhZGEuLjZmNWZkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtl
CkBAIC0yMDksNiArMjA5LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5tbQorICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
TGlua0ljb25QYXJhbWV0ZXJzLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24ubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdl
Ykluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tT
ZXNzaW9uU3RhdGUubW0KQEAgLTIzMiw2ICsyMzMsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKICAgICBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KICAgICBVSVByb2Nl
c3MvQ29jb2EvRmluZENsaWVudC5tbQogICAgIFVJUHJvY2Vzcy9Db2NvYS9GdWxsc2NyZWVuQ2xp
ZW50Lm1tCisgICAgVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KICAgICBV
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCiAgICAgVUlQcm9jZXNzL0NvY29hL1Jl
bW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5tbQogICAgIFVJUHJvY2Vzcy9D
b2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iYmJhMzRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTGlua0ljb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKwor
bmFtZXNwYWNlIElQQyB7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgQVBJ
IHsKKworY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfklj
b25Mb2FkaW5nQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TG9hZERlY2lzaW9u
Rm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIp
OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4MGQxNmE2Li5jZWRhY2YzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCIKICNp
bXBvcnQgIkZpbmRDbGllbnQuaCIKICNpbXBvcnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIKKyNpbXBv
cnQgIkljb25Mb2FkaW5nRGVsZWdhdGUuaCIKICNpbXBvcnQgIkxlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTmF2aWdhdGlvblN0YXRlLmgi
CkBAIC0xOTUsNiArMTk2LDcgQEAgV0tXZWJWaWV3KiBmcm9tV2ViUGFnZVByb3h5KFdlYktpdDo6
V2ViUGFnZVByb3h5JiBwYWdlKQogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyB7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPiBfbmF2aWdhdGlvblN0YXRlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlVJRGVsZWdhdGU+IF91aURlbGVnYXRlOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU+IF9pY29uTG9hZGlu
Z0RlbGVnYXRlOwogCiAgICAgX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMgX29ic2VydmVkUmVu
ZGVyaW5nUHJvZ3Jlc3NFdmVudHM7CiAKQEAgLTU2OCw2ICs1NzAsOCBAQCAtICh2b2lkKV9pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uCiAgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
OkZpbmRDbGllbnQ+KHNlbGYpKTsKICAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxm
KSk7CiAKKyAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKICAgICBfcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6RnVsbHNjcmVlbkNsaWVudD4oc2VsZikpOwogI2VuZGlmCkBAIC02ODIsNiArNjg2LDE3IEBA
IC0gKHZvaWQpc2V0VUlEZWxlZ2F0ZTooaWQ8V0tVSURlbGVnYXRlPilVSURlbGVnYXRlCiAgICAg
X3VpRGVsZWdhdGUtPnNldERlbGVnYXRlKFVJRGVsZWdhdGUpOwogfQogCistIChpZCA8X1dLSWNv
bkxvYWRpbmdEZWxlZ2F0ZT4pX2ljb25Mb2FkaW5nRGVsZWdhdGUKK3sKKyAgICByZXR1cm4gX2lj
b25Mb2FkaW5nRGVsZWdhdGUtPmRlbGVnYXRlKCkuYXV0b3JlbGVhc2UoKTsKK30KKworLSAodm9p
ZClfc2V0SWNvbkxvYWRpbmdEZWxlZ2F0ZTooaWQ8X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4paWNv
bkxvYWRpbmdEZWxlZ2F0ZQoreworICAgIF9wYWdlLT5zZXRJY29uTG9hZGluZ0NsaWVudChfaWNv
bkxvYWRpbmdEZWxlZ2F0ZS0+Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQoKSk7CisgICAgX2ljb25M
b2FkaW5nRGVsZWdhdGUtPnNldERlbGVnYXRlKGljb25Mb2FkaW5nRGVsZWdhdGUpOworfQorCiAt
IChXS05hdmlnYXRpb24gKilsb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewog
ICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKaW5kZXggN2Y1YTdmZS4uOWQ5NWE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTU2LDYgKzU2LDcgQEAg
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogQGNs
YXNzIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlOwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNs
YXNzIF9XS0hpdFRlc3RSZXN1bHQ7CitAY2xhc3MgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKIEBj
bGFzcyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIEBjbGFzcyBfV0tTZXNzaW9uU3RhdGU7CiBA
Y2xhc3MgX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyOwpAQCAtNjMsNiArNjQsNyBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBY3Rpb25UeXBlKSB7CiBAcHJvdG9jb2wg
V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlOwogQHByb3RvY29sIF9XS0RpYWdub3N0aWNMb2dnaW5n
RGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLRmluZERlbGVnYXRlOworQHByb3RvY29sIF9XS0ljb25M
b2FkaW5nRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLSW5wdXREZWxlZ2F0ZTsKIEBwcm90b2NvbCBf
V0tGdWxsc2NyZWVuRGVsZWdhdGU7CiAKQEAgLTc1LDYgKzc3LDcgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0T2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50czopIF9XS1JlbmRl
cmluZ1Byb2dyZXNzRXZlbnRzIF9vYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzOwogCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRIaXN0b3J5RGVsZWdhdGU6KSBp
ZCA8V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlPiBfaGlzdG9yeURlbGVnYXRlOworQHByb3BlcnR5
IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0SWNvbkxvYWRpbmdEZWxlZ2F0ZTopIGlkIDxf
V0tJY29uTG9hZGluZ0RlbGVnYXRlPiBfaWNvbkxvYWRpbmdEZWxlZ2F0ZTsKIAogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1VSTCAqX3VucmVhY2hhYmxlVVJMOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ljb25Mb2FkaW5nRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSWNvbkxvYWRp
bmdEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNDJmZmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0ljb25Mb2FkaW5nRGVsZWdhdGUuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNsYXNzIF9XS0xpbmtJY29uUGFyYW1ldGVyczsKKwor
QHByb3RvY29sIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCisK
Ky0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG91bGRMb2FkSWNvbldpdGhQ
YXJhbWV0ZXJzOihfV0tMaW5rSWNvblBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKSh2b2lkICheKShOU0RhdGEqKSkpY29tcGxldGlvbkhhbmRsZXI7CisK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI0OWE3YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25Q
YXJhbWV0ZXJzLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktp
dC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgorCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0xpbmtJ
Y29uVHlwZSkgeworICAgIFdLTGlua0ljb25UeXBlRmF2aWNvbiwKKyAgICBXS0xpbmtJY29uVHlw
ZVRvdWNoSWNvbiwKKyAgICBXS0xpbmtJY29uVHlwZVRvdWNoUHJlY29tcG9zZWRJY29uLAorfTsK
KworQGludGVyZmFjZSBfV0tMaW5rSWNvblBhcmFtZXRlcnMgOiBOU09iamVjdAorCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TVVJMICp1cmw7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIFdLTGlua0ljb25UeXBlIGljb25UeXBlOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbWltZVR5cGU7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TTnVtYmVyICpzaXplOworCitAZW5kCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tM
aW5rSWNvblBhcmFtZXRlcnMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0xpbmtJY29uUGFyYW1ldGVycy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kNTQ1ZGZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KQEAgLTAsMCArMSw4OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLTGlua0ljb25QYXJhbWV0
ZXJzSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPFdlYkNvcmUv
TGlua0ljb24uaD4KKworQGltcGxlbWVudGF0aW9uIF9XS0xpbmtJY29uUGFyYW1ldGVycyB7Cisg
ICAgUmV0YWluUHRyPE5TVVJMPiBfdXJsOworICAgIFdLTGlua0ljb25UeXBlIF9pY29uVHlwZTsK
KyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9taW1lVHlwZTsKKyAgICBSZXRhaW5QdHI8TlNOdW1i
ZXI+IF9zaXplOworfQorCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTGlua0ljb246KGNvbnN0
IFdlYkNvcmU6OkxpbmtJY29uJilsaW5rSWNvbgoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3VybCA9IGFkb3B0TlMoWyhOU1VS
TCAqKWxpbmtJY29uLnVybCBjb3B5XSk7CisgICAgX21pbWVUeXBlID0gYWRvcHROUyhbKE5TU3Ry
aW5nICopbGlua0ljb24ubWltZVR5cGUgY29weV0pOworCisgICAgaWYgKGxpbmtJY29uLnNpemUp
CisgICAgICAgIF9zaXplID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aFVuc2ln
bmVkSW50OmxpbmtJY29uLnNpemUudmFsdWUoKV0pOworCisgICAgc3dpdGNoIChsaW5rSWNvbi50
eXBlKSB7CisgICAgY2FzZSBXZWJDb3JlOjpMaW5rSWNvblR5cGU6OkZhdmljb246CisgICAgICAg
IF9pY29uVHlwZSA9IFdLTGlua0ljb25UeXBlRmF2aWNvbjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBXZWJDb3JlOjpMaW5rSWNvblR5cGU6OlRvdWNoSWNvbjoKKyAgICAgICAgX2ljb25UeXBl
ID0gV0tMaW5rSWNvblR5cGVUb3VjaEljb247CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vi
Q29yZTo6TGlua0ljb25UeXBlOjpUb3VjaFByZWNvbXBvc2VkSWNvbjoKKyAgICAgICAgX2ljb25U
eXBlID0gV0tMaW5rSWNvblR5cGVUb3VjaFByZWNvbXBvc2VkSWNvbjsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5TVVJMICopdXJsCit7CisgICAg
cmV0dXJuIF91cmwuZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5nICopbWltZVR5cGUKK3sKKyAgICBy
ZXR1cm4gX21pbWVUeXBlLmdldCgpOworfQorCistIChOU051bWJlciAqKXNpemUKK3sKKyAgICBy
ZXR1cm4gX3NpemUuZ2V0KCk7Cit9CisKKy0gKFdLTGlua0ljb25UeXBlKWljb25UeXBlCit7Cisg
ICAgcmV0dXJuIF9pY29uVHlwZTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJM
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlu
a0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yNDIxZTcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnNJbnRlcm5hbC5oCkBA
IC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tMaW5rSWNvblBhcmFtZXRl
cnMuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVj
dCBMaW5rSWNvbjsKK30KKworQGludGVyZmFjZSBfV0tMaW5rSWNvblBhcmFtZXRlcnMgKCkKKwor
LSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aExpbmtJY29uOihjb25zdCBXZWJDb3JlOjpMaW5rSWNv
biYpbGlua0ljb247CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iNzI5ZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaApAQCAtMCwwICsxLDczIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJSWNvbkxvYWRpbmdDbGllbnQuaCIK
KyNpbXBvcnQgIldlYWtPYmpDUHRyLmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0Bj
bGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nRGVsZWdhdGUoV0tXZWJWaWV3ICopOworICAgIH5JY29u
TG9hZGluZ0RlbGVnYXRlKCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGlu
Z0NsaWVudD4gY3JlYXRlSWNvbkxvYWRpbmdDbGllbnQoKTsKKworICAgIFJldGFpblB0cjxpZCA8
X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4gPiBkZWxlZ2F0ZSgpOworICAgIHZvaWQgc2V0RGVsZWdh
dGUoaWQgPF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+KTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBJ
Y29uTG9hZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50KEljb25Mb2FkaW5nRGVs
ZWdhdGUmKTsKKyAgICAgICAgfkljb25Mb2FkaW5nQ2xpZW50KCk7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0lj
b24mLCBGdW5jdGlvbjx2b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7
CisKKyAgICAgICAgSWNvbkxvYWRpbmdEZWxlZ2F0ZSYgbV9pY29uTG9hZGluZ0RlbGVnYXRlOwor
ICAgIH07CisKKyAgICBXS1dlYlZpZXcgKm1fd2ViVmlldzsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8
X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOworCisgICAgc3RydWN0IHsKKyAg
ICAgICAgYm9vbCB3ZWJWaWV3U2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVyc0NvbXBsZXRpb25I
YW5kbGVyIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWY5NjI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KQEAgLTAs
MCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIklj
b25Mb2FkaW5nRGVsZWdhdGUuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbmNsdWRlICJX
S05TRGF0YS5oIgorI2luY2x1ZGUgIl9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCIKKyNpbmNsdWRl
ICJfV0tMaW5rSWNvblBhcmFtZXRlcnNJbnRlcm5hbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNvbkxvYWRpbmdEZWxlZ2F0ZShXS1dlYlZpZXcgKndl
YlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKK3sKK30KKworSWNvbkxvYWRpbmdEZWxl
Z2F0ZTo6fkljb25Mb2FkaW5nRGVsZWdhdGUoKQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpJY29uTG9hZGluZ0NsaWVudD4gSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRp
bmdDbGllbnQoKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xp
ZW50PigqdGhpcyk7Cit9CisKK1JldGFpblB0cjxpZCA8X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4g
PiBJY29uTG9hZGluZ0RlbGVnYXRlOjpkZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG1fZGVsZWdh
dGUuZ2V0KCk7Cit9CisKK3ZvaWQgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQg
PF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+IGRlbGVnYXRlKQoreworICAgIG1fZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTaG91bGRMb2FkSWNvbldp
dGhQYXJhbWV0ZXJzQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6Y29tcGxl
dGlvbkhhbmRsZXI6KV07Cit9CisKK0ljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xp
ZW50OjpJY29uTG9hZGluZ0NsaWVudChJY29uTG9hZGluZ0RlbGVnYXRlJiBpY29uTG9hZGluZ0Rl
bGVnYXRlKQorICAgIDogbV9pY29uTG9hZGluZ0RlbGVnYXRlKGljb25Mb2FkaW5nRGVsZWdhdGUp
Cit7Cit9CisKK0ljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojp+SWNvbkxv
YWRpbmdDbGllbnQoKQoreworfQorCit0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25I
YW5kbGVyKShOU0RhdGEqKTsKKwordm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGlu
Z0NsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYg
bGlua0ljb24sIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwg
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGlmICghbV9pY29uTG9hZGluZ0RlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdT
aG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBhdXRvIGRlbGVnYXRlID0gbV9pY29uTG9hZGluZ0RlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7
CisgICAgaWYgKCFkZWxlZ2F0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxfV0tMaW5rSWNvblBh
cmFtZXRlcnM+IHBhcmFtZXRlcnMgPSBhZG9wdE5TKFtbX1dLTGlua0ljb25QYXJhbWV0ZXJzIGFs
bG9jXSBfaW5pdFdpdGhMaW5rSWNvbjpsaW5rSWNvbl0pOworCisgICAgW2RlbGVnYXRlIHdlYlZp
ZXc6bV9pY29uTG9hZGluZ0RlbGVnYXRlLm1fd2ViVmlldyBzaG91bGRMb2FkSWNvbldpdGhQYXJh
bWV0ZXJzOnBhcmFtZXRlcnMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XnZvaWQgKEljb25Mb2Fk
Q29tcGxldGlvbkhhbmRsZXIgbG9hZENvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGlmIChs
b2FkQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFts
b2FkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja19jb3B5KGxvYWRDb21wbGV0aW9uSGFuZGxlcild
KEFQSTo6RGF0YSogZGF0YSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgfHwg
IWRhdGEpCisgICAgICAgICAgICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFuZGxlcihuaWwpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9hZENvbXBsZXRpb25I
YW5kbGVyKHdyYXBwZXIoKmRhdGEpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgIH1dOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDg5MjU4YzQuLmM1YTA4OGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiQVBJR2VvbWV0cnkuaCIKICNpbmNsdWRlICJBUElIaXN0b3J5Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkFQSUljb25M
b2FkaW5nQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQu
aCIKICNpbmNsdWRlICJBUElMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9u
LmgiCkBAIC02MjcsNiArNjI4LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4gdWlDbGllbnQpCiAgICAgc2V0Q2FuUnVuTW9k
YWwobV91aUNsaWVudC0+Y2FuUnVuTW9kYWwoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVu
dD4gaWNvbkxvYWRpbmdDbGllbnQpCit7CisgICAgYm9vbCBoYXNDbGllbnQgPSBpY29uTG9hZGlu
Z0NsaWVudC5nZXQoKTsKKyAgICBpZiAoIWljb25Mb2FkaW5nQ2xpZW50KQorICAgICAgICBtX2lj
b25Mb2FkaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50
PigpOworICAgIGVsc2UKKyAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IFdURk1vdmUoaWNv
bkxvYWRpbmdDbGllbnQpOworCisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlSWNvbkxvYWRp
bmdDbGllbnQoaGFzQ2xpZW50KSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiBmaW5kQ2xpZW50
KQogewogICAgIGlmICghZmluZENsaWVudCkgewpAQCAtNjY3Myw2ICs2Njg4LDMwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogICAgIG1fcGFnZUNsaWVu
dC5kaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6Omdl
dExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIHVpbnQ2
NF90IGxvYWRJZGVudGlmaWVyKQoreworICAgIGlmICghbV9pY29uTG9hZGluZ0NsaWVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9pY29uTG9hZGluZ0NsaWVudC0+Z2V0TG9hZERlY2lzaW9u
Rm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxXZWJQYWdlUHJveHk+KCp0
aGlzKSwgbG9hZElkZW50aWZpZXJdKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKCFpc1Zh
bGlkKCkpIHsKKyAgICAgICAgICAgIGlmIChjYWxsYmFja0Z1bmN0aW9uKQorICAgICAgICAgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBib29sIGRlY2lz
aW9uID0gKGJvb2wpY2FsbGJhY2tGdW5jdGlvbjsKKyAgICAgICAgdWludDY0X3QgbmV3Q2FsbGJh
Y2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKSA6IDA7CisKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2Fs
bGJhY2tJZGVudGlmaWVyKSwgbV9wYWdlSUQpOworICAgIH0pOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3sKKyAgICBkYXRhQ2FsbGJhY2soZGF0YSwg
Y2FsbGJhY2tJZGVudGlmaWVyKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNldFJlc291cmNl
Q2FjaGluZ0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7CiAgICAgaWYgKG1faXNSZXNvdXJjZUNh
Y2hpbmdEaXNhYmxlZCA9PSBkaXNhYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCBhNWIxZDZiLi4wOWExODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0xMzAsNiArMTMwLDcgQEAgY2xhc3MgRmluZE1hdGNoZXNDbGll
bnQ7CiBjbGFzcyBGb3JtQ2xpZW50OwogY2xhc3MgRnVsbHNjcmVlbkNsaWVudDsKIGNsYXNzIEhp
c3RvcnlDbGllbnQ7CitjbGFzcyBJY29uTG9hZGluZ0NsaWVudDsKIGNsYXNzIExvYWRlckNsaWVu
dDsKIGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50OwpAQCAtMzY4LDYg
KzM2OSw5IEBAIHB1YmxpYzoKICAgICBBUEk6OlVJQ2xpZW50JiB1aUNsaWVudCgpIHsgcmV0dXJu
ICptX3VpQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpVSUNsaWVudD4pOwogCisgICAgQVBJOjpJY29uTG9hZGluZ0NsaWVudCYgaWNvbkxvYWRpbmdD
bGllbnQoKSB7IHJldHVybiAqbV9pY29uTG9hZGluZ0NsaWVudDsgfQorICAgIHZvaWQgc2V0SWNv
bkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KTsK
KwogICAgIHZvaWQgaW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIAogICAgIHZvaWQgY2xvc2UoKTsKQEAg
LTExNDEsNiArMTE0NSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBv
c2l0aW9uKCk7CiAKKyAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29y
ZTo6TGlua0ljb24mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9h
ZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKTsKKwogICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCBmb2N1c2VkKTsKICAgICB2b2lkIHNl
dFdpbmRvd0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZvaWQgZ2V0V2lu
ZG93RnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0Jik7CkBAIC0xNTkzLDYgKzE2MDAsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4gbV9wb2xpY3lDbGll
bnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gbV9uYXZpZ2F0
aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okhpc3RvcnlDbGllbnQ+IG1faGlz
dG9yeUNsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4g
bV9pY29uTG9hZGluZ0NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50
PiBtX2Zvcm1DbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+IG1fdWlD
bGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4gbV9maW5kQ2xpZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggMDQ0YzlmYS4uMTkzNjgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC00NzgsNiArNDc4LDkgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIERpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiAK
KyAgICBHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHN0cnVjdCBXZWJDb3JlOjpMaW5rSWNvbiBpY29u
LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3Qg
Y2FsbGJhY2tJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSk7CisKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgRGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQogICAgIEhhbmRsZUFj
dGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKGJvb2wgaGFzQWN0aXZlU2Vzc2lvbiwg
U3RyaW5nIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBlbGFwc2VkVGltZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBi
Mjg2NDE1Li4xOTFhNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTMsNiArODkzLDkgQEAKIAkJNTEwNkQ3QzQxOEJEQkU3
MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDZEN0MwMThCREJFNzMwMDBBQjE2NiAvKiBD
b250ZXh0TWVudUNvbnRleHREYXRhLmggKi87IH07CiAJCTUxMEFGRkI5MTY1NDIwNDgwMDFCQTA1
RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBBRkZCNzE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VM
b2FkZXIuY3BwICovOyB9OwogCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3Vy
Y2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMEFGRkI4MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oICovOyB9Owor
CQk1MTBGNTkxMDFEREUyOTY5MDA0MTJGRjUgLyogX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0M0IyNUUxRERD
REZEMTAwMTRGQUM2IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MTBGNTkxMTFEREUyOTcwMDA0MTJG
RjUgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQzk3OTFEREQ3ODU0MDAzMkNBRDMgLyogX1dLTGlua0lj
b25QYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNTEwRjU5MTIxRERFMjk3NzAwNDEyRkY1IC8qIF9XS0xpbmtJY29uUGFyYW1ldGVy
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzBD
OTdBMURERDc4NTQwMDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnMubW0gKi87IH07CiAJ
CTUxMEZCQjlBMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEZCQjk4MTI4
OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLzsgfTsKIAkJNTEw
RkJCOUIxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEZCQjk5MTI4OEM5NUUw
MEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmggKi87IH07CiAJCTUxMTBBRTBDMTMz
QzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEwQUUwQTEzM0MxNkNCMDA3MjcxN0EgLyogV0tJ
Y29uRGF0YWJhc2UuY3BwICovOyB9OwpAQCAtMTAwOCw2ICsxMDExLDggQEAKIAkJNTFBQ0JCQTEx
MjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI5RjEyN0E4RjJDMDBEMjAz
QjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSAqLzsgfTsKIAkJNTFCMTVBODQxMzg0M0Ez
OTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjE1QTgyMTM4NDNBMzkwMDMyMUFEOCAvKiBF
bnZpcm9ubWVudFV0aWxpdGllcy5jcHAgKi87IH07CiAJCTUxQjE1QTg1MTM4NDNBMzkwMDMyMUFE
OCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFCMTVBODMxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50
VXRpbGl0aWVzLmggKi87IH07CisJCTUxQzBDOTc0MURERDc2MDAwMDMyQ0FEMyAvKiBJY29uTG9h
ZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUMwQzk3MjFEREQ3NEYwMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oICov
OyB9OworCQk1MUMwQzk3NTFEREQ3NjAzMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzBDOTcz
MURERDc0RjAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tICovOyB9OwogCQk1MUNE
MUM1RDFCMzQ5M0FGMDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM1OTFCMzQ5M0E5MDAx
NDJDQTUgLyogV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgKi87IH07CiAJCTUxQ0QxQzVFMUIzNDkz
QjQwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM1QTFCMzQ5M0E5MDAxNDJDQTUgLyogV0tT
ZWN1cml0eU9yaWdpblJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxQ0QxQzY1MUIzNEI5RDQwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2lu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM1
RjFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTMwNTksNiArMzA2NCw4IEBACiAJCTUx
M0U0NjJDMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDEy
OTkxMUM2NDI4MTAwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0MTI5OTIxQzY0MjgxMDAwNTlF
NzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTE0M0IyNUUxRERDREZEMTAwMTRGQUM2IC8qIF9XS0ljb25Mb2FkaW5nRGVs
ZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSWNvbkxvYWRpbmdE
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTQzQjI2MTFEREQwREEw
MDAxNEZBQzYgLyogQVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQVBJSWNvbkxvYWRpbmdDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpc3RpY3NSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEQ5RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBT
ZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vy
dmljZXNDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEQ5RjU2
MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTI4LDYgKzMxMzUsMTEgQEAKIAkJNTFBQ0M5MzUxNjI4
MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUIxNUE4MjEzODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRV
dGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW52aXJv
bm1lbnRVdGlsaXRpZXMuY3BwOyBwYXRoID0gdW5peC9FbnZpcm9ubWVudFV0aWxpdGllcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjE1QTgzMTM4NDNBMzkwMDMyMUFEOCAv
KiBFbnZpcm9ubWVudFV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBFbnZpcm9ubWVudFV0aWxpdGllcy5oOyBwYXRoID0gdW5peC9FbnZpcm9ubWVudFV0aWxpdGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUMwQzk3MjFEREQ3NEYwMDAzMkNB
RDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJY29uTG9hZGluZ0RlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxQzBDOTczMURERDc0RjAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSWNvbkxvYWRpbmdEZWxlZ2F0ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDMEM5NzkxRERENzg1NDAwMzJDQUQz
IC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tMaW5rSWNvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTFDMEM5N0ExRERENzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0xpbmtJY29uUGFyYW1l
dGVycy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDMEM5N0IxRERENzg1NDAw
MzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzU5MUIzNDkzQTkwMDE0MkNBNSAvKiBXS1Nl
Y3VyaXR5T3JpZ2luUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUNEMUM1QTFCMzQ5M0E5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpblJlZi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NlY3VyaXR5T3JpZ2luUmVmLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzVGMUIzNEI5QzkwMDE0MkNBNSAvKiBXS1NlY3Vy
aXR5T3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2VjdXJpdHlP
cmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4OTAsNiArNDkwMiw4IEBA
CiAJCQkJMDBCOTY2MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gKi8sCiAJCQkJ
Q0Q3OEUxMTIxREI3RDdFRDAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5DbGllbnQubW0gKi8sCiAJCQkJ
Q0Q3OEUxMTMxREI3RDdFRDAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5DbGllbnQuaCAqLywKKwkJCQk1
MUMwQzk3MjFEREQ3NEYwMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oICovLAorCQkJ
CTUxQzBDOTczMURERDc0RjAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tICovLAog
CQkJCTBGMEMzNjU5MThDMDU1NTgwMEY2MDdENyAvKiBMYXllclJlcHJlc2VudGF0aW9uLmggKi8s
CiAJCQkJMUFCQzNERjQxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5oICovLAog
CQkJCTFBQkMzREYzMTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUubW0gKi8sCkBA
IC01Mjc4LDggKzUyOTIsMTIgQEAKIAkJCQkyRTdBOTQ0OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dL
Rm9jdXNlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdBNjRFNTYxOEYzOEY0NjAwRUIzMEYxIC8q
IF9XS0Zvcm1JbnB1dFNlc3Npb24uaCAqLywKIAkJCQlDRDc4RTExODFEQjdFNUFEMDAxNEEyREUg
LyogX1dLRnVsbHNjcmVlbkRlbGVnYXRlLmggKi8sCisJCQkJNTE0M0IyNUUxRERDREZEMTAwMTRG
QUM2IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCAqLywKIAkJCQkzN0E2NEU1NDE4RjM4RTND
MDBFQjMwRjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oICovLAogCQkJCTJENzkwQTlDMUFENzA1MEQw
MEFCOTBCMyAvKiBfV0tMYXlvdXRNb2RlLmggKi8sCisJCQkJNTFDMEM5NzkxRERENzg1NDAwMzJD
QUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5oICovLAorCQkJCTUxQzBDOTdBMURERDc4NTQw
MDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnMubW0gKi8sCisJCQkJNTFDMEM5N0IxRERE
Nzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmggKi8sCiAJCQkJ
OTMyMzYxMUQxQjAxNURBODAwRkE5MjMyIC8qIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oICov
LAogCQkJCTFBNDNFODI4MTg4RjNDREMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaCAqLywKIAkJCQkxQTQzRTgyNzE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1tICovLApAQCAtNjM5NSw2ICs2NDEzLDcgQEAKIAkJCQk5M0E4OEI0
MzFCQzg4MjhDMDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5oICovLAogCQkJCTdDRTREMjA2
MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLAog
CQkJCTFBMjQ2NEYyMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2FkZXJDbGllbnQuaCAqLywKKwkJ
CQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYgLyogQVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLywK
IAkJCQk3Q0QzQTQ4MDFBNUQwMkZBMDA5NjIzQjggLyogQVBJTmF2aWdhdGlvbi5jcHAgKi8sCiAJ
CQkJN0NEM0E0ODExQTVEMDJGQTAwOTYyM0I4IC8qIEFQSU5hdmlnYXRpb24uaCAqLywKIAkJCQky
REY5RUVFQTFBNzgzNkVFMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvbkFjdGlvbi5oICovLApAQCAt
Nzk2NCw2ICs3OTgzLDcgQEAKIAkJCQkxQTc4NjVCQTE2Q0FDNzE1MDBBQ0U4M0EgLyogUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MkJCNkQxMTQxMTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEOTBEMjEyODFDOTY2MDAxRUI5NjIgLyogUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRjU5MTAx
RERFMjk2OTAwNDEyRkY1IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBMEVDNjAzMTI0QTlGMkMwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRUM2QzAxMjRCQkQ5QjAwN0VGNEE1IC8qIFBsdWdpblBy
b2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRUM3NUUxMjRCQzdCMjAwN0VG
NEE1IC8qIFBsdWdpblByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDUwLDYgKzgw
NzAsNyBAQAogCQkJCTRBM0NDMThEMTlCMDY0MTkwMEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEU4NjQ5MzFCMTY3NTA3MDBD
ODJGNDAgLyogVmVyc2lvbkNoZWNrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQxMjVDNUUxODU3
RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTEwRjU5MTExRERFMjk3MDAwNDEyRkY1IC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkQxQjVENUUxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJl
Q29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDgxOUJBMjE4NjI4MDBF
MDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDZDRDExOTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3Rv
cmUuaCBpbiBIZWFkZXJzICovLApAQCAtODQxNiw2ICs4NDM3LDcgQEAKIAkJCQkxQUExMzIxMjE5
MUQ1OTI0MDA5QzE0ODkgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDNBNjVERjFBN0MzQTdEMDBDQUM2MzcgLyogV0tOYXZpZ2F0aW9uUmVzcG9u
c2VSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOEJFMTc5MTQ3NDNFNkYwMEE4RkJCMiAvKiBX
S05vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFDMEM5NzQxRERENzYwMDAwMzJD
QUQzIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOEJFMTcx
MTQ3NDNEQjEwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxQTJFQzc0MTQ4RDU5Q0EwMDgxMEQ3MSAvKiBXS05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTJDMEM0QTE0NkREQzhBMDAxNkM5MTEg
LyogV0tOb3RpZmljYXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjU3LDYgKzk2
NzksNyBAQAogCQkJCUJDMUJFMUUxMTJENTRBNDEwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvbkNs
aWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzBFNUZFNjEyRDY5NzE2MDAxMkE3MkEgLyog
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MDYxMTJE
NkJBOTEwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRjU5MTIxRERFMjk3NzAwNDEyRkY1IC8qIF9XS0xpbmtJ
Y29uUGFyYW1ldGVycy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNTRDQUNDMTJENjQyOTEwMDVD
NjdCMCAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzBFNjE4MjEyRDZDQjFEMDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTYwNzQxMkQ2QkMyMDAw
MTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05
NzUzLDYgKzk3NzYsNyBAQAogCQkJCUJDRDU5ODAwMTEyQjU3QkUwMEVDOEMyMyAvKiBXZWJQcmVm
ZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzg1RkQ3RjE5MzQxNjY1MDAwMTc3QzQg
LyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODRFQjE4MTJB
NzEwMEMwMDgzRjJEQSAvKiBXZWJQcmVmZXJlbmNlc01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTUxQzBDOTc1MURERDc2MDMwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNENTk4QUQxMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2Vz
U3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFBRTQxMTJGNUMyNjAwMzM3QkFCIC8q
IFdlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M2RTcwRkIxOEIyREM3QTAwRjI0
RTJFIC8qIFdlYlByb2Nlc3NDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCA1NDY5MTAyLi44NGRmMjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTc1NSw0ICsxNzU1LDI1IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiAgICAgd2ViUGFnZS0+ZGlk
UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiB9CiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnVzZUljb25Mb2FkaW5nQ2xpZW50KCkKK3sKKyAgICByZXR1cm4gbV91c2VJY29uTG9hZGluZ0Ns
aWVudDsKK30KKwordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9y
SWNvbihjb25zdCBMaW5rSWNvbiYgaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBp
ZiAoV2ViUGFnZSogd2ViUGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KQorICAgICAgICB3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldExvYWREZWNpc2lvbkZvckljb24oaWNv
biwgY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpbmdJY29uKHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBTaGFyZWRCdWZmZXIqIGRhdGEp
Cit7CisgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdlKCkgfSkgeworICAg
ICAgICBpZiAoZGF0YSkKKyAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihsb2FkSWRlbnRpZmllciwgeyByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24obG9hZElkZW50aWZpZXIsIHsgbnVsbHB0ciwgMCB9
KSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCAxN2RkYTc2Li5kYjJmOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZnJhbWVIYXND
dXN0b21Db250ZW50UHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyOyB9CiAKKyAgICB2b2lkIHNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wg
dXNlSWNvbkxvYWRpbmdDbGllbnQpIHsgbV91c2VJY29uTG9hZGluZ0NsaWVudCA9IHVzZUljb25M
b2FkaW5nQ2xpZW50OyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwogCkBAIC0yNTUsMTIgKzI1NywxNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSBvdmVycmlkZTsKIAorICAgIGJvb2wgdXNlSWNv
bkxvYWRpbmdDbGllbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvcklj
b24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgbG9hZElkZW50aWZpZXIs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOworCiAgICAgV2ViRnJhbWUqIG1fZnJh
bWU7CiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZVBhZ2VUcmFu
c2l0aW9uOwogICAgIGJvb2wgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcjsKICAgICBi
b29sIG1fZnJhbWVDYW1lRnJvbVBhZ2VDYWNoZTsKKyAgICBib29sIG1fdXNlSWNvbkxvYWRpbmdD
bGllbnQgeyBmYWxzZSB9OwogfTsKIAogLy8gQXMgbG9uZyBhcyBFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50IGV4aXN0cyBpbiBXZWJDb3JlLCB0aGlzIGNhbiByZXR1cm4gMC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0NTY5NDQ4Li5mYWI5NTNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC01NjUxLDQgKzU2NTEsMTUgQEAgdm9pZCBXZWJQYWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQog
fQogI2VuZGlmCiAKK3ZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29s
IGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgdWludDY0X3QgbmV3Q2FsbGJhY2tJ
RCkKK3sKKyAgICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBjb3JlUGFnZSgpLT5tYWluRnJh
bWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQorICAgICAgICBkb2N1bWVudExvYWRlci0+
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIsIG5ld0Nh
bGxiYWNrSUQpOworfQorCit2b2lkIFdlYlBhZ2U6OnNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJv
b2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCit7CisgICAgc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2Fk
ZXJDbGllbnQmPihjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKSkuc2V0
VXNlSWNvbkxvYWRpbmdDbGllbnQodXNlSWNvbkxvYWRpbmdDbGllbnQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDQ4NmFmMjkuLmM1OTVkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTcxLDYgKzk3MSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2
NF90IG5ld0NhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9v
bCk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA2MzNjMDg5Li40MzMxN2I0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtNDQ4LDYgKzQ0OCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogCiAgICAgU2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50
MzJfdCBkaXJlY3Rpb24pCiAKKyAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVj
aXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQor
ICAgIFNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCisK
ICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICBHYW1lcGFkQWN0aXZpdHkoVmVjdG9yPFdlYktpdDo6
R2FtZXBhZERhdGE+IGdhbWVwYWREYXRhcykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFlM2I1ZDQuLmQ2ZTYzZGQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAxNi0xMi0wOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+IAorIAorICAg
ICAgICBSZS1sYW5kaW5nOgorICAgICAgICBBZGQgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZSBTUEku
IAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODk0
IAorIAorICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLiAKKyAgICAgICAgCisg
ICAgICAgIEFkZCBNaW5pQnJvd3NlciBzdXBwb3J0IGZvciB0aGlzIG5ldyBTUEksIGNvbmZpZ3Vy
YWJsZSB3aXRoIGEgc2V0dGluZy4gCisgCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRp
bmdzQ29udHJvbGxlci5oOiAKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250
cm9sbGVyLm06IAorICAgICAgICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgX3BvcHVsYXRlTWVudV0p
OiAKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIHZhbGlkYXRlTWVudUl0ZW06XSk6IAor
ICAgICAgICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgbG9hZHNBbGxTaXRlSWNvbnNdKTogCisgICAg
ICAgICgtW1NldHRpbmdzQ29udHJvbGxlciB0b2dnbGVMb2Fkc0FsbFNpdGVJY29uczpdKTogCisg
ICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06IAor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBhd2FrZUZyb21OaWJdKTogCisg
ICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6c2hvdWxkTG9hZElj
b25XaXRoUGFyYW1ldGVyczpjb21wbGV0aW9uSGFuZGxlcjpdKTogCisKIDIwMTYtMTItMDkgIFJ5
YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSAzMi1i
aXQgYnVpbGQuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250
cm9sbGVyLmggYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmgKaW5k
ZXggOTNiNTliNS4uMGUwODYyYiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1Nl
dHRpbmdzQ29udHJvbGxlci5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0Nv
bnRyb2xsZXIuaApAQCAtNTIsNiArNTIsNyBAQCBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIEJPT0wgdmlzdWFsVmlld3BvcnRFbmFibGVkOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGxhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZDsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBhbmltYXRlZEltYWdlQXN5bmNE
ZWNvZGluZ0VuYWJsZWQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgbG9h
ZHNBbGxTaXRlSWNvbnM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgdXNl
c0dhbWVDb250cm9sbGVyRnJhbWV3b3JrOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIE5TU3RyaW5nICpkZWZhdWx0VVJMOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL1NldHRpbmdzQ29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdz
Q29udHJvbGxlci5tCmluZGV4IDE2MzMwNDMuLjZjMTMxZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01p
bmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KQEAgLTQxLDYgKzQxLDcgQEAKIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkUHJlZmVyZW5j
ZUtleSA9IEAiU2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQiOwogc3RhdGljIE5T
U3RyaW5nICogY29uc3QgVGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlUHJlZmVyZW5jZUtl
eSA9IEAiVGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlIjsKIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXkgPSBAIlJlc291
cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBMb2Fkc0Fs
bFNpdGVJY29uc0tleSA9IEAiTG9hZHNBbGxTaXRlSWNvbnMiOwogc3RhdGljIE5TU3RyaW5nICog
Y29uc3QgVXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrS2V5ID0gQCJVc2VzR2FtZUNvbnRyb2xs
ZXJGcmFtZXdvcmsiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgSW5jcmVtZW50YWxSZW5kZXJp
bmdTdXBwcmVzc2VkUHJlZmVyZW5jZUtleSA9IEAiSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVz
c2VkIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWRQ
cmVmZXJlbmNlS2V5ID0gQCJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIjsKQEAgLTEzNyw2ICsx
MzgsNyBAQCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRs
ZTpAIlVzZSBVSS1TaWRlIENvbXBvc2l0aW5nIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVVzZVVJ
U2lkZUNvbXBvc2l0aW5nOikgaW5kZW50ZWQ6WUVTXTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhU
aXRsZTpAIkRpc2FibGUgUGVyLVdpbmRvdyBXZWIgUHJvY2Vzc2VzIiBhY3Rpb246QHNlbGVjdG9y
KHRvZ2dsZVBlcldpbmRvd1dlYlByb2Nlc3Nlc0Rpc2FibGVkOikgaW5kZW50ZWQ6WUVTXTsKICAg
ICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIlNob3cgUmVzb3VyY2UgVXNhZ2UgT3ZlcmxheSIg
YWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVTaG93UmVzb3VyY2VVc2FnZU92ZXJsYXk6KSBpbmRlbnRl
ZDpZRVNdOworICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiTG9hZCBBbGwgU2l0ZSBJY29u
cyBQZXItUGFnZSIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVMb2Fkc0FsbFNpdGVJY29uczopIGlu
ZGVudGVkOllFU107CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJVc2UgR2FtZUNvbnRy
b2xsZXIuZnJhbWV3b3JrIG9uIG1hY09TIChSZXN0YXJ0IHJlcXVpcmVkKSIgYWN0aW9uOkBzZWxl
Y3Rvcih0b2dnbGVVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcms6KSBpbmRlbnRlZDpZRVNdOwog
CiAgICAgTlNNZW51SXRlbSAqZGVidWdPdmVybGF5c1N1Ym1lbnVJdGVtID0gW1tOU01lbnVJdGVt
IGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiRGVidWcgT3ZlcmxheXMiIGFjdGlvbjpuaWwga2V5RXF1
aXZhbGVudDpAIiJdOwpAQCAtMjEzLDYgKzIxNSw4IEBAIC0gKEJPT0wpdmFsaWRhdGVNZW51SXRl
bTooTlNNZW51SXRlbSAqKW1lbnVJdGVtCiAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpbc2Vs
ZiB0aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGVdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0
ZV07CiAgICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVTaG93UmVzb3VyY2VV
c2FnZU92ZXJsYXk6KSkKICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIHJlc291cmNl
VXNhZ2VPdmVybGF5VmlzaWJsZV0gPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAgICBlbHNl
IGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUxvYWRzQWxsU2l0ZUljb25zOikpCisgICAg
ICAgIFttZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiBsb2Fkc0FsbFNpdGVJY29uc10gPyBOU09uU3Rh
dGUgOiBOU09mZlN0YXRlXTsKICAgICBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2ds
ZVVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yazopKQogICAgICAgICBbbWVudUl0ZW0gc2V0U3Rh
dGU6W3NlbGYgdXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrXSA/IE5TT25TdGF0ZSA6IE5TT2Zm
U3RhdGVdOwogICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlVXNlVUlTaWRl
Q29tcG9zaXRpbmc6KSkKQEAgLTM2Miw2ICszNjYsMTYgQEAgLSAodm9pZCl0b2dnbGVTaG93UmVz
b3VyY2VVc2FnZU92ZXJsYXk6KGlkKXNlbmRlcgogICAgIFtzZWxmIF90b2dnbGVCb29sZWFuRGVm
YXVsdDpSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAo
Qk9PTClsb2Fkc0FsbFNpdGVJY29ucworeworICAgIHJldHVybiBbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkxvYWRzQWxsU2l0ZUljb25zS2V5XTsKK30K
KworLSAodm9pZCl0b2dnbGVMb2Fkc0FsbFNpdGVJY29uczooaWQpc2VuZGVyCit7CisgICAgW3Nl
bGYgX3RvZ2dsZUJvb2xlYW5EZWZhdWx0OkxvYWRzQWxsU2l0ZUljb25zS2V5XTsKK30KKwogLSAo
Qk9PTCl1c2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsKIHsKICAgICByZXR1cm4gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpVc2VzR2FtZUNvbnRyb2xs
ZXJGcmFtZXdvcmtLZXldOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIubQppbmRleCBmM2FiZDlmLi5iNTg5OGZiIDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtMzgs
MTEgKzM4LDEzIEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJOU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0ljb25Mb2FkaW5nRGVsZWdhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9fV0tMaW5rSWNvblBhcmFtZXRlcnMuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tVc2VySW5pdGlhdGVkQWN0aW9uLmg+CiAKIHN0YXRpYyB2b2lkKiBrZXlWYWx1ZU9i
c2VydmluZ0NvbnRleHQgPSAma2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0OwogCi1AaW50ZXJmYWNl
IFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICgpIDxXS05hdmlnYXRpb25EZWxlZ2F0ZSwgV0tV
SURlbGVnYXRlPgorQGludGVyZmFjZSBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciAoKSA8V0tO
YXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZSwgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4K
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHsKQEAg
LTczLDYgKzc1LDExIEBAIC0gKHZvaWQpYXdha2VGcm9tTmliCiAKICAgICBfd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBzZWxmOwogICAgIF93ZWJWaWV3LlVJRGVsZWdhdGUgPSBzZWxmOwor
CisgICAgLy8gVGhpcyBzZXR0aW5nIGluc3RhbGxzIHRoZSBuZXcgV0syIEljb24gTG9hZGluZyBE
ZWxlZ2F0ZSBhbmQgdGVzdHMgdGhhdCBtZWNoYW5pc20gYnkKKyAgICAvLyB0ZWxsaW5nIFdlYktp
dCB0byBsb2FkIGV2ZXJ5IGljb24gcmVmZXJlbmNlZCBieSB0aGUgcGFnZS4KKyAgICBpZiAoW1tT
ZXR0aW5nc0NvbnRyb2xsZXIgc2hhcmVkXSBsb2Fkc0FsbFNpdGVJY29uc10pCisgICAgICAgIF93
ZWJWaWV3Ll9pY29uTG9hZGluZ0RlbGVnYXRlID0gc2VsZjsKICAgICAKICAgICBfd2ViVmlldy5f
b2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyA9IF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZl
bnRGaXJzdExheW91dAogICAgICAgICB8IF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQKQEAgLTY1MCw2ICs2NTcsMTMgQEAgLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZTooX1dLUmVu
ZGVyaW5nUHIKICAgICAgICAgTE9HKEAicmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2U6ICVAIiwg
QCJmaXJzdCBwYWludCBhZnRlciBzdXBwcmVzc2VkIGluY3JlbWVudGFsIHJlbmRlcmluZyIpOwog
fQogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkTG9hZEljb25X
aXRoUGFyYW1ldGVyczooX1dLTGlua0ljb25QYXJhbWV0ZXJzICopcGFyYW1ldGVycyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCAoXikoTlNEYXRhKikpKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoXnZvaWQgKE5TRGF0YSAqZGF0YSkgeworICAgICAg
ICBMT0coQCJJY29uIFVSTCAlQCByZWNlaXZlZCBpY29uIGRhdGEgb2YgbGVuZ3RoICV1IiwgcGFy
YW1ldGVycy51cmwsICh1bnNpZ25lZClkYXRhLmxlbmd0aCk7CisgICAgfSk7Cit9CisKIEBlbmQK
IAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
      

    </bug>

</bugzilla>