<?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>145447</bug_id>
          
          <creation_ts>2015-05-28 15:37:17 -0700</creation_ts>
          <short_desc>Rename MediaSession to PlatformMediaSession in anticipation of Media Session API</short_desc>
          <delta_ts>2015-05-29 14:53:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>145411</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Rajca">mrajca</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>conrad_shultz</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1097979</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-05-28 15:37:17 -0700</bug_when>
    <thetext>As discussed with Eric Carlson and Jer Noble, we should rename MediaSession to PlatformMediaSession to reserve &quot;media session&quot; for the Media Session API (bug 145411).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097980</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-05-28 15:38:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/21149514&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098022</commentid>
    <comment_count>2</comment_count>
      <attachid>253879</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-05-28 17:05:14 -0700</bug_when>
    <thetext>Created attachment 253879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098026</commentid>
    <comment_count>3</comment_count>
      <attachid>253881</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-05-28 17:18:11 -0700</bug_when>
    <thetext>Created attachment 253881
Patch (re-based)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098030</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 17:20:58 -0700</bug_when>
    <thetext>Attachment 253881 did not pass style-queue:


ERROR: Source/WebCore/platform/audio/PlatformMediaSession.cpp:44:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 25 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>1098033</commentid>
    <comment_count>5</comment_count>
      <attachid>253883</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-05-28 17:33:11 -0700</bug_when>
    <thetext>Created attachment 253883
Patch (fixed GTK build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098034</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 17:36:17 -0700</bug_when>
    <thetext>Attachment 253883 did not pass style-queue:


ERROR: Source/WebCore/platform/audio/PlatformMediaSession.cpp:44:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 26 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>1098043</commentid>
    <comment_count>7</comment_count>
      <attachid>253885</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-05-28 18:21:31 -0700</bug_when>
    <thetext>Created attachment 253885
Patch (fixes Windows and iOS build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098044</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 18:23:06 -0700</bug_when>
    <thetext>Attachment 253885 did not pass style-queue:


ERROR: Source/WebCore/platform/audio/PlatformMediaSession.cpp:44:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 26 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>1098196</commentid>
    <comment_count>9</comment_count>
      <attachid>253885</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-29 14:53:51 -0700</bug_when>
    <thetext>Comment on attachment 253885
Patch (fixes Windows and iOS build)

Clearing flags on attachment: 253885

Committed r185006: &lt;http://trac.webkit.org/changeset/185006&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098197</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-29 14:53:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253879</attachid>
            <date>2015-05-28 17:05:14 -0700</date>
            <delta_ts>2015-05-28 17:18:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145447-20150528170500.patch</filename>
            <type>text/plain</type>
            <size>96656</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNkMGJiYjUwMDczMDdj
MzJmN2U5Njc4ZTQ1MmJiNjY0ODlmMzZkZi4uN2E2MzExZTVhMGQwZDhiZGYzY2YyOTRhOGY4MGVh
ZWM1MGEyZDFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxNS0wNS0yOCAgTWF0
dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIE1lZGlhU2Vzc2lv
biBhbmQgTWVkaWFTZXNzaW9uQ2xpZW50IHRvIFBsYXRmb3JtTWVkaWFTZXNzaW9uIGFuZCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCBzbyB3ZSBjYW4gdXNlIE1lZGlhU2Vzc2lvbiBmb3IgdGhl
IGZvcm1hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTWVkaWEgU2Vzc2lvbiBzcGVjLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NDQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5
YmFjayk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cHJlc2VudGF0aW9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpkaXNwbGF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpIVE1MTWVkaWFTZXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OnJlcXVpcmVzRnVsbHNjcmVl
bkZvclZpZGVvUGxheWJhY2spOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6
cmVzZXRSZXN0cmljdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdl
cjo6aGFzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFjdGl2ZUF1
ZGlvU2Vzc2lvblJlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmJlZ2lu
SW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVu
ZEludGVycnVwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92
ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUmVz
dHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
UmVzdHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVz
dHJpY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Np
b25XaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25SZXN0cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Mb2FkTWVkaWEp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxs
RW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtV2lsbFNsZWVwKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbURpZFdha2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwLgorICAgICAgICAoV2ViQ29yZTo6c3Rh
dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjp+UGxhdGZv
cm1NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246
OnNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdp
bkludGVycnVwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjbGllbnRXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246OnBhdXNlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVkaWFUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpwcmVzZW50YXRpb25UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFTZXNzaW9uOjp0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNl
c3Npb246OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnZpc2liaWxpdHlDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVm
ZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb246OmRpc3BsYXlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uRHVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvbkN1cnJlbnRU
aW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgu
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNhblBsYXlUb1dpcmVsZXNzUGxheWJh
Y2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmlzUGxh
eWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6
ZGlzcGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGll
bnQ6OnNldFNob3VsZEJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQ6OmVsZW1lbnRJc0hpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6OnNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Np
b25DbGllbnQ6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6OmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5
YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVu
dDo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6On5QbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxs
QmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25DYW5Mb2FkTWVkaWEpOgorICAgICAgICAoLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uOl0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcDoKKyAgICAgICAgKE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Omhh
bmRsZVBsYXliYWNrQ29tbWFuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXll
ckhhbmRsZVBsYXliYWNrQ29tbWFuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnJhdGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjplbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQpOgorCiAy
MDE1LTA1LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3Jhc2ggdW5kZXIgSUNVIHdpdGggQVNBTiBkdXJpbmcgZWRpdGluZy9zZWxlY3Rpb24v
bW92ZS1ieS13b3JkLXZpc3VhbGx5LWNyYXNoLXRlc3QtNS5odG1sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggYzhmNmQ1MTM3MzQ2
Y2ViOWE5MTBhNzk4MWNiMjg0MDJkZDAxYzVmZS4uOTBhYzQ5MGEyN2YyODUyNTYyMTBhNGE4ZTNk
MTI5ODY4N2UwOGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIFJlZlB0cjxBdWRpb0NvbnRleHQ+
IEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAvLyBDb25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4K
IEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEFj
dGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCi0gICAgLCBtX21lZGlhU2Vzc2lvbihNZWRpYVNlc3Np
b246OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVl
PEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiAgICAgLCBtX2dyYXBoT3duZXJUaHJlYWQoVW5k
ZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKIHsKQEAgLTE0NSw3ICsxNDUsNyBAQCBBdWRpb0NvbnRl
eHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiBBdWRpb0NvbnRleHQ6OkF1ZGlv
Q29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEFjdGl2ZURPTU9i
amVjdCgmZG9jdW1lbnQpCiAgICAgLCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKLSAgICAsIG1f
bWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fbWVkaWFT
ZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9ldmVu
dFF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKICAgICAs
IG1fZ3JhcGhPd25lclRocmVhZChVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyKQogewpAQCAtMTIw
MCw3ICsxMjAwLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjaygpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKLSAg
ICAgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJy
dXB0ZWQpCisgICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCiAgICAgICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6SW50
ZXJydXB0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTIwOSw3ICsxMjA5LDcgQEAg
dm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjaygpCiAKICAgICBSZWZQdHI8QXVkaW9D
b250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5k
KFtzdHJvbmdUaGlzXSB7Ci0gICAgICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBzdHJvbmdUaGlzLT5t
X21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OkludGVycnVwdGVkOworICAg
ICAgICBib29sIGludGVycnVwdGVkID0gc3Ryb25nVGhpcy0+bV9tZWRpYVNlc3Npb24tPnN0YXRl
KCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkOwogICAgICAgICBzdHJvbmdU
aGlzLT5zZXRTdGF0ZShpbnRlcnJ1cHRlZCA/IFN0YXRlOjpJbnRlcnJ1cHRlZCA6IFN0YXRlOjpT
dXNwZW5kZWQpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmgKaW5kZXggOWZmMzUzMjUxNTI4MjRkYjdiYmIzNWM4ODc0MzQyNWM5
NDU2ZDk5Zi4uNDM5NjhmMmZiYTkyYWNkYzk1ZDJjYmI0YzRhNTAzZWY5MjI0NmRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJNZWRpYUNhblN0
YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCi0jaW5jbHVkZSAiTWVk
aWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbmNsdWRl
IDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgpAQCAtNzYsNyArNzYsNyBAQCBjbGFzcyBQZXJpb2RpY1dhdmU7CiAvLyBBdWRpb0Nv
bnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVk
aW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgogLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2Vl
biB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmlu
ZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCiAKLWNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1Ymxp
YyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvbnRl
eHQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lciwgcHVibGljIE1lZGlhUHJvZHVjZXIsIHByaXZhdGUgTWVkaWFTZXNzaW9uQ2xp
ZW50IHsKK2NsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIE1lZGlh
UHJvZHVjZXIsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQgewogcHVibGljOgog
ICAgIC8vIENyZWF0ZSBhbiBBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8g
aGFyZHdhcmUuCiAgICAgc3RhdGljIFJlZlB0cjxBdWRpb0NvbnRleHQ+IGNyZWF0ZShEb2N1bWVu
dCYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTMwOCwxMyArMzA4LDEzIEBAIHByaXZhdGU6CiAgICAg
Ly8gTWFrZSBzdXJlIHRvIGRlcmVmZXJlbmNlIHRoZW0gaGVyZS4KICAgICB2b2lkIGRlcmVmVW5m
aW5pc2hlZFNvdXJjZU5vZGVzKCk7CiAKLSAgICAvLyBNZWRpYVNlc3Npb25DbGllbnQKLSAgICB2
aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0KLSAgICB2aXJ0dWFsIE1lZGlhU2Vz
c2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBNZWRpYVNlc3Npb246OldlYkF1ZGlvOyB9CisgICAgLy8gUGxhdGZvcm1NZWRpYVNlc3Npb25D
bGllbnQKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFU
eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1
ZGlvOyB9CisgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNl
bnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6V2ViQXVkaW87IH0KICAgICB2aXJ0dWFsIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBz
aG91bGRSZXN1bWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kUGxheWJhY2so
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSkgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVCYWNrZ3Jv
dW5kUGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICAvLyBFdmVudFRhcmdldApAQCAtMzYzLDcgKzM2Myw3IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPEF1ZGlvTm9kZSo+IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3Q7CiAgICAgVmVjdG9y
PFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+PiBtX3N0YXRlUmVhY3Rpb25zOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CisgICAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8R2VuZXJpY0V2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKIAogICAgIFJlZlB0
cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCAyMzgzNTQ4MTk5NTgyYTViMTQ4MWIwNWEx
MGNkODk5ZTU1ZDMzODAzLi40NjU5MGM0M2I5M2MwYmEwYmJhMDAzM2QzNWMxODNjOWFhNTI0Njc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
QEAgLTE5NzY0LDcgKzE5NzY0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXEZsb2F0Q29udmVyc2lvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cR2VuZXJpY1Rhc2tRdWV1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cYXVkaW9cQXVkaW9TZXNzaW9uLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb25NYW5hZ2Vy
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBTkdM
RVdlYktpdEJyaWRnZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcQXVkaW9UcmFja1ByaXZhdGUuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA1NWRjYWY2
ZjFlYmNkZWJlMDMxN2Y2ZjJiY2RmOTc3NzZjNTUyNzVlLi43ZGM4ZGNkNjQ1MGVmYTU5MTFlYmVk
OThjYTE0ODg1OWZjMjgzN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xNDQ5OCw3ICsxNDQ5OCw3IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb25N
YW5hZ2VyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxhdWRpbzwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cTWVk
aWFTZXNzaW9uLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9c
UGxhdGZvcm1NZWRpYVNlc3Npb24uaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGF1ZGlvPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXGdhbWVwYWRcTmF2aWdhdG9yR2FtZXBhZC5oIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNDQwYWNkN2I3ZTJhNDVhY2U1
ODQyZTc2MjZmNTUwMGRkNzhhODI3Li5mYmRhOTczNjg5Y2U2MzYwZmY5ZDRiNjM5Zjk2MTIyZTBj
OTE2NDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMTksOCArMTE5LDggQEAKIAkJMDcwOUQ3OTMxQUU1NTU3RTAwNEU0MkY4
IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDlENzkxMUFFNTU1N0UwMDRFNDJGOCAvKiBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDcwOUQ3OTUxQUU1NUEyOTAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3MDlENzk0MUFFNTVBMjkwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDcwOUZDNEUxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDlGQzREMTAyNURF
RTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi87IH07Ci0JCTA3MEUwOTE5MTg3
NUVFRkMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBNZWRpYVNl
c3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEUwOTFBMTg3NUVGNzEwMDNB
MUQzQyAvKiBNZWRpYVNlc3Npb24uY3BwICovOyB9OworCQkwNzBFMDkxOTE4NzVFRUZDMDAzQTFE
M0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzBFMDkx
QTE4NzVFRjcxMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwICovOyB9OwogCQkw
NzBGNTQ5ODE3RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRh
dGlvbkNsaWVudC5oICovOyB9OwogCQkwNzBGNTQ5RTE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzBGNTQ5RDE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDcxMTU4OTExN0RGNkY2NjAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzExNTg4RjE3REY2
MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLzsgfTsKQEAgLTcxMzQsOCAr
NzEzNCw4IEBACiAJCTA3MDlENzk0MUFFNTVBMjkwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcw
OUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNsaWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzBERDhGNTBGMDE4NjgwMDA3MjdERUIgLyogbWVkaWFDb250
cm9scy5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWVkaWFDb250cm9scy5jc3M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBNZWRp
YVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MEUwOTFBMTg3NUVGNzEwMDNBMUQz
QyAvKiBNZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWVkaWFTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwRTA5
MTgxODc1RUQ5MzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEY1
NDk3MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUNvbnN0
cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzBGNTQ5RDE3RjI0MDI3MDAxNjlFMDQgLyogQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25Db25zdW1lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzExNTg4RjE3REY2MzM3MDBFREZFMkIg
LyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMzU0OCwxNCArMjM1NDgsMTQgQEAKIAkJCQlGRDMxNjA2OTEyQjAyNkY3MDBDMUEzNTkg
LyogSFJURktlcm5lbC5oICovLAogCQkJCUZEMzE2MDZBMTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRG
UGFubmVyLmNwcCAqLywKIAkJCQlGRDMxNjA2QjEyQjAyNkY3MDBDMUEzNTkgLyogSFJURlBhbm5l
ci5oICovLAotCQkJCTA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3Bw
ICovLAotCQkJCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCAqLywK
IAkJCQlDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAg
Ki8sCiAJCQkJQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIu
aCAqLywKIAkJCQlGREIxNzAwMzE0QTJCQUIyMDBBMkI1RDkgLyogTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmNwcCAqLywKIAkJCQlGREIxNzAwNDE0QTJCQUIyMDBBMkI1RDkgLyogTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmggKi8sCiAJCQkJRkQzMTYwNkMxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5j
cHAgKi8sCiAJCQkJRkQzMTYwNkQxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5oICovLAorCQkJ
CTA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgKi8s
CisJCQkJMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmgg
Ki8sCiAJCQkJRkQzMTYwNkUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5jcHAgKi8sCiAJCQkJ
RkQzMTYwNkYxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5oICovLAogCQkJCUZEMzE2MDcwMTJC
MDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuY3BwICovLApAQCAtMjU3
OTksNyArMjU3OTksNiBAQAogCQkJCUQzQUExMEY0MTIzQTk4QUEwMDkyMTUyQiAvKiBNZWRpYVF1
ZXJ5TWF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0ExOURCMzFGNzAwMzg3NkQ3
IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQkVBRUFEMTlE
OTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1lZGlhU2Vzc2lvbk1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIwMEUxNUExQiAvKiBN
ZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk1RjE3QTlE
MDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjYwMjMsNiAr
MjYwMjIsNyBAQAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZv
cm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRUZDRDdDMTlEQjMzREMwMDM4NzZENyAv
KiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MEUw
OTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTMyODcxQzAwQjIwREVCNzAwNDkwMzVBIC8qIFBsYXRmb3JtTWVudURlc2NyaXB0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUJGNzAxMDBGRTg2RjYxMDA1RThERUMgLyogUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY5MDlB
QzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MjkzNzgsNyArMjkzNzgsNiBAQAogCQkJCUQzQUExMEYzMTIzQTk4QUEwMDkyMTUyQiAvKiBNZWRp
YVF1ZXJ5TWF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRUVGQ0Q3OTE5REIzMUY3MDAz
ODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREJF
QUVBQzE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0gaW4g
U291cmNlcyAqLywKLQkJCQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIw
MEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDdFREMzRUUxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yOTU0OSw2ICsyOTU0OCw3IEBACiAJCQkJMjY2MDFFQzAxNEIzQjlB
RDAwMTJDMEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkNBQTQ4NkYxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJRjU0NEY3ODgxNUNGQjJBODAwQUYzM0E4IC8qIFBsYXRmb3Jt
TG9jYWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAv
KiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUJGNzAwRjBG
RTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzUyNzhCMEMxN0YyMTJFQTAwM0EyOTk4IC8qIFBsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1OTg5MDJFMTRFOUIwRjgwMEU4RDE4QiAvKiBQ
bGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXVkaW9FbGVtZW50LmgKaW5kZXggY2RlY2YwZmMyZTU5MzBmYWU5NjRkNzI5NjBmZTM2NGQw
ZmQ2Njk4Mi4uNzVjNjc1NWFiOGI5ZWQwY2Q5ZjNmNGE1NGVlNmZmYTQ5MjI2MGUwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBIVE1MQXVkaW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYsIGJvb2wpOwogCi0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBw
cmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpB
dWRpbzsgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVz
ZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Np
b246OkF1ZGlvOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBhMGVmMTQyZjdiYmIxMWNiYTFhZjliZTAy
YTQ3MjEyMjBmZGIzYTFmLi5iNTg2ZDFjNTkxZGZmNmE3MTE0N2QzOWMyZTA3NzE1NTFkYjI0MWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQ1MzMsNyAr
NDUzMyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6c3RvcHBlZER1ZVRvRXJyb3JzKCkgY29u
c3QKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24oKSBj
b25zdAogewotICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRpYVNlc3Npb246
OkludGVycnVwdGVkKQorICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjE2NywzMyArNjE2NywzMyBAQCB1bnNpZ25lZCBsb25nIGxvbmcg
SFRNTE1lZGlhRWxlbWVudDo6ZmlsZVNpemUoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVR5cGUoKSBjb25z
dAorUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVR5cGUoKSBjb25zdAogewogICAgIGlmIChtX3BsYXllciAmJiBtX3JlYWR5U3RhdGUgPj0gSEFW
RV9NRVRBREFUQSkKLSAgICAgICAgcmV0dXJuIGhhc1ZpZGVvKCkgPyBNZWRpYVNlc3Npb246OlZp
ZGVvIDogTWVkaWFTZXNzaW9uOjpBdWRpbzsKKyAgICAgICAgcmV0dXJuIGhhc1ZpZGVvKCkgPyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8gOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW87
CiAKICAgICByZXR1cm4gcHJlc2VudGF0aW9uVHlwZSgpOwogfQogCi1NZWRpYVNlc3Npb246Ok1l
ZGlhVHlwZSBIVE1MTWVkaWFFbGVtZW50OjpwcmVzZW50YXRpb25UeXBlKCkgY29uc3QKK1BsYXRm
b3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgSFRNTE1lZGlhRWxlbWVudDo6cHJlc2VudGF0aW9u
VHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRlb1RhZykp
Ci0gICAgICAgIHJldHVybiBNZWRpYVNlc3Npb246OlZpZGVvOworICAgICAgICByZXR1cm4gUGxh
dGZvcm1NZWRpYVNlc3Npb246OlZpZGVvOwogCi0gICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6QXVk
aW87CisgICAgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbzsKIH0KIAotTWVkaWFT
ZXNzaW9uOjpEaXNwbGF5VHlwZSBIVE1MTWVkaWFFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0
CitQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RGlzcGxheVR5cGUgSFRNTE1lZGlhRWxlbWVudDo6ZGlz
cGxheVR5cGUoKSBjb25zdAogewogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlk
ZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQotICAgICAgICByZXR1cm4gTWVkaWFTZXNzaW9uOjpG
dWxsc2NyZWVuOworICAgICAgICByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246OkZ1bGxzY3Jl
ZW47CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAmIFZpZGVvRnVsbHNjcmVlbk1vZGVP
cHRpbWl6ZWQpCi0gICAgICAgIHJldHVybiBNZWRpYVNlc3Npb246Ok9wdGltaXplZDsKKyAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpPcHRpbWl6ZWQ7CiAgICAgaWYgKG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKLSAgICAgICAgcmV0
dXJuIE1lZGlhU2Vzc2lvbjo6Tm9ybWFsOworICAgICAgICByZXR1cm4gUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok5vcm1hbDsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBN
ZWRpYVNlc3Npb246Ok5vcm1hbDsKKyAgICByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5v
cm1hbDsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC02MjI1LDI4ICs2MjI1LDI4
IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVNlc3Npb25UaXRsZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY3VycmVudFNyYzsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUgY29tbWFuZCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUgY29tbWFuZCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpkaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoJXApIC0gJWkiLCB0aGlzLCBzdGF0aWNfY2FzdDxp
bnQ+KGNvbW1hbmQpKTsKIAogICAgIHN3aXRjaCAoY29tbWFuZCkgewotICAgIGNhc2UgTWVkaWFT
ZXNzaW9uOjpQbGF5Q29tbWFuZDoKKyAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5
Q29tbWFuZDoKICAgICAgICAgcGxheSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlh
U2Vzc2lvbjo6UGF1c2VDb21tYW5kOgorICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBh
dXNlQ29tbWFuZDoKICAgICAgICAgcGF1c2UoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBN
ZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQ6CisgICAgY2FzZSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFuZDoKICAgICAgICAgY2FuUGxheSgpID8g
cGxheSgpIDogcGF1c2UoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246
OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDoKKyAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQ6CiAgICAgICAgIGJlZ2luU2Nhbm5pbmco
QmFja3dhcmQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhU2Vzc2lvbjo6QmVnaW5T
ZWVraW5nRm9yd2FyZENvbW1hbmQ6CisgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVn
aW5TZWVraW5nRm9yd2FyZENvbW1hbmQ6CiAgICAgICAgIGJlZ2luU2Nhbm5pbmcoRm9yd2FyZCk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dh
cmRDb21tYW5kOgotICAgIGNhc2UgTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1h
bmQ6CisgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0JhY2t3YXJkQ29t
bWFuZDoKKyAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENv
bW1hbmQ6CiAgICAgICAgIGVuZFNjYW5uaW5nKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGQzMGIxOGY3Yzhh
MjcxYjM5YWQ5NDE5MTE3NTAxMjMxYjU0Y2ZmNGMuLjc0MDZjMWFjMmU4ZjA4Zjg3OThhOTRiMTNk
ODZhYzE4ZmEwYmZhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC05Nyw3ICs5Nyw3IEBAIGNsYXNzIE1lZGlhU3RyZWFtOwogCiBjbGFzcyBIVE1MTWVkaWFFbGVt
ZW50CiAgICAgOiBwdWJsaWMgSFRNTEVsZW1lbnQKLSAgICAsIHByaXZhdGUgTWVkaWFQbGF5ZXJD
bGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRp
YUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNv
bnRyb2xsZXJJbnRlcmZhY2UgLCBwdWJsaWMgTWVkaWFTZXNzaW9uQ2xpZW50LCBwcml2YXRlIE1l
ZGlhUHJvZHVjZXIKKyAgICAsIHByaXZhdGUgTWVkaWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRp
YVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIs
IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2Ug
LCBwdWJsaWMgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQsIHByaXZhdGUgTWVkaWFQcm9kdWNl
cgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAsIHByaXZhdGUgQXVkaW9UcmFja0NsaWVu
dAogICAgICwgcHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQKQEAgLTU2OCw3ICs1NjgsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGRXYWl0Rm9y
UmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVySGFuZGxlUGxh
eWJhY2tDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1h
bmQpIG92ZXJyaWRlIHsgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmQpOyB9
CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVySGFuZGxlUGxheWJhY2tDb21tYW5kKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkgb3ZlcnJp
ZGUgeyBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCk7IH0KICAgICB2aXJ0
dWFsIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gbWVkaWFQbGF5ZXJQcmVmZXJy
ZWRBdWRpb0NoYXJhY3RlcmlzdGljcygpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02OTAsMTcgKzY5
MCwxNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlTWVkaWFDb250cm9sc0luamVjdGVkU2Ny
aXB0KCk7CiAjZW5kaWYKIAotICAgIC8vIE1lZGlhU2Vzc2lvbkNsaWVudCBPdmVycmlkZXMKLSAg
ICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlw
ZSBkaXNwbGF5VHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNz
aW9uQ2xpZW50IE92ZXJyaWRlcworICAgIHZpcnR1YWwgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1l
ZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUGxhdGZvcm1NZWRpYVNlc3Npb246OkRpc3BsYXlUeXBlIGRpc3BsYXlU
eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3Vs
ZFJlc3VtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFTZXNzaW9uVGl0bGUo
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Npb25EdXJhdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGR1cmF0aW9uKCk7IH0KICAgICB2aXJ0dWFsIGRv
dWJsZSBtZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1
cnJlbnRUaW1lKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xD
b21tYW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29u
dHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91bmRQ
bGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYVNlc3Npb24uY3BwCmluZGV4IDMzZWExNThiOGY2OTgxMzQwYzRkMTdjMTA0ZDE1ZWVh
MWRkZTUyMjIuLjEyYjE0MGRlNGMwNDA4ZDQ5NDAyMTRlODc2MzA3NmJhZjM1MTVjN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcApAQCAtNzgsOCArNzgsOCBAQCBz
dGF0aWMgU3RyaW5nIHJlc3RyaWN0aW9uTmFtZShIVE1MTWVkaWFTZXNzaW9uOjpCZWhhdmlvclJl
c3RyaWN0aW9ucyByZXN0cmljdGlvbgogfQogI2VuZGlmCiAKLUhUTUxNZWRpYVNlc3Npb246OkhU
TUxNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCi0gICAgOiBNZWRpYVNl
c3Npb24oY2xpZW50KQorSFRNTE1lZGlhU2Vzc2lvbjo6SFRNTE1lZGlhU2Vzc2lvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQorICAgIDogUGxhdGZvcm1NZWRpYVNlc3Npb24o
Y2xpZW50KQogICAgICwgbV9yZXN0cmljdGlvbnMoTm9SZXN0cmljdGlvbnMpCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICAsIG1fdGFyZ2V0QXZhaWxhYmlsaXR5Q2hh
bmdlZFRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhU2Vzc2lvbjo6dGFyZ2V0QXZhaWxhYmlsaXR5Q2hh
bmdlZFRpbWVyRmlyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCmluZGV4
IGY5ODNiOWEzYWE4ZGM1M2ExNWExMzRjYzZhYTliZDljYWI1MGY4NGUuLjY4ZGI1ZDUyZjk5NzMw
NTdjY2U4YTkwMzdkZTc0NmQzYzVlNWI0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
U2Vzc2lvbi5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKFZJREVPKQogCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDEwICszOCwxMCBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxN
ZWRpYUVsZW1lbnQ7CiBjbGFzcyBTb3VyY2VCdWZmZXI7CiAKLWNsYXNzIEhUTUxNZWRpYVNlc3Np
b24gZmluYWwgOiBwdWJsaWMgTWVkaWFTZXNzaW9uIHsKK2NsYXNzIEhUTUxNZWRpYVNlc3Npb24g
ZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVNlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IEhUTUxNZWRpYVNlc3Npb24oTWVkaWFT
ZXNzaW9uQ2xpZW50Jik7CisgICAgZXhwbGljaXQgSFRNTE1lZGlhU2Vzc2lvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbkNsaWVudCYpOwogICAgIHZpcnR1YWwgfkhUTUxNZWRpYVNlc3Npb24oKSB7IH0K
IAogICAgIHZvaWQgcmVnaXN0ZXJXaXRoRG9jdW1lbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBlOGQ2Y2Q5MDA2NjIy
OTdkY2MzNzdmNzZiOWI0YzA1ZWQwYzY1ODE4Li5hZWE2YmE4YjgyZDBmMTc5OGM1ZWJlNmIzMGM2
MmQzN2YzMmU4YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAt
MTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgTWVk
aWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIE1lZGlhU2Vzc2lvbjo6VmlkZW87IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbzsgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaAppbmRleCA5YzZhMjQ2NjU0ZDQ0YjY5N2Rl
NmI5M2Q2N2QxMWZiZjMyMmZhMTU4Li5iN2Q5MTIwNGJmM2I2ODZiZmI3YmZhMDIxYzYxZDkzYTU4
MTU5NGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5k
TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlz
dGVuZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBSZW1vdGVDb21tYW5kTGlzdGVuZXJf
aAogI2RlZmluZSBSZW1vdGVDb21tYW5kTGlzdGVuZXJfaAogCi0jaW5jbHVkZSAiTWVkaWFTZXNz
aW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNs
aWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJv
bENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkg
PSAwOwogfTsKIAogY2xhc3MgUmVtb3RlQ29tbWFuZExpc3RlbmVyIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2OWI4NDZmMmNmY2ZkOTQ3ZDFlYTA2MjAyMmU1NjVhZDUzODIwYWNhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbi5oIgotCi0jaWYgRU5BQkxFKFZJREVPKQotI2luY2x1ZGUgIkhUTUxNZWRp
YUVsZW1lbnQuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXIu
aCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY29uc3QgZG91YmxlIGtDbGllbnREYXRhQnVmZmVyaW5nVGltZXJUaHJvdHRsZURlbGF5
ID0gMC4xOwotCi0jaWYgIUxPR19ESVNBQkxFRAotc3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlTmFt
ZShNZWRpYVNlc3Npb246OlN0YXRlIHN0YXRlKQotewotI2RlZmluZSBDQVNFKHN0YXRlKSBjYXNl
IE1lZGlhU2Vzc2lvbjo6c3RhdGU6IHJldHVybiAjc3RhdGUKLSAgICBzd2l0Y2ggKHN0YXRlKSB7
Ci0gICAgQ0FTRShJZGxlKTsKLSAgICBDQVNFKFBsYXlpbmcpOwotICAgIENBU0UoUGF1c2VkKTsK
LSAgICBDQVNFKEludGVycnVwdGVkKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gIiI7Ci19Ci0jZW5kaWYKLQotc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vz
c2lvbj4gTWVkaWFTZXNzaW9uOjpjcmVhdGUoTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCi17
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFTZXNzaW9uPihjbGllbnQpOwotfQot
Ci1NZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkK
LSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVy
KCp0aGlzLCAmTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCkKLSAg
ICAsIG1fc3RhdGUoSWRsZSkKLSAgICAsIG1fc3RhdGVUb1Jlc3RvcmUoSWRsZSkKLSAgICAsIG1f
bm90aWZ5aW5nQ2xpZW50KGZhbHNlKQotewotICAgIEFTU0VSVChtX2NsaWVudC5tZWRpYVR5cGUo
KSA+PSBOb25lICYmIG1fY2xpZW50Lm1lZGlhVHlwZSgpIDw9IFdlYkF1ZGlvKTsKLSAgICBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7Ci19Ci0K
LU1lZGlhU2Vzc2lvbjo6fk1lZGlhU2Vzc2lvbigpCi17Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLnJlbW92ZVNlc3Npb24oKnRoaXMpOwotfQotCi12b2lkIE1lZGlh
U2Vzc2lvbjo6c2V0U3RhdGUoU3RhdGUgc3RhdGUpCi17Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFT
ZXNzaW9uOjpzZXRTdGF0ZSglcCkgLSAlcyIsIHRoaXMsIHN0YXRlTmFtZShzdGF0ZSkpOwotICAg
IG1fc3RhdGUgPSBzdGF0ZTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmJlZ2luSW50ZXJydXB0
aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSkKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Np
b246OmJlZ2luSW50ZXJydXB0aW9uKCVwKSwgc3RhdGUgPSAlcywgaW50ZXJydXB0aW9uIGNvdW50
ID0gJWkiLCB0aGlzLCBzdGF0ZU5hbWUobV9zdGF0ZSksIG1faW50ZXJydXB0aW9uQ291bnQpOwot
Ci0gICAgaWYgKCsrbV9pbnRlcnJ1cHRpb25Db3VudCA+IDEgfHwgKHR5cGUgPT0gRW50ZXJpbmdC
YWNrZ3JvdW5kICYmIGNsaWVudCgpLm92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rp
b24oKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBzdGF0ZSgp
OwotICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0gdHJ1ZTsKLSAgICBzZXRTdGF0ZShJbnRlcnJ1cHRl
ZCk7Ci0gICAgY2xpZW50KCkuc3VzcGVuZFBsYXliYWNrKCk7Ci0gICAgbV9ub3RpZnlpbmdDbGll
bnQgPSBmYWxzZTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbihFbmRJ
bnRlcnJ1cHRpb25GbGFncyBmbGFncykKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246
OmVuZEludGVycnVwdGlvbiglcCkgLSBmbGFncyA9ICVpLCBzdGF0ZVRvUmVzdG9yZSA9ICVzLCBp
bnRlcnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIChpbnQpZmxhZ3MsIHN0YXRlTmFtZShtX3N0
YXRlVG9SZXN0b3JlKSwgbV9pbnRlcnJ1cHRpb25Db3VudCk7Ci0KLSAgICBpZiAoIW1faW50ZXJy
dXB0aW9uQ291bnQpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjplbmRJbnRl
cnJ1cHRpb24oJXApIC0gISEgaWdub3Jpbmcgc3B1cmlvdXMgaW50ZXJydXB0aW9uIGVuZCAhISIs
IHRoaXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKC0tbV9pbnRlcnJ1cHRp
b25Db3VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RhdGUgc3RhdGVUb1Jlc3RvcmUgPSBt
X3N0YXRlVG9SZXN0b3JlOwotICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBJZGxlOwotICAgIHNldFN0
YXRlKFBhdXNlZCk7Ci0KLSAgICBib29sIHNob3VsZFJlc3VtZSA9IGZsYWdzICYgTWF5UmVzdW1l
UGxheWluZyAmJiBzdGF0ZVRvUmVzdG9yZSA9PSBQbGF5aW5nOwotICAgIGNsaWVudCgpLm1heVJl
c3VtZVBsYXliYWNrKHNob3VsZFJlc3VtZSk7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uOjpjbGll
bnRXaWxsQmVnaW5QbGF5YmFjaygpCi17Ci0gICAgaWYgKG1fbm90aWZ5aW5nQ2xpZW50KQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICghTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjaygqdGhpcykpIHsKLSAgICAgICAgaWYg
KHN0YXRlKCkgPT0gSW50ZXJydXB0ZWQpCi0gICAgICAgICAgICBtX3N0YXRlVG9SZXN0b3JlID0g
UGxheWluZzsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHNldFN0YXRlKFBs
YXlpbmcpOwotICAgIHVwZGF0ZUNsaWVudERhdGFCdWZmZXJpbmcoKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBNZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCkKLXsK
LSAgICBpZiAobV9ub3RpZnlpbmdDbGllbnQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
TE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjpjbGllbnRXaWxsUGF1c2VQbGF5YmFjayglcCktIHN0
YXRlID0gJXMiLCB0aGlzLCBzdGF0ZU5hbWUobV9zdGF0ZSkpOwotICAgIGlmIChzdGF0ZSgpID09
IEludGVycnVwdGVkKSB7Ci0gICAgICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBQYXVzZWQ7Ci0gICAg
ICAgIExPRyhNZWRpYSwgIiAgICAgIHNldHRpbmcgc3RhdGVUb1Jlc3RvcmUgdG8gXCJQYXVzZWRc
IiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIHNldFN0YXRlKFBh
dXNlZCk7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25X
aWxsRW5kUGxheWJhY2soKnRoaXMpOwotICAgIGlmICghbV9jbGllbnREYXRhQnVmZmVyaW5nVGlt
ZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXIuc3RhcnRP
bmVTaG90KGtDbGllbnREYXRhQnVmZmVyaW5nVGltZXJUaHJvdHRsZURlbGF5KTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnBhdXNlU2Vzc2lvbigpCi17Ci0gICAg
TE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjpwYXVzZVNlc3Npb24oJXApIiwgdGhpcyk7Ci0gICAg
bV9jbGllbnQuc3VzcGVuZFBsYXliYWNrKCk7Ci19Ci0KLU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBl
IE1lZGlhU2Vzc2lvbjo6bWVkaWFUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQu
bWVkaWFUeXBlKCk7Ci19Ci0KLU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIE1lZGlhU2Vzc2lvbjo6
cHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50LnByZXNlbnRh
dGlvblR5cGUoKTsKLX0KLQotU3RyaW5nIE1lZGlhU2Vzc2lvbjo6dGl0bGUoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNlc3Npb25UaXRsZSgpOwotfQotCi1kb3VibGUgTWVk
aWFTZXNzaW9uOjpkdXJhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlh
U2Vzc2lvbkR1cmF0aW9uKCk7Ci19Ci0KLWRvdWJsZSBNZWRpYVNlc3Npb246OmN1cnJlbnRUaW1l
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uQ3VycmVudFRpbWUo
KTsKLX0KLSAgICAKLWJvb2wgTWVkaWFTZXNzaW9uOjpjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENv
bW1hbmRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQuY2FuUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kcygpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQotewotICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb246OnZpc2liaWxpdHlDaGFuZ2VkKCkKLXsKLSAgICBpZiAoIW1fY2xp
ZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fY2xpZW50RGF0YUJ1
ZmZlcmluZ1RpbWVyLnN0YXJ0T25lU2hvdChrQ2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyVGhyb3R0
bGVEZWxheSk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGlt
ZXJGaXJlZCgpCi17Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVm
ZmVyaW5nVGltZXJGaXJlZCglcCktIHZpc2libGUgPSAlcyIsIHRoaXMsIG1fY2xpZW50LmVsZW1l
bnRJc0hpZGRlbigpID8gImZhbHNlIiA6ICJ0cnVlIik7Ci0KLSAgICB1cGRhdGVDbGllbnREYXRh
QnVmZmVyaW5nKCk7Ci0KLSAgICBpZiAobV9zdGF0ZSAhPSBQbGF5aW5nIHx8ICFtX2NsaWVudC5l
bGVtZW50SXNIaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSgpKTsKLSAgICBpZiAo
KHJlc3RyaWN0aW9ucyAmIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFj
a1Jlc3RyaWN0ZWQpID09IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFj
a1Jlc3RyaWN0ZWQpCi0gICAgICAgIHBhdXNlU2Vzc2lvbigpOwotfQotCi12b2lkIE1lZGlhU2Vz
c2lvbjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpCi17Ci0gICAgaWYgKG1fY2xpZW50RGF0
YUJ1ZmZlcmluZ1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fY2xpZW50RGF0YUJ1ZmZlcmlu
Z1RpbWVyLnN0b3AoKTsKLQotICAgIG1fY2xpZW50LnNldFNob3VsZEJ1ZmZlckRhdGEoTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25DYW5Mb2FkTWVkaWEoKnRoaXMp
KTsKLX0KLQotYm9vbCBNZWRpYVNlc3Npb246OmlzSGlkZGVuKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9jbGllbnQuZWxlbWVudElzSGlkZGVuKCk7Ci19Ci0KLU1lZGlhU2Vzc2lvbjo6RGlzcGxh
eVR5cGUgTWVkaWFTZXNzaW9uOjpkaXNwbGF5VHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
Y2xpZW50LmRpc3BsYXlUeXBlKCk7Ci19Ci0KLVN0cmluZyBNZWRpYVNlc3Npb25DbGllbnQ6Om1l
ZGlhU2Vzc2lvblRpdGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLWRv
dWJsZSBNZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7Ci19Ci0KLWRvdWJsZSBNZWRp
YVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7Ci19Ci19Ci0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGVkZTA2MDE4YTFmZTVkNTcwOTc1ZjZiMjk5MGZiMjczNjhlNTc5ZTEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxODYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRpYVNlc3Npb25faAotI2RlZmlu
ZSBNZWRpYVNlc3Npb25faAotCi0jaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUg
IlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQot
I2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQuaCIKLSNlbmRpZgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7Ci1jbGFzcyBNZWRpYVNl
c3Npb25DbGllbnQ7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbgotI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCi0gICAgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldENsaWVudAot
I2VuZGlmCi17Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Np
b24+IGNyZWF0ZShNZWRpYVNlc3Npb25DbGllbnQmKTsKLQotICAgIE1lZGlhU2Vzc2lvbihNZWRp
YVNlc3Npb25DbGllbnQmKTsKLSAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb24oKTsKLQotICAgIGVu
dW0gTWVkaWFUeXBlIHsKLSAgICAgICAgTm9uZSA9IDAsCi0gICAgICAgIFZpZGVvLAotICAgICAg
ICBBdWRpbywKLSAgICAgICAgV2ViQXVkaW8sCi0gICAgfTsKLSAgICBNZWRpYVR5cGUgbWVkaWFU
eXBlKCkgY29uc3Q7Ci0gICAgTWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdDsKLQot
ICAgIGVudW0gU3RhdGUgewotICAgICAgICBJZGxlLAotICAgICAgICBQbGF5aW5nLAotICAgICAg
ICBQYXVzZWQsCi0gICAgICAgIEludGVycnVwdGVkLAotICAgIH07Ci0gICAgU3RhdGUgc3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0gICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSk7Ci0K
LSAgICBlbnVtIEludGVycnVwdGlvblR5cGUgewotICAgICAgICBTeXN0ZW1TbGVlcCwKLSAgICAg
ICAgRW50ZXJpbmdCYWNrZ3JvdW5kLAotICAgICAgICBTeXN0ZW1JbnRlcnJ1cHRpb24sCi0gICAg
fTsKLSAgICBlbnVtIEVuZEludGVycnVwdGlvbkZsYWdzIHsKLSAgICAgICAgTm9GbGFncyA9IDAs
Ci0gICAgICAgIE1heVJlc3VtZVBsYXlpbmcgPSAxIDw8IDAsCi0gICAgfTsKLSAgICB2b2lkIGJl
Z2luSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUpOwotICAgIHZvaWQgZW5kSW50ZXJydXB0
aW9uKEVuZEludGVycnVwdGlvbkZsYWdzKTsKLQotICAgIHZvaWQgYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kKCkgY29uc3Q7Ci0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckJhY2tn
cm91bmQoKSBjb25zdDsKLQotICAgIGJvb2wgY2xpZW50V2lsbEJlZ2luUGxheWJhY2soKTsKLSAg
ICBib29sIGNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCk7Ci0KLSAgICB2b2lkIHBhdXNlU2Vzc2lv
bigpOwotICAgIAotICAgIHZvaWQgdmlzaWJpbGl0eUNoYW5nZWQoKTsKLQotICAgIFN0cmluZyB0
aXRsZSgpIGNvbnN0OwotICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0OwotICAgIGRvdWJsZSBj
dXJyZW50VGltZSgpIGNvbnN0OwotCi0gICAgZW51bSBSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUg
ewotICAgICAgICBOb0NvbW1hbmQsCi0gICAgICAgIFBsYXlDb21tYW5kLAotICAgICAgICBQYXVz
ZUNvbW1hbmQsCi0gICAgICAgIFN0b3BDb21tYW5kLAotICAgICAgICBUb2dnbGVQbGF5UGF1c2VD
b21tYW5kLAotICAgICAgICBCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQsCi0gICAgICAgIEVu
ZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQsCi0gICAgICAgIEJlZ2luU2Vla2luZ0ZvcndhcmRDb21t
YW5kLAotICAgICAgICBFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsCi0gICAgfTsKLSAgICBib29s
IGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpOwotCi0g
ICAgZW51bSBEaXNwbGF5VHlwZSB7Ci0gICAgICAgIE5vcm1hbCwKLSAgICAgICAgRnVsbHNjcmVl
biwKLSAgICAgICAgT3B0aW1pemVkLAotICAgIH07Ci0gICAgRGlzcGxheVR5cGUgZGlzcGxheVR5
cGUoKSBjb25zdDsKLQotICAgIGJvb2wgaXNIaWRkZW4oKSBjb25zdDsKLQotICAgIHZpcnR1YWwg
Ym9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCi0gICAgLy8gTWVkaWFQbGF5YmFja1RhcmdldENsaWVudAotICAgIHZpcnR1YWwg
dm9pZCBzZXRQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3ZlcnJp
ZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldChib29sKSBvdmVycmlkZSB7IH0KLSNlbmRpZgotCi0jaWYgUExBVEZP
Uk0oSU9TKQotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1BsYXliYWNrVGFyZ2V0Um91dGVNb25p
dG9yaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSNlbmRpZgotCi1wcm90ZWN0ZWQ6Ci0g
ICAgTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsg
fQotCi1wcml2YXRlOgotICAgIHZvaWQgY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmlyZWQoKTsK
LSAgICB2b2lkIHVwZGF0ZUNsaWVudERhdGFCdWZmZXJpbmcoKTsKLQotICAgIE1lZGlhU2Vzc2lv
bkNsaWVudCYgbV9jbGllbnQ7Ci0gICAgVGltZXIgbV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXI7
Ci0gICAgU3RhdGUgbV9zdGF0ZTsKLSAgICBTdGF0ZSBtX3N0YXRlVG9SZXN0b3JlOwotICAgIGlu
dCBtX2ludGVycnVwdGlvbkNvdW50IHsgMCB9OwotICAgIGJvb2wgbV9ub3RpZnlpbmdDbGllbnQ7
Ci19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25DbGllbnQgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE1lZGlhU2Vzc2lvbkNsaWVudCk7Ci1wdWJsaWM6Ci0gICAgTWVkaWFTZXNzaW9uQ2xpZW50
KCkgeyB9Ci0gICAgCi0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5
cGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVz
ZW50YXRpb25UeXBlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpEaXNw
bGF5VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6Tm9ybWFs
OyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1
bWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgPSAwOwotCi0gICAg
dmlydHVhbCBTdHJpbmcgbWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGRv
dWJsZSBtZWRpYVNlc3Npb25EdXJhdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgZG91YmxlIG1l
ZGlhU2Vzc2lvbkN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGNh
blJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFNob3VsZEJ1ZmZl
ckRhdGEoYm9vbCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGVsZW1lbnRJc0hpZGRlbigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVCYWNrZ3JvdW5k
UGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCB3aXJl
bGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSB7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUGxheWluZ1RvV2lyZWxlc3NQbGF5
YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIHsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCB+TWVkaWFTZXNzaW9uQ2xpZW50KCkgeyB9Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBN
ZWRpYVNlc3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCBmNTcwNDc3OThlZDU5NjI5MjkzMWVkNzEzM2Q0
MWZmMGUzNTE0ZGQzLi5lMTc3MDUzZmQ2NjEwMzIyNWI4MTliZTdkZmZhNDVmODVjNmU0Y2U3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsMTQgKzUxLDE0IEBAIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6Ok1lZGlhU2Vzc2lvbk1hbmFnZXIoKQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnJlc2V0UmVzdHJpY3Rpb25zKCkKIHsKLSAgICBtX3Jlc3RyaWN0aW9uc1tNZWRpYVNlc3Npb246
OlZpZGVvXSA9IE5vUmVzdHJpY3Rpb25zOwotICAgIG1fcmVzdHJpY3Rpb25zW01lZGlhU2Vzc2lv
bjo6QXVkaW9dID0gTm9SZXN0cmljdGlvbnM7Ci0gICAgbV9yZXN0cmljdGlvbnNbTWVkaWFTZXNz
aW9uOjpXZWJBdWRpb10gPSBOb1Jlc3RyaWN0aW9uczsKKyAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW9dID0gTm9SZXN0cmljdGlvbnM7CisgICAgbV9yZXN0cmlj
dGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvXSA9IE5vUmVzdHJpY3Rpb25zOworICAg
IG1fcmVzdHJpY3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpb10gPSBOb1Jlc3Ry
aWN0aW9uczsKIH0KIAotYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMoTWVkaWFTZXNzaW9u
OjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKK2Jvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6aGFzKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBU1NFUlQo
dHlwZSA+PSBNZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBNZWRpYVNlc3Npb246OldlYkF1
ZGlvKTsKKyAgICBBU1NFUlQodHlwZSA+PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0
eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CiAKICAgICBmb3IgKGF1dG8q
IHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5cGUo
KSA9PSB0eXBlKQpAQCAtNzEsMTYgKzcxLDE2IEBAIGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6
aGFzKE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0CiBib29sIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkgY29uc3QKIHsKICAgICBmb3Ig
KGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5tZWRp
YVR5cGUoKSAhPSBNZWRpYVNlc3Npb246Ok5vbmUgJiYgc2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRp
YVNlc3Npb246OlN0YXRlOjpQbGF5aW5nKQorICAgICAgICBpZiAoc2Vzc2lvbi0+bWVkaWFUeXBl
KCkgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgc2Vzc2lvbi0+c3RhdGUoKSA9PSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RhdGU6OlBsYXlpbmcpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbnQgTWVkaWFTZXNz
aW9uTWFuYWdlcjo6Y291bnQoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKK2lu
dCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFU
eXBlIHR5cGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHR5cGUgPj0gTWVkaWFTZXNzaW9uOjpOb25l
ICYmIHR5cGUgPD0gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CisgICAgQVNTRVJUKHR5cGUgPj0g
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6V2ViQXVkaW8pOwogCiAgICAgaW50IGNvdW50ID0gMDsKICAgICBmb3IgKGF1dG8qIHNlc3Np
b24gOiBtX3Nlc3Npb25zKSB7CkBAIC05MSwzNCArOTEsMzQgQEAgaW50IE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OmNvdW50KE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0CiAgICAgcmV0
dXJuIGNvdW50OwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmJlZ2luSW50ZXJydXB0
aW9uKE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0eXBlKQordm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJy
dXB0aW9uVHlwZSB0eXBlKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmJlZ2luSW50ZXJydXB0aW9uIik7CiAKICAgICBtX2ludGVycnVwdGVkID0gdHJ1ZTsKLSAgICBW
ZWN0b3I8TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOworICAgIFZlY3RvcjxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKICAgICBmb3IgKGF1
dG8qIHNlc3Npb24gOiBzZXNzaW9ucykKICAgICAgICAgc2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRp
b24odHlwZSk7CiAgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CiB9CiAKLXZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlcjo6ZW5kSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9u
RmxhZ3MgZmxhZ3MpCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVuZEludGVycnVwdGlvbihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCiB7CiAgICAg
TE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZW5kSW50ZXJydXB0aW9uIik7CiAKICAg
ICBtX2ludGVycnVwdGVkID0gZmFsc2U7Ci0gICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+IHNlc3Np
b25zID0gbV9zZXNzaW9uczsKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBzZXNz
aW9ucyA9IG1fc2Vzc2lvbnM7CiAgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbnMpCiAg
ICAgICAgIHNlc3Npb24tPmVuZEludGVycnVwdGlvbihmbGFncyk7CiB9CiAKLXZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6YWRkU2Vzc2lvbihNZWRpYVNlc3Npb24mIHNlc3Npb24pCit2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Np
b24pCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkU2Vzc2lvbiAt
ICVwIiwgJnNlc3Npb24pOwogICAgIAogICAgIG1fc2Vzc2lvbnMuYXBwZW5kKCZzZXNzaW9uKTsK
ICAgICBpZiAobV9pbnRlcnJ1cHRlZCkKLSAgICAgICAgc2Vzc2lvbi5zZXRTdGF0ZShNZWRpYVNl
c3Npb246OkludGVycnVwdGVkKTsKKyAgICAgICAgc2Vzc2lvbi5zZXRTdGF0ZShQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpOwogCiAgICAgaWYgKCFtX3JlbW90ZUNvbW1hbmRMaXN0
ZW5lcikKICAgICAgICAgbV9yZW1vdGVDb21tYW5kTGlzdGVuZXIgPSBSZW1vdGVDb21tYW5kTGlz
dGVuZXI6OmNyZWF0ZSgqdGhpcyk7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjphZGRTZXNzaW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKICAgICB1cGRhdGVT
ZXNzaW9uU3RhdGUoKTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNz
aW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVt
b3ZlU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBMT0coTWVk
aWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uIC0gJXAiLCAmc2Vzc2lvbik7
CiAgICAgCkBAIC0xNDgsMzMgKzE0OCwzMyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJl
bW92ZVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogICAgIHVwZGF0ZVNlc3Npb25TdGF0
ZSgpOwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFJlc3RyaWN0aW9uKE1lZGlh
U2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUsIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24p
Cit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikK
IHsKLSAgICBBU1NFUlQodHlwZSA+IE1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlh
U2Vzc2lvbjo6V2ViQXVkaW8pOworICAgIEFTU0VSVCh0eXBlID4gUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pOwogICAg
IG1fcmVzdHJpY3Rpb25zW3R5cGVdIHw9IHJlc3RyaWN0aW9uOwogfQogCi12b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnJlbW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5
cGUsIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCit2b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnJlbW92ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUg
dHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKIHsKLSAgICBBU1NFUlQodHlw
ZSA+IE1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8p
OworICAgIEFTU0VSVCh0eXBlID4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pOwogICAgIG1fcmVzdHJpY3Rpb25zW3R5
cGVdICY9IH5yZXN0cmljdGlvbjsKIH0KIAotTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJl
c3RyaWN0aW9ucyBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlvbnMoTWVkaWFTZXNzaW9u
OjpNZWRpYVR5cGUgdHlwZSkKK01lZGlhU2Vzc2lvbk1hbmFnZXI6OlNlc3Npb25SZXN0cmljdGlv
bnMgTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVzdHJpY3Rpb25zKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpNZWRpYVR5cGUgdHlwZSkKIHsKLSAgICBBU1NFUlQodHlwZSA+IE1lZGlhU2Vzc2lvbjo6Tm9u
ZSAmJiB0eXBlIDw9IE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pOworICAgIEFTU0VSVCh0eXBlID4g
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6V2ViQXVkaW8pOwogICAgIHJldHVybiBtX3Jlc3RyaWN0aW9uc1t0eXBlXTsKIH0KIAotYm9v
bCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNz
aW9uJiBzZXNzaW9uKQorYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2lu
UGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgTE9HKE1lZGlh
LCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrIC0gJXAiLCAm
c2Vzc2lvbik7CiAgICAgCiAgICAgc2V0Q3VycmVudFNlc3Npb24oc2Vzc2lvbik7CiAKLSAgICBN
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBzZXNzaW9uVHlwZSA9IHNlc3Npb24ubWVkaWFUeXBlKCk7
CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBzZXNzaW9uVHlwZSA9IHNlc3Np
b24ubWVkaWFUeXBlKCk7CiAgICAgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBt
X3Jlc3RyaWN0aW9uc1tzZXNzaW9uVHlwZV07Ci0gICAgaWYgKHNlc3Npb24uc3RhdGUoKSA9PSBN
ZWRpYVNlc3Npb246OkludGVycnVwdGVkICYmIHJlc3RyaWN0aW9ucyAmIEludGVycnVwdGVkUGxh
eWJhY2tOb3RQZXJtaXR0ZWQpCisgICAgaWYgKHNlc3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQgJiYgcmVzdHJpY3Rpb25zICYgSW50ZXJydXB0ZWRQbGF5
YmFja05vdFBlcm1pdHRlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKEFVRElP
X1NFU1NJT04pCkBAIC0xODMsOSArMTgzLDkgQEAgYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogI2VuZGlmCiAK
ICAgICBpZiAobV9pbnRlcnJ1cHRlZCkKLSAgICAgICAgZW5kSW50ZXJydXB0aW9uKE1lZGlhU2Vz
c2lvbjo6Tm9GbGFncyk7CisgICAgICAgIGVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6Tm9GbGFncyk7CiAKLSAgICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBt
X3Nlc3Npb25zOworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0g
bV9zZXNzaW9uczsKICAgICBmb3IgKGF1dG8qIG9uZVNlc3Npb24gOiBzZXNzaW9ucykgewogICAg
ICAgICBpZiAob25lU2Vzc2lvbiA9PSAmc2Vzc2lvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMTk3LDcgKzE5Nyw3IEBAIGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxC
ZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ICAgICAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhN
ZWRpYVNlc3Npb24mIHNlc3Npb24pCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25X
aWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgTE9H
KE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayAtICVw
IiwgJnNlc3Npb24pOwogICAgIApAQCAtMjA3LDE3ICsyMDcsMTcgQEAgdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikK
ICAgICBzaXplX3QgcGF1c2luZ1Nlc3Npb25JbmRleCA9IG5vdEZvdW5kOwogICAgIHNpemVfdCBs
YXN0UGxheWluZ1Nlc3Npb25JbmRleCA9IG5vdEZvdW5kOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9zZXNzaW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBNZWRpYVNlc3Npb24qIG9u
ZVNlc3Npb24gPSBtX3Nlc3Npb25zW2ldOworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiog
b25lU2Vzc2lvbiA9IG1fc2Vzc2lvbnNbaV07CiAgICAgICAgIAogICAgICAgICBpZiAob25lU2Vz
c2lvbiA9PSAmc2Vzc2lvbikgewogICAgICAgICAgICAgcGF1c2luZ1Nlc3Npb25JbmRleCA9IGk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAob25lU2Vzc2lv
bi0+c3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlBsYXlpbmcpIHsKKyAgICAgICAgaWYgKG9uZVNl
c3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmcpIHsKICAgICAg
ICAgICAgIGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4ID0gaTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChvbmVTZXNzaW9uLT5zdGF0ZSgpICE9IE1lZGlhU2Vz
c2lvbjo6UGxheWluZykKKyAgICAgICAgaWYgKG9uZVNlc3Npb24tPnN0YXRlKCkgIT0gUGxhdGZv
cm1NZWRpYVNlc3Npb246OlBsYXlpbmcpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAg
aWYgKGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4ID09IG5vdEZvdW5kIHx8IHBhdXNpbmdTZXNzaW9u
SW5kZXggPT0gbm90Rm91bmQpCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKICAg
ICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNr
IC0gc2Vzc2lvbiBtb3ZlZCBmcm9tIGluZGV4ICV6dSB0byAlenUiLCBwYXVzaW5nU2Vzc2lvbklu
ZGV4LCBsYXN0UGxheWluZ1Nlc3Npb25JbmRleCk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0Q3VycmVudFNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQordm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYg
c2Vzc2lvbikKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJy
ZW50U2Vzc2lvbiAtICVwIiwgJnNlc3Npb24pOwogICAgIApAQCAtMjUwLDcgKzI1MCw3IEBAIHZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24oTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRT
ZXNzaW9uIC0gc2Vzc2lvbiBtb3ZlZCBmcm9tIGluZGV4ICV6dSB0byAwIiwgaW5kZXgpOwogfQog
ICAgIAotTWVkaWFTZXNzaW9uKiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbigp
CitQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Np
b24oKQogewogICAgIGlmICghbV9zZXNzaW9ucy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjU4LDM3ICsyNTgsMzcgQEAgTWVkaWFTZXNzaW9uKiBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpjdXJyZW50U2Vzc2lvbigpCiAgICAgcmV0dXJuIG1fc2Vzc2lvbnNbMF07CiB9CiAgICAg
Ci1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25SZXN0cmljdHNJbmxpbmVWaWRlb1Bs
YXliYWNrKGNvbnN0IE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKK2Jvb2wgTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soY29uc3QgUGxh
dGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0CiB7Ci0gICAgTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgc2Vzc2lvblR5cGUgPSBzZXNzaW9uLnByZXNlbnRhdGlvblR5cGUoKTsKLSAgICBp
ZiAoc2Vzc2lvblR5cGUgIT0gTWVkaWFTZXNzaW9uOjpWaWRlbykKKyAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6TWVkaWFUeXBlIHNlc3Npb25UeXBlID0gc2Vzc2lvbi5wcmVzZW50YXRpb25UeXBl
KCk7CisgICAgaWYgKHNlc3Npb25UeXBlICE9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIG1fcmVzdHJpY3Rpb25zW3Nlc3Np
b25UeXBlXSAmIElubGluZVZpZGVvUGxheWJhY2tSZXN0cmljdGVkOwogfQogCi1ib29sIE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKSBjb25zdAorYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uQ2FuTG9hZE1l
ZGlhKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAogewotICAgIHJl
dHVybiBzZXNzaW9uLnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpQbGF5aW5nIHx8ICFzZXNzaW9u
LmlzSGlkZGVuKCkgfHwgc2Vzc2lvbi5pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQo
KTsKKyAgICByZXR1cm4gc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQ
bGF5aW5nIHx8ICFzZXNzaW9uLmlzSGlkZGVuKCkgfHwgc2Vzc2lvbi5pc1BsYXlpbmdUb1dpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBs
aWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25zdAogewogICAgIExPRyhNZWRpYSwgIk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCIpOwotICAg
IFZlY3RvcjxNZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgVmVjdG9y
PFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwogICAgIGZvciAo
YXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKSB7CiAgICAgICAgIGlmIChtX3Jlc3RyaWN0aW9uc1tz
ZXNzaW9uLT5tZWRpYVR5cGUoKV0gJiBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3Rl
ZCkKLSAgICAgICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6
RW50ZXJpbmdCYWNrZ3JvdW5kKTsKKyAgICAgICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOwogICAgIH0KIH0K
IAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoKSBjb25zdAogewogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCIpOwotICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBz
ZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4g
c2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwogICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25z
KSB7CiAgICAgICAgIGlmIChtX3Jlc3RyaWN0aW9uc1tzZXNzaW9uLT5tZWRpYVR5cGUoKV0gJiBC
YWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCkKLSAgICAgICAgICAgIHNlc3Npb24t
PmVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAg
ICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlS
ZXN1bWVQbGF5aW5nKTsKICAgICB9CiB9CiAKQEAgLTI5OCw5ICsyOTgsOSBAQCB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiB9CiAjZW5kaWYKIAotdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3ZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKIHsKLSAgICBNZWRpYVNl
c3Npb24qIGFjdGl2ZVNlc3Npb24gPSBjdXJyZW50U2Vzc2lvbigpOworICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uKiBhY3RpdmVTZXNzaW9uID0gY3VycmVudFNlc3Npb24oKTsKICAgICBpZiAoIWFj
dGl2ZVNlc3Npb24gfHwgIWFjdGl2ZVNlc3Npb24tPmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZHMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGFjdGl2ZVNlc3Npb24tPmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbVdpbGxTbGVlcCgpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGZvciAoYXV0byBzZXNzaW9uIDogbV9zZXNzaW9ucykKLSAgICAgICAgc2Vzc2lvbi0+YmVn
aW5JbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpTeXN0ZW1TbGVlcCk7CisgICAgICAgIHNlc3Np
b24tPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1TbGVlcCk7
CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtRGlkV2FrZSgpCkBAIC0zMjEs
NyArMzIxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1EaWRXYWtlKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRvIHNlc3Npb24gOiBtX3Nlc3Npb25zKQotICAg
ICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5
aW5nKTsKKyAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjph
dWRpb091dHB1dERldmljZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IGQ5NDBkNWFmNmQ1ZWM1YWFjYTQ0
MzE0N2QwNTY2YWZjN2U2OGRmM2YuLmQxNTBhOTg1ZGM2NzRmYTdjY2VmNTUyNzUxMWZmMmRkODNk
NzRhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNl
c3Npb25NYW5hZ2VyLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgTWVkaWFTZXNzaW9uTWFu
YWdlcl9oCiAKICNpbmNsdWRlICJBdWRpb0hhcmR3YXJlTGlzdGVuZXIuaCIKLSNpbmNsdWRlICJN
ZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU3lzdGVtU2xlZXBMaXN0ZW5lci5oIgpAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgTWVkaWFTZXNzaW9u
OworY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb247CiBjbGFzcyBSZW1vdGVDb21tYW5kTGlzdGVu
ZXI7CiAKIGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXIgOiBwcml2YXRlIFJlbW90ZUNvbW1hbmRM
aXN0ZW5lckNsaWVudCwgcHJpdmF0ZSBTeXN0ZW1TbGVlcExpc3RlbmVyOjpDbGllbnQsIHByaXZh
dGUgQXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpDbGllbnQgewpAQCAtNDYsMTIgKzQ2LDEyIEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTWVkaWFTZXNzaW9uTWFuYWdlciYgc2hh
cmVkTWFuYWdlcigpOwogICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbk1hbmFnZXIoKSB7IH0KIAot
ICAgIGJvb2wgaGFzKE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBjb25zdDsKLSAgICBpbnQgY291
bnQoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpIGNvbnN0OworICAgIGJvb2wgaGFzKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpIGNvbnN0OworICAgIGludCBjb3VudChQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBjb25zdDsKICAgICBib29sIGFjdGl2ZUF1ZGlvU2Vzc2lv
blJlcXVpcmVkKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luSW50ZXJy
dXB0aW9uKE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBlbmRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFn
cyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBl
bmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdz
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRl
ckJhY2tncm91bmQoKSBjb25zdDsKQEAgLTY4LDM0ICs2OCwzNCBAQCBwdWJsaWM6CiAgICAgfTsK
ICAgICB0eXBlZGVmIHVuc2lnbmVkIFNlc3Npb25SZXN0cmljdGlvbnM7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlLCBTZXNz
aW9uUmVzdHJpY3Rpb25zKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVJlc3RyaWN0
aW9uKE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyhNZWRpYVNlc3Np
b246Ok1lZGlhVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRSZXN0cmljdGlvbihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpNZWRpYVR5cGUsIFNlc3Npb25SZXN0cmljdGlvbnMpOworICAgIFdFQkNPUkVfRVhQT1JU
IFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFJlc3RyaWN0aW9ucygpOwogCi0gICAg
dmlydHVhbCBib29sIHNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5YmFjayhNZWRpYVNlc3Npb24mKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNz
aW9uJik7CisgICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1N
ZWRpYVNlc3Npb24mKTsKIAotICAgIGJvb2wgc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxh
eWJhY2soY29uc3QgTWVkaWFTZXNzaW9uJikgY29uc3Q7CisgICAgYm9vbCBzZXNzaW9uUmVzdHJp
Y3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpIGNvbnN0
OwogCi0gICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgTWVkaWFTZXNz
aW9uJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3Qg
UGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2
aXJ0dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkgeyB9CiAgICAg
dmlydHVhbCBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIHsgcmV0dXJuIGZhbHNl
OyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0Q3VycmVudFNlc3Npb24oTWVkaWFTZXNzaW9uJik7
Ci0gICAgTWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lvbigpOworICAgIHZvaWQgc2V0Q3VycmVu
dFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
biogY3VycmVudFNlc3Npb24oKTsKIAogcHJvdGVjdGVkOgotICAgIGZyaWVuZCBjbGFzcyBNZWRp
YVNlc3Npb247CisgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uOwogICAgIGV4
cGxpY2l0IE1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKIAotICAgIHZvaWQgYWRkU2Vzc2lvbihNZWRp
YVNlc3Npb24mKTsKLSAgICB2b2lkIHJlbW92ZVNlc3Npb24oTWVkaWFTZXNzaW9uJik7CisgICAg
dm9pZCBhZGRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CisgICAgdm9pZCByZW1vdmVT
ZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CiAKLSAgICBWZWN0b3I8TWVkaWFTZXNzaW9u
Kj4gc2Vzc2lvbnMoKSB7IHJldHVybiBtX3Nlc3Npb25zOyB9CisgICAgVmVjdG9yPFBsYXRmb3Jt
TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMoKSB7IHJldHVybiBtX3Nlc3Npb25zOyB9CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIEludGVybmFsczsKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CiAKICAgICAvLyBSZW1vdGVDb21t
YW5kTGlzdGVuZXJDbGllbnQKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1h
bmRUeXBlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250
cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlOwogCiAgICAgLy8gQXVkaW9IYXJkd2FyZUxpc3RlbmVy
Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKSBv
dmVycmlkZSB7IH0KQEAgLTExNCw4ICsxMTQsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBzeXN0ZW1XaWxsU2xlZXAoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3lzdGVtRGlk
V2FrZSgpIG92ZXJyaWRlOwogCi0gICAgU2Vzc2lvblJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9u
c1tNZWRpYVNlc3Npb246OldlYkF1ZGlvICsgMV07Ci0gICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+
IG1fc2Vzc2lvbnM7CisgICAgU2Vzc2lvblJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uc1tQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8gKyAxXTsKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRp
YVNlc3Npb24qPiBtX3Nlc3Npb25zOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5k
TGlzdGVuZXI+IG1fcmVtb3RlQ29tbWFuZExpc3RlbmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
eXN0ZW1TbGVlcExpc3RlbmVyPiBtX3N5c3RlbVNsZWVwTGlzdGVuZXI7CiAgICAgUmVmUHRyPEF1
ZGlvSGFyZHdhcmVMaXN0ZW5lcj4gbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjY5M2E2ZjY5OTBiYWVlYmQ1MmFmMWJlMzJkNjIxZjU5YmI0YjBjYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmNwcApAQCAtMCwwICsxLDI0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisKKyNpZiBF
TkFCTEUoVklERU8pCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBkb3VibGUga0NsaWVu
dERhdGFCdWZmZXJpbmdUaW1lclRocm90dGxlRGVsYXkgPSAwLjE7CisKKyNpZiAhTE9HX0RJU0FC
TEVECitzdGF0aWMgY29uc3QgY2hhciogc3RhdGVOYW1lKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpT
dGF0ZSBzdGF0ZSkKK3sKKyNkZWZpbmUgQ0FTRShzdGF0ZSkgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6c3RhdGU6IHJldHVybiAjc3RhdGUKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgQ0FT
RShJZGxlKTsKKyAgICBDQVNFKFBsYXlpbmcpOworICAgIENBU0UoUGF1c2VkKTsKKyAgICBDQVNF
KEludGVycnVwdGVkKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gIiI7Cit9CisjZW5kaWYKKworc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNz
aW9uPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1NZWRp
YVNlc3Npb24+KGNsaWVudCk7Cit9CisKK1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQorICAgIDogbV9j
bGllbnQoY2xpZW50KQorICAgICwgbV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXIoKnRoaXMsICZQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmlyZWQpCisgICAg
LCBtX3N0YXRlKElkbGUpCisgICAgLCBtX3N0YXRlVG9SZXN0b3JlKElkbGUpCisgICAgLCBtX25v
dGlmeWluZ0NsaWVudChmYWxzZSkKK3sKKyAgICBBU1NFUlQobV9jbGllbnQubWVkaWFUeXBlKCkg
Pj0gTm9uZSAmJiBtX2NsaWVudC5tZWRpYVR5cGUoKSA8PSBXZWJBdWRpbyk7CisgICAgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZFNlc3Npb24oKnRoaXMpOworfQorCitQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6flBsYXRmb3JtTWVkaWFTZXNzaW9uKCkKK3sKKyAgICBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlU2Vzc2lvbigqdGhpcyk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OnNldFN0YXRlKFN0YXRlIHN0YXRlKQorewor
ICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpzZXRTdGF0ZSglcCkgLSAlcyIs
IHRoaXMsIHN0YXRlTmFtZShzdGF0ZSkpOworICAgIG1fc3RhdGUgPSBzdGF0ZTsKK30KKwordm9p
ZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlw
ZSB0eXBlKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbklu
dGVycnVwdGlvbiglcCksIHN0YXRlID0gJXMsIGludGVycnVwdGlvbiBjb3VudCA9ICVpIiwgdGhp
cywgc3RhdGVOYW1lKG1fc3RhdGUpLCBtX2ludGVycnVwdGlvbkNvdW50KTsKKworICAgIGlmICgr
K21faW50ZXJydXB0aW9uQ291bnQgPiAxIHx8ICh0eXBlID09IEVudGVyaW5nQmFja2dyb3VuZCAm
JiBjbGllbnQoKS5vdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3N0YXRlVG9SZXN0b3JlID0gc3RhdGUoKTsKKyAgICBtX25v
dGlmeWluZ0NsaWVudCA9IHRydWU7CisgICAgc2V0U3RhdGUoSW50ZXJydXB0ZWQpOworICAgIGNs
aWVudCgpLnN1c3BlbmRQbGF5YmFjaygpOworICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0gZmFsc2U7
Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbihFbmRJbnRl
cnJ1cHRpb25GbGFncyBmbGFncykKK3sKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6ZW5kSW50ZXJydXB0aW9uKCVwKSAtIGZsYWdzID0gJWksIHN0YXRlVG9SZXN0b3JlID0g
JXMsIGludGVycnVwdGlvbiBjb3VudCA9ICVpIiwgdGhpcywgKGludClmbGFncywgc3RhdGVOYW1l
KG1fc3RhdGVUb1Jlc3RvcmUpLCBtX2ludGVycnVwdGlvbkNvdW50KTsKKworICAgIGlmICghbV9p
bnRlcnJ1cHRpb25Db3VudCkgeworICAgICAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6ZW5kSW50ZXJydXB0aW9uKCVwKSAtICEhIGlnbm9yaW5nIHNwdXJpb3VzIGludGVycnVw
dGlvbiBlbmQgISEiLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgt
LW1faW50ZXJydXB0aW9uQ291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIFN0YXRlIHN0YXRl
VG9SZXN0b3JlID0gbV9zdGF0ZVRvUmVzdG9yZTsKKyAgICBtX3N0YXRlVG9SZXN0b3JlID0gSWRs
ZTsKKyAgICBzZXRTdGF0ZShQYXVzZWQpOworCisgICAgYm9vbCBzaG91bGRSZXN1bWUgPSBmbGFn
cyAmIE1heVJlc3VtZVBsYXlpbmcgJiYgc3RhdGVUb1Jlc3RvcmUgPT0gUGxheWluZzsKKyAgICBj
bGllbnQoKS5tYXlSZXN1bWVQbGF5YmFjayhzaG91bGRSZXN1bWUpOworfQorCitib29sIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpjbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpCit7CisgICAgaWYgKG1f
bm90aWZ5aW5nQ2xpZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjaygq
dGhpcykpIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gSW50ZXJydXB0ZWQpCisgICAgICAgICAg
ICBtX3N0YXRlVG9SZXN0b3JlID0gUGxheWluZzsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHNldFN0YXRlKFBsYXlpbmcpOworICAgIHVwZGF0ZUNsaWVudERhdGFCdWZmZXJp
bmcoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKQoreworICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soJXApLSBzdGF0ZSA9ICVzIiwgdGhpcywgc3Rh
dGVOYW1lKG1fc3RhdGUpKTsKKyAgICBpZiAoc3RhdGUoKSA9PSBJbnRlcnJ1cHRlZCkgeworICAg
ICAgICBtX3N0YXRlVG9SZXN0b3JlID0gUGF1c2VkOworICAgICAgICBMT0coTWVkaWEsICIgICAg
ICBzZXR0aW5nIHN0YXRlVG9SZXN0b3JlIHRvIFwiUGF1c2VkXCIiKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBzZXRTdGF0ZShQYXVzZWQpOworICAgIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEVuZFBsYXliYWNrKCp0aGlz
KTsKKyAgICBpZiAoIW1fY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLmlzQWN0aXZlKCkpCisgICAg
ICAgIG1fY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLnN0YXJ0T25lU2hvdChrQ2xpZW50RGF0YUJ1
ZmZlcmluZ1RpbWVyVGhyb3R0bGVEZWxheSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
UGxhdGZvcm1NZWRpYVNlc3Npb246OnBhdXNlU2Vzc2lvbigpCit7CisgICAgTE9HKE1lZGlhLCAi
UGxhdGZvcm1NZWRpYVNlc3Npb246OnBhdXNlU2Vzc2lvbiglcCkiLCB0aGlzKTsKKyAgICBtX2Ns
aWVudC5zdXNwZW5kUGxheWJhY2soKTsKK30KKworUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlh
VHlwZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVkaWFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jbGllbnQubWVkaWFUeXBlKCk7Cit9CisKK1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRp
YVR5cGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OnByZXNlbnRhdGlvblR5cGUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NsaWVudC5wcmVzZW50YXRpb25UeXBlKCk7Cit9CisKK1N0cmluZyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6dGl0bGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5t
ZWRpYVNlc3Npb25UaXRsZSgpOworfQorCitkb3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OmR1
cmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uRHVyYXRp
b24oKTsKK30KKworZG91YmxlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjdXJyZW50VGltZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lKCk7Cit9
CisgICAgCitib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjYW5SZWNlaXZlUmVtb3RlQ29udHJv
bENvbW1hbmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuY2FuUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kcygpOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpkaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1h
bmQpCit7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1h
bmQpOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjp2aXNpYmlsaXR5Q2hhbmdlZCgp
Cit7CisgICAgaWYgKCFtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lci5pc0FjdGl2ZSgpKQorICAg
ICAgICBtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lci5zdGFydE9uZVNob3Qoa0NsaWVudERhdGFC
dWZmZXJpbmdUaW1lclRocm90dGxlRGVsYXkpOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCgpCit7CisgICAgTE9HKE1lZGlhLCAi
UGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKCVwKS0g
dmlzaWJsZSA9ICVzIiwgdGhpcywgbV9jbGllbnQuZWxlbWVudElzSGlkZGVuKCkgPyAiZmFsc2Ui
IDogInRydWUiKTsKKworICAgIHVwZGF0ZUNsaWVudERhdGFCdWZmZXJpbmcoKTsKKworICAgIGlm
IChtX3N0YXRlICE9IFBsYXlpbmcgfHwgIW1fY2xpZW50LmVsZW1lbnRJc0hpZGRlbigpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rp
b25zIHJlc3RyaWN0aW9ucyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5y
ZXN0cmljdGlvbnMobWVkaWFUeXBlKCkpOworICAgIGlmICgocmVzdHJpY3Rpb25zICYgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6QmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCkgPT0gTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6QmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCkKKyAgICAgICAg
cGF1c2VTZXNzaW9uKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OnVwZGF0ZUNs
aWVudERhdGFCdWZmZXJpbmcoKQoreworICAgIGlmIChtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lci5zdG9wKCk7
CisKKyAgICBtX2NsaWVudC5zZXRTaG91bGRCdWZmZXJEYXRhKE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uQ2FuTG9hZE1lZGlhKCp0aGlzKSk7Cit9CisKK2Jvb2wg
UGxhdGZvcm1NZWRpYVNlc3Npb246OmlzSGlkZGVuKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
bGllbnQuZWxlbWVudElzSGlkZGVuKCk7Cit9CisKK1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpEaXNw
bGF5VHlwZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZGlzcGxheVR5cGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX2NsaWVudC5kaXNwbGF5VHlwZSgpOworfQorCitTdHJpbmcgUGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK2RvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFT
ZXNzaW9uRHVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVBsYXllcjo6aW52YWxp
ZFRpbWUoKTsKK30KKworZG91YmxlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNl
c3Npb25DdXJyZW50VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZh
bGlkVGltZSgpOworfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDE5NDdmNGU4NmRj
ZDU4MmZlOGI2MjQ2ODJmYWY4MjQ0YjYwOWRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAtMCwwICsxLDE4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbl9oCisj
ZGVmaW5lIFBsYXRmb3JtTWVkaWFTZXNzaW9uX2gKKworI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIu
aCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50LmgiCisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Owor
Y2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ7CisKK2NsYXNzIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICA6IHB1Ymxp
YyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50CisjZW5kaWYKK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBjcmVhdGUoUGxhdGZvcm1N
ZWRpYVNlc3Npb25DbGllbnQmKTsKKworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uQ2xpZW50Jik7CisgICAgdmlydHVhbCB+UGxhdGZvcm1NZWRpYVNlc3Npb24o
KTsKKworICAgIGVudW0gTWVkaWFUeXBlIHsKKyAgICAgICAgTm9uZSA9IDAsCisgICAgICAgIFZp
ZGVvLAorICAgICAgICBBdWRpbywKKyAgICAgICAgV2ViQXVkaW8sCisgICAgfTsKKyAgICBNZWRp
YVR5cGUgbWVkaWFUeXBlKCkgY29uc3Q7CisgICAgTWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUo
KSBjb25zdDsKKworICAgIGVudW0gU3RhdGUgeworICAgICAgICBJZGxlLAorICAgICAgICBQbGF5
aW5nLAorICAgICAgICBQYXVzZWQsCisgICAgICAgIEludGVycnVwdGVkLAorICAgIH07CisgICAg
U3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAgdm9pZCBzZXRTdGF0
ZShTdGF0ZSk7CisKKyAgICBlbnVtIEludGVycnVwdGlvblR5cGUgeworICAgICAgICBTeXN0ZW1T
bGVlcCwKKyAgICAgICAgRW50ZXJpbmdCYWNrZ3JvdW5kLAorICAgICAgICBTeXN0ZW1JbnRlcnJ1
cHRpb24sCisgICAgfTsKKyAgICBlbnVtIEVuZEludGVycnVwdGlvbkZsYWdzIHsKKyAgICAgICAg
Tm9GbGFncyA9IDAsCisgICAgICAgIE1heVJlc3VtZVBsYXlpbmcgPSAxIDw8IDAsCisgICAgfTsK
KyAgICB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUpOworICAgIHZvaWQg
ZW5kSW50ZXJydXB0aW9uKEVuZEludGVycnVwdGlvbkZsYWdzKTsKKworICAgIHZvaWQgYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29uc3Q7CisgICAgdm9pZCBhcHBsaWNhdGlvbldp
bGxFbnRlckJhY2tncm91bmQoKSBjb25zdDsKKworICAgIGJvb2wgY2xpZW50V2lsbEJlZ2luUGxh
eWJhY2soKTsKKyAgICBib29sIGNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCk7CisKKyAgICB2b2lk
IHBhdXNlU2Vzc2lvbigpOworICAgIAorICAgIHZvaWQgdmlzaWJpbGl0eUNoYW5nZWQoKTsKKwor
ICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0OworICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0Owor
ICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0OworCisgICAgZW51bSBSZW1vdGVDb250cm9s
Q29tbWFuZFR5cGUgeworICAgICAgICBOb0NvbW1hbmQsCisgICAgICAgIFBsYXlDb21tYW5kLAor
ICAgICAgICBQYXVzZUNvbW1hbmQsCisgICAgICAgIFN0b3BDb21tYW5kLAorICAgICAgICBUb2dn
bGVQbGF5UGF1c2VDb21tYW5kLAorICAgICAgICBCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQs
CisgICAgICAgIEVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQsCisgICAgICAgIEJlZ2luU2Vla2lu
Z0ZvcndhcmRDb21tYW5kLAorICAgICAgICBFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAg
fTsKKyAgICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUpOworCisgICAgZW51bSBEaXNwbGF5VHlwZSB7CisgICAgICAgIE5vcm1hbCwKKyAgICAg
ICAgRnVsbHNjcmVlbiwKKyAgICAgICAgT3B0aW1pemVkLAorICAgIH07CisgICAgRGlzcGxheVR5
cGUgZGlzcGxheVR5cGUoKSBjb25zdDsKKworICAgIGJvb2wgaXNIaWRkZW4oKSBjb25zdDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgLy8gTWVkaWFQbGF5YmFja1RhcmdldENsaWVudAor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1Rhcmdl
dD4mJikgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNl
QXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sKSBvdmVycmlkZSB7IH0KKyNlbmRpZgor
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1BsYXliYWNrVGFy
Z2V0Um91dGVNb25pdG9yaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCitw
cm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBjbGllbnREYXRhQnVm
ZmVyaW5nVGltZXJGaXJlZCgpOworICAgIHZvaWQgdXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygp
OworCisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIG1fY2xpZW50OworICAgIFRpbWVy
IG1fY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyOworICAgIFN0YXRlIG1fc3RhdGU7CisgICAgU3Rh
dGUgbV9zdGF0ZVRvUmVzdG9yZTsKKyAgICBpbnQgbV9pbnRlcnJ1cHRpb25Db3VudCB7IDAgfTsK
KyAgICBib29sIG1fbm90aWZ5aW5nQ2xpZW50OworfTsKKworY2xhc3MgUGxhdGZvcm1NZWRpYVNl
c3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3JtTWVkaWFTZXNz
aW9uQ2xpZW50KTsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCgpIHsg
fQorICAgIAorICAgIHZpcnR1YWwgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRp
YVR5cGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6RGlzcGxheVR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCB7IHJldHVybiBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9ybWFsOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbWF5UmVz
dW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3Vz
cGVuZFBsYXliYWNrKCkgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFTZXNzaW9uVGl0
bGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Npb25EdXJhdGlvbigpIGNv
bnN0OworICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lKCkgY29uc3Q7
CisgICAgCisgICAgdmlydHVhbCBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkQnVmZmVyRGF0YShib29sKSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgZWxlbWVudElzSGlkZGVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlk
Q2hhbmdlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQo
UmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5
VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQoYm9vbCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1lZGlh
U2Vzc2lvbkNsaWVudCgpIHsgfQorfTsKKworfQorCisjZW5kaWYgLy8gUGxhdGZvcm1NZWRpYVNl
c3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKaW5kZXggOTNlY2JjZWM2NGIwZWE3NTFlZDY2MTQw
ZGUyMWJmMzYyMTMwZGVlYS4uZGM4NjIxZjllMDdjZWZlNzQzNjVmN2UxYjQ0NzQwMDU0OTYzOGJh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbk1hbmFnZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCkBAIC01Myw4ICs1Myw4IEBAIHByaXZhdGU6CiAKICAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbldp
bGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24m
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5YmFjayhQbGF0
Zm9ybU1lZGlhU2Vzc2lvbiYpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgdXBkYXRlTm93UGxh
eWluZ0luZm8oKTsKICAgICAKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgdm9pZCBjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uQ2FuTG9hZE1lZGlhKGNvbnN0IE1lZGlhU2Vzc2lvbiYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uQ2FuTG9hZE1lZGlhKGNv
bnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgUmV0
YWluUHRyPFdlYk1lZGlhU2Vzc2lvbkhlbHBlcj4gbV9vYmpjT2JzZXJ2ZXI7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5tbQppbmRleCAwNDQ0MjcxYzYxYzA0MmFiZTBlYzI0NWE1ZWUwZjdhYTBjNzg5
NjRkLi4wN2FhMjAyZDU1ZTI3NGRiYjYxOTRhMTBlNmE2ZTRiOGRjYjExODc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5tbQpAQCAtMzEsNyArMzEsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiTWVkaWFQbGF5ZXIuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyU1BJLmgiCi0jaW1wb3J0
ICJNZWRpYVNlc3Npb24uaCIKKyNpbXBvcnQgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW1w
b3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiU3lzdGVtTWVtb3J5LmgiCiAjaW1wb3J0ICJX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCkBAIC0xMzgsMjcgKzEzOCwyNyBAQCB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25zKCkKIAogICAgIHN0YXRpYyB3a0Rl
dmljZUNsYXNzIGRldmljZUNsYXNzID0gaW9zRGV2aWNlQ2xhc3MoKTsKICAgICBpZiAoZGV2aWNl
Q2xhc3MgPT0gd2tEZXZpY2VDbGFzc2lQaG9uZSB8fCBkZXZpY2VDbGFzcyA9PSB3a0RldmljZUNs
YXNzaVBvZCkKLSAgICAgICAgYWRkUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpWaWRlbywgSW5s
aW5lVmlkZW9QbGF5YmFja1Jlc3RyaWN0ZWQpOworICAgICAgICBhZGRSZXN0cmljdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8sIElubGluZVZpZGVvUGxheWJhY2tSZXN0cmljdGVkKTsK
IAogICAgIGlmIChyYW1TaXplKCkgPCBzeXN0ZW1NZW1vcnlSZXF1aXJlZEZvclZpZGVvSW5CYWNr
Z3JvdW5kVGFicykgewogICAgICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpyZXNldFJlc3RyaWN0aW9ucyAtIHJlc3RyaWN0aW5nIHZpZGVvIGluIGJhY2tncm91bmQgdGFi
cyBiZWNhdXNlIHN5c3RlbSBtZW1vcnkgPSAlenVsIiwgcmFtU2l6ZSgpKTsKLSAgICAgICAgYWRk
UmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpWaWRlbywgQmFja2dyb3VuZFRhYlBsYXliYWNrUmVz
dHJpY3RlZCk7CisgICAgICAgIGFkZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpW
aWRlbywgQmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCk7CiAgICAgfQogCi0gICAgYWRk
UmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpWaWRlbywgQ29uY3VycmVudFBsYXliYWNrTm90UGVy
bWl0dGVkKTsKLSAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBCYWNrZ3Jv
dW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCk7CisgICAgYWRkUmVzdHJpY3Rpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OlZpZGVvLCBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQpOwor
ICAgIGFkZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbywgQmFja2dyb3Vu
ZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQpOwogCi0gICAgcmVtb3ZlUmVzdHJpY3Rpb24oTWVk
aWFTZXNzaW9uOjpBdWRpbywgQ29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkKTsKLSAgICBy
ZW1vdmVSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OkF1ZGlvLCBCYWNrZ3JvdW5kUHJvY2Vzc1Bs
YXliYWNrUmVzdHJpY3RlZCk7CisgICAgcmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OkF1ZGlvLCBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQpOworICAgIHJlbW92
ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbywgQmFja2dyb3VuZFByb2Nl
c3NQbGF5YmFja1Jlc3RyaWN0ZWQpOwogCi0gICAgcmVtb3ZlUmVzdHJpY3Rpb24oTWVkaWFTZXNz
aW9uOjpXZWJBdWRpbywgQ29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkKTsKLSAgICByZW1v
dmVSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OldlYkF1ZGlvLCBCYWNrZ3JvdW5kUHJvY2Vzc1Bs
YXliYWNrUmVzdHJpY3RlZCk7CisgICAgcmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OldlYkF1ZGlvLCBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQpOworICAgIHJl
bW92ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbywgQmFja2dyb3Vu
ZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQpOwogCi0gICAgcmVtb3ZlUmVzdHJpY3Rpb24oTWVk
aWFTZXNzaW9uOjpBdWRpbywgTWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkKTsKLSAgICBy
ZW1vdmVSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBNZXRhZGF0YVByZWxvYWRpbmdO
b3RQZXJtaXR0ZWQpOworICAgIHJlbW92ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpBdWRpbywgTWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkKTsKKyAgICByZW1vdmVSZXN0
cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8sIE1ldGFkYXRhUHJlbG9hZGluZ05v
dFBlcm1pdHRlZCk7CiAKLSAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OkF1ZGlvLCBB
dXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCk7Ci0gICAgYWRkUmVzdHJpY3Rpb24oTWVkaWFTZXNz
aW9uOjpWaWRlbywgQXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOworICAgIGFkZFJlc3RyaWN0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbywgQXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0
ZWQpOworICAgIGFkZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbywgQXV0
b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOwogfQogCiBib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6Omhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpCkBAIC0xODYsNyArMTg2LDcgQEAgdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3Jp
bmcoKQogICAgICAgICBbbV9vYmpjT2JzZXJ2ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVz
XTsKIH0KIAotYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQorYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24p
CiB7CiAgICAgaWYgKCFNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJh
Y2soc2Vzc2lvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBi
b29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRp
YVNlc3Npb24mIHNlc3Npb24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi12b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEVuZFBsYXli
YWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soc2Vzc2lvbik7CiAgICAgdXBkYXRlTm93UGxh
eWluZ0luZm8oKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKCkKICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjp1cGRhdGVOb3dQbGF5aW5nSW5mbyIpOwogCiAgICAgTVBOb3dQbGF5aW5nSW5m
b0NlbnRlciAqbm93UGxheWluZyA9IChNUE5vd1BsYXlpbmdJbmZvQ2VudGVyICopW2dldE1QTm93
UGxheWluZ0luZm9DZW50ZXJDbGFzcygpIGRlZmF1bHRDZW50ZXJdOwotICAgIGNvbnN0IE1lZGlh
U2Vzc2lvbiogY3VycmVudFNlc3Npb24gPSB0aGlzLT5jdXJyZW50U2Vzc2lvbigpOworICAgIGNv
bnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lvbiA9IHRoaXMtPmN1cnJlbnRT
ZXNzaW9uKCk7CiAgICAgCiAgICAgaWYgKCFjdXJyZW50U2Vzc2lvbikgewogICAgICAgICBbbm93
UGxheWluZyBzZXROb3dQbGF5aW5nSW5mbzpuaWxdOwpAQCAtMjI3LDEzICsyMjcsMTMgQEAgdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjp1cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAgICAgaWYg
KHN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUpICYmIGN1cnJlbnRUaW1lICE9IE1lZGlhUGxheWVy
OjppbnZhbGlkVGltZSgpKQogICAgICAgICBbaW5mbyBzZXRWYWx1ZTpAKGN1cnJlbnRUaW1lKSBm
b3JLZXk6TVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5RWxhcHNlZFBsYXliYWNrVGltZV07CiAgICAg
Ci0gICAgW2luZm8gc2V0VmFsdWU6KGN1cnJlbnRTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vz
c2lvbjo6UGxheWluZyA/IEBZRVMgOiBATk8pIGZvcktleTpNUE5vd1BsYXlpbmdJbmZvUHJvcGVy
dHlQbGF5YmFja1JhdGVdOworICAgIFtpbmZvIHNldFZhbHVlOihjdXJyZW50U2Vzc2lvbi0+c3Rh
dGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZyA/IEBZRVMgOiBATk8pIGZvcktl
eTpNUE5vd1BsYXlpbmdJbmZvUHJvcGVydHlQbGF5YmFja1JhdGVdOwogICAgIFtub3dQbGF5aW5n
IHNldE5vd1BsYXlpbmdJbmZvOmluZm8uZ2V0KCldOwogfQogCi1ib29sIE1lZGlhU2Vzc2lvbk1h
bmFnZXJpT1M6OnNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgTWVkaWFTZXNzaW9uJiBzZXNzaW9u
KSBjb25zdAorYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uQ2FuTG9hZE1lZGlh
KGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAogewotICAgIHJldHVy
biBzZXNzaW9uLnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpQbGF5aW5nIHx8ICFzZXNzaW9uLmlz
SGlkZGVuKCkgfHwgc2Vzc2lvbi5kaXNwbGF5VHlwZSgpID09IE1lZGlhU2Vzc2lvbjo6T3B0aW1p
emVkOworICAgIHJldHVybiBzZXNzaW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246
OlBsYXlpbmcgfHwgIXNlc3Npb24uaXNIaWRkZW4oKSB8fCBzZXNzaW9uLmRpc3BsYXlUeXBlKCkg
PT0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok9wdGltaXplZDsKIH0KIAogdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpCkBA
IC0zODMsMTkgKzM4MywxOSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
TlNVSW50ZWdlciB0eXBlID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6
QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07
Ci0gICAgTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IE1lZGlhU2Vz
c2lvbjo6Tm9GbGFnczsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9u
RmxhZ3MgZmxhZ3MgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9GbGFnczsKIAogICAgIExPRyhN
ZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGludGVycnVwdGlvbl0gLSB0eXBlID0gJWki
LCAoaW50KXR5cGUpOwogCiAgICAgaWYgKHR5cGUgPT0gQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRp
b25UeXBlRW5kZWQgJiYgW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QVZB
dWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXSA9
PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvblNob3VsZFJlc3VtZSkKLSAgICAgICAg
ZmxhZ3MgPSBNZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmc7CisgICAgICAgIGZsYWdzID0g
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmc7CiAKICAgICBXZWJUaHJlYWRS
dW4oXnsKICAgICAgICAgaWYgKCFfY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgaWYgKHR5cGUgPT0gQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlQmVnYW4pCi0g
ICAgICAgICAgICBfY2FsbGJhY2stPmJlZ2luSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6U3lz
dGVtSW50ZXJydXB0aW9uKTsKKyAgICAgICAgICAgIF9jYWxsYmFjay0+YmVnaW5JbnRlcnJ1cHRp
b24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIF9jYWxsYmFjay0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vz
c2lvbk1hbmFnZXJNYWMuY3BwCmluZGV4IGY1YjI4ODUwZGQ0MThlN2YwM2Y2MTU3MTBmNWFmNzEz
ZmU4MWQ5ZDUuLmUyNzQ0MTg4MDliN2Q0NTE1MmZmYTNiZGFjMDlmNjRlNjI5YjQxN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5h
Z2VyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFT
ZXNzaW9uTWFuYWdlck1hYy5jcHAKQEAgLTM5LDExICszOSwxMSBAQCBzdGF0aWMgY29uc3Qgc2l6
ZV90IGtMb3dQb3dlclZpZGVvQnVmZmVyU2l6ZSA9IDQwOTY7CiAKIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNl
c3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1
ZGlvKCVkKSwgV2ViQXVkaW8oJWQpIiwgY291bnQoTWVkaWFTZXNzaW9uOjpWaWRlbyksIGNvdW50
KE1lZGlhU2Vzc2lvbjo6QXVkaW8pLCBjb3VudChNZWRpYVNlc3Npb246OldlYkF1ZGlvKSk7Cisg
ICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkg
LSB0eXBlczogVmlkZW8oJWQpLCBBdWRpbyglZCksIFdlYkF1ZGlvKCVkKSIsIGNvdW50KFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpWaWRlbyksIGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRp
byksIGNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbykpOwogCi0gICAgaWYgKGhh
cyhNZWRpYVNlc3Npb246OldlYkF1ZGlvKSkKKyAgICBpZiAoaGFzKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpXZWJBdWRpbykpCiAgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNl
dFByZWZlcnJlZEJ1ZmZlclNpemUoa1dlYkF1ZGlvQnVmZmVyU2l6ZSk7Ci0gICAgZWxzZSBpZiAo
KGhhcyhNZWRpYVNlc3Npb246OlZpZGVvKSB8fCBoYXMoTWVkaWFTZXNzaW9uOjpBdWRpbykpICYm
IFNldHRpbmdzOjpsb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZCgpKSB7CisgICAg
ZWxzZSBpZiAoKGhhcyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8pIHx8IGhhcyhQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6QXVkaW8pKSAmJiBTZXR0aW5nczo6bG93UG93ZXJWaWRlb0F1ZGlvQnVm
ZmVyU2l6ZUVuYWJsZWQoKSkgewogICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3Jn
L2IvMTE2NzI1PiBGaWd1cmUgb3V0IHdoeSBlbmFibGluZyB0aGUgY29kZSBiZWxvdwogICAgICAg
ICAvLyBjYXVzZXMgbWVkaWEgTGF5b3V0VGVzdHMgdG8gZmFpbCBvbiAxMC44LgogCkBAIC02MCw5
ICs2MCw5IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkK
ICAgICBpZiAoIVNldHRpbmdzOjpzaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb25DYXRlZ29yeSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaGFzKE1lZGlhU2Vzc2lvbjo6VmlkZW8pIHx8IGhh
cyhNZWRpYVNlc3Npb246OkF1ZGlvKSkKKyAgICBpZiAoaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpWaWRlbykgfHwgaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbykpCiAgICAgICAgIEF1
ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldENhdGVnb3J5KEF1ZGlvU2Vzc2lvbjo6TWVk
aWFQbGF5YmFjayk7Ci0gICAgZWxzZSBpZiAoaGFzKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pKQor
ICAgIGVsc2UgaWYgKGhhcyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pKQogICAgICAg
ICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRDYXRlZ29yeShBdWRpb1Nlc3Npb246
OkFtYmllbnRTb3VuZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3MGFjMTcyNjgwMjJmYjQ5YmM5Y2Q4MWI3
NWZhYzFhNTFiMjZjNGJhLi43ZTg5NDA2NDE1MGI4ZDYxNmU2ZGVkYzY0ZTgwOTVkN2E1ZmE0MjMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCkBAIC0xMzQ3LDcgKzEzNDcsNyBAQCBib29sIE1lZGlhUGxheWVyOjpzaG91bGRXYWl0Rm9y
UmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpYwogICAgIHJl
dHVybiBtX2NsaWVudC5tZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6aGFuZGxl
UGxheWJhY2tDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNv
bW1hbmQpCit2b2lkIE1lZGlhUGxheWVyOjpoYW5kbGVQbGF5YmFja0NvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQogewogICAgIG1f
Y2xpZW50Lm1lZGlhUGxheWVySGFuZGxlUGxheWJhY2tDb21tYW5kKGNvbW1hbmQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggOTI4
M2U4ZjdkNmE3ZDIzM2QzMzVkM2EwNWFkYzNmN2JkMWE5MDViYy4uMTY2NTEzMDBlZmY2ZDc3NDdi
ZDUyYTUxZjdiN2RkNjZjYzllMjk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJFbnVtcy5o
IgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgPHJ1
bnRpbWUvVWludDhBcnJheS5oPgpAQCAtMjY4LDcgKzI2OCw3IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckhhbmRsZVBsYXli
YWNrQ29tbWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVySGFuZGxlUGxheWJhY2tDb21tYW5kKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIHsgfQogCiAgICAgdmlydHVh
bCBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAKQEAgLTU5NCw3ICs1OTQsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgIHZvaWQgaGFuZGxl
UGxheWJhY2tDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKTsK
KyAgICB2b2lkIGhhbmRsZVBsYXliYWNrQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlKTsKICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVu
dGlmaWVyKCkgY29uc3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkQXVkaW9DaGFyYWN0
ZXJpc3RpY3MoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA3OWFlMmZmYjU3ZjI0NTZkNGMwMWI2OTcy
M2M5MWUxMmMyODg2OTBkLi5iMmE3YzFiYjkwYzFlZTg4ZWVkNTAzODZjMDMyYjg4YmUyOWFmZmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmNwcApAQCAtNjIxLDcgKzYyMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpyYXRlQ2hhbmdlZCgpCiB7CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJiYgUExBVEZPUk0oSU9TKQogICAgIGlmIChpc0N1cnJlbnRQbGF5YmFja1Rhcmdl
dFdpcmVsZXNzKCkpCi0gICAgICAgIG1fcGxheWVyLT5oYW5kbGVQbGF5YmFja0NvbW1hbmQocmF0
ZSgpID8gTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCA6IE1lZGlhU2Vzc2lvbjo6UGF1c2VDb21t
YW5kKTsKKyAgICAgICAgbV9wbGF5ZXItPmhhbmRsZVBsYXliYWNrQ29tbWFuZChyYXRlKCkgPyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UGF1c2VDb21tYW5kKTsKICNlbmRpZgogCiAgICAgbV9wbGF5ZXItPnJhdGVDaGFuZ2VkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3Rl
bmVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUy5tbQppbmRleCBjYmNlNWUzMzYwODFlZjZhN2EzMGE5ZDgyM2I4ODMwYzQwMDUyZmFj
Li43ZDE0NDIxN2Q3OGM3ODJiYThhYTJjY2NjNWE2ZmU1NmU5ZDM2ZDI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1Mu
bW0KQEAgLTU1LDcgKzU1LDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21t
YW5kTGlzdGVuZXJJT1MoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JgogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlk
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kKTsK
KyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENv
bW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZCk7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIHJldHVybiBNUFJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzU3VjY2VzczsKQEAg
LTY1LDcgKzY1LDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21tYW5kTGlz
dGVuZXJJT1MoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JgogICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt3ZWFrVGhpc10gewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2
ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQpOworICAgICAg
ICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQpOwogICAgICAgICB9KTsKIAogICAgICAg
ICByZXR1cm4gTVBSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7CkBAIC03NSw3ICs3
NSw3IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9T
KFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXNdIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVD
b250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQpOworICAg
ICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFuZCk7CiAgICAgICAg
IH0pOwogCiAgICAgICAgIHJldHVybiBNUFJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzU3VjY2Vz
czsKQEAgLTg1LDcgKzg1LDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21t
YW5kTGlzdGVuZXJJT1MoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JgogICAgICAgICBBU1NF
UlQoW2V2ZW50IGlzS2luZE9mQ2xhc3M6Z2V0TVBTZWVrQ29tbWFuZEV2ZW50Q2xhc3MoKV0pOwog
CiAgICAgICAgIE1QU2Vla0NvbW1hbmRFdmVudCogc2Vla0V2ZW50ID0gc3RhdGljX2Nhc3Q8TVBT
ZWVrQ29tbWFuZEV2ZW50ICo+KGV2ZW50KTsKLSAgICAgICAgTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCA9IFtzZWVrRXZlbnQgdHlwZV0gPT0gTVBTZWVrQ29t
bWFuZEV2ZW50VHlwZUJlZ2luU2Vla2luZyA/IE1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFj
a3dhcmRDb21tYW5kIDogTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kOwor
ICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNv
bW1hbmQgPSBbc2Vla0V2ZW50IHR5cGVdID09IE1QU2Vla0NvbW1hbmRFdmVudFR5cGVCZWdpblNl
ZWtpbmcgPyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5k
IDogUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ7CiAKICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGNvbW1hbmRdIHsKICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCkBAIC0xMDAsNyArMTAwLDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVy
SU9TOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50
JgogICAgICAgICBBU1NFUlQoW2V2ZW50IGlzS2luZE9mQ2xhc3M6Z2V0TVBTZWVrQ29tbWFuZEV2
ZW50Q2xhc3MoKV0pOwogICAgICAgICBNUFNlZWtDb21tYW5kRXZlbnQqIHNlZWtFdmVudCA9IHN0
YXRpY19jYXN0PE1QU2Vla0NvbW1hbmRFdmVudCAqPihldmVudCk7CiAKLSAgICAgICAgTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCA9IFtzZWVrRXZlbnQgdHlw
ZV0gPT0gTVBTZWVrQ29tbWFuZEV2ZW50VHlwZUJlZ2luU2Vla2luZyA/IE1lZGlhU2Vzc2lvbjo6
QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQgOiBNZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3
YXJkQ29tbWFuZDsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSBjb21tYW5kID0gW3NlZWtFdmVudCB0eXBlXSA9PSBNUFNlZWtDb21tYW5kRXZl
bnRUeXBlQmVnaW5TZWVraW5nID8gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0Zv
cndhcmRDb21tYW5kIDogUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29t
bWFuZDsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgY29tbWFuZF0gewog
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCAxMDM0ZThiOGUxY2QzNjljNDBlMDI3ZjBmYTUzYzYxMDE3YWZjNTg3Li5lZDMzZmM3
MTcxMmU5MDQ0ZDdkMjY1MjBjMjVhYzM4MGFjMDNhYjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC0yNTc4LDE1ICsyNTc4LDE1IEBAIFZlY3RvcjxTdHJpbmc+IEludGVy
bmFsczo6YnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChTb3VyY2VCdWZmZXIqIGJ1ZmZlciwgY29u
c3QKICNpZiBFTkFCTEUoVklERU8pCiB2b2lkIEludGVybmFsczo6YmVnaW5NZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb24oKQogewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KS5iZWdpbkludGVycnVwdGlvbihNZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7Cisg
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmJlZ2luSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb24pOwogfQogCiB2b2lkIElu
dGVybmFsczo6ZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKGNvbnN0IFN0cmluZyYgZmxhZ3NT
dHJpbmcpCiB7Ci0gICAgTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9
IE1lZGlhU2Vzc2lvbjo6Tm9GbGFnczsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50
ZXJydXB0aW9uRmxhZ3MgZmxhZ3MgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9GbGFnczsKIAog
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmbGFnc1N0cmluZywgIk1heVJlc3VtZVBsYXlpbmci
KSkKLSAgICAgICAgZmxhZ3MgPSBNZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmc7CisgICAg
ICAgIGZsYWdzID0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmc7CiAgICAg
CiAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmVuZEludGVycnVwdGlv
bihmbGFncyk7CiB9CkBAIC0yNjAzLDEzICsyNjAzLDEzIEBAIHZvaWQgSW50ZXJuYWxzOjphcHBs
aWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25zdAogCiB2b2lkIEludGVybmFsczo6c2V0
TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlc3RyaWN0aW9uc1N0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlID0gTWVkaWFTZXNzaW9uOjpOb25l
OworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlID0gUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok5vbmU7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1lZGlhVHlw
ZVN0cmluZywgIlZpZGVvIikpCi0gICAgICAgIG1lZGlhVHlwZSA9IE1lZGlhU2Vzc2lvbjo6Vmlk
ZW87CisgICAgICAgIG1lZGlhVHlwZSA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbzsKICAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtZWRpYVR5cGVTdHJpbmcsICJBdWRpbyIpKQot
ICAgICAgICBtZWRpYVR5cGUgPSBNZWRpYVNlc3Npb246OkF1ZGlvOworICAgICAgICBtZWRpYVR5
cGUgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW87CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UobWVkaWFUeXBlU3RyaW5nLCAiV2ViQXVkaW8iKSkKLSAgICAgICAgbWVkaWFUeXBl
ID0gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsKKyAgICAgICAgbWVkaWFUeXBlID0gUGxhdGZvcm1N
ZWRpYVNlc3Npb246OldlYkF1ZGlvOwogICAgIGVsc2UgewogICAgICAgICBlYyA9IElOVkFMSURf
QUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMjY4MiwyNCArMjY4MiwyNCBAQCB2b2lk
IEludGVybmFsczo6c2V0TWVkaWFFbGVtZW50UmVzdHJpY3Rpb25zKEhUTUxNZWRpYUVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFN0cgogCiB2b2lkIEludGVybmFsczo6cG9zdFJlbW90ZUNvbnRyb2xD
b21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZFN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0gICAgTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZDsKKyAg
ICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQ7
CiAgICAgCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGNvbW1hbmRTdHJpbmcsICJQbGF5Iikp
Ci0gICAgICAgIGNvbW1hbmQgPSBNZWRpYVNlc3Npb246OlBsYXlDb21tYW5kOworICAgICAgICBj
b21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kOwogICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGNvbW1hbmRTdHJpbmcsICJQYXVzZSIpKQotICAgICAgICBjb21t
YW5kID0gTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQ7CisgICAgICAgIGNvbW1hbmQgPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGNvbW1hbmRTdHJpbmcsICJTdG9wIikpCi0gICAgICAgIGNvbW1hbmQgPSBNZWRpYVNl
c3Npb246OlN0b3BDb21tYW5kOworICAgICAgICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Np
b246OlN0b3BDb21tYW5kOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGNvbW1hbmRT
dHJpbmcsICJUb2dnbGVQbGF5UGF1c2UiKSkKLSAgICAgICAgY29tbWFuZCA9IE1lZGlhU2Vzc2lv
bjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFuZDsKKyAgICAgICAgY29tbWFuZCA9IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kOwogICAgIGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGNvbW1hbmRTdHJpbmcsICJCZWdpblNlZWtpbmdCYWNrd2FyZCIpKQotICAgICAg
ICBjb21tYW5kID0gTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQ7Cisg
ICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dh
cmRDb21tYW5kOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGNvbW1hbmRTdHJpbmcs
ICJFbmRTZWVraW5nQmFja3dhcmQiKSkKLSAgICAgICAgY29tbWFuZCA9IE1lZGlhU2Vzc2lvbjo6
RW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDsKKyAgICAgICAgY29tbWFuZCA9IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kOwogICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGNvbW1hbmRTdHJpbmcsICJCZWdpblNlZWtpbmdGb3J3YXJkIikpCi0gICAg
ICAgIGNvbW1hbmQgPSBNZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kOwor
ICAgICAgICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0Zvcndh
cmRDb21tYW5kOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGNvbW1hbmRTdHJpbmcs
ICJFbmRTZWVraW5nRm9yd2FyZCIpKQotICAgICAgICBjb21tYW5kID0gTWVkaWFTZXNzaW9uOjpF
bmRTZWVraW5nRm9yd2FyZENvbW1hbmQ7CisgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kOwogICAgIGVsc2UgewogICAgICAgICBl
YyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253881</attachid>
            <date>2015-05-28 17:18:11 -0700</date>
            <delta_ts>2015-05-28 17:33:08 -0700</delta_ts>
            <desc>Patch (re-based)</desc>
            <filename>bug-145447-20150528171757.patch</filename>
            <type>text/plain</type>
            <size>96681</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJlNzZhYWUyYTQ0MGZi
Yjk0YzgwNzIwOGQwYzljNTExYTNhNGJjNC4uYTM3NWNmYjczN2YyMzc2ZTJjZDVkZmI2YTRiODA3
OTIyNzk4MTE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxNS0wNS0yOCAgTWF0
dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIE1lZGlhU2Vzc2lv
biBhbmQgTWVkaWFTZXNzaW9uQ2xpZW50IHRvIFBsYXRmb3JtTWVkaWFTZXNzaW9uIGFuZCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCBzbyB3ZSBjYW4gdXNlIE1lZGlhU2Vzc2lvbiBmb3IgdGhl
IGZvcm1hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTWVkaWEgU2Vzc2lvbiBzcGVjLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NDQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5
YmFjayk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cHJlc2VudGF0aW9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpkaXNwbGF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpIVE1MTWVkaWFTZXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OnJlcXVpcmVzRnVsbHNjcmVl
bkZvclZpZGVvUGxheWJhY2spOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6
cmVzZXRSZXN0cmljdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdl
cjo6aGFzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFjdGl2ZUF1
ZGlvU2Vzc2lvblJlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmJlZ2lu
SW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVu
ZEludGVycnVwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92
ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUmVz
dHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
UmVzdHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVz
dHJpY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Np
b25XaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25SZXN0cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Mb2FkTWVkaWEp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxs
RW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtV2lsbFNsZWVwKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbURpZFdha2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwLgorICAgICAgICAoV2ViQ29yZTo6c3Rh
dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjp+UGxhdGZv
cm1NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246
OnNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdp
bkludGVycnVwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjbGllbnRXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246OnBhdXNlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVkaWFUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpwcmVzZW50YXRpb25UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFTZXNzaW9uOjp0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNl
c3Npb246OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnZpc2liaWxpdHlDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVm
ZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb246OmRpc3BsYXlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uRHVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvbkN1cnJlbnRU
aW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgu
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNhblBsYXlUb1dpcmVsZXNzUGxheWJh
Y2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmlzUGxh
eWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6
ZGlzcGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGll
bnQ6OnNldFNob3VsZEJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQ6OmVsZW1lbnRJc0hpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6OnNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Np
b25DbGllbnQ6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6OmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5
YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVu
dDo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6On5QbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxs
QmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25DYW5Mb2FkTWVkaWEpOgorICAgICAgICAoLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uOl0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcDoKKyAgICAgICAgKE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Omhh
bmRsZVBsYXliYWNrQ29tbWFuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXll
ckhhbmRsZVBsYXliYWNrQ29tbWFuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnJhdGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjplbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQpOgorCiAy
MDE1LTA1LTI4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBH
cmFwaGljc0xheWVyQ0Egc2hvdWxkIHN0YXJ0IG91dCB3aXRoIG1faW50ZXJzZWN0c0NvdmVyYWdl
UmVjdD1mYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwCmluZGV4IGM4ZjZkNTEzNzM0NmNlYjlhOTEwYTc5ODFjYjI4NDAyZGQwMWM1ZmUu
LjkwYWM0OTBhMjdmMjg1MjU2MjEwYTRhOGUzZDEyOTg2ODdlMDhlNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTEyOSw3ICsx
MjksNyBAQCBSZWZQdHI8QXVkaW9Db250ZXh0PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogLy8gQ29uc3RydWN0b3IgZm9yIHJlbmRl
cmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQotICAg
ICwgbV9tZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9t
ZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBt
X2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQog
ICAgICwgbV9ncmFwaE93bmVyVGhyZWFkKFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXIpCiB7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRv
Y3VtZW50KQogQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1
bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNh
bXBsZVJhdGUpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQogICAgICwgbV9pc09m
ZmxpbmVDb250ZXh0KHRydWUpCi0gICAgLCBtX21lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb246OmNy
ZWF0ZSgqdGhpcykpCisgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVy
aWNFdmVudFF1ZXVlPigqdGhpcykpCiAgICAgLCBtX2dyYXBoT3duZXJUaHJlYWQoVW5kZWZpbmVk
VGhyZWFkSWRlbnRpZmllcikKIHsKQEAgLTEyMDAsNyArMTIwMCw3IEBAIHZvaWQgQXVkaW9Db250
ZXh0OjpzdXNwZW5kUGxheWJhY2soKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7Ci0gICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3Rh
dGUoKSA9PSBNZWRpYVNlc3Npb246OkludGVycnVwdGVkKQorICAgICAgICBpZiAobV9tZWRpYVNl
c3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKQogICAg
ICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkludGVycnVwdGVkKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTEyMDksNyArMTIwOSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kUGxh
eWJhY2soKQogCiAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAg
ICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVuZChbc3Ryb25nVGhpc10gewotICAgICAgICBib29s
IGludGVycnVwdGVkID0gc3Ryb25nVGhpcy0+bV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gTWVk
aWFTZXNzaW9uOjpJbnRlcnJ1cHRlZDsKKyAgICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9IHN0cm9u
Z1RoaXMtPm1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJ
bnRlcnJ1cHRlZDsKICAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoaW50ZXJydXB0ZWQgPyBT
dGF0ZTo6SW50ZXJydXB0ZWQgOiBTdGF0ZTo6U3VzcGVuZGVkKTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDlmZjM1
MzI1MTUyODI0ZGI3YmJiMzVjODg3NDM0MjVjOTQ1NmQ5OWYuLjQzOTY4ZjJmYmE5MmFjZGM5NWQy
Y2JiNGM0YTUwM2VmOTIyNDZkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTc2LDcgKzc2LDcgQEAgY2xh
c3MgUGVyaW9kaWNXYXZlOwogLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0
aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4K
IC8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQgdGhlIG1h
aW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5pc20uIAog
Ci1jbGFzcyBBdWRpb0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9Db250ZXh0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGEsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBNZWRpYVByb2R1
Y2VyLCBwcml2YXRlIE1lZGlhU2Vzc2lvbkNsaWVudCB7CitjbGFzcyBBdWRpb0NvbnRleHQgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9D
b250ZXh0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBNZWRpYUNh
blN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBNZWRpYVByb2R1Y2VyLCBwcml2YXRlIFBsYXRmb3JtTWVk
aWFTZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYW4gQXVkaW9Db250ZXh0
IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAgIHN0YXRpYyBSZWZQdHI8
QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQmLCBFeGNlcHRpb25Db2RlJik7CkBAIC0zMDgs
MTMgKzMwOCwxMyBAQCBwcml2YXRlOgogICAgIC8vIE1ha2Ugc3VyZSB0byBkZXJlZmVyZW5jZSB0
aGVtIGhlcmUuCiAgICAgdm9pZCBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOwogCi0gICAg
Ly8gTWVkaWFTZXNzaW9uQ2xpZW50Ci0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlw
ZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYVNlc3Npb246OldlYkF1
ZGlvOyB9Ci0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25U
eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQor
ICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50CisgICAgdmlydHVhbCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvOyB9CiAgICAgdmlydHVhbCB2
b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1h
bmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgb3ZlcnJpZGUgeyB9CiAgICAg
dmlydHVhbCBib29sIG92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gRXZlbnRUYXJnZXQKQEAgLTM2
Myw3ICszNjMsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX2RlZmVycmVk
RmluaXNoRGVyZWZMaXN0OwogICAgIFZlY3RvcjxWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkKCk+
Pj4gbV9zdGF0ZVJlYWN0aW9uczsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+
IG1fbWVkaWFTZXNzaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lv
bj4gbV9tZWRpYVNlc3Npb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdlbmVyaWNFdmVudFF1ZXVl
PiBtX2V2ZW50UXVldWU7CiAKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggY2RmOTZjOTMwMGZjYTAxY2NhYjA5YmQ2MDAzZWI2MDEwMGIwZTk5Zi4uOTYwN2RkNTEyMjBl
N2FjMGM3ZjBkZjE4YTdhZDI0ODMxY2U2NGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xOTc2NCw3ICsxOTc2NCw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxGbG9hdENvbnZlcnNpb24uaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEdlbmVyaWNUYXNrUXVldWUuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXEF1ZGlvU2Vzc2lvbi5o
IiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNz
aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xQbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cYXVkaW9cTWVkaWFTZXNzaW9uTWFuYWdlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcQU5HTEVXZWJLaXRCcmlkZ2UuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEF1ZGlvVHJhY2tQcml2YXRlLmgi
IC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMKaW5kZXggN2E3MTEzMWFmNjk3MzQ2OTkwZjU5ODliNWYyNzBjYTY1NDY1
YTYyZi4uMjJiZTIzMWQyY2Y3Mzg5NmMxZjQxNDE4ZjI0NDAyMTkwYjgzMzgyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVycwpAQCAtMTQ0OTgsNyArMTQ0OTgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNzaW9uTWFuYWdlci5oIj4KICAgICAgIDxGaWx0ZXI+cGxh
dGZvcm1cYXVkaW88L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbi5oIj4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiPgogICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxhdWRpbzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xnYW1lcGFkXE5hdmlnYXRvckdhbWVwYWQu
aCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNGE3OTYwMzAwYTRmNTA1Y2YzNWE5N2MxZDk0YTYxNzg2YzU1NTc0NS4uMDMxZDlh
NGZhMDVlYzVjMDRhZjhlMWJiMmFlZDJmNWYxOGQxODVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5LDggKzExOSw4IEBA
CiAJCTA3MDlENzkzMUFFNTU1N0UwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA5RDc5
MTFBRTU1NTdFMDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MDlENzk1MUFFNTVB
MjkwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA5RDc5NDFBRTU1QTI5MDA0RTQy
RjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAv
KiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNs
aWRlci5oICovOyB9OwotCQkwNzBFMDkxOTE4NzVFRUZDMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzBFMDkx
ODE4NzVFRDkzMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDcwRTA5MUIxODc1RUY3MTAwM0ExRDNDIC8q
IE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNwcCAqLzsg
fTsKKwkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzBFMDkxODE4
NzVFRDkzMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFE
M0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTA5MUExODc1RUY3MTAwM0ExRDNDIC8qIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uLmNwcCAqLzsgfTsKIAkJMDcwRjU0OTgxN0YxMkY2QjAwMTY5RTA0IC8qIE1l
ZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzBGNTQ5NzE3RjEyRjZCMDAxNjlFMDQgLyog
TWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCAqLzsgfTsKIAkJMDcwRjU0
OUUxN0YyNDAyNzAwMTY5RTA0IC8qIEF1ZGlvRGVzdGluYXRpb25Db25zdW1lci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRjU0OUQxN0YyNDAyNzAw
MTY5RTA0IC8qIEF1ZGlvRGVzdGluYXRpb25Db25zdW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MTE1ODkxMTdERjZGNjYwMEVERkUyQiAv
KiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJp
dmF0ZS5jcHAgKi87IH07CkBAIC03MTM0LDggKzcxMzQsOCBAQAogCQkwNzA5RDc5NDFBRTU1QTI5
MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nl
c3NpYmlsaXR5U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwREQ4RjUw
RjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IG1lZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzBF
MDkxODE4NzVFRDkzMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzBFMDkxQTE4
NzVFRjcxMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzBGNTQ5NzE3RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFT
dHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwRjU0OUQxN0YyNDAyNzAwMTY5RTA0IC8qIEF1
ZGlvRGVzdGluYXRpb25Db25zdW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbVByaXZhdGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM1NDgsMTQgKzIzNTQ4LDE0IEBACiAJ
CQkJRkQzMTYwNjkxMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZLZXJuZWwuaCAqLywKIAkJCQlGRDMx
NjA2QTEyQjAyNkY3MDBDMUEzNTkgLyogSFJURlBhbm5lci5jcHAgKi8sCiAJCQkJRkQzMTYwNkIx
MkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZQYW5uZXIuaCAqLywKLQkJCQkwNzBFMDkxQTE4NzVFRjcx
MDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNwcCAqLywKLQkJCQkwNzBFMDkxODE4NzVFRDkzMDAz
QTFEM0MgLyogTWVkaWFTZXNzaW9uLmggKi8sCiAJCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovLAogCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUz
MkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJRkRCMTcwMDMxNEEyQkFCMjAw
QTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgKi8sCiAJCQkJRkRCMTcwMDQxNEEy
QkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5oICovLAogCQkJCUZEMzE2MDZD
MTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuY3BwICovLAogCQkJCUZEMzE2MDZEMTJCMDI2Rjcw
MEMxQTM1OSAvKiBQYW5uZXIuaCAqLywKKwkJCQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyog
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwICovLAorCQkJCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQz
QyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oICovLAogCQkJCUZEMzE2MDZFMTJCMDI2RjcwMEMx
QTM1OSAvKiBSZXZlcmIuY3BwICovLAogCQkJCUZEMzE2MDZGMTJCMDI2RjcwMEMxQTM1OSAvKiBS
ZXZlcmIuaCAqLywKIAkJCQlGRDMxNjA3MDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQWNjdW11
bGF0aW9uQnVmZmVyLmNwcCAqLywKQEAgLTI1Nzk5LDcgKzI1Nzk5LDYgQEAKIAkJCQlEM0FBMTBG
NDEyM0E5OEFBMDA5MjE1MkIgLyogTWVkaWFRdWVyeU1hdGNoZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFRUZDRDdBMTlEQjMxRjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDREJFQUVBRDE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rp
b25Hcm91cEFWRk9iakMuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3MEUwOTE5MTg3NUVFRkMwMDNB
MUQzQyAvKiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Rjk0NDE2MTg2NEQw
NDYwMDVEMzFDQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzYzOEE5OTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI2MDIzLDYgKzI2MDIyLDcgQEAKIAkJCQkwNTYyRjk2MTE1NzNG
ODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU0NEY3
ODkxNUNGQjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRUVGQ0Q3QzE5REIzM0RDMDAzODc2RDcgLyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzBFMDkxOTE4NzVFRUZDMDAzQTFEM0MgLyogUGxhdGZv
cm1NZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMjg3MUMwMEIyMERFQjcwMDQ5
MDM1QSAvKiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFC
RjcwMTAwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzVDNDc2OTA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI5Mzc4LDcgKzI5Mzc4LDYgQEAKIAkJCQlEM0FB
MTBGMzEyM0E5OEFBMDA5MjE1MkIgLyogTWVkaWFRdWVyeU1hdGNoZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0VFRkNENzkxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMDcwRTA5MUIxODc1
RUY3MTAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREFF
OEMwOTE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3RURDM0VFMUFBQ0I3NUQwMDk4M0VCNSAvKiBN
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk1NDksNiArMjk1
NDgsNyBAQAogCQkJCTI2NjAxRUMwMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0Zm9ybUV2ZW50RmFj
dG9yeUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQUE0ODZGMTRBMDUyNTMwMDg4RkFDNCAv
KiBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY1NDRGNzg4
MTVDRkIyQTgwMEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwNzBFMDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDFCRjcwMEYwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1Mjc4QjBDMTdGMjEyRUEw
MDNBMjk5OCAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
NTk4OTAyRTE0RTlCMEY4MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCmluZGV4IGNkZWNm
MGZjMmU1OTMwZmFlOTY0ZDcyOTYwZmUzNjRkMGZkNjY5ODIuLjc1YzY3NTVhYjhiOWVkMGNkOWYz
ZjRhNTRlZTZmZmE0OTIyNjBlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF1ZGlvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVu
dC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEF1ZGlvRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sKTsKIAotICAgIHZpcnR1
YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6QXVkaW87IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbzsgfQogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYTYyYzI4NDI4NDlmNmEyNmQ4NzAzNzI5YzhkOWE0MjNlYmM5MWYwZi4uOTlmNDBiYWEwNTY1
NDMwZTdkOWI0NDc1MGU2ZjUyMDBkMTA2NTQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC00NTMzLDcgKzQ1MzMsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OnN0b3BwZWREdWVUb0Vycm9ycygpIGNvbnN0CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
cGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9tZWRpYVNlc3Np
b24tPnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCkKKyAgICBpZiAobV9tZWRp
YVNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTYxNjcsMzMgKzYx
NjcsMzMgQEAgdW5zaWduZWQgbG9uZyBsb25nIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbGVTaXplKCkg
Y29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFUeXBlKCkgY29uc3QKK1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRp
YVR5cGUgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFUeXBlKCkgY29uc3QKIHsKICAgICBpZiAobV9w
bGF5ZXIgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfTUVUQURBVEEpCi0gICAgICAgIHJldHVybiBo
YXNWaWRlbygpID8gTWVkaWFTZXNzaW9uOjpWaWRlbyA6IE1lZGlhU2Vzc2lvbjo6QXVkaW87Cisg
ICAgICAgIHJldHVybiBoYXNWaWRlbygpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvIDog
UGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvOwogCiAgICAgcmV0dXJuIHByZXNlbnRhdGlvblR5
cGUoKTsKIH0KIAotTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgSFRNTE1lZGlhRWxlbWVudDo6cHJl
c2VudGF0aW9uVHlwZSgpIGNvbnN0CitQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIEhU
TUxNZWRpYUVsZW1lbnQ6OnByZXNlbnRhdGlvblR5cGUoKSBjb25zdAogewogICAgIGlmIChoYXNU
YWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpKQotICAgICAgICByZXR1cm4gTWVkaWFTZXNzaW9u
OjpWaWRlbzsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbzsKIAot
ICAgIHJldHVybiBNZWRpYVNlc3Npb246OkF1ZGlvOworICAgIHJldHVybiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6QXVkaW87CiB9CiAKLU1lZGlhU2Vzc2lvbjo6RGlzcGxheVR5cGUgSFRNTE1lZGlh
RWxlbWVudDo6ZGlzcGxheVR5cGUoKSBjb25zdAorUGxhdGZvcm1NZWRpYVNlc3Npb246OkRpc3Bs
YXlUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BsYXlUeXBlKCkgY29uc3QKIHsKICAgICBpZiAo
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKLSAg
ICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6RnVsbHNjcmVlbjsKKyAgICAgICAgcmV0dXJuIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpGdWxsc2NyZWVuOwogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVl
bk1vZGUgJiBWaWRlb0Z1bGxzY3JlZW5Nb2RlT3B0aW1pemVkKQotICAgICAgICByZXR1cm4gTWVk
aWFTZXNzaW9uOjpPcHRpbWl6ZWQ7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6T3B0aW1pemVkOwogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxs
c2NyZWVuTW9kZU5vbmUpCi0gICAgICAgIHJldHVybiBNZWRpYVNlc3Npb246Ok5vcm1hbDsKKyAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb3JtYWw7CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gTWVkaWFTZXNzaW9uOjpOb3JtYWw7CisgICAgcmV0
dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb3JtYWw7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQpAQCAtNjIyNSwyOCArNjIyNSwyOCBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdAogICAgIHJldHVybiBtX2N1cnJlbnRTcmM7CiB9CiAK
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCiB7CiAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKCVw
KSAtICVpIiwgdGhpcywgc3RhdGljX2Nhc3Q8aW50Pihjb21tYW5kKSk7CiAKICAgICBzd2l0Y2gg
KGNvbW1hbmQpIHsKLSAgICBjYXNlIE1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQ6CisgICAgY2Fz
ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQ6CiAgICAgICAgIHBsYXkoKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZDoKKyAgICBj
YXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQ6CiAgICAgICAgIHBhdXNlKCk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VD
b21tYW5kOgorICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNv
bW1hbmQ6CiAgICAgICAgIGNhblBsYXkoKSA/IHBsYXkoKSA6IHBhdXNlKCk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQ6
CisgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21t
YW5kOgogICAgICAgICBiZWdpblNjYW5uaW5nKEJhY2t3YXJkKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBNZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kOgorICAgIGNh
c2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kOgogICAg
ICAgICBiZWdpblNjYW5uaW5nKEZvcndhcmQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1l
ZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDoKLSAgICBjYXNlIE1lZGlhU2Vz
c2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kOgorICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNl
c3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ6CisgICAgY2FzZSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kOgogICAgICAgICBlbmRTY2FubmluZygp
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAppbmRleCBkZjQ0NWY4OWQzMzQ3OGZkN2I5Njk4MWQ3NTllNGM4MWM2YTRhZGZm
Li43MDgwY2M4ZTUyZTAwMmRiYmRhYzc5MWZkNGNjODBlNTcwMmU5NzQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTcsNyArOTcsNyBAQCBjbGFzcyBNZWRpYVN0
cmVhbTsKIAogY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogICAgIDogcHVibGljIEhUTUxFbGVtZW50
Ci0gICAgLCBwcml2YXRlIE1lZGlhUGxheWVyQ2xpZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBw
b3J0c1R5cGVDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlICwgcHVibGljIE1l
ZGlhU2Vzc2lvbkNsaWVudCwgcHJpdmF0ZSBNZWRpYVByb2R1Y2VyCisgICAgLCBwcml2YXRlIE1l
ZGlhUGxheWVyQ2xpZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQsIHBy
aXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlICwgcHVibGljIFBsYXRmb3JtTWVkaWFTZXNzaW9u
Q2xpZW50LCBwcml2YXRlIE1lZGlhUHJvZHVjZXIKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgLCBwcml2YXRlIEF1ZGlvVHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xp
ZW50CkBAIC01NjgsNyArNTY4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdmlydHVhbCBi
b29sIG1lZGlhUGxheWVyU2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckhhbmRsZVBsYXliYWNrQ29tbWFuZChNZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKSBvdmVycmlkZSB7IGRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
ckhhbmRsZVBsYXliYWNrQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlIGNvbW1hbmQpIG92ZXJyaWRlIHsgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xD
b21tYW5kKGNvbW1hbmQpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VB
cHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFZlY3Rv
cjxTdHJpbmc+IG1lZGlhUGxheWVyUHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3MoKSBjb25z
dCBvdmVycmlkZTsKIApAQCAtNjkwLDE3ICs2OTAsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIGVu
c3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCgpOwogI2VuZGlmCiAKLSAgICAvLyBNZWRp
YVNlc3Npb25DbGllbnQgT3ZlcnJpZGVzCi0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlh
VHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lv
bjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIE1lZGlhU2Vzc2lvbjo6RGlzcGxheVR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICAvLyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCBPdmVycmlkZXMKKyAgICB2aXJ0
dWFsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNl
bnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpEaXNwbGF5VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
bWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgU3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBkb3VibGUgbWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBk
dXJhdGlvbigpOyB9CiAgICAgdmlydHVhbCBkb3VibGUgbWVkaWFTZXNzaW9uQ3VycmVudFRpbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50VGltZSgpOyB9CiAgICAgdmlydHVhbCBi
b29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgb3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IGU4ZDZjZDkw
MDY2MjI5N2RjYzM3N2Y3NmI5YjRjMDVlZDBjNjU4MTguLmFlYTZiYThiODJkMGYxNzk4YzVlYmU2
YjMwYzYyZDM3ZjMyZThhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRv
TmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RGlzcGxheU1vZGUoRGlzcGxheU1vZGUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpWaWRlbzsgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvOyB9CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SFRNTEltYWdlTG9hZGVyPiBtX2ltYWdlTG9hZGVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCBlMDg5OTM5ZDM4MjAzZTZlOWY4NTFk
MzA3ZDc4NDliMzVlOTAzYzhmLi4xYTllOWExMmQ5YTU1NDUyNGI0YzNjMzZmNjYyYTdhNzA5OWRi
NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAg
LTc4LDggKzc4LDggQEAgc3RhdGljIFN0cmluZyByZXN0cmljdGlvbk5hbWUoTWVkaWFFbGVtZW50
U2Vzc2lvbjo6QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3QKIH0KICNlbmRpZgogCi1NZWRp
YUVsZW1lbnRTZXNzaW9uOjpNZWRpYUVsZW1lbnRTZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVudCYg
Y2xpZW50KQotICAgIDogTWVkaWFTZXNzaW9uKGNsaWVudCkKK01lZGlhRWxlbWVudFNlc3Npb246
Ok1lZGlhRWxlbWVudFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkK
KyAgICA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uKGNsaWVudCkKICAgICAsIG1fcmVzdHJpY3Rpb25z
KE5vUmVzdHJpY3Rpb25zKQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAg
ICAgLCBtX3RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lcigqdGhpcywgJk1lZGlhRWxlbWVu
dFNlc3Npb246OnRhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAppbmRleCA1NmQxOTNhMGM3ZTQ1NmVmNWE0
N2RlMDFkYTUzZWVmZTE2YmZjNjg5Li5mOTQzNTUxZTk3MTVjNzk5N2NkODE3YTgxYmRiODZlOTdl
ZGNhZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApAQCAt
MjksNyArMjksNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVy
LmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNl
c3Npb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
OCwxMCArMzgsMTAgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50Owog
Y2xhc3MgU291cmNlQnVmZmVyOwogCi1jbGFzcyBNZWRpYUVsZW1lbnRTZXNzaW9uIGZpbmFsIDog
cHVibGljIE1lZGlhU2Vzc2lvbiB7CitjbGFzcyBNZWRpYUVsZW1lbnRTZXNzaW9uIGZpbmFsIDog
cHVibGljIFBsYXRmb3JtTWVkaWFTZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNZWRpYUVsZW1lbnRTZXNzaW9uKE1lZGlhU2Vzc2lv
bkNsaWVudCYpOworICAgIGV4cGxpY2l0IE1lZGlhRWxlbWVudFNlc3Npb24oUGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5NZWRpYUVsZW1lbnRTZXNzaW9uKCkgeyB9
CiAKICAgICB2b2lkIHJlZ2lzdGVyV2l0aERvY3VtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgK
aW5kZXggOWM2YTI0NjY1NGQ0NGI2OTdkZTZiOTNkNjdkMTFmYmYzMjJmYTE1OC4uYjdkOTEyMDRi
ZjNiNjg2YmZiN2JmYTAyMWM2MWQ5M2E1ODE1OTRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5k
ZWYgUmVtb3RlQ29tbWFuZExpc3RlbmVyX2gKICNkZWZpbmUgUmVtb3RlQ29tbWFuZExpc3RlbmVy
X2gKIAotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsNyArMzQsNyBAQCBjbGFz
cyBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCgp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpID0gMDsKIH07CiAKIGNsYXNzIFJlbW90ZUNvbW1hbmRM
aXN0ZW5lciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRp
YVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9u
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjliODQ2ZjJjZmNmZDk0N2QxZWEw
NjIwMjJlNTY1YWQ1MzgyMGFjYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKLQotI2lmIEVOQUJMRShW
SURFTykKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IGRvdWJsZSBrQ2xpZW50RGF0YUJ1
ZmZlcmluZ1RpbWVyVGhyb3R0bGVEZWxheSA9IDAuMTsKLQotI2lmICFMT0dfRElTQUJMRUQKLXN0
YXRpYyBjb25zdCBjaGFyKiBzdGF0ZU5hbWUoTWVkaWFTZXNzaW9uOjpTdGF0ZSBzdGF0ZSkKLXsK
LSNkZWZpbmUgQ0FTRShzdGF0ZSkgY2FzZSBNZWRpYVNlc3Npb246OnN0YXRlOiByZXR1cm4gI3N0
YXRlCi0gICAgc3dpdGNoIChzdGF0ZSkgewotICAgIENBU0UoSWRsZSk7Ci0gICAgQ0FTRShQbGF5
aW5nKTsKLSAgICBDQVNFKFBhdXNlZCk7Ci0gICAgQ0FTRShJbnRlcnJ1cHRlZCk7Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuICIiOwotfQotI2VuZGlmCi0K
LXN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKE1lZGlh
U2Vzc2lvbkNsaWVudCYgY2xpZW50KQotewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1l
ZGlhU2Vzc2lvbj4oY2xpZW50KTsKLX0KLQotTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24oTWVk
aWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBt
X2NsaWVudERhdGFCdWZmZXJpbmdUaW1lcigqdGhpcywgJk1lZGlhU2Vzc2lvbjo6Y2xpZW50RGF0
YUJ1ZmZlcmluZ1RpbWVyRmlyZWQpCi0gICAgLCBtX3N0YXRlKElkbGUpCi0gICAgLCBtX3N0YXRl
VG9SZXN0b3JlKElkbGUpCi0gICAgLCBtX25vdGlmeWluZ0NsaWVudChmYWxzZSkKLXsKLSAgICBB
U1NFUlQobV9jbGllbnQubWVkaWFUeXBlKCkgPj0gTm9uZSAmJiBtX2NsaWVudC5tZWRpYVR5cGUo
KSA8PSBXZWJBdWRpbyk7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LmFkZFNlc3Npb24oKnRoaXMpOwotfQotCi1NZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24oKQot
ewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9u
KCp0aGlzKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNldFN0YXRlKFN0YXRlIHN0YXRlKQot
ewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6c2V0U3RhdGUoJXApIC0gJXMiLCB0aGlz
LCBzdGF0ZU5hbWUoc3RhdGUpKTsKLSAgICBtX3N0YXRlID0gc3RhdGU7Ci19Ci0KLXZvaWQgTWVk
aWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCi17Ci0g
ICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbiglcCksIHN0YXRl
ID0gJXMsIGludGVycnVwdGlvbiBjb3VudCA9ICVpIiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUp
LCBtX2ludGVycnVwdGlvbkNvdW50KTsKLQotICAgIGlmICgrK21faW50ZXJydXB0aW9uQ291bnQg
PiAxIHx8ICh0eXBlID09IEVudGVyaW5nQmFja2dyb3VuZCAmJiBjbGllbnQoKS5vdmVycmlkZUJh
Y2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3N0YXRlVG9SZXN0b3JlID0gc3RhdGUoKTsKLSAgICBtX25vdGlmeWluZ0NsaWVudCA9IHRydWU7
Ci0gICAgc2V0U3RhdGUoSW50ZXJydXB0ZWQpOwotICAgIGNsaWVudCgpLnN1c3BlbmRQbGF5YmFj
aygpOwotICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0gZmFsc2U7Ci19Ci0KLXZvaWQgTWVkaWFTZXNz
aW9uOjplbmRJbnRlcnJ1cHRpb24oRW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCi17Ci0gICAg
TE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oJXApIC0gZmxhZ3MgPSAl
aSwgc3RhdGVUb1Jlc3RvcmUgPSAlcywgaW50ZXJydXB0aW9uIGNvdW50ID0gJWkiLCB0aGlzLCAo
aW50KWZsYWdzLCBzdGF0ZU5hbWUobV9zdGF0ZVRvUmVzdG9yZSksIG1faW50ZXJydXB0aW9uQ291
bnQpOwotCi0gICAgaWYgKCFtX2ludGVycnVwdGlvbkNvdW50KSB7Ci0gICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKCVwKSAtICEhIGlnbm9yaW5nIHNwdXJp
b3VzIGludGVycnVwdGlvbiBlbmQgISEiLCB0aGlzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICgtLW1faW50ZXJydXB0aW9uQ291bnQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFN0YXRlIHN0YXRlVG9SZXN0b3JlID0gbV9zdGF0ZVRvUmVzdG9yZTsKLSAgICBtX3N0YXRlVG9S
ZXN0b3JlID0gSWRsZTsKLSAgICBzZXRTdGF0ZShQYXVzZWQpOwotCi0gICAgYm9vbCBzaG91bGRS
ZXN1bWUgPSBmbGFncyAmIE1heVJlc3VtZVBsYXlpbmcgJiYgc3RhdGVUb1Jlc3RvcmUgPT0gUGxh
eWluZzsKLSAgICBjbGllbnQoKS5tYXlSZXN1bWVQbGF5YmFjayhzaG91bGRSZXN1bWUpOwotfQot
Ci1ib29sIE1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKQotewotICAgIGlm
IChtX25vdGlmeWluZ0NsaWVudCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxheWJh
Y2soKnRoaXMpKSB7Ci0gICAgICAgIGlmIChzdGF0ZSgpID09IEludGVycnVwdGVkKQotICAgICAg
ICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBsYXlpbmc7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBzZXRTdGF0ZShQbGF5aW5nKTsKLSAgICB1cGRhdGVDbGllbnREYXRhQnVm
ZmVyaW5nKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uOjpjbGll
bnRXaWxsUGF1c2VQbGF5YmFjaygpCi17Ci0gICAgaWYgKG1fbm90aWZ5aW5nQ2xpZW50KQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6Y2xpZW50
V2lsbFBhdXNlUGxheWJhY2soJXApLSBzdGF0ZSA9ICVzIiwgdGhpcywgc3RhdGVOYW1lKG1fc3Rh
dGUpKTsKLSAgICBpZiAoc3RhdGUoKSA9PSBJbnRlcnJ1cHRlZCkgewotICAgICAgICBtX3N0YXRl
VG9SZXN0b3JlID0gUGF1c2VkOwotICAgICAgICBMT0coTWVkaWEsICIgICAgICBzZXR0aW5nIHN0
YXRlVG9SZXN0b3JlIHRvIFwiUGF1c2VkXCIiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICAKLSAgICBzZXRTdGF0ZShQYXVzZWQpOwotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEVuZFBsYXliYWNrKCp0aGlzKTsKLSAgICBpZiAo
IW1fY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fY2xpZW50
RGF0YUJ1ZmZlcmluZ1RpbWVyLnN0YXJ0T25lU2hvdChrQ2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVy
VGhyb3R0bGVEZWxheSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9u
OjpwYXVzZVNlc3Npb24oKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6cGF1c2VT
ZXNzaW9uKCVwKSIsIHRoaXMpOwotICAgIG1fY2xpZW50LnN1c3BlbmRQbGF5YmFjaygpOwotfQot
Ci1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBNZWRpYVNlc3Npb246Om1lZGlhVHlwZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhVHlwZSgpOwotfQotCi1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZSBNZWRpYVNlc3Npb246OnByZXNlbnRhdGlvblR5cGUoKSBjb25zdAotewotICAg
IHJldHVybiBtX2NsaWVudC5wcmVzZW50YXRpb25UeXBlKCk7Ci19Ci0KLVN0cmluZyBNZWRpYVNl
c3Npb246OnRpdGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9u
VGl0bGUoKTsKLX0KLQotZG91YmxlIE1lZGlhU2Vzc2lvbjo6ZHVyYXRpb24oKSBjb25zdAotewot
ICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNlc3Npb25EdXJhdGlvbigpOwotfQotCi1kb3VibGUg
TWVkaWFTZXNzaW9uOjpjdXJyZW50VGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50
Lm1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lKCk7Ci19Ci0gICAgCi1ib29sIE1lZGlhU2Vzc2lvbjo6
Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
Y2xpZW50LmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKTsKLX0KLQotdm9pZCBNZWRp
YVNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUgY29tbWFuZCkKLXsKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJv
bENvbW1hbmQoY29tbWFuZCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjp2aXNpYmlsaXR5Q2hh
bmdlZCgpCi17Ci0gICAgaWYgKCFtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lci5pc0FjdGl2ZSgp
KQotICAgICAgICBtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lci5zdGFydE9uZVNob3Qoa0NsaWVu
dERhdGFCdWZmZXJpbmdUaW1lclRocm90dGxlRGVsYXkpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lv
bjo6Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQotewotICAgIExPRyhNZWRpYSwgIk1l
ZGlhU2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmlyZWQoJXApLSB2aXNpYmxlID0g
JXMiLCB0aGlzLCBtX2NsaWVudC5lbGVtZW50SXNIaWRkZW4oKSA/ICJmYWxzZSIgOiAidHJ1ZSIp
OwotCi0gICAgdXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpOwotCi0gICAgaWYgKG1fc3RhdGUg
IT0gUGxheWluZyB8fCAhbV9jbGllbnQuZWxlbWVudElzSGlkZGVuKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJp
Y3Rpb25zID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc3RyaWN0aW9u
cyhtZWRpYVR5cGUoKSk7Ci0gICAgaWYgKChyZXN0cmljdGlvbnMgJiBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKSA9PSBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKQotICAgICAgICBwYXVzZVNlc3Np
b24oKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnVwZGF0ZUNsaWVudERhdGFCdWZmZXJpbmco
KQotewotICAgIGlmIChtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lci5pc0FjdGl2ZSgpKQotICAg
ICAgICBtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lci5zdG9wKCk7Ci0KLSAgICBtX2NsaWVudC5z
ZXRTaG91bGRCdWZmZXJEYXRhKE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5z
ZXNzaW9uQ2FuTG9hZE1lZGlhKCp0aGlzKSk7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uOjppc0hp
ZGRlbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50LmVsZW1lbnRJc0hpZGRlbigpOwot
fQotCi1NZWRpYVNlc3Npb246OkRpc3BsYXlUeXBlIE1lZGlhU2Vzc2lvbjo6ZGlzcGxheVR5cGUo
KSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudC5kaXNwbGF5VHlwZSgpOwotfQotCi1TdHJp
bmcgTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFN0cmluZygpOwotfQotCi1kb3VibGUgTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNl
c3Npb25EdXJhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZhbGlk
VGltZSgpOwotfQotCi1kb3VibGUgTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25DdXJy
ZW50VGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgp
OwotfQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGUwNjAxOGExZmU1ZDU3MDk3
NWY2YjI5OTBmYjI3MzY4ZTU3OWUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgTWVkaWFTZXNzaW9uX2gKLSNkZWZpbmUgTWVkaWFTZXNzaW9uX2gKLQotI2luY2x1ZGUgIk1l
ZGlhUHJvZHVjZXIuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q2xp
ZW50LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVBsYXli
YWNrVGFyZ2V0OwotY2xhc3MgTWVkaWFTZXNzaW9uQ2xpZW50OwotCi1jbGFzcyBNZWRpYVNlc3Np
b24KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIDogcHVibGljIE1l
ZGlhUGxheWJhY2tUYXJnZXRDbGllbnQKLSNlbmRpZgotewotcHVibGljOgotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBjcmVhdGUoTWVkaWFTZXNzaW9uQ2xpZW50Jik7
Ci0KLSAgICBNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50Jik7Ci0gICAgdmlydHVhbCB+
TWVkaWFTZXNzaW9uKCk7Ci0KLSAgICBlbnVtIE1lZGlhVHlwZSB7Ci0gICAgICAgIE5vbmUgPSAw
LAotICAgICAgICBWaWRlbywKLSAgICAgICAgQXVkaW8sCi0gICAgICAgIFdlYkF1ZGlvLAotICAg
IH07Ci0gICAgTWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0OwotICAgIE1lZGlhVHlwZSBwcmVz
ZW50YXRpb25UeXBlKCkgY29uc3Q7Ci0KLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgSWRsZSwK
LSAgICAgICAgUGxheWluZywKLSAgICAgICAgUGF1c2VkLAotICAgICAgICBJbnRlcnJ1cHRlZCwK
LSAgICB9OwotICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQotICAg
IHZvaWQgc2V0U3RhdGUoU3RhdGUpOwotCi0gICAgZW51bSBJbnRlcnJ1cHRpb25UeXBlIHsKLSAg
ICAgICAgU3lzdGVtU2xlZXAsCi0gICAgICAgIEVudGVyaW5nQmFja2dyb3VuZCwKLSAgICAgICAg
U3lzdGVtSW50ZXJydXB0aW9uLAotICAgIH07Ci0gICAgZW51bSBFbmRJbnRlcnJ1cHRpb25GbGFn
cyB7Ci0gICAgICAgIE5vRmxhZ3MgPSAwLAotICAgICAgICBNYXlSZXN1bWVQbGF5aW5nID0gMSA8
PCAwLAotICAgIH07Ci0gICAgdm9pZCBiZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBl
KTsKLSAgICB2b2lkIGVuZEludGVycnVwdGlvbihFbmRJbnRlcnJ1cHRpb25GbGFncyk7Ci0KLSAg
ICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0OwotICAgIHZvaWQg
YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kKCkgY29uc3Q7Ci0KLSAgICBib29sIGNsaWVu
dFdpbGxCZWdpblBsYXliYWNrKCk7Ci0gICAgYm9vbCBjbGllbnRXaWxsUGF1c2VQbGF5YmFjaygp
OwotCi0gICAgdm9pZCBwYXVzZVNlc3Npb24oKTsKLSAgICAKLSAgICB2b2lkIHZpc2liaWxpdHlD
aGFuZ2VkKCk7Ci0KLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdDsKLSAgICBkb3VibGUgZHVyYXRp
b24oKSBjb25zdDsKLSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdDsKLQotICAgIGVudW0g
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHsKLSAgICAgICAgTm9Db21tYW5kLAotICAgICAgICBQ
bGF5Q29tbWFuZCwKLSAgICAgICAgUGF1c2VDb21tYW5kLAotICAgICAgICBTdG9wQ29tbWFuZCwK
LSAgICAgICAgVG9nZ2xlUGxheVBhdXNlQ29tbWFuZCwKLSAgICAgICAgQmVnaW5TZWVraW5nQmFj
a3dhcmRDb21tYW5kLAotICAgICAgICBFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kLAotICAgICAg
ICBCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKLSAgICAgICAgRW5kU2Vla2luZ0ZvcndhcmRD
b21tYW5kLAotICAgIH07Ci0gICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRz
KCkgY29uc3Q7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlKTsKLQotICAgIGVudW0gRGlzcGxheVR5cGUgewotICAgICAgICBO
b3JtYWwsCi0gICAgICAgIEZ1bGxzY3JlZW4sCi0gICAgICAgIE9wdGltaXplZCwKLSAgICB9Owot
ICAgIERpc3BsYXlUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7Ci0KLSAgICBib29sIGlzSGlkZGVu
KCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1Rh
cmdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUGxheWlu
Z1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIC8vIE1lZGlhUGxheWJhY2tU
YXJnZXRDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUmVmPE1lZGlh
UGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBleHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBvdmVycmlkZSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgb3ZlcnJpZGUg
eyB9Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWly
ZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAgIE1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIGNsaWVudERh
dGFCdWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCB1cGRhdGVDbGllbnREYXRhQnVmZmVy
aW5nKCk7Ci0KLSAgICBNZWRpYVNlc3Npb25DbGllbnQmIG1fY2xpZW50OwotICAgIFRpbWVyIG1f
Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyOwotICAgIFN0YXRlIG1fc3RhdGU7Ci0gICAgU3RhdGUg
bV9zdGF0ZVRvUmVzdG9yZTsKLSAgICBpbnQgbV9pbnRlcnJ1cHRpb25Db3VudCB7IDAgfTsKLSAg
ICBib29sIG1fbm90aWZ5aW5nQ2xpZW50OwotfTsKLQotY2xhc3MgTWVkaWFTZXNzaW9uQ2xpZW50
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVNlc3Npb25DbGllbnQpOwotcHVibGlj
OgotICAgIE1lZGlhU2Vzc2lvbkNsaWVudCgpIHsgfQotICAgIAotICAgIHZpcnR1YWwgTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgTWVk
aWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6RGlzcGxheVR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCB7IHJl
dHVybiBNZWRpYVNlc3Npb246Ok5vcm1hbDsgfQotCi0gICAgdmlydHVhbCB2b2lkIG1heVJlc3Vt
ZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN1c3Bl
bmRQbGF5YmFjaygpID0gMDsKLQotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxl
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBkb3VibGUgbWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNvbnN0Owot
ICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1h
bmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpID0gMDsKLQotICAgIHZp
cnR1YWwgdm9pZCBzZXRTaG91bGRCdWZmZXJEYXRhKGJvb2wpIHsgfQotICAgIHZpcnR1YWwgYm9v
bCBlbGVtZW50SXNIaWRkZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVh
bCBib29sIG92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKSBjb25zdCA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQ
bGF5YmFja1RhcmdldD4mJikgeyB9Ci0gICAgdmlydHVhbCBib29sIGNhblBsYXlUb1dpcmVsZXNz
UGxheWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29s
KSB7IH0KLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbkNsaWVudCgpIHsg
fQotfTsKLQotfQotCi0jZW5kaWYgLy8gTWVkaWFTZXNzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggZjU3
MDQ3Nzk4ZWQ1OTYyOTI5MzFlZDcxMzNkNDFmZjBlMzUxNGRkMy4uZTE3NzA1M2ZkNjYxMDMyMjVi
ODE5YmU3ZGZmYTQ1Zjg1YzZlNGNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNp
bmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDE0
ICs1MSwxNCBAQCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZWRpYVNlc3Npb25NYW5hZ2VyKCkKIAog
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXNldFJlc3RyaWN0aW9ucygpCiB7Ci0gICAgbV9y
ZXN0cmljdGlvbnNbTWVkaWFTZXNzaW9uOjpWaWRlb10gPSBOb1Jlc3RyaWN0aW9uczsKLSAgICBt
X3Jlc3RyaWN0aW9uc1tNZWRpYVNlc3Npb246OkF1ZGlvXSA9IE5vUmVzdHJpY3Rpb25zOwotICAg
IG1fcmVzdHJpY3Rpb25zW01lZGlhU2Vzc2lvbjo6V2ViQXVkaW9dID0gTm9SZXN0cmljdGlvbnM7
CisgICAgbV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvXSA9IE5vUmVz
dHJpY3Rpb25zOworICAgIG1fcmVzdHJpY3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRp
b10gPSBOb1Jlc3RyaWN0aW9uczsKKyAgICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6V2ViQXVkaW9dID0gTm9SZXN0cmljdGlvbnM7CiB9CiAKLWJvb2wgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6aGFzKE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnN0Citib29sIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmhhcyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5
cGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHR5cGUgPj0gTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5
cGUgPD0gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CisgICAgQVNTRVJUKHR5cGUgPj0gUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2Vi
QXVkaW8pOwogCiAgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewogICAgICAg
ICBpZiAoc2Vzc2lvbi0+bWVkaWFUeXBlKCkgPT0gdHlwZSkKQEAgLTcxLDE2ICs3MSwxNiBAQCBi
b29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmhhcyhNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBl
KSBjb25zdAogYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphY3RpdmVBdWRpb1Nlc3Npb25SZXF1
aXJlZCgpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewot
ICAgICAgICBpZiAoc2Vzc2lvbi0+bWVkaWFUeXBlKCkgIT0gTWVkaWFTZXNzaW9uOjpOb25lICYm
IHNlc3Npb24tPnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpTdGF0ZTo6UGxheWluZykKKyAgICAg
ICAgaWYgKHNlc3Npb24tPm1lZGlhVHlwZSgpICE9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25l
ICYmIHNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0YXRlOjpQbGF5
aW5nKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotaW50IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KE1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIHR5cGUpIGNvbnN0CitpbnQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y291bnQoUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAogewotICAgIEFTU0VSVCh0
eXBlID49IE1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vzc2lvbjo6V2ViQXVk
aW8pOworICAgIEFTU0VSVCh0eXBlID49IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5
cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKIAogICAgIGludCBjb3VudCA9
IDA7CiAgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewpAQCAtOTEsMzQgKzkx
LDM0IEBAIGludCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudChNZWRpYVNlc3Npb246Ok1lZGlh
VHlwZSB0eXBlKSBjb25zdAogICAgIHJldHVybiBjb3VudDsKIH0KIAotdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpiZWdpbkludGVycnVwdGlvbihNZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5
cGUgdHlwZSkKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkKIHsKICAgICBMT0coTWVk
aWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpiZWdpbkludGVycnVwdGlvbiIpOwogCiAgICAgbV9p
bnRlcnJ1cHRlZCA9IHRydWU7Ci0gICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0g
bV9zZXNzaW9uczsKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9
IG1fc2Vzc2lvbnM7CiAgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbnMpCiAgICAgICAg
IHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKHR5cGUpOwogICAgIHVwZGF0ZVNlc3Npb25TdGF0
ZSgpOwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVuZEludGVycnVwdGlvbihNZWRp
YVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQordm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVw
dGlvbkZsYWdzIGZsYWdzKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmVuZEludGVycnVwdGlvbiIpOwogCiAgICAgbV9pbnRlcnJ1cHRlZCA9IGZhbHNlOwotICAgIFZl
Y3RvcjxNZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgVmVjdG9yPFBs
YXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwogICAgIGZvciAoYXV0
byogc2Vzc2lvbiA6IHNlc3Npb25zKQogICAgICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24o
ZmxhZ3MpOwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNlc3Npb24oTWVkaWFT
ZXNzaW9uJiBzZXNzaW9uKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9uKFBs
YXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFkZFNlc3Npb24gLSAlcCIsICZzZXNzaW9uKTsKICAgICAKICAgICBtX3Nl
c3Npb25zLmFwcGVuZCgmc2Vzc2lvbik7CiAgICAgaWYgKG1faW50ZXJydXB0ZWQpCi0gICAgICAg
IHNlc3Npb24uc2V0U3RhdGUoTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCk7CisgICAgICAgIHNl
c3Npb24uc2V0U3RhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKTsKIAogICAg
IGlmICghbV9yZW1vdGVDb21tYW5kTGlzdGVuZXIpCiAgICAgICAgIG1fcmVtb3RlQ29tbWFuZExp
c3RlbmVyID0gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOwpAQCAtMTI5LDcg
KzEyOSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkU2Vzc2lvbihNZWRpYVNlc3Np
b24mIHNlc3Npb24pCiAgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CiB9CiAKLXZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6cmVtb3ZlU2Vzc2lvbihNZWRpYVNlc3Npb24mIHNlc3Npb24pCit2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24m
IHNlc3Npb24pCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
U2Vzc2lvbiAtICVwIiwgJnNlc3Npb24pOwogICAgIApAQCAtMTQ4LDMzICsxNDgsMzMgQEAgdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lv
bikKICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyOjphZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlLCBTZXNzaW9u
UmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRS
ZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUsIFNlc3Npb25S
ZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCiB7Ci0gICAgQVNTRVJUKHR5cGUgPiBNZWRpYVNlc3Np
b246Ok5vbmUgJiYgdHlwZSA8PSBNZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKyAgICBBU1NFUlQo
dHlwZSA+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRp
YVNlc3Npb246OldlYkF1ZGlvKTsKICAgICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSB8PSByZXN0cmlj
dGlvbjsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVSZXN0cmljdGlvbihN
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0
aW9uKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVSZXN0cmljdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUsIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJp
Y3Rpb24pCiB7Ci0gICAgQVNTRVJUKHR5cGUgPiBNZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8
PSBNZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKyAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlv
KTsKICAgICBtX3Jlc3RyaWN0aW9uc1t0eXBlXSAmPSB+cmVzdHJpY3Rpb247CiB9CiAKLU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OlNlc3Npb25SZXN0cmljdGlvbnMgTWVkaWFTZXNzaW9uTWFuYWdlcjo6
cmVzdHJpY3Rpb25zKE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpCitNZWRpYVNlc3Npb25N
YW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25zIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3RyaWN0
aW9ucyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpCiB7Ci0gICAgQVNTRVJU
KHR5cGUgPiBNZWRpYVNlc3Npb246Ok5vbmUgJiYgdHlwZSA8PSBNZWRpYVNlc3Npb246OldlYkF1
ZGlvKTsKKyAgICBBU1NFUlQodHlwZSA+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5
cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKICAgICByZXR1cm4gbV9yZXN0
cmljdGlvbnNbdHlwZV07CiB9CiAKLWJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldp
bGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK2Jvb2wgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25X
aWxsQmVnaW5QbGF5YmFjayAtICVwIiwgJnNlc3Npb24pOwogICAgIAogICAgIHNldEN1cnJlbnRT
ZXNzaW9uKHNlc3Npb24pOwogCi0gICAgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgc2Vzc2lvblR5
cGUgPSBzZXNzaW9uLm1lZGlhVHlwZSgpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRp
YVR5cGUgc2Vzc2lvblR5cGUgPSBzZXNzaW9uLm1lZGlhVHlwZSgpOwogICAgIFNlc3Npb25SZXN0
cmljdGlvbnMgcmVzdHJpY3Rpb25zID0gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdOwotICAg
IGlmIChzZXNzaW9uLnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCAmJiByZXN0
cmljdGlvbnMgJiBJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkKQorICAgIGlmIChzZXNz
aW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkICYmIHJlc3Ry
aWN0aW9ucyAmIEludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQpAQCAtMTgzLDkgKzE4Myw5IEBAIGJv
b2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vz
c2lvbiYgc2Vzc2lvbikKICNlbmRpZgogCiAgICAgaWYgKG1faW50ZXJydXB0ZWQpCi0gICAgICAg
IGVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246Ok5vRmxhZ3MpOworICAgICAgICBlbmRJbnRl
cnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vRmxhZ3MpOwogCi0gICAgVmVjdG9yPE1l
ZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKKyAgICBWZWN0b3I8UGxhdGZvcm1N
ZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CiAgICAgZm9yIChhdXRvKiBvbmVT
ZXNzaW9uIDogc2Vzc2lvbnMpIHsKICAgICAgICAgaWYgKG9uZVNlc3Npb24gPT0gJnNlc3Npb24p
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBib29sIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Np
b24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQordm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNz
aW9uJiBzZXNzaW9uKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
c3Npb25XaWxsRW5kUGxheWJhY2sgLSAlcCIsICZzZXNzaW9uKTsKICAgICAKQEAgLTIwNywxNyAr
MjA3LDE3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFj
ayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCiAgICAgc2l6ZV90IHBhdXNpbmdTZXNzaW9uSW5kZXgg
PSBub3RGb3VuZDsKICAgICBzaXplX3QgbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXggPSBub3RGb3Vu
ZDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2Vzc2lvbnMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgTWVkaWFTZXNzaW9uKiBvbmVTZXNzaW9uID0gbV9zZXNzaW9uc1tpXTsKKyAgICAg
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb24qIG9uZVNlc3Npb24gPSBtX3Nlc3Npb25zW2ldOwogICAg
ICAgICAKICAgICAgICAgaWYgKG9uZVNlc3Npb24gPT0gJnNlc3Npb24pIHsKICAgICAgICAgICAg
IHBhdXNpbmdTZXNzaW9uSW5kZXggPSBpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKG9uZVNlc3Npb24tPnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpQbGF5
aW5nKSB7CisgICAgICAgIGlmIChvbmVTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpQbGF5aW5nKSB7CiAgICAgICAgICAgICBsYXN0UGxheWluZ1Nlc3Npb25JbmRleCA9
IGk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAob25lU2Vz
c2lvbi0+c3RhdGUoKSAhPSBNZWRpYVNlc3Npb246OlBsYXlpbmcpCisgICAgICAgIGlmIChvbmVT
ZXNzaW9uLT5zdGF0ZSgpICE9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChsYXN0UGxheWluZ1Nlc3Npb25JbmRleCA9PSBu
b3RGb3VuZCB8fCBwYXVzaW5nU2Vzc2lvbkluZGV4ID09IG5vdEZvdW5kKQpAQCAtMjMyLDcgKzIz
Miw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhN
ZWRpYVNlc3Npb24mIHNlc3Npb24pCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayAtIHNlc3Npb24gbW92ZWQgZnJvbSBpbmRleCAlenUg
dG8gJXp1IiwgcGF1c2luZ1Nlc3Npb25JbmRleCwgbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXgpOwog
fQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uKE1lZGlhU2Vz
c2lvbiYgc2Vzc2lvbikKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Np
b24oUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFNlc3Npb24gLSAlcCIsICZzZXNzaW9uKTsKICAg
ICAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJl
bnRTZXNzaW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKICAgICBMT0coTWVkaWEsICJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbiAtIHNlc3Npb24gbW92ZWQgZnJvbSBpbmRl
eCAlenUgdG8gMCIsIGluZGV4KTsKIH0KICAgICAKLU1lZGlhU2Vzc2lvbiogTWVkaWFTZXNzaW9u
TWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKQorUGxhdGZvcm1NZWRpYVNlc3Npb24qIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uKCkKIHsKICAgICBpZiAoIW1fc2Vzc2lvbnMuc2l6
ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI1OCwzNyArMjU4LDM3IEBAIE1lZGlh
U2Vzc2lvbiogTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKQogICAgIHJldHVy
biBtX3Nlc3Npb25zWzBdOwogfQogICAgIAotYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNz
aW9uUmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBNZWRpYVNlc3Npb24mIHNlc3Np
b24pIGNvbnN0Citib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25SZXN0cmljdHNJbmxp
bmVWaWRlb1BsYXliYWNrKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKSBjb25z
dAogewotICAgIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHNlc3Npb25UeXBlID0gc2Vzc2lvbi5w
cmVzZW50YXRpb25UeXBlKCk7Ci0gICAgaWYgKHNlc3Npb25UeXBlICE9IE1lZGlhU2Vzc2lvbjo6
VmlkZW8pCisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBzZXNzaW9uVHlwZSA9
IHNlc3Npb24ucHJlc2VudGF0aW9uVHlwZSgpOworICAgIGlmIChzZXNzaW9uVHlwZSAhPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiBtX3Jlc3RyaWN0aW9uc1tzZXNzaW9uVHlwZV0gJiBJbmxpbmVWaWRlb1BsYXliYWNrUmVz
dHJpY3RlZDsKIH0KIAotYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uQ2FuTG9hZE1l
ZGlhKGNvbnN0IE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKK2Jvb2wgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2Vzc2lvbkNhbkxvYWRNZWRpYShjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYg
c2Vzc2lvbikgY29uc3QKIHsKLSAgICByZXR1cm4gc2Vzc2lvbi5zdGF0ZSgpID09IE1lZGlhU2Vz
c2lvbjo6UGxheWluZyB8fCAhc2Vzc2lvbi5pc0hpZGRlbigpIHx8IHNlc3Npb24uaXNQbGF5aW5n
VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCk7CisgICAgcmV0dXJuIHNlc3Npb24uc3RhdGUoKSA9
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZyB8fCAhc2Vzc2lvbi5pc0hpZGRlbigpIHx8
IHNlc3Npb24uaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCk7CiB9CiAKIHZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kKCkgY29u
c3QKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldp
bGxFbnRlckJhY2tncm91bmQiKTsKLSAgICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMg
PSBtX3Nlc3Npb25zOworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25z
ID0gbV9zZXNzaW9uczsKICAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9ucykgewogICAg
ICAgICBpZiAobV9yZXN0cmljdGlvbnNbc2Vzc2lvbi0+bWVkaWFUeXBlKCldICYgQmFja2dyb3Vu
ZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQpCi0gICAgICAgICAgICBzZXNzaW9uLT5iZWdpbklu
dGVycnVwdGlvbihNZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dyb3VuZCk7CisgICAgICAgICAg
ICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJp
bmdCYWNrZ3JvdW5kKTsKICAgICB9CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkgY29uc3QKIHsKICAgICBMT0coTWVkaWEsICJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQiKTsKLSAg
ICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOworICAgIFZlY3Rv
cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKICAgICBmb3Ig
KGF1dG8qIHNlc3Npb24gOiBzZXNzaW9ucykgewogICAgICAgICBpZiAobV9yZXN0cmljdGlvbnNb
c2Vzc2lvbi0+bWVkaWFUeXBlKCldICYgQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0
ZWQpCi0gICAgICAgICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpN
YXlSZXN1bWVQbGF5aW5nKTsKKyAgICAgICAgICAgIHNlc3Npb24tPmVuZEludGVycnVwdGlvbihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CiAgICAgfQogfQogCkBAIC0y
OTgsOSArMjk4LDkgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3Rh
dGUoKQogfQogI2VuZGlmCiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
IGNvbW1hbmQpCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVSZW1vdGVDb250
cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
IGNvbW1hbmQpCiB7Ci0gICAgTWVkaWFTZXNzaW9uKiBhY3RpdmVTZXNzaW9uID0gY3VycmVudFNl
c3Npb24oKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogYWN0aXZlU2Vzc2lvbiA9IGN1cnJl
bnRTZXNzaW9uKCk7CiAgICAgaWYgKCFhY3RpdmVTZXNzaW9uIHx8ICFhY3RpdmVTZXNzaW9uLT5j
YW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkpCiAgICAgICAgIHJldHVybjsKICAgICBh
Y3RpdmVTZXNzaW9uLT5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCk7CkBA
IC0zMTIsNyArMzEyLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1XaWxsU2xl
ZXAoKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8gc2Vzc2lvbiA6IG1fc2Vzc2lv
bnMpCi0gICAgICAgIHNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6U3lz
dGVtU2xlZXApOworICAgICAgICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6U3lzdGVtU2xlZXApOwogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnN5c3RlbURpZFdha2UoKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c3lzdGVtRGlkV2FrZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoYXV0byBz
ZXNzaW9uIDogbV9zZXNzaW9ucykKLSAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKE1l
ZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIHNlc3Npb24tPmVuZEludGVy
cnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CiB9CiAKIHZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaApp
bmRleCBkOTQwZDVhZjZkNWVjNWFhY2E0NDMxNDdkMDU2NmFmYzdlNjhkZjNmLi5kMTUwYTk4NWRj
Njc0ZmE3Y2NlZjU1Mjc1MTFmZjJkZDgzZDc0YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCkBAIC0yNyw3ICsyNyw3IEBA
CiAjZGVmaW5lIE1lZGlhU2Vzc2lvbk1hbmFnZXJfaAogCiAjaW5jbHVkZSAiQXVkaW9IYXJkd2Fy
ZUxpc3RlbmVyLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1NZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN5c3RlbVNsZWVwTGlzdGVuZXIuaCIKQEAg
LTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTE1lZGlhRWxl
bWVudDsKLWNsYXNzIE1lZGlhU2Vzc2lvbjsKK2NsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uOwog
Y2xhc3MgUmVtb3RlQ29tbWFuZExpc3RlbmVyOwogCiBjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2Vy
IDogcHJpdmF0ZSBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQsIHByaXZhdGUgU3lzdGVtU2xl
ZXBMaXN0ZW5lcjo6Q2xpZW50LCBwcml2YXRlIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6Q2xpZW50
IHsKQEAgLTQ2LDEyICs0NiwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IE1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZE1hbmFnZXIoKTsKICAgICB2aXJ0dWFsIH5NZWRp
YVNlc3Npb25NYW5hZ2VyKCkgeyB9CiAKLSAgICBib29sIGhhcyhNZWRpYVNlc3Npb246Ok1lZGlh
VHlwZSkgY29uc3Q7Ci0gICAgaW50IGNvdW50KE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBjb25z
dDsKKyAgICBib29sIGhhcyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBjb25zdDsK
KyAgICBpbnQgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7CiAg
ICAgYm9vbCBhY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgpIGNvbnN0OwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBiZWdpbkludGVycnVwdGlvbihNZWRpYVNlc3Npb246OkludGVycnVwdGlv
blR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kSW50ZXJydXB0aW9uKE1lZGlhU2Vz
c2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVn
aW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kKCkgY29uc3Q7CkBAIC02OCwzNCAr
NjgsMzQgQEAgcHVibGljOgogICAgIH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBTZXNzaW9uUmVz
dHJpY3Rpb25zOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRSZXN0cmljdGlvbihNZWRp
YVNlc3Npb246Ok1lZGlhVHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmVSZXN0cmljdGlvbihNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwgU2Vz
c2lvblJlc3RyaWN0aW9ucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2Vzc2lvblJlc3RyaWN0aW9u
cyByZXN0cmljdGlvbnMoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwg
U2Vzc2lvblJlc3RyaWN0aW9ucyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZXN0
cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlLCBTZXNzaW9uUmVzdHJpY3Rp
b25zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9u
cyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRSZXN0cmljdGlvbnMoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soTWVkaWFTZXNzaW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsRW5kUGxh
eWJhY2soTWVkaWFTZXNzaW9uJik7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25XaWxsQmVnaW5Q
bGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOworICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9u
V2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CiAKLSAgICBib29sIHNlc3Np
b25SZXN0cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKGNvbnN0IE1lZGlhU2Vzc2lvbiYpIGNvbnN0
OworICAgIGJvb2wgc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soY29uc3QgUGxh
dGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uQ2Fu
TG9hZE1lZGlhKGNvbnN0IE1lZGlhU2Vzc2lvbiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBz
ZXNzaW9uQ2FuTG9hZE1lZGlhKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJikgY29uc3Q7CiAK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIGNvbmZpZ3VyZVdpcmVMZXNzVGFy
Z2V0TW9uaXRvcmluZygpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNXaXJlbGVzc1RhcmdldHNB
dmFpbGFibGUoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldEN1cnJl
bnRTZXNzaW9uKE1lZGlhU2Vzc2lvbiYpOwotICAgIE1lZGlhU2Vzc2lvbiogY3VycmVudFNlc3Np
b24oKTsKKyAgICB2b2lkIHNldEN1cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7
CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uKCk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBmcmllbmQgY2xhc3MgTWVkaWFTZXNzaW9uOworICAgIGZyaWVuZCBjbGFzcyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjsKICAgICBleHBsaWNpdCBNZWRpYVNlc3Npb25NYW5hZ2VyKCk7CiAK
LSAgICB2b2lkIGFkZFNlc3Npb24oTWVkaWFTZXNzaW9uJik7Ci0gICAgdm9pZCByZW1vdmVTZXNz
aW9uKE1lZGlhU2Vzc2lvbiYpOworICAgIHZvaWQgYWRkU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwog
Ci0gICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+IHNlc3Npb25zKCkgeyByZXR1cm4gbV9zZXNzaW9u
czsgfQorICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25zKCkgeyByZXR1
cm4gbV9zZXNzaW9uczsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJbnRlcm5hbHM7
CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0
ZSgpOwogCiAgICAgLy8gUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKIAogICAg
IC8vIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBhdWRpb0hh
cmR3YXJlRGlkQmVjb21lQWN0aXZlKCkgb3ZlcnJpZGUgeyB9CkBAIC0xMTQsOCArMTE0LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3lzdGVtV2lsbFNsZWVwKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHN5c3RlbURpZFdha2UoKSBvdmVycmlkZTsKIAotICAgIFNlc3Npb25S
ZXN0cmljdGlvbnMgbV9yZXN0cmljdGlvbnNbTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyArIDFdOwot
ICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBtX3Nlc3Npb25zOworICAgIFNlc3Npb25SZXN0cmlj
dGlvbnMgbV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvICsgMV07
CisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5l
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3lzdGVtU2xlZXBMaXN0ZW5lcj4gbV9zeXN0ZW1TbGVl
cExpc3RlbmVyOwogICAgIFJlZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXI+IG1fYXVkaW9IYXJk
d2FyZUxpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2OTNhNmY2OTkwYmFlZWJkNTJh
ZjFiZTMyZDYyMWY1OWJiNGIwY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyNDUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIkhUTUxNZWRp
YUVsZW1lbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIu
aCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY29uc3QgZG91YmxlIGtDbGllbnREYXRhQnVmZmVyaW5nVGltZXJUaHJvdHRsZURlbGF5
ID0gMC4xOworCisjaWYgIUxPR19ESVNBQkxFRAorc3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlTmFt
ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RhdGUgc3RhdGUpCit7CisjZGVmaW5lIENBU0Uoc3Rh
dGUpIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OnN0YXRlOiByZXR1cm4gI3N0YXRlCisgICAg
c3dpdGNoIChzdGF0ZSkgeworICAgIENBU0UoSWRsZSk7CisgICAgQ0FTRShQbGF5aW5nKTsKKyAg
ICBDQVNFKFBhdXNlZCk7CisgICAgQ0FTRShJbnRlcnJ1cHRlZCk7CisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICIiOworfQorI2VuZGlmCisKK3N0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0
ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGllbnQpOworfQorCitQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb25D
bGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fY2xpZW50RGF0
YUJ1ZmZlcmluZ1RpbWVyKCp0aGlzLCAmUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudERhdGFC
dWZmZXJpbmdUaW1lckZpcmVkKQorICAgICwgbV9zdGF0ZShJZGxlKQorICAgICwgbV9zdGF0ZVRv
UmVzdG9yZShJZGxlKQorICAgICwgbV9ub3RpZnlpbmdDbGllbnQoZmFsc2UpCit7CisgICAgQVNT
RVJUKG1fY2xpZW50Lm1lZGlhVHlwZSgpID49IE5vbmUgJiYgbV9jbGllbnQubWVkaWFUeXBlKCkg
PD0gV2ViQXVkaW8pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5h
ZGRTZXNzaW9uKCp0aGlzKTsKK30KKworUGxhdGZvcm1NZWRpYVNlc3Npb246On5QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbigpCit7CisgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LnJlbW92ZVNlc3Npb24oKnRoaXMpOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpz
ZXRTdGF0ZShTdGF0ZSBzdGF0ZSkKK3sKKyAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6c2V0U3RhdGUoJXApIC0gJXMiLCB0aGlzLCBzdGF0ZU5hbWUoc3RhdGUpKTsKKyAgICBt
X3N0YXRlID0gc3RhdGU7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmJlZ2luSW50
ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSkKK3sKKyAgICBMT0coTWVkaWEsICJQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oJXApLCBzdGF0ZSA9ICVzLCBpbnRl
cnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSwgbV9pbnRlcnJ1
cHRpb25Db3VudCk7CisKKyAgICBpZiAoKyttX2ludGVycnVwdGlvbkNvdW50ID4gMSB8fCAodHlw
ZSA9PSBFbnRlcmluZ0JhY2tncm91bmQgJiYgY2xpZW50KCkub3ZlcnJpZGVCYWNrZ3JvdW5kUGxh
eWJhY2tSZXN0cmljdGlvbigpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGF0ZVRvUmVz
dG9yZSA9IHN0YXRlKCk7CisgICAgbV9ub3RpZnlpbmdDbGllbnQgPSB0cnVlOworICAgIHNldFN0
YXRlKEludGVycnVwdGVkKTsKKyAgICBjbGllbnQoKS5zdXNwZW5kUGxheWJhY2soKTsKKyAgICBt
X25vdGlmeWluZ0NsaWVudCA9IGZhbHNlOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjplbmRJbnRlcnJ1cHRpb24oRW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCit7CisgICAgTE9H
KE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbiglcCkgLSBmbGFn
cyA9ICVpLCBzdGF0ZVRvUmVzdG9yZSA9ICVzLCBpbnRlcnJ1cHRpb24gY291bnQgPSAlaSIsIHRo
aXMsIChpbnQpZmxhZ3MsIHN0YXRlTmFtZShtX3N0YXRlVG9SZXN0b3JlKSwgbV9pbnRlcnJ1cHRp
b25Db3VudCk7CisKKyAgICBpZiAoIW1faW50ZXJydXB0aW9uQ291bnQpIHsKKyAgICAgICAgTE9H
KE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbiglcCkgLSAhISBp
Z25vcmluZyBzcHVyaW91cyBpbnRlcnJ1cHRpb24gZW5kICEhIiwgdGhpcyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoLS1tX2ludGVycnVwdGlvbkNvdW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBTdGF0ZSBzdGF0ZVRvUmVzdG9yZSA9IG1fc3RhdGVUb1Jlc3RvcmU7Cisg
ICAgbV9zdGF0ZVRvUmVzdG9yZSA9IElkbGU7CisgICAgc2V0U3RhdGUoUGF1c2VkKTsKKworICAg
IGJvb2wgc2hvdWxkUmVzdW1lID0gZmxhZ3MgJiBNYXlSZXN1bWVQbGF5aW5nICYmIHN0YXRlVG9S
ZXN0b3JlID09IFBsYXlpbmc7CisgICAgY2xpZW50KCkubWF5UmVzdW1lUGxheWJhY2soc2hvdWxk
UmVzdW1lKTsKK30KKworYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2lu
UGxheWJhY2soKQoreworICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAoIU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5z
ZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soKnRoaXMpKSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09
IEludGVycnVwdGVkKQorICAgICAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBsYXlpbmc7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzZXRTdGF0ZShQbGF5aW5nKTsKKyAg
ICB1cGRhdGVDbGllbnREYXRhQnVmZmVyaW5nKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCkKK3sKKyAg
ICBpZiAobV9ub3RpZnlpbmdDbGllbnQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgTE9H
KE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCVw
KS0gc3RhdGUgPSAlcyIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSk7CisgICAgaWYgKHN0YXRl
KCkgPT0gSW50ZXJydXB0ZWQpIHsKKyAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBhdXNlZDsK
KyAgICAgICAgTE9HKE1lZGlhLCAiICAgICAgc2V0dGluZyBzdGF0ZVRvUmVzdG9yZSB0byBcIlBh
dXNlZFwiIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgc2V0U3Rh
dGUoUGF1c2VkKTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vz
c2lvbldpbGxFbmRQbGF5YmFjaygqdGhpcyk7CisgICAgaWYgKCFtX2NsaWVudERhdGFCdWZmZXJp
bmdUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lci5z
dGFydE9uZVNob3Qoa0NsaWVudERhdGFCdWZmZXJpbmdUaW1lclRocm90dGxlRGVsYXkpOworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpwYXVzZVNlc3Np
b24oKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpwYXVzZVNlc3Np
b24oJXApIiwgdGhpcyk7CisgICAgbV9jbGllbnQuc3VzcGVuZFBsYXliYWNrKCk7Cit9CisKK1Bs
YXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgUGxhdGZvcm1NZWRpYVNlc3Npb246Om1lZGlh
VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhVHlwZSgpOworfQorCitQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpwcmVz
ZW50YXRpb25UeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQucHJlc2VudGF0aW9u
VHlwZSgpOworfQorCitTdHJpbmcgUGxhdGZvcm1NZWRpYVNlc3Npb246OnRpdGxlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uVGl0bGUoKTsKK30KKworZG91Ymxl
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y2xpZW50Lm1lZGlhU2Vzc2lvbkR1cmF0aW9uKCk7Cit9CisKK2RvdWJsZSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5tZWRp
YVNlc3Npb25DdXJyZW50VGltZSgpOworfQorICAgIAorYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fY2xpZW50LmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKTsKK30KKwordm9pZCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6dmlzaWJpbGl0eUNoYW5nZWQoKQoreworICAgIGlmICghbV9jbGllbnREYXRhQnVmZmVy
aW5nVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXIu
c3RhcnRPbmVTaG90KGtDbGllbnREYXRhQnVmZmVyaW5nVGltZXJUaHJvdHRsZURlbGF5KTsKK30K
Kwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmly
ZWQoKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRh
QnVmZmVyaW5nVGltZXJGaXJlZCglcCktIHZpc2libGUgPSAlcyIsIHRoaXMsIG1fY2xpZW50LmVs
ZW1lbnRJc0hpZGRlbigpID8gImZhbHNlIiA6ICJ0cnVlIik7CisKKyAgICB1cGRhdGVDbGllbnRE
YXRhQnVmZmVyaW5nKCk7CisKKyAgICBpZiAobV9zdGF0ZSAhPSBQbGF5aW5nIHx8ICFtX2NsaWVu
dC5lbGVtZW50SXNIaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSgpKTsKKyAgICBp
ZiAoKHJlc3RyaWN0aW9ucyAmIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5
YmFja1Jlc3RyaWN0ZWQpID09IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5
YmFja1Jlc3RyaWN0ZWQpCisgICAgICAgIHBhdXNlU2Vzc2lvbigpOworfQorCit2b2lkIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjp1cGRhdGVDbGllbnREYXRhQnVmZmVyaW5nKCkKK3sKKyAgICBpZiAo
bV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9jbGllbnRE
YXRhQnVmZmVyaW5nVGltZXIuc3RvcCgpOworCisgICAgbV9jbGllbnQuc2V0U2hvdWxkQnVmZmVy
RGF0YShNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbkNhbkxvYWRN
ZWRpYSgqdGhpcykpOworfQorCitib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjppc0hpZGRlbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmVsZW1lbnRJc0hpZGRlbigpOworfQorCitQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RGlzcGxheVR5cGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OmRp
c3BsYXlUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuZGlzcGxheVR5cGUoKTsK
K30KKworU3RyaW5nIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRs
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitkb3VibGUgUGxhdGZvcm1N
ZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7Cit9CisKK2RvdWJsZSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25zdAoreworICAg
IHJldHVybiBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKTsKK30KK30KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDAxOTQ3ZjRlODZkY2Q1ODJmZThiNjI0NjgyZmFmODI0NGI2MDlkZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmgKQEAgLTAsMCArMSwxODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
UGxhdGZvcm1NZWRpYVNlc3Npb25faAorI2RlZmluZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbl9oCisK
KyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW5jbHVkZSAiTWVkaWFQbGF5
YmFja1RhcmdldENsaWVudC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTWVkaWFQbGF5YmFja1RhcmdldDsKK2NsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
OworCitjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbgorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCisgICAgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldENsaWVudAorI2Vu
ZGlmCit7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlh
U2Vzc2lvbj4gY3JlYXRlKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Jik7CisKKyAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYpOworICAgIHZpcnR1
YWwgflBsYXRmb3JtTWVkaWFTZXNzaW9uKCk7CisKKyAgICBlbnVtIE1lZGlhVHlwZSB7CisgICAg
ICAgIE5vbmUgPSAwLAorICAgICAgICBWaWRlbywKKyAgICAgICAgQXVkaW8sCisgICAgICAgIFdl
YkF1ZGlvLAorICAgIH07CisgICAgTWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0OworICAgIE1l
ZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Q7CisKKyAgICBlbnVtIFN0YXRlIHsKKyAg
ICAgICAgSWRsZSwKKyAgICAgICAgUGxheWluZywKKyAgICAgICAgUGF1c2VkLAorICAgICAgICBJ
bnRlcnJ1cHRlZCwKKyAgICB9OworICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZTsgfQorICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUpOworCisgICAgZW51bSBJbnRlcnJ1cHRp
b25UeXBlIHsKKyAgICAgICAgU3lzdGVtU2xlZXAsCisgICAgICAgIEVudGVyaW5nQmFja2dyb3Vu
ZCwKKyAgICAgICAgU3lzdGVtSW50ZXJydXB0aW9uLAorICAgIH07CisgICAgZW51bSBFbmRJbnRl
cnJ1cHRpb25GbGFncyB7CisgICAgICAgIE5vRmxhZ3MgPSAwLAorICAgICAgICBNYXlSZXN1bWVQ
bGF5aW5nID0gMSA8PCAwLAorICAgIH07CisgICAgdm9pZCBiZWdpbkludGVycnVwdGlvbihJbnRl
cnJ1cHRpb25UeXBlKTsKKyAgICB2b2lkIGVuZEludGVycnVwdGlvbihFbmRJbnRlcnJ1cHRpb25G
bGFncyk7CisKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0
OworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kKCkgY29uc3Q7CisKKyAg
ICBib29sIGNsaWVudFdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgYm9vbCBjbGllbnRXaWxsUGF1
c2VQbGF5YmFjaygpOworCisgICAgdm9pZCBwYXVzZVNlc3Npb24oKTsKKyAgICAKKyAgICB2b2lk
IHZpc2liaWxpdHlDaGFuZ2VkKCk7CisKKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdDsKKyAgICBk
b3VibGUgZHVyYXRpb24oKSBjb25zdDsKKyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdDsK
KworICAgIGVudW0gUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHsKKyAgICAgICAgTm9Db21tYW5k
LAorICAgICAgICBQbGF5Q29tbWFuZCwKKyAgICAgICAgUGF1c2VDb21tYW5kLAorICAgICAgICBT
dG9wQ29tbWFuZCwKKyAgICAgICAgVG9nZ2xlUGxheVBhdXNlQ29tbWFuZCwKKyAgICAgICAgQmVn
aW5TZWVraW5nQmFja3dhcmRDb21tYW5kLAorICAgICAgICBFbmRTZWVraW5nQmFja3dhcmRDb21t
YW5kLAorICAgICAgICBCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKKyAgICAgICAgRW5kU2Vl
a2luZ0ZvcndhcmRDb21tYW5kLAorICAgIH07CisgICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29u
dHJvbENvbW1hbmRzKCkgY29uc3Q7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENv
bW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKTsKKworICAgIGVudW0gRGlzcGxheVR5cGUg
eworICAgICAgICBOb3JtYWwsCisgICAgICAgIEZ1bGxzY3JlZW4sCisgICAgICAgIE9wdGltaXpl
ZCwKKyAgICB9OworICAgIERpc3BsYXlUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7CisKKyAgICBi
b29sIGlzSGlkZGVuKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2lyZWxl
c3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIC8vIE1l
ZGlhUGxheWJhY2tUYXJnZXRDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheWJhY2tUYXJn
ZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBvdmVycmlk
ZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9v
bCkgb3ZlcnJpZGUgeyB9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFs
IGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisjZW5kaWYKKworcHJvdGVjdGVkOgorICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorCitwcml2YXRl
OgorICAgIHZvaWQgY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHVw
ZGF0ZUNsaWVudERhdGFCdWZmZXJpbmcoKTsKKworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xp
ZW50JiBtX2NsaWVudDsKKyAgICBUaW1lciBtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lcjsKKyAg
ICBTdGF0ZSBtX3N0YXRlOworICAgIFN0YXRlIG1fc3RhdGVUb1Jlc3RvcmU7CisgICAgaW50IG1f
aW50ZXJydXB0aW9uQ291bnQgeyAwIH07CisgICAgYm9vbCBtX25vdGlmeWluZ0NsaWVudDsKK307
CisKK2NsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCk7CitwdWJsaWM6CisgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb25DbGllbnQoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUGxhdGZvcm1NZWRpYVNlc3Npb246OkRpc3BsYXlUeXBlIGRpc3Bs
YXlUeXBlKCkgY29uc3QgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vcm1hbDsgfQor
CisgICAgdmlydHVhbCB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1
YWwgU3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUg
bWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNl
c3Npb25DdXJyZW50VGltZSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZEJ1
ZmZlckRhdGEoYm9vbCkgeyB9CisgICAgdmlydHVhbCBib29sIGVsZW1lbnRJc0hpZGRlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVCYWNrZ3Jv
dW5kUGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB3
aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSB7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUGxheWluZ1RvV2lyZWxlc3NQ
bGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lk
IHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIHsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgdmlydHVhbCB+UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQoKSB7IH0KK307CisKK30KKwor
I2VuZGlmIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCmluZGV4
IDkzZWNiY2VjNjRiMGVhNzUxZWQ2NjE0MGRlMjFiZjM2MjEzMGRlZWEuLmRjODYyMWY5ZTA3Y2Vm
ZTc0MzY1ZjdlMWI0NDc0MDA1NDk2MzhiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaApAQCAtNTMs
OCArNTMsOCBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpOwogCi0g
ICAgdmlydHVhbCBib29sIHNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5YmFjayhNZWRpYVNl
c3Npb24mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbldpbGxCZWdpblBsYXli
YWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNl
c3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBvdmVycmlkZTsKICAg
ICAKICAgICB2b2lkIHVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7CiAgICAgCkBAIC02Miw3ICs2Miw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRN
b25pdG9yaW5nKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbkNhbkxvYWRN
ZWRpYShjb25zdCBNZWRpYVNlc3Npb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2Vzc2lvbkNhbkxvYWRNZWRpYShjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIAogICAgIFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+IG1f
b2JqY09ic2VydmVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KaW5kZXggMDQ0NDI3MWM2MWMw
NDJhYmUwZWMyNDVhNWVlMGY3YWEwYzc4OTY0ZC4uMDdhYTIwMmQ1NWUyNzRkYmI2MTk0YTEwZTZh
NmU0YjhkY2IxMTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KQEAgLTMxLDcgKzMxLDcgQEAK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCiAjaW1wb3J0ICJN
ZWRpYVBsYXllclNQSS5oIgotI2ltcG9ydCAiTWVkaWFTZXNzaW9uLmgiCisjaW1wb3J0ICJQbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNpbXBvcnQgIlN5
c3RlbU1lbW9yeS5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgpAQCAtMTM4
LDI3ICsxMzgsMjcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZXNldFJlc3RyaWN0
aW9ucygpCiAKICAgICBzdGF0aWMgd2tEZXZpY2VDbGFzcyBkZXZpY2VDbGFzcyA9IGlvc0Rldmlj
ZUNsYXNzKCk7CiAgICAgaWYgKGRldmljZUNsYXNzID09IHdrRGV2aWNlQ2xhc3NpUGhvbmUgfHwg
ZGV2aWNlQ2xhc3MgPT0gd2tEZXZpY2VDbGFzc2lQb2QpCi0gICAgICAgIGFkZFJlc3RyaWN0aW9u
KE1lZGlhU2Vzc2lvbjo6VmlkZW8sIElubGluZVZpZGVvUGxheWJhY2tSZXN0cmljdGVkKTsKKyAg
ICAgICAgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvLCBJbmxpbmVW
aWRlb1BsYXliYWNrUmVzdHJpY3RlZCk7CiAKICAgICBpZiAocmFtU2l6ZSgpIDwgc3lzdGVtTWVt
b3J5UmVxdWlyZWRGb3JWaWRlb0luQmFja2dyb3VuZFRhYnMpIHsKICAgICAgICAgTE9HKE1lZGlh
LCAiTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVzZXRSZXN0cmljdGlvbnMgLSByZXN0cmljdGlu
ZyB2aWRlbyBpbiBiYWNrZ3JvdW5kIHRhYnMgYmVjYXVzZSBzeXN0ZW0gbWVtb3J5ID0gJXp1bCIs
IHJhbVNpemUoKSk7Ci0gICAgICAgIGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6VmlkZW8s
IEJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQpOworICAgICAgICBhZGRSZXN0cmljdGlv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8sIEJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3Ry
aWN0ZWQpOwogICAgIH0KIAotICAgIGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6VmlkZW8s
IENvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZCk7Ci0gICAgYWRkUmVzdHJpY3Rpb24oTWVk
aWFTZXNzaW9uOjpWaWRlbywgQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQpOwor
ICAgIGFkZFJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbywgQ29uY3VycmVu
dFBsYXliYWNrTm90UGVybWl0dGVkKTsKKyAgICBhZGRSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6VmlkZW8sIEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKTsKIAot
ICAgIHJlbW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6QXVkaW8sIENvbmN1cnJlbnRQbGF5
YmFja05vdFBlcm1pdHRlZCk7Ci0gICAgcmVtb3ZlUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpB
dWRpbywgQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQpOworICAgIHJlbW92ZVJl
c3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbywgQ29uY3VycmVudFBsYXliYWNr
Tm90UGVybWl0dGVkKTsKKyAgICByZW1vdmVSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6QXVkaW8sIEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKTsKIAotICAgIHJl
bW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8sIENvbmN1cnJlbnRQbGF5YmFj
a05vdFBlcm1pdHRlZCk7Ci0gICAgcmVtb3ZlUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpXZWJB
dWRpbywgQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQpOworICAgIHJlbW92ZVJl
c3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbywgQ29uY3VycmVudFBsYXli
YWNrTm90UGVybWl0dGVkKTsKKyAgICByZW1vdmVSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6V2ViQXVkaW8sIEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKTsKIAot
ICAgIHJlbW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6QXVkaW8sIE1ldGFkYXRhUHJlbG9h
ZGluZ05vdFBlcm1pdHRlZCk7Ci0gICAgcmVtb3ZlUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpW
aWRlbywgTWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkKTsKKyAgICByZW1vdmVSZXN0cmlj
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW8sIE1ldGFkYXRhUHJlbG9hZGluZ05vdFBl
cm1pdHRlZCk7CisgICAgcmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlZp
ZGVvLCBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOwogCi0gICAgYWRkUmVzdHJpY3Rp
b24oTWVkaWFTZXNzaW9uOjpBdWRpbywgQXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOwotICAg
IGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6VmlkZW8sIEF1dG9QcmVsb2FkaW5nTm90UGVy
bWl0dGVkKTsKKyAgICBhZGRSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW8s
IEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkKTsKKyAgICBhZGRSZXN0cmljdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6VmlkZW8sIEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkKTsKIH0KIAog
Ym9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUo
KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y29uZmln
dXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkKICAgICAgICAgW21fb2JqY09ic2VydmVyIHN0
b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc107CiB9CiAKLWJvb2wgTWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK2Jv
b2wgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRm
b3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIGlmICghTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKHNlc3Npb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNz
aW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogICAgIHJldHVybiB0
cnVlOwogfQogICAgIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEVu
ZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lv
bikKIHsKICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKHNl
c3Npb24pOwogICAgIHVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7CkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjp1cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAgICAg
TE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBkYXRlTm93UGxheWluZ0luZm8i
KTsKIAogICAgIE1QTm93UGxheWluZ0luZm9DZW50ZXIgKm5vd1BsYXlpbmcgPSAoTVBOb3dQbGF5
aW5nSW5mb0NlbnRlciAqKVtnZXRNUE5vd1BsYXlpbmdJbmZvQ2VudGVyQ2xhc3MoKSBkZWZhdWx0
Q2VudGVyXTsKLSAgICBjb25zdCBNZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uID0gdGhpcy0+
Y3VycmVudFNlc3Npb24oKTsKKyAgICBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVu
dFNlc3Npb24gPSB0aGlzLT5jdXJyZW50U2Vzc2lvbigpOwogICAgIAogICAgIGlmICghY3VycmVu
dFNlc3Npb24pIHsKICAgICAgICAgW25vd1BsYXlpbmcgc2V0Tm93UGxheWluZ0luZm86bmlsXTsK
QEAgLTIyNywxMyArMjI3LDEzIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBkYXRl
Tm93UGxheWluZ0luZm8oKQogICAgIGlmIChzdGQ6OmlzZmluaXRlKGN1cnJlbnRUaW1lKSAmJiBj
dXJyZW50VGltZSAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSkKICAgICAgICAgW2luZm8g
c2V0VmFsdWU6QChjdXJyZW50VGltZSkgZm9yS2V5Ok1QTm93UGxheWluZ0luZm9Qcm9wZXJ0eUVs
YXBzZWRQbGF5YmFja1RpbWVdOwogICAgIAotICAgIFtpbmZvIHNldFZhbHVlOihjdXJyZW50U2Vz
c2lvbi0+c3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlBsYXlpbmcgPyBAWUVTIDogQE5PKSBmb3JL
ZXk6TVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5UGxheWJhY2tSYXRlXTsKKyAgICBbaW5mbyBzZXRW
YWx1ZTooY3VycmVudFNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBs
YXlpbmcgPyBAWUVTIDogQE5PKSBmb3JLZXk6TVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5UGxheWJh
Y2tSYXRlXTsKICAgICBbbm93UGxheWluZyBzZXROb3dQbGF5aW5nSW5mbzppbmZvLmdldCgpXTsK
IH0KIAotYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uQ2FuTG9hZE1lZGlhKGNv
bnN0IE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKK2Jvb2wgTWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6c2Vzc2lvbkNhbkxvYWRNZWRpYShjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vz
c2lvbikgY29uc3QKIHsKLSAgICByZXR1cm4gc2Vzc2lvbi5zdGF0ZSgpID09IE1lZGlhU2Vzc2lv
bjo6UGxheWluZyB8fCAhc2Vzc2lvbi5pc0hpZGRlbigpIHx8IHNlc3Npb24uZGlzcGxheVR5cGUo
KSA9PSBNZWRpYVNlc3Npb246Ok9wdGltaXplZDsKKyAgICByZXR1cm4gc2Vzc2lvbi5zdGF0ZSgp
ID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nIHx8ICFzZXNzaW9uLmlzSGlkZGVuKCkg
fHwgc2Vzc2lvbi5kaXNwbGF5VHlwZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpPcHRpbWl6
ZWQ7CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoKQpAQCAtMzgzLDE5ICszODMsMTkgQEAgdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgp
CiAgICAgICAgIHJldHVybjsKIAogICAgIE5TVUludGVnZXIgdHlwZSA9IFtbW25vdGlmaWNhdGlv
biB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtl
eV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOwotICAgIE1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0
aW9uRmxhZ3MgZmxhZ3MgPSBNZWRpYVNlc3Npb246Ok5vRmxhZ3M7CisgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzID0gUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok5vRmxhZ3M7CiAKICAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBp
bnRlcnJ1cHRpb25dIC0gdHlwZSA9ICVpIiwgKGludCl0eXBlKTsKIAogICAgIGlmICh0eXBlID09
IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUVuZGVkICYmIFtbW25vdGlmaWNhdGlvbiB1
c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uS2V5
XSB1bnNpZ25lZEludGVnZXJWYWx1ZV0gPT0gQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRp
b25TaG91bGRSZXN1bWUpCi0gICAgICAgIGZsYWdzID0gTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQ
bGF5aW5nOworICAgICAgICBmbGFncyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQ
bGF5aW5nOwogCiAgICAgV2ViVGhyZWFkUnVuKF57CiAgICAgICAgIGlmICghX2NhbGxiYWNrKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0eXBlID09IEFWQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uVHlwZUJlZ2FuKQotICAgICAgICAgICAgX2NhbGxiYWNrLT5iZWdpbkludGVy
cnVwdGlvbihNZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7CisgICAgICAgICAgICBf
Y2FsbGJhY2stPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1J
bnRlcnJ1cHRpb24pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBfY2FsbGJhY2stPmVuZElu
dGVycnVwdGlvbihmbGFncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAppbmRleCBmNWIyODg1
MGRkNDE4ZTdmMDNmNjE1NzEwZjVhZjcxM2ZlODFkOWQ1Li5lMjc0NDE4ODA5YjdkNDUxNTJmZmEz
YmRhYzA5ZjY0ZTYyOWI0MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCkBAIC0zOSwxMSAr
MzksMTEgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrTG93UG93ZXJWaWRlb0J1ZmZlclNpemUgPSA0
MDk2OwogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiB7
Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRl
KCkgLSB0eXBlczogVmlkZW8oJWQpLCBBdWRpbyglZCksIFdlYkF1ZGlvKCVkKSIsIGNvdW50KE1l
ZGlhU2Vzc2lvbjo6VmlkZW8pLCBjb3VudChNZWRpYVNlc3Npb246OkF1ZGlvKSwgY291bnQoTWVk
aWFTZXNzaW9uOjpXZWJBdWRpbykpOworICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6IFZpZGVvKCVkKSwgQXVkaW8oJWQpLCBX
ZWJBdWRpbyglZCkiLCBjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8pLCBjb3VudChQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW8pLCBjb3VudChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
V2ViQXVkaW8pKTsKIAotICAgIGlmIChoYXMoTWVkaWFTZXNzaW9uOjpXZWJBdWRpbykpCisgICAg
aWYgKGhhcyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pKQogICAgICAgICBBdWRpb1Nl
c3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtXZWJBdWRpb0J1
ZmZlclNpemUpOwotICAgIGVsc2UgaWYgKChoYXMoTWVkaWFTZXNzaW9uOjpWaWRlbykgfHwgaGFz
KE1lZGlhU2Vzc2lvbjo6QXVkaW8pKSAmJiBTZXR0aW5nczo6bG93UG93ZXJWaWRlb0F1ZGlvQnVm
ZmVyU2l6ZUVuYWJsZWQoKSkgeworICAgIGVsc2UgaWYgKChoYXMoUGxhdGZvcm1NZWRpYVNlc3Np
b246OlZpZGVvKSB8fCBoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvKSkgJiYgU2V0dGlu
Z3M6Omxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKCkpIHsKICAgICAgICAgLy8g
RklYTUU6IDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNjcyNT4gRmlndXJlIG91dCB3aHkgZW5hYmxp
bmcgdGhlIGNvZGUgYmVsb3cKICAgICAgICAgLy8gY2F1c2VzIG1lZGlhIExheW91dFRlc3RzIHRv
IGZhaWwgb24gMTAuOC4KIApAQCAtNjAsOSArNjAsOSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiAgICAgaWYgKCFTZXR0aW5nczo6c2hvdWxkTWFuYWdl
QXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGhhcyhN
ZWRpYVNlc3Npb246OlZpZGVvKSB8fCBoYXMoTWVkaWFTZXNzaW9uOjpBdWRpbykpCisgICAgaWYg
KGhhcyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8pIHx8IGhhcyhQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6QXVkaW8pKQogICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRD
YXRlZ29yeShBdWRpb1Nlc3Npb246Ok1lZGlhUGxheWJhY2spOwotICAgIGVsc2UgaWYgKGhhcyhN
ZWRpYVNlc3Npb246OldlYkF1ZGlvKSkKKyAgICBlbHNlIGlmIChoYXMoUGxhdGZvcm1NZWRpYVNl
c3Npb246OldlYkF1ZGlvKSkKICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCku
c2V0Q2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpBbWJpZW50U291bmQpOwogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXgg
NzBhYzE3MjY4MDIyZmI0OWJjOWNkODFiNzVmYWMxYTUxYjI2YzRiYS4uN2U4OTQwNjQxNTBiOGQ2
MTZlNmRlZGM2NGU4MDk1ZDdhNWZhNDIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAgYm9vbCBN
ZWRpYVBsYXllcjo6c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBBdXRoZW50aWMKICAgICByZXR1cm4gbV9jbGllbnQubWVkaWFQbGF5ZXJTaG91bGRX
YWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiB9CiAK
LXZvaWQgTWVkaWFQbGF5ZXI6OmhhbmRsZVBsYXliYWNrQ29tbWFuZChNZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQordm9pZCBNZWRpYVBsYXllcjo6aGFuZGxl
UGxheWJhY2tDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUgY29tbWFuZCkKIHsKICAgICBtX2NsaWVudC5tZWRpYVBsYXllckhhbmRsZVBsYXliYWNr
Q29tbWFuZChjb21tYW5kKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCmluZGV4IDkyODNlOGY3ZDZhN2QyMzNkMzM1ZDNhMDVhZGMzZjdiZDFh
OTA1YmMuLjE2NjUxMzAwZWZmNmQ3NzQ3YmQ1MmE1MWY3YjdkZDY2Y2M5ZTI5NDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzYsMTAg
KzM2LDEwIEBACiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKICNp
bmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFj
a1ByaXZhdGUuaCIKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KQEAgLTI2OCw3ICsy
NjgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5
ZXJTaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgbWVkaWFQbGF5ZXJIYW5kbGVQbGF5YmFja0NvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckhhbmRs
ZVBsYXliYWNrQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1h
bmRUeXBlKSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlQXBwbGlj
YXRpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogCkBAIC01
OTQsNyArNTk0LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBib29sIHNob3VsZFdhaXRGb3JS
ZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKLSAgICB2b2lkIGhhbmRsZVBsYXliYWNrQ29tbWFuZChNZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7CisgICAgdm9pZCBoYW5kbGVQbGF5YmFja0NvbW1hbmQo
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7CiAgICAgU3Ry
aW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogICAgIFZlY3RvcjxTdHJp
bmc+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXgg
NzlhZTJmZmI1N2YyNDU2ZDRjMDFiNjk3MjNjOTFlMTJjMjg4NjkwZC4uYjJhN2MxYmI5MGMxZWU4
OGVlZDUwMzg2YzAzMmI4OGJlMjlhZmZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTYyMSw3ICs2MjEsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cmF0ZUNoYW5nZWQoKQogewogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmIFBMQVRGT1JNKElPUykKICAgICBp
ZiAoaXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpKQotICAgICAgICBtX3BsYXllci0+
aGFuZGxlUGxheWJhY2tDb21tYW5kKHJhdGUoKSA/IE1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQg
OiBNZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZCk7CisgICAgICAgIG1fcGxheWVyLT5oYW5kbGVQ
bGF5YmFja0NvbW1hbmQocmF0ZSgpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5k
IDogUGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZCk7CiAjZW5kaWYKIAogICAgIG1f
cGxheWVyLT5yYXRlQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0KaW5kZXggY2JjZTVlMzM2MDgxZWY2
YTdhMzBhOWQ4MjNiODgzMGM0MDA1MmZhYy4uN2QxNDQyMTdkNzhjNzgyYmE4YWEyY2NjYzVhNmZl
NTZlOWQzNmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCkBAIC01NSw3ICs1NSw3IEBAIFJlbW90ZUNvbW1h
bmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TKFJlbW90ZUNvbW1hbmRMaXN0
ZW5lckNsaWVudCYKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsKICAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRp
YVNlc3Npb246OlBhdXNlQ29tbWFuZCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQu
ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVz
ZUNvbW1hbmQpOwogICAgICAgICB9KTsKIAogICAgICAgICByZXR1cm4gTVBSZW1vdGVDb21tYW5k
SGFuZGxlclN0YXR1c1N1Y2Nlc3M7CkBAIC02NSw3ICs2NSw3IEBAIFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUzo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNs
aWVudCYKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsKICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2Vh
a1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Np
b246OlBsYXlDb21tYW5kKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5k
KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuIE1QUmVtb3RlQ29tbWFuZEhhbmRsZXJT
dGF0dXNTdWNjZXNzOwpAQCAtNzUsNyArNzUsNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6
OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmCiAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5t
X2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNzaW9uOjpUb2dn
bGVQbGF5UGF1c2VDb21tYW5kKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlRvZ2dsZVBs
YXlQYXVzZUNvbW1hbmQpOwogICAgICAgICB9KTsKIAogICAgICAgICByZXR1cm4gTVBSZW1vdGVD
b21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7CkBAIC04NSw3ICs4NSw3IEBAIFJlbW90ZUNvbW1h
bmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TKFJlbW90ZUNvbW1hbmRMaXN0
ZW5lckNsaWVudCYKICAgICAgICAgQVNTRVJUKFtldmVudCBpc0tpbmRPZkNsYXNzOmdldE1QU2Vl
a0NvbW1hbmRFdmVudENsYXNzKCldKTsKIAogICAgICAgICBNUFNlZWtDb21tYW5kRXZlbnQqIHNl
ZWtFdmVudCA9IHN0YXRpY19jYXN0PE1QU2Vla0NvbW1hbmRFdmVudCAqPihldmVudCk7Ci0gICAg
ICAgIE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQgPSBbc2Vl
a0V2ZW50IHR5cGVdID09IE1QU2Vla0NvbW1hbmRFdmVudFR5cGVCZWdpblNlZWtpbmcgPyBNZWRp
YVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCA6IE1lZGlhU2Vzc2lvbjo6RW5k
U2Vla2luZ0JhY2t3YXJkQ29tbWFuZDsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kID0gW3NlZWtFdmVudCB0eXBlXSA9PSBNUFNl
ZWtDb21tYW5kRXZlbnRUeXBlQmVnaW5TZWVraW5nID8gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJl
Z2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVr
aW5nQmFja3dhcmRDb21tYW5kOwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlz
LCBjb21tYW5kXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMTAwLDcgKzEwMCw3
IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TKFJl
bW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYKICAgICAgICAgQVNTRVJUKFtldmVudCBpc0tpbmRP
ZkNsYXNzOmdldE1QU2Vla0NvbW1hbmRFdmVudENsYXNzKCldKTsKICAgICAgICAgTVBTZWVrQ29t
bWFuZEV2ZW50KiBzZWVrRXZlbnQgPSBzdGF0aWNfY2FzdDxNUFNlZWtDb21tYW5kRXZlbnQgKj4o
ZXZlbnQpOwogCi0gICAgICAgIE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
IGNvbW1hbmQgPSBbc2Vla0V2ZW50IHR5cGVdID09IE1QU2Vla0NvbW1hbmRFdmVudFR5cGVCZWdp
blNlZWtpbmcgPyBNZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kIDogTWVk
aWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ7CisgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCA9IFtzZWVrRXZlbnQg
dHlwZV0gPT0gTVBTZWVrQ29tbWFuZEV2ZW50VHlwZUJlZ2luU2Vla2luZyA/IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCA6IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ7CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbd2Vha1RoaXMsIGNvbW1hbmRdIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMDdmOGNiZDg4NDcwYjIxMjg1OWQwMzUy
YTA1ZGQwMGJlNDMyNWZiOS4uOTJmNGY3YTg0NzUwZDIzMzFiNTJkM2VlYTZiNzE5YTVkNmRkODRk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjU3OCwxNSArMjU3OCwx
NSBAQCBWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6OmJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQo
U291cmNlQnVmZmVyKiBidWZmZXIsIGNvbnN0CiAjaWYgRU5BQkxFKFZJREVPKQogdm9pZCBJbnRl
cm5hbHM6OmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkKIHsKLSAgICBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYmVnaW5JbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9u
OjpTeXN0ZW1JbnRlcnJ1cHRpb24pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3lzdGVtSW50
ZXJydXB0aW9uKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OmVuZE1lZGlhU2Vzc2lvbkludGVycnVw
dGlvbihjb25zdCBTdHJpbmcmIGZsYWdzU3RyaW5nKQogewotICAgIE1lZGlhU2Vzc2lvbjo6RW5k
SW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MgPSBNZWRpYVNlc3Npb246Ok5vRmxhZ3M7CisgICAgUGxh
dGZvcm1NZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzID0gUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok5vRmxhZ3M7CiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmxhZ3NT
dHJpbmcsICJNYXlSZXN1bWVQbGF5aW5nIikpCi0gICAgICAgIGZsYWdzID0gTWVkaWFTZXNzaW9u
OjpNYXlSZXN1bWVQbGF5aW5nOworICAgICAgICBmbGFncyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpNYXlSZXN1bWVQbGF5aW5nOwogICAgIAogICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOwogfQpAQCAtMjYwMywxMyArMjYwMywx
MyBAQCB2b2lkIEludGVybmFsczo6YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kKCkgY29u
c3QKIAogdm9pZCBJbnRlcm5hbHM6OnNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhjb25zdCBT
dHJpbmcmIG1lZGlhVHlwZVN0cmluZywgY29uc3QgU3RyaW5nJiByZXN0cmljdGlvbnNTdHJpbmcs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlh
VHlwZSA9IE1lZGlhU2Vzc2lvbjo6Tm9uZTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIG1lZGlhVHlwZSA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lOwogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShtZWRpYVR5cGVTdHJpbmcsICJWaWRlbyIpKQotICAgICAgICBtZWRp
YVR5cGUgPSBNZWRpYVNlc3Npb246OlZpZGVvOworICAgICAgICBtZWRpYVR5cGUgPSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6VmlkZW87CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobWVk
aWFUeXBlU3RyaW5nLCAiQXVkaW8iKSkKLSAgICAgICAgbWVkaWFUeXBlID0gTWVkaWFTZXNzaW9u
OjpBdWRpbzsKKyAgICAgICAgbWVkaWFUeXBlID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlv
OwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1lZGlhVHlwZVN0cmluZywgIldlYkF1
ZGlvIikpCi0gICAgICAgIG1lZGlhVHlwZSA9IE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87CisgICAg
ICAgIG1lZGlhVHlwZSA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsKICAgICBlbHNl
IHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKQEAg
LTI2ODIsMjQgKzI2ODIsMjQgQEAgdm9pZCBJbnRlcm5hbHM6OnNldE1lZGlhRWxlbWVudFJlc3Ry
aWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHIKIAogdm9pZCBJbnRl
cm5hbHM6OnBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmRTdHJp
bmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlIGNvbW1hbmQ7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSBjb21tYW5kOwogICAgIAogICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShjb21tYW5kU3RyaW5nLCAiUGxheSIpKQotICAgICAgICBjb21tYW5kID0gTWVkaWFTZXNzaW9u
OjpQbGF5Q29tbWFuZDsKKyAgICAgICAgY29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQ
bGF5Q29tbWFuZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjb21tYW5kU3RyaW5n
LCAiUGF1c2UiKSkKLSAgICAgICAgY29tbWFuZCA9IE1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5k
OworICAgICAgICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZDsK
ICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjb21tYW5kU3RyaW5nLCAiU3RvcCIpKQot
ICAgICAgICBjb21tYW5kID0gTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFuZDsKKyAgICAgICAgY29t
bWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFuZDsKICAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShjb21tYW5kU3RyaW5nLCAiVG9nZ2xlUGxheVBhdXNlIikpCi0gICAg
ICAgIGNvbW1hbmQgPSBNZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQ7CisgICAg
ICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFu
ZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjb21tYW5kU3RyaW5nLCAiQmVnaW5T
ZWVraW5nQmFja3dhcmQiKSkKLSAgICAgICAgY29tbWFuZCA9IE1lZGlhU2Vzc2lvbjo6QmVnaW5T
ZWVraW5nQmFja3dhcmRDb21tYW5kOworICAgICAgICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNl
c3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDsKICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShjb21tYW5kU3RyaW5nLCAiRW5kU2Vla2luZ0JhY2t3YXJkIikpCi0gICAgICAg
IGNvbW1hbmQgPSBNZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ7CisgICAg
ICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0JhY2t3YXJkQ29t
bWFuZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjb21tYW5kU3RyaW5nLCAiQmVn
aW5TZWVraW5nRm9yd2FyZCIpKQotICAgICAgICBjb21tYW5kID0gTWVkaWFTZXNzaW9uOjpCZWdp
blNlZWtpbmdGb3J3YXJkQ29tbWFuZDsKKyAgICAgICAgY29tbWFuZCA9IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZDsKICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShjb21tYW5kU3RyaW5nLCAiRW5kU2Vla2luZ0ZvcndhcmQiKSkKLSAgICAgICAg
Y29tbWFuZCA9IE1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kOworICAgICAg
ICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFu
ZDsKICAgICBlbHNlIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAg
IHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253883</attachid>
            <date>2015-05-28 17:33:11 -0700</date>
            <delta_ts>2015-05-28 18:21:29 -0700</delta_ts>
            <desc>Patch (fixed GTK build)</desc>
            <filename>bug-145447-20150528173257.patch</filename>
            <type>text/plain</type>
            <size>97408</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTc5ODYyMzA1NjY0MjIy
MzEwODIxMmQwYTZjYjUyOGRkNTUyOGNlYi4uNWQyNGI5NzAxOGVlMzQ3OTg0OWJjOGVkNjI0MzYz
Y2RmZTUyODQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxNS0wNS0yOCAgTWF0
dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIE1lZGlhU2Vzc2lv
biBhbmQgTWVkaWFTZXNzaW9uQ2xpZW50IHRvIFBsYXRmb3JtTWVkaWFTZXNzaW9uIGFuZCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCBzbyB3ZSBjYW4gdXNlIE1lZGlhU2Vzc2lvbiBmb3IgdGhl
IGZvcm1hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTWVkaWEgU2Vzc2lvbiBzcGVjLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NDQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5
YmFjayk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cHJlc2VudGF0aW9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpkaXNwbGF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpIVE1MTWVkaWFTZXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OnJlcXVpcmVzRnVsbHNjcmVl
bkZvclZpZGVvUGxheWJhY2spOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6
cmVzZXRSZXN0cmljdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdl
cjo6aGFzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFjdGl2ZUF1
ZGlvU2Vzc2lvblJlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmJlZ2lu
SW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVu
ZEludGVycnVwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92
ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUmVz
dHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
UmVzdHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVz
dHJpY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Np
b25XaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25SZXN0cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Mb2FkTWVkaWEp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxs
RW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtV2lsbFNsZWVwKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbURpZFdha2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwLgorICAgICAgICAoV2ViQ29yZTo6c3Rh
dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjp+UGxhdGZv
cm1NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246
OnNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdp
bkludGVycnVwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjbGllbnRXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246OnBhdXNlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVkaWFUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpwcmVzZW50YXRpb25UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFTZXNzaW9uOjp0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNl
c3Npb246OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnZpc2liaWxpdHlDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVm
ZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb246OmRpc3BsYXlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uRHVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvbkN1cnJlbnRU
aW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgu
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNhblBsYXlUb1dpcmVsZXNzUGxheWJh
Y2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmlzUGxh
eWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6
ZGlzcGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGll
bnQ6OnNldFNob3VsZEJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQ6OmVsZW1lbnRJc0hpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6OnNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Np
b25DbGllbnQ6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6OmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5
YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVu
dDo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6On5QbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxs
QmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25DYW5Mb2FkTWVkaWEpOgorICAgICAgICAoLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uOl0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcDoKKyAgICAgICAgKE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Omhh
bmRsZVBsYXliYWNrQ29tbWFuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXll
ckhhbmRsZVBsYXliYWNrQ29tbWFuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnJhdGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjplbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQpOgorCiAy
MDE1LTA1LTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3Vi
cGl4ZWwgcmVuZGVyaW5nOiBQaXhlbCBjcmFjayBpbiB0ZXh0IHNlbGVjdGlvbiBvZiBzaW1wbGUg
dGV4dCBpbiA8dGV4dGFyZWE+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiYTZhNTA0NThlZmJh
Yjc3YjM2M2NhZjIwOWMzY2Q1MWZmNDY3NTc2Li42YWY4NGQzMmQyYzI5Nzk0OWMwMjIyMzBhZmRj
YTJhMWJlNTkyNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEwMSwxMCArMjEwMSwxMCBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5j
cHAKICAgICBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlv
L0hSVEZQYW5uZXIuY3BwCi0gICAgcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAogICAg
IHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVk
aW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1Bhbm5lci5j
cHAKKyAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKICAgICBwbGF0
Zm9ybS9hdWRpby9SZXZlcmIuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0
aW9uQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRl
eCBjOGY2ZDUxMzczNDZjZWI5YTkxMGE3OTgxY2IyODQwMmRkMDFjNWZlLi45MGFjNDkwYTI3ZjI4
NTI1NjIxMGE0YThlM2QxMjk4Njg3ZTA4ZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgUmVmUHRy
PEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBF
eGNlcHRpb25Db2RlJiBlYykKIC8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1
ZGlvIGhhcmR3YXJlLgogQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKLSAgICAsIG1fbWVkaWFTZXNz
aW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fbWVkaWFTZXNzaW9uKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9ldmVudFF1ZXVlKHN0
ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKICAgICAsIG1fZ3JhcGhP
d25lclRocmVhZChVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyKQogewpAQCAtMTQ1LDcgKzE0NSw3
IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKIEF1ZGlv
Q29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQogICAg
IDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKICAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0
cnVlKQotICAgICwgbV9tZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQor
ICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykp
CiAgICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4o
KnRoaXMpKQogICAgICwgbV9ncmFwaE93bmVyVGhyZWFkKFVuZGVmaW5lZFRocmVhZElkZW50aWZp
ZXIpCiB7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBs
YXliYWNrKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1
c3BlbmRlZCkgewotICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gTWVkaWFT
ZXNzaW9uOjpJbnRlcnJ1cHRlZCkKKyAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgp
ID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCkKICAgICAgICAgICAgIHNldFN0
YXRlKFN0YXRlOjpJbnRlcnJ1cHRlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjA5
LDcgKzEyMDksNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBsYXliYWNrKCkKIAogICAg
IFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgbV9kZXN0aW5hdGlv
bk5vZGUtPnN1c3BlbmQoW3N0cm9uZ1RoaXNdIHsKLSAgICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9
IHN0cm9uZ1RoaXMtPm1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50
ZXJydXB0ZWQ7CisgICAgICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBzdHJvbmdUaGlzLT5tX21lZGlh
U2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CiAg
ICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6OkludGVycnVw
dGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA5ZmYzNTMyNTE1MjgyNGRiN2Ji
YjM1Yzg4NzQzNDI1Yzk0NTZkOTlmLi40Mzk2OGYyZmJhOTJhY2RjOTVkMmNiYjRjNGE1MDNlZjky
MjQ2ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1
ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIK
LSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lv
bi5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC03Niw3ICs3Niw3IEBAIGNsYXNzIFBlcmlvZGljV2F2
ZTsKIC8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBB
UEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCiAvLyBGb3IgdGhyZWFk
IHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQg
aGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLiAKIAotY2xhc3MgQXVkaW9D
b250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPEF1ZGlvQ29udGV4dD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJs
aWMgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgTWVkaWFQcm9kdWNlciwgcHJpdmF0ZSBN
ZWRpYVNlc3Npb25DbGllbnQgeworY2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURP
TU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4sIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgTWVkaWFDYW5TdGFydExpc3RlbmVy
LCBwdWJsaWMgTWVkaWFQcm9kdWNlciwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGFuIEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVyaW5n
IHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KICAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvQ29udGV4dD4g
Y3JlYXRlKERvY3VtZW50JiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMzA4LDEzICszMDgsMTMgQEAg
cHJpdmF0ZToKICAgICAvLyBNYWtlIHN1cmUgdG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgogICAg
IHZvaWQgZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKTsKIAotICAgIC8vIE1lZGlhU2Vzc2lv
bkNsaWVudAotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQotICAgIHZp
cnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0KKyAgICAvLyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbkNsaWVudAorICAgIHZpcnR1YWwgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1l
ZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6V2ViQXVkaW87IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQogICAgIHZpcnR1YWwgdm9pZCBtYXlSZXN1bWVQ
bGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN1
c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgYm9vbCBv
dmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIEV2ZW50VGFyZ2V0CkBAIC0zNjMsNyArMzYzLDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlz
dDsKICAgICBWZWN0b3I8VmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4+IG1fc3RhdGVSZWFj
dGlvbnM7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lv
bjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNz
aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVl
OwogCiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdldDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGNkZjk2YzkzMDBm
Y2EwMWNjYWIwOWJkNjAwM2ViNjAxMDBiMGU5OWYuLjk2MDdkZDUxMjIwZTdhYzBjN2YwZGYxOGE3
YWQyNDgzMWNlNjRiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagpAQCAtMTk3NjQsNyArMTk3NjQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cRmxvYXRDb252ZXJzaW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxHZW5lcmljVGFza1F1ZXVlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xBdWRpb1Nlc3Npb24uaCIgLz4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbi5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cUGxhdGZvcm1NZWRpYVNlc3Np
b24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXEFOR0xFV2ViS2l0QnJpZGdlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBdWRpb1RyYWNrUHJpdmF0ZS5oIiAvPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CmluZGV4IDdhNzExMzFhZjY5NzM0Njk5MGY1OTg5YjVmMjcwY2E2NTQ2NWE2MmYuLjIyYmUyMzFk
MmNmNzM4OTZjMWY0MTQxOGYyNDQwMjE5MGI4MzM4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTE0NDk4
LDcgKzE0NDk4LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlv
XE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGF1ZGlvPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb24uaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxhdWRpb1xQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIj4KICAgICAgIDxGaWx0ZXI+cGxh
dGZvcm1cYXVkaW88L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcZ2FtZXBhZFxOYXZpZ2F0b3JHYW1lcGFkLmgiPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRhNzk2
MDMwMGE0ZjUwNWNmMzVhOTdjMWQ5NGE2MTc4NmM1NTU3NDUuLjAzMWQ5YTRmYTA1ZWM1YzA0YWY4
ZTFiYjJhZWQyZjVmMThkMTg1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOSw4ICsxMTksOCBAQAogCQkwNzA5RDc5MzFB
RTU1NTdFMDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwOUQ3OTExQUU1NTU3RTAwNEU0
MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzA5RDc5NTFBRTU1QTI5MDA0RTQyRjggLyog
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwOUQ3OTQxQUU1NUEyOTAwNEU0MkY4IC8qIFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwNzA5RkM0RTEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0
eVNsaWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcwOUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLzsgfTsK
LQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTA5MTgxODc1RUQ5MzAwM0Ex
RDNDIC8qIE1lZGlhU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTA5
MUExODc1RUY3MTAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5jcHAgKi87IH07CisJCTA3MEUwOTE5
MTg3NUVFRkMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDND
IC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDcwRTA5MUIxODc1RUY3MTAwM0ExRDNDIC8qIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5j
cHAgKi87IH07CiAJCTA3MEY1NDk4MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0
cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwRjU0OTcxN0YxMkY2QjAwMTY5RTA0IC8qIE1lZGlhU3RyZWFtQ29u
c3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggKi87IH07CiAJCTA3MEY1NDlFMTdGMjQwMjcwMDE2
OUUwNCAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEY1NDlEMTdGMjQwMjcwMDE2OUUwNCAvKiBBdWRp
b0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwNzExNTg5MTE3REY2RjY2MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Q
cml2YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MTE1ODhGMTdERjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwICovOyB9
OwpAQCAtNzEzNCw4ICs3MTM0LDggQEAKIAkJMDcwOUQ3OTQxQUU1NUEyOTAwNEU0MkY4IC8qIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2xpZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEREOEY1MEYwMTg2ODAwMDcyN0RF
QiAvKiBtZWRpYUNvbnRyb2xzLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtZWRpYUNvbnRy
b2xzLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcwRTA5MTgxODc1RUQ5MzAw
M0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcwRTA5MUEx
ODc1RUY3MTAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1NZWRpYVNlc3Npb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwRTA5MUExODc1RUY3MTAwM0ExRDND
IC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDcwRjU0OTcxN0YxMkY2QjAwMTY5RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWlu
dHNWYWxpZGF0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3MEY1NDlEMTdGMjQwMjcwMDE2OUUwNCAvKiBBdWRpb0Rlc3RpbmF0aW9u
Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9EZXN0aW5h
dGlvbkNvbnN1bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MTE1ODhGMTdE
RjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNTQ4LDE0ICsyMzU0OCwxNCBAQAogCQkJCUZEMzE2MDY5MTJC
MDI2RjcwMEMxQTM1OSAvKiBIUlRGS2VybmVsLmggKi8sCiAJCQkJRkQzMTYwNkExMkIwMjZGNzAw
QzFBMzU5IC8qIEhSVEZQYW5uZXIuY3BwICovLAogCQkJCUZEMzE2MDZCMTJCMDI2RjcwMEMxQTM1
OSAvKiBIUlRGUGFubmVyLmggKi8sCi0JCQkJMDcwRTA5MUExODc1RUY3MTAwM0ExRDNDIC8qIE1l
ZGlhU2Vzc2lvbi5jcHAgKi8sCi0JCQkJMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIE1lZGlh
U2Vzc2lvbi5oICovLAogCQkJCUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcCAqLywKIAkJCQlDREFFOEMwODE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFT
ZXNzaW9uTWFuYWdlci5oICovLAogCQkJCUZEQjE3MDAzMTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0
aUNoYW5uZWxSZXNhbXBsZXIuY3BwICovLAogCQkJCUZEQjE3MDA0MTRBMkJBQjIwMEEyQjVEOSAv
KiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuaCAqLywKIAkJCQlGRDMxNjA2QzEyQjAyNkY3MDBDMUEz
NTkgLyogUGFubmVyLmNwcCAqLywKIAkJCQlGRDMxNjA2RDEyQjAyNkY3MDBDMUEzNTkgLyogUGFu
bmVyLmggKi8sCisJCQkJMDcwRTA5MUExODc1RUY3MTAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uLmNwcCAqLywKKwkJCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogUGxhdGZvcm1N
ZWRpYVNlc3Npb24uaCAqLywKIAkJCQlGRDMxNjA2RTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
LmNwcCAqLywKIAkJCQlGRDMxNjA2RjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiLmggKi8sCiAJ
CQkJRkQzMTYwNzAxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5j
cHAgKi8sCkBAIC0yNTc5OSw3ICsyNTc5OSw2IEBACiAJCQkJRDNBQTEwRjQxMjNBOThBQTAwOTIx
NTJCIC8qIE1lZGlhUXVlcnlNYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUVGQ0Q3QTE5
REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RCRUFFQUQxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
LmggaW4gSGVhZGVycyAqLywKLQkJCQkwNzBFMDkxOTE4NzVFRUZDMDAzQTFEM0MgLyogTWVkaWFT
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyog
TWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2MzhBOTkxODg0NDg3
MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNjAyMyw2ICsyNjAyMiw3IEBACiAJCQkJMDU2MkY5NjExNTczRjg4RjAwMzFDQTE2IC8q
IFBsYXRmb3JtTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NDRGNzg5MTVDRkIyQTgwMEFG
MzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0MxOURC
MzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzI4NzFDMDBCMjBERUI3MDA0OTAzNUEgLyogUGxhdGZv
cm1NZW51RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQkY3MDEwMEZFODZGNjEw
MDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTM1QzQ3NjkwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yOTM3OCw3ICsyOTM3OCw2IEBACiAJCQkJRDNBQTEwRjMxMjNBOThBQTAw
OTIxNTJCIC8qIE1lZGlhUXVlcnlNYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFRUZD
RDc5MTlEQjMxRjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEQkVBRUFDMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAv
KiBNZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBRThDMDkxNzQ2Qjk1NzAw
NTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2
MzhBOUExODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwN0VEQzNFRTFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFu
YWdlck1hYy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NTQ5LDYgKzI5NTQ4LDcgQEAKIAkJCQky
NjYwMUVDMDE0QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0gaW4g
U291cmNlcyAqLywKIAkJCQlCQ0FBNDg2RjE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVu
dEZhY3RvcnlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMz
QTggLyogUGxhdGZvcm1Mb2NhbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwRTA5MUIxODc1
RUY3MTAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxQkY3MDBGMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTI3OEIwQzE3RjIxMkVBMDAzQTI5OTggLyogUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU5ODkwMkUxNEU5QjBG
ODAwRThEMThCIC8qIFBsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaAppbmRleCBjZGVjZjBmYzJlNTkzMGZhZTk2
NGQ3Mjk2MGZlMzY0ZDBmZDY2OTgyLi43NWM2NzU1YWI4YjllZDBjZDlmM2Y0YTU0ZWU2ZmZhNDky
MjYwZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaApAQCAtNDIsNyAr
NDIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxBdWRpb0VsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCk7CiAKLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lv
bjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBN
ZWRpYVNlc3Npb246OkF1ZGlvOyB9CisgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW87IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE2MmMyODQyODQ5
ZjZhMjZkODcwMzcyOWM4ZDlhNDIzZWJjOTFmMGYuLjk5ZjQwYmFhMDU2NTQzMGU3ZDliNDQ3NTBl
NmY1MjAwZDEwNjU0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtNDUzMyw3ICs0NTMzLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wcGVkRHVl
VG9FcnJvcnMoKSBjb25zdAogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZEZvclVzZXJJ
bnRlcmFjdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09
IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCisgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0
ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTY3LDMzICs2MTY3LDMzIEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBIVE1MTWVkaWFFbGVtZW50OjpmaWxlU2l6ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIDA7CiB9CiAKLU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhVHlwZSgpIGNvbnN0CitQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhVHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fcGxheWVyICYmIG1fcmVh
ZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBKQotICAgICAgICByZXR1cm4gaGFzVmlkZW8oKSA/IE1l
ZGlhU2Vzc2lvbjo6VmlkZW8gOiBNZWRpYVNlc3Npb246OkF1ZGlvOworICAgICAgICByZXR1cm4g
aGFzVmlkZW8oKSA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbyA6IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpBdWRpbzsKIAogICAgIHJldHVybiBwcmVzZW50YXRpb25UeXBlKCk7CiB9CiAKLU1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXNlbnRhdGlvblR5cGUo
KSBjb25zdAorUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBIVE1MTWVkaWFFbGVtZW50
OjpwcmVzZW50YXRpb25UeXBlKCkgY29uc3QKIHsKICAgICBpZiAoaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnZpZGVvVGFnKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6VmlkZW87CisgICAg
ICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW87CiAKLSAgICByZXR1cm4gTWVk
aWFTZXNzaW9uOjpBdWRpbzsKKyAgICByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlv
OwogfQogCi1NZWRpYVNlc3Npb246OkRpc3BsYXlUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3Bs
YXlUeXBlKCkgY29uc3QKK1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlwZSBIVE1MTWVk
aWFFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCi0gICAgICAgIHJldHVybiBN
ZWRpYVNlc3Npb246OkZ1bGxzY3JlZW47CisgICAgICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6RnVsbHNjcmVlbjsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlICYgVmlkZW9G
dWxsc2NyZWVuTW9kZU9wdGltaXplZCkKLSAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6T3B0
aW1pemVkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok9wdGltaXplZDsK
ICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KQotICAgICAgICByZXR1cm4gTWVkaWFTZXNzaW9uOjpOb3JtYWw7CisgICAgICAgIHJldHVybiBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9ybWFsOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6Tm9ybWFsOworICAgIHJldHVybiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Tm9ybWFsOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKQEAgLTYy
MjUsMjggKzYyMjUsMjggQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhU2Vzc2lvblRp
dGxlKCkgY29uc3QKICAgICByZXR1cm4gbV9jdXJyZW50U3JjOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCglcCkgLSAlaSIsIHRoaXMs
IHN0YXRpY19jYXN0PGludD4oY29tbWFuZCkpOwogCiAgICAgc3dpdGNoIChjb21tYW5kKSB7Ci0g
ICAgY2FzZSBNZWRpYVNlc3Npb246OlBsYXlDb21tYW5kOgorICAgIGNhc2UgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlBsYXlDb21tYW5kOgogICAgICAgICBwbGF5KCk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQ6CisgICAgY2FzZSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kOgogICAgICAgICBwYXVzZSgpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIE1lZGlhU2Vzc2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFuZDoKKyAgICBj
YXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kOgogICAgICAg
ICBjYW5QbGF5KCkgPyBwbGF5KCkgOiBwYXVzZSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kOgorICAgIGNhc2UgUGxh
dGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDoKICAgICAgICAg
YmVnaW5TY2FubmluZyhCYWNrd2FyZCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFT
ZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZDoKKyAgICBjYXNlIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZDoKICAgICAgICAgYmVnaW5TY2Fu
bmluZyhGb3J3YXJkKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OkVu
ZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ6Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OkVuZFNlZWtp
bmdGb3J3YXJkQ29tbWFuZDoKKyAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVr
aW5nQmFja3dhcmRDb21tYW5kOgorICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNl
ZWtpbmdGb3J3YXJkQ29tbWFuZDoKICAgICAgICAgZW5kU2Nhbm5pbmcoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5k
ZXggZGY0NDVmODlkMzM0NzhmZDdiOTY5ODFkNzU5ZTRjODFjNmE0YWRmZi4uNzA4MGNjOGU1MmUw
MDJkYmJkYWM3OTFmZDRjYzgwZTU3MDJlOTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW07CiAKIGNsYXNz
IEhUTUxNZWRpYUVsZW1lbnQKICAgICA6IHB1YmxpYyBIVE1MRWxlbWVudAotICAgICwgcHJpdmF0
ZSBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50
LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwg
cHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSAsIHB1YmxpYyBNZWRpYVNlc3Npb25DbGll
bnQsIHByaXZhdGUgTWVkaWFQcm9kdWNlcgorICAgICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVu
dCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZSAsIHB1YmxpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCwgcHJpdmF0
ZSBNZWRpYVByb2R1Y2VyCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBB
dWRpb1RyYWNrQ2xpZW50CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudApAQCAtNTY4LDcg
KzU2OCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXll
clNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJIYW5kbGVQbGF5YmFja0NvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUgY29tbWFuZCkgb3ZlcnJpZGUgeyBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1h
bmQoY29tbWFuZCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJIYW5kbGVQbGF5YmFj
a0NvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBj
b21tYW5kKSBvdmVycmlkZSB7IGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5k
KTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlQXBwbGljYXRpb25JZGVu
dGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBtZWRp
YVBsYXllclByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
QEAgLTY5MCwxNyArNjkwLDE3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVNZWRpYUNvbnRy
b2xzSW5qZWN0ZWRTY3JpcHQoKTsKICNlbmRpZgogCi0gICAgLy8gTWVkaWFTZXNzaW9uQ2xpZW50
IE92ZXJyaWRlcwotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBw
cmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVNlc3Np
b246OkRpc3BsYXlUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgLy8gUGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQgT3ZlcnJpZGVzCisgICAgdmlydHVhbCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RGlzcGxh
eVR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3Vz
cGVuZFBsYXliYWNrKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIG1heVJlc3VtZVBsYXli
YWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRp
YVNlc3Npb25UaXRsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIG1lZGlh
U2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZHVyYXRpb24oKTsgfQog
ICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gY3VycmVudFRpbWUoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIG92ZXJy
aWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHZpcnR1YWwgdm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBlOGQ2Y2Q5MDA2NjIyOTdkY2MzNzdm
NzZiOWI0YzA1ZWQwYzY1ODE4Li5hZWE2YmE4YjgyZDBmMTc5OGM1ZWJlNmIzMGM2MmQzN2YzMmU4
YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtMTA0LDcgKzEw
NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERv
Y3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldERpc3Bs
YXlNb2RlKERpc3BsYXlNb2RlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9u
OjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1l
ZGlhU2Vzc2lvbjo6VmlkZW87IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpWaWRlbzsgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhUTUxJbWFn
ZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVt
ZW50U2Vzc2lvbi5jcHAKaW5kZXggZTA4OTkzOWQzODIwM2U2ZTlmODUxZDMwN2Q3ODQ5YjM1ZTkw
M2M4Zi4uMWE5ZTlhMTJkOWE1NTQ1MjRiNGMzYzM2ZjY2MmE3YTcwOTlkYjRlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC03OCw4ICs3OCw4IEBA
IHN0YXRpYyBTdHJpbmcgcmVzdHJpY3Rpb25OYW1lKE1lZGlhRWxlbWVudFNlc3Npb246OkJlaGF2
aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0CiB9CiAjZW5kaWYKIAotTWVkaWFFbGVtZW50U2Vzc2lv
bjo6TWVkaWFFbGVtZW50U2Vzc2lvbihNZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKLSAgICA6
IE1lZGlhU2Vzc2lvbihjbGllbnQpCitNZWRpYUVsZW1lbnRTZXNzaW9uOjpNZWRpYUVsZW1lbnRT
ZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCisgICAgOiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbihjbGllbnQpCiAgICAgLCBtX3Jlc3RyaWN0aW9ucyhOb1Jlc3RyaWN0aW9u
cykKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgICwgbV90YXJnZXRB
dmFpbGFiaWxpdHlDaGFuZ2VkVGltZXIoKnRoaXMsICZNZWRpYUVsZW1lbnRTZXNzaW9uOjp0YXJn
ZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmgKaW5kZXggNTZkMTkzYTBjN2U0NTZlZjVhNDdkZTAxZGE1M2VlZmUx
NmJmYzY4OS4uZjk0MzU1MWU5NzE1Yzc5OTdjZDgxN2E4MWJkYjg2ZTk3ZWRjYWRmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTI5LDcgKzI5LDcgQEAK
ICNpZiBFTkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgotI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsMTAgKzM4LDEwIEBA
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFNvdXJjZUJ1
ZmZlcjsKIAotY2xhc3MgTWVkaWFFbGVtZW50U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVNl
c3Npb24geworY2xhc3MgTWVkaWFFbGVtZW50U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgTWVkaWFFbGVtZW50U2Vzc2lvbihNZWRpYVNlc3Npb25DbGllbnQmKTsKKyAg
ICBleHBsaWNpdCBNZWRpYUVsZW1lbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
Jik7CiAgICAgdmlydHVhbCB+TWVkaWFFbGVtZW50U2Vzc2lvbigpIHsgfQogCiAgICAgdm9pZCBy
ZWdpc3RlcldpdGhEb2N1bWVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oCmluZGV4IDljNmEyNDY2
NTRkNDRiNjk3ZGU2YjkzZDY3ZDExZmJmMzIyZmExNTguLmI3ZDkxMjA0YmYzYjY4NmJmYjdiZmEw
MjFjNjFkOTNhNTgxNTk0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFJlbW90ZUNvbW1h
bmRMaXN0ZW5lcl9oCiAjZGVmaW5lIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcl9oCiAKLSNpbmNsdWRl
ICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQoKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlKSA9IDA7CiB9OwogCiBjbGFzcyBSZW1vdGVDb21tYW5kTGlzdGVuZXIgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5Yjg0NmYyY2ZjZmQ5NDdkMWVhMDYyMDIyZTU2NWFkNTM4
MjBhY2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDI0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCi0KLSNpZiBFTkFCTEUoVklERU8pCi0jaW5jbHVk
ZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJN
ZWRpYVBsYXllci5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jb25zdCBkb3VibGUga0NsaWVudERhdGFCdWZmZXJpbmdUaW1lclRo
cm90dGxlRGVsYXkgPSAwLjE7Ci0KLSNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMgY29uc3QgY2hh
ciogc3RhdGVOYW1lKE1lZGlhU2Vzc2lvbjo6U3RhdGUgc3RhdGUpCi17Ci0jZGVmaW5lIENBU0Uo
c3RhdGUpIGNhc2UgTWVkaWFTZXNzaW9uOjpzdGF0ZTogcmV0dXJuICNzdGF0ZQotICAgIHN3aXRj
aCAoc3RhdGUpIHsKLSAgICBDQVNFKElkbGUpOwotICAgIENBU0UoUGxheWluZyk7Ci0gICAgQ0FT
RShQYXVzZWQpOwotICAgIENBU0UoSW50ZXJydXB0ZWQpOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAiIjsKLX0KLSNlbmRpZgotCi1zdGQ6OnVuaXF1ZV9w
dHI8TWVkaWFTZXNzaW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShNZWRpYVNlc3Npb25DbGllbnQm
IGNsaWVudCkKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVNlc3Npb24+KGNs
aWVudCk7Ci19Ci0KLU1lZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVu
dCYgY2xpZW50KQotICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9jbGllbnREYXRhQnVm
ZmVyaW5nVGltZXIoKnRoaXMsICZNZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1l
ckZpcmVkKQotICAgICwgbV9zdGF0ZShJZGxlKQotICAgICwgbV9zdGF0ZVRvUmVzdG9yZShJZGxl
KQotICAgICwgbV9ub3RpZnlpbmdDbGllbnQoZmFsc2UpCi17Ci0gICAgQVNTRVJUKG1fY2xpZW50
Lm1lZGlhVHlwZSgpID49IE5vbmUgJiYgbV9jbGllbnQubWVkaWFUeXBlKCkgPD0gV2ViQXVkaW8p
OwotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRTZXNzaW9uKCp0
aGlzKTsKLX0KLQotTWVkaWFTZXNzaW9uOjp+TWVkaWFTZXNzaW9uKCkKLXsKLSAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlU2Vzc2lvbigqdGhpcyk7Ci19Ci0K
LXZvaWQgTWVkaWFTZXNzaW9uOjpzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkKLXsKLSAgICBMT0coTWVk
aWEsICJNZWRpYVNlc3Npb246OnNldFN0YXRlKCVwKSAtICVzIiwgdGhpcywgc3RhdGVOYW1lKHN0
YXRlKSk7Ci0gICAgbV9zdGF0ZSA9IHN0YXRlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6YmVn
aW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlKQotewotICAgIExPRyhNZWRpYSwg
Ik1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oJXApLCBzdGF0ZSA9ICVzLCBpbnRlcnJ1
cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSwgbV9pbnRlcnJ1cHRp
b25Db3VudCk7Ci0KLSAgICBpZiAoKyttX2ludGVycnVwdGlvbkNvdW50ID4gMSB8fCAodHlwZSA9
PSBFbnRlcmluZ0JhY2tncm91bmQgJiYgY2xpZW50KCkub3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJh
Y2tSZXN0cmljdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdGF0ZVRvUmVzdG9y
ZSA9IHN0YXRlKCk7Ci0gICAgbV9ub3RpZnlpbmdDbGllbnQgPSB0cnVlOwotICAgIHNldFN0YXRl
KEludGVycnVwdGVkKTsKLSAgICBjbGllbnQoKS5zdXNwZW5kUGxheWJhY2soKTsKLSAgICBtX25v
dGlmeWluZ0NsaWVudCA9IGZhbHNlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJy
dXB0aW9uKEVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQotewotICAgIExPRyhNZWRpYSwgIk1l
ZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKCVwKSAtIGZsYWdzID0gJWksIHN0YXRlVG9SZXN0
b3JlID0gJXMsIGludGVycnVwdGlvbiBjb3VudCA9ICVpIiwgdGhpcywgKGludClmbGFncywgc3Rh
dGVOYW1lKG1fc3RhdGVUb1Jlc3RvcmUpLCBtX2ludGVycnVwdGlvbkNvdW50KTsKLQotICAgIGlm
ICghbV9pbnRlcnJ1cHRpb25Db3VudCkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Np
b246OmVuZEludGVycnVwdGlvbiglcCkgLSAhISBpZ25vcmluZyBzcHVyaW91cyBpbnRlcnJ1cHRp
b24gZW5kICEhIiwgdGhpcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoLS1t
X2ludGVycnVwdGlvbkNvdW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdGF0ZSBzdGF0ZVRv
UmVzdG9yZSA9IG1fc3RhdGVUb1Jlc3RvcmU7Ci0gICAgbV9zdGF0ZVRvUmVzdG9yZSA9IElkbGU7
Ci0gICAgc2V0U3RhdGUoUGF1c2VkKTsKLQotICAgIGJvb2wgc2hvdWxkUmVzdW1lID0gZmxhZ3Mg
JiBNYXlSZXN1bWVQbGF5aW5nICYmIHN0YXRlVG9SZXN0b3JlID09IFBsYXlpbmc7Ci0gICAgY2xp
ZW50KCkubWF5UmVzdW1lUGxheWJhY2soc2hvdWxkUmVzdW1lKTsKLX0KLQotYm9vbCBNZWRpYVNl
c3Npb246OmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCkKLXsKLSAgICBpZiAobV9ub3RpZnlpbmdD
bGllbnQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKCp0aGlzKSkgewot
ICAgICAgICBpZiAoc3RhdGUoKSA9PSBJbnRlcnJ1cHRlZCkKLSAgICAgICAgICAgIG1fc3RhdGVU
b1Jlc3RvcmUgPSBQbGF5aW5nOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
c2V0U3RhdGUoUGxheWluZyk7Ci0gICAgdXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxh
eWJhY2soKQotewotICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXli
YWNrKCVwKS0gc3RhdGUgPSAlcyIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSk7Ci0gICAgaWYg
KHN0YXRlKCkgPT0gSW50ZXJydXB0ZWQpIHsKLSAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBh
dXNlZDsKLSAgICAgICAgTE9HKE1lZGlhLCAiICAgICAgc2V0dGluZyBzdGF0ZVRvUmVzdG9yZSB0
byBcIlBhdXNlZFwiIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAg
c2V0U3RhdGUoUGF1c2VkKTsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuc2Vzc2lvbldpbGxFbmRQbGF5YmFjaygqdGhpcyk7Ci0gICAgaWYgKCFtX2NsaWVudERhdGFC
dWZmZXJpbmdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2NsaWVudERhdGFCdWZmZXJpbmdU
aW1lci5zdGFydE9uZVNob3Qoa0NsaWVudERhdGFCdWZmZXJpbmdUaW1lclRocm90dGxlRGVsYXkp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6cGF1c2VTZXNzaW9u
KCkKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OnBhdXNlU2Vzc2lvbiglcCkiLCB0
aGlzKTsKLSAgICBtX2NsaWVudC5zdXNwZW5kUGxheWJhY2soKTsKLX0KLQotTWVkaWFTZXNzaW9u
OjpNZWRpYVR5cGUgTWVkaWFTZXNzaW9uOjptZWRpYVR5cGUoKSBjb25zdAotewotICAgIHJldHVy
biBtX2NsaWVudC5tZWRpYVR5cGUoKTsKLX0KLQotTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgTWVk
aWFTZXNzaW9uOjpwcmVzZW50YXRpb25UeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGll
bnQucHJlc2VudGF0aW9uVHlwZSgpOwotfQotCi1TdHJpbmcgTWVkaWFTZXNzaW9uOjp0aXRsZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCk7Ci19Ci0K
LWRvdWJsZSBNZWRpYVNlc3Npb246OmR1cmF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9j
bGllbnQubWVkaWFTZXNzaW9uRHVyYXRpb24oKTsKLX0KLQotZG91YmxlIE1lZGlhU2Vzc2lvbjo6
Y3VycmVudFRpbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNlc3Npb25D
dXJyZW50VGltZSgpOwotfQotICAgIAotYm9vbCBNZWRpYVNlc3Npb246OmNhblJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZHMoKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudC5jYW5SZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpkaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1h
bmQpCi17Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1h
bmQpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6dmlzaWJpbGl0eUNoYW5nZWQoKQotewotICAg
IGlmICghbV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9j
bGllbnREYXRhQnVmZmVyaW5nVGltZXIuc3RhcnRPbmVTaG90KGtDbGllbnREYXRhQnVmZmVyaW5n
VGltZXJUaHJvdHRsZURlbGF5KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNsaWVudERhdGFC
dWZmZXJpbmdUaW1lckZpcmVkKCkKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OmNs
aWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKCVwKS0gdmlzaWJsZSA9ICVzIiwgdGhpcywgbV9j
bGllbnQuZWxlbWVudElzSGlkZGVuKCkgPyAiZmFsc2UiIDogInRydWUiKTsKLQotICAgIHVwZGF0
ZUNsaWVudERhdGFCdWZmZXJpbmcoKTsKLQotICAgIGlmIChtX3N0YXRlICE9IFBsYXlpbmcgfHwg
IW1fY2xpZW50LmVsZW1lbnRJc0hpZGRlbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZXN0cmljdGlvbnMobWVkaWFUeXBlKCkp
OwotICAgIGlmICgocmVzdHJpY3Rpb25zICYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6QmFja2dyb3Vu
ZFRhYlBsYXliYWNrUmVzdHJpY3RlZCkgPT0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6QmFja2dyb3Vu
ZFRhYlBsYXliYWNrUmVzdHJpY3RlZCkKLSAgICAgICAgcGF1c2VTZXNzaW9uKCk7Ci19Ci0KLXZv
aWQgTWVkaWFTZXNzaW9uOjp1cGRhdGVDbGllbnREYXRhQnVmZmVyaW5nKCkKLXsKLSAgICBpZiAo
bV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9jbGllbnRE
YXRhQnVmZmVyaW5nVGltZXIuc3RvcCgpOwotCi0gICAgbV9jbGllbnQuc2V0U2hvdWxkQnVmZmVy
RGF0YShNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbkNhbkxvYWRN
ZWRpYSgqdGhpcykpOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4oKSBjb25zdAot
ewotICAgIHJldHVybiBtX2NsaWVudC5lbGVtZW50SXNIaWRkZW4oKTsKLX0KLQotTWVkaWFTZXNz
aW9uOjpEaXNwbGF5VHlwZSBNZWRpYVNlc3Npb246OmRpc3BsYXlUeXBlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9jbGllbnQuZGlzcGxheVR5cGUoKTsKLX0KLQotU3RyaW5nIE1lZGlhU2Vzc2lv
bkNsaWVudDo6bWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdAotewotICAgIHJldHVybiBTdHJpbmco
KTsKLX0KLQotZG91YmxlIE1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uRHVyYXRpb24o
KSBjb25zdAotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKTsKLX0KLQot
ZG91YmxlIE1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25z
dAotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKTsKLX0KLX0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRlMDYwMThhMWZlNWQ1NzA5NzVmNmIyOTkwZmIyNzM2
OGU1NzllMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAorKysgL2Rldi9udWxs
CkBAIC0xLDE4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhU2Vzc2lv
bl9oCi0jZGVmaW5lIE1lZGlhU2Vzc2lvbl9oCi0KLSNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgi
Ci0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCi0jaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oIgotI2VuZGlm
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKLWNs
YXNzIE1lZGlhU2Vzc2lvbkNsaWVudDsKLQotY2xhc3MgTWVkaWFTZXNzaW9uCi0jaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFy
Z2V0Q2xpZW50Ci0jZW5kaWYKLXsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhU2Vzc2lvbj4gY3JlYXRlKE1lZGlhU2Vzc2lvbkNsaWVudCYpOwotCi0gICAgTWVkaWFT
ZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVudCYpOwotICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbigp
OwotCi0gICAgZW51bSBNZWRpYVR5cGUgewotICAgICAgICBOb25lID0gMCwKLSAgICAgICAgVmlk
ZW8sCi0gICAgICAgIEF1ZGlvLAotICAgICAgICBXZWJBdWRpbywKLSAgICB9OwotICAgIE1lZGlh
VHlwZSBtZWRpYVR5cGUoKSBjb25zdDsKLSAgICBNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgp
IGNvbnN0OwotCi0gICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIElkbGUsCi0gICAgICAgIFBsYXlp
bmcsCi0gICAgICAgIFBhdXNlZCwKLSAgICAgICAgSW50ZXJydXB0ZWQsCi0gICAgfTsKLSAgICBT
dGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICB2b2lkIHNldFN0YXRl
KFN0YXRlKTsKLQotICAgIGVudW0gSW50ZXJydXB0aW9uVHlwZSB7Ci0gICAgICAgIFN5c3RlbVNs
ZWVwLAotICAgICAgICBFbnRlcmluZ0JhY2tncm91bmQsCi0gICAgICAgIFN5c3RlbUludGVycnVw
dGlvbiwKLSAgICB9OwotICAgIGVudW0gRW5kSW50ZXJydXB0aW9uRmxhZ3MgewotICAgICAgICBO
b0ZsYWdzID0gMCwKLSAgICAgICAgTWF5UmVzdW1lUGxheWluZyA9IDEgPDwgMCwKLSAgICB9Owot
ICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSk7Ci0gICAgdm9pZCBl
bmRJbnRlcnJ1cHRpb24oRW5kSW50ZXJydXB0aW9uRmxhZ3MpOwotCi0gICAgdm9pZCBhcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmQoKSBjb25zdDsKLSAgICB2b2lkIGFwcGxpY2F0aW9uV2ls
bEVudGVyQmFja2dyb3VuZCgpIGNvbnN0OwotCi0gICAgYm9vbCBjbGllbnRXaWxsQmVnaW5QbGF5
YmFjaygpOwotICAgIGJvb2wgY2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKLQotICAgIHZvaWQg
cGF1c2VTZXNzaW9uKCk7Ci0gICAgCi0gICAgdm9pZCB2aXNpYmlsaXR5Q2hhbmdlZCgpOwotCi0g
ICAgU3RyaW5nIHRpdGxlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3Q7Ci0g
ICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0KLSAgICBlbnVtIFJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSB7Ci0gICAgICAgIE5vQ29tbWFuZCwKLSAgICAgICAgUGxheUNvbW1hbmQsCi0g
ICAgICAgIFBhdXNlQ29tbWFuZCwKLSAgICAgICAgU3RvcENvbW1hbmQsCi0gICAgICAgIFRvZ2ds
ZVBsYXlQYXVzZUNvbW1hbmQsCi0gICAgICAgIEJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwK
LSAgICAgICAgRW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwKLSAgICAgICAgQmVnaW5TZWVraW5n
Rm9yd2FyZENvbW1hbmQsCi0gICAgICAgIEVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKLSAgICB9
OwotICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0OwotICAg
IHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSk7Ci0KLSAgICBlbnVtIERpc3BsYXlUeXBlIHsKLSAgICAgICAgTm9ybWFsLAotICAgICAg
ICBGdWxsc2NyZWVuLAotICAgICAgICBPcHRpbWl6ZWQsCi0gICAgfTsKLSAgICBEaXNwbGF5VHlw
ZSBkaXNwbGF5VHlwZSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0OwotCi0g
ICAgdmlydHVhbCBib29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0jaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0
PiYmKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJyaWRlIHsgfQotI2VuZGlmCi0K
LSNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzUGxheWJhY2tUYXJn
ZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlmCi0KLXBy
b3RlY3RlZDoKLSAgICBNZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xpZW50OyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBjbGllbnREYXRhQnVmZmVyaW5nVGlt
ZXJGaXJlZCgpOwotICAgIHZvaWQgdXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpOwotCi0gICAg
TWVkaWFTZXNzaW9uQ2xpZW50JiBtX2NsaWVudDsKLSAgICBUaW1lciBtX2NsaWVudERhdGFCdWZm
ZXJpbmdUaW1lcjsKLSAgICBTdGF0ZSBtX3N0YXRlOwotICAgIFN0YXRlIG1fc3RhdGVUb1Jlc3Rv
cmU7Ci0gICAgaW50IG1faW50ZXJydXB0aW9uQ291bnQgeyAwIH07Ci0gICAgYm9vbCBtX25vdGlm
eWluZ0NsaWVudDsKLX07Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbkNsaWVudCB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoTWVkaWFTZXNzaW9uQ2xpZW50KTsKLXB1YmxpYzoKLSAgICBNZWRpYVNl
c3Npb25DbGllbnQoKSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFU
eXBlIG1lZGlhVHlwZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBNZWRpYVNl
c3Npb246OkRpc3BsYXlUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNz
aW9uOjpOb3JtYWw7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29s
IHNob3VsZFJlc3VtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kUGxheWJhY2soKSA9
IDA7Ci0KLSAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVNlc3Npb25UaXRsZSgpIGNvbnN0OwotICAg
IHZpcnR1YWwgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBkb3VibGUgbWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvdWxkQnVmZmVyRGF0YShib29sKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZWxlbWVudElzSGlk
ZGVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBvdmVycmlk
ZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVh
bCB2b2lkIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+
JiYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9X
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgeyB9Ci0KLXByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25DbGllbnQoKSB7IH0KLX07Ci0KLX0KLQot
I2VuZGlmIC8vIE1lZGlhU2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IGY1NzA0Nzc5OGVkNTk2Mjky
OTMxZWQ3MTMzZDQxZmYwZTM1MTRkZDMuLmUxNzcwNTNmZDY2MTAzMjI1YjgxOWJlN2RmZmE0NWY4
NWM2ZTRjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlh
U2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9T
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNl
c3Npb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSwxNCArNTEsMTQgQEAgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdlcigpCiAKIHZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlcjo6cmVzZXRSZXN0cmljdGlvbnMoKQogewotICAgIG1fcmVzdHJpY3Rpb25zW01l
ZGlhU2Vzc2lvbjo6VmlkZW9dID0gTm9SZXN0cmljdGlvbnM7Ci0gICAgbV9yZXN0cmljdGlvbnNb
TWVkaWFTZXNzaW9uOjpBdWRpb10gPSBOb1Jlc3RyaWN0aW9uczsKLSAgICBtX3Jlc3RyaWN0aW9u
c1tNZWRpYVNlc3Npb246OldlYkF1ZGlvXSA9IE5vUmVzdHJpY3Rpb25zOworICAgIG1fcmVzdHJp
Y3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlb10gPSBOb1Jlc3RyaWN0aW9uczsKKyAg
ICBtX3Jlc3RyaWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW9dID0gTm9SZXN0cmlj
dGlvbnM7CisgICAgbV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlv
XSA9IE5vUmVzdHJpY3Rpb25zOwogfQogCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmhhcyhN
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAorYm9vbCBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAogewot
ICAgIEFTU0VSVCh0eXBlID49IE1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vz
c2lvbjo6V2ViQXVkaW8pOworICAgIEFTU0VSVCh0eXBlID49IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpOb25lICYmIHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKIAogICAg
IGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKICAgICAgICAgaWYgKHNlc3Npb24t
Pm1lZGlhVHlwZSgpID09IHR5cGUpCkBAIC03MSwxNiArNzEsMTYgQEAgYm9vbCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpoYXMoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKIGJvb2wg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSBjb25zdAog
ewogICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKLSAgICAgICAgaWYgKHNl
c3Npb24tPm1lZGlhVHlwZSgpICE9IE1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiBzZXNzaW9uLT5zdGF0
ZSgpID09IE1lZGlhU2Vzc2lvbjo6U3RhdGU6OlBsYXlpbmcpCisgICAgICAgIGlmIChzZXNzaW9u
LT5tZWRpYVR5cGUoKSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiBzZXNzaW9uLT5z
dGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdGF0ZTo6UGxheWluZykKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlu
dCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb3VudChNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBl
KSBjb25zdAoraW50IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBU1NFUlQodHlwZSA+PSBNZWRpYVNl
c3Npb246Ok5vbmUgJiYgdHlwZSA8PSBNZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKyAgICBBU1NF
UlQodHlwZSA+PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CiAKICAgICBpbnQgY291bnQgPSAwOwogICAgIGZvciAo
YXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKQEAgLTkxLDM0ICs5MSwzNCBAQCBpbnQgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6Y291bnQoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29u
c3QKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVn
aW5JbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCit2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNz
aW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1cHRpb24iKTsKIAogICAgIG1faW50ZXJydXB0ZWQgPSB0
cnVlOwotICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7Cisg
ICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwog
ICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQogICAgICAgICBzZXNzaW9uLT5iZWdp
bkludGVycnVwdGlvbih0eXBlKTsKICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIH0KIAotdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpFbmRJ
bnRlcnJ1cHRpb25GbGFncyBmbGFncykKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZW5kSW50
ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFn
cykKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRp
b24iKTsKIAogICAgIG1faW50ZXJydXB0ZWQgPSBmYWxzZTsKLSAgICBWZWN0b3I8TWVkaWFTZXNz
aW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKICAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBz
ZXNzaW9ucykKICAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKIH0KIAot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lv
bikKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbiYgc2Vzc2lvbikKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRTZXNzaW9uIC0gJXAiLCAmc2Vzc2lvbik7CiAgICAgCiAgICAgbV9zZXNzaW9ucy5hcHBlbmQo
JnNlc3Npb24pOwogICAgIGlmIChtX2ludGVycnVwdGVkKQotICAgICAgICBzZXNzaW9uLnNldFN0
YXRlKE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpOworICAgICAgICBzZXNzaW9uLnNldFN0YXRl
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCk7CiAKICAgICBpZiAoIW1fcmVtb3Rl
Q29tbWFuZExpc3RlbmVyKQogICAgICAgICBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lciA9IFJlbW90
ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQog
ICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnJlbW92ZVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQordm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpyZW1vdmVTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewog
ICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24gLSAlcCIs
ICZzZXNzaW9uKTsKICAgICAKQEAgLTE0OCwzMyArMTQ4LDMzIEBAIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cmVtb3ZlU2Vzc2lvbihNZWRpYVNlc3Npb24mIHNlc3Npb24pCiAgICAgdXBkYXRl
U2Vzc2lvblN0YXRlKCk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUmVzdHJp
Y3Rpb24oTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyBy
ZXN0cmljdGlvbikKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUmVzdHJpY3Rpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJl
c3RyaWN0aW9uKQogewotICAgIEFTU0VSVCh0eXBlID4gTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5
cGUgPD0gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CisgICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJB
dWRpbyk7CiAgICAgbV9yZXN0cmljdGlvbnNbdHlwZV0gfD0gcmVzdHJpY3Rpb247CiB9CiAKLXZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKK3ZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZSB0eXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKQogewotICAg
IEFTU0VSVCh0eXBlID4gTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gTWVkaWFTZXNzaW9u
OjpXZWJBdWRpbyk7CisgICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9u
ZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CiAgICAgbV9yZXN0
cmljdGlvbnNbdHlwZV0gJj0gfnJlc3RyaWN0aW9uOwogfQogCi1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpTZXNzaW9uUmVzdHJpY3Rpb25zIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3RyaWN0aW9ucyhN
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKQorTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lv
blJlc3RyaWN0aW9ucyBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlvbnMoUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKQogewotICAgIEFTU0VSVCh0eXBlID4gTWVkaWFT
ZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CisgICAgQVNT
RVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CiAgICAgcmV0dXJuIG1fcmVzdHJpY3Rpb25zW3R5cGVd
OwogfQogCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFj
ayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCitib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Np
b25XaWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAg
ICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJh
Y2sgLSAlcCIsICZzZXNzaW9uKTsKICAgICAKICAgICBzZXRDdXJyZW50U2Vzc2lvbihzZXNzaW9u
KTsKIAotICAgIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHNlc3Npb25UeXBlID0gc2Vzc2lvbi5t
ZWRpYVR5cGUoKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHNlc3Npb25U
eXBlID0gc2Vzc2lvbi5tZWRpYVR5cGUoKTsKICAgICBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3Ry
aWN0aW9ucyA9IG1fcmVzdHJpY3Rpb25zW3Nlc3Npb25UeXBlXTsKLSAgICBpZiAoc2Vzc2lvbi5z
dGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQgJiYgcmVzdHJpY3Rpb25zICYgSW50
ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCkKKyAgICBpZiAoc2Vzc2lvbi5zdGF0ZSgpID09
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCAmJiByZXN0cmljdGlvbnMgJiBJbnRl
cnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKQEAgLTE4Myw5ICsxODMsOSBAQCBib29sIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24p
CiAjZW5kaWYKIAogICAgIGlmIChtX2ludGVycnVwdGVkKQotICAgICAgICBlbmRJbnRlcnJ1cHRp
b24oTWVkaWFTZXNzaW9uOjpOb0ZsYWdzKTsKKyAgICAgICAgZW5kSW50ZXJydXB0aW9uKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzKTsKIAotICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBz
ZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4g
c2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwogICAgIGZvciAoYXV0byogb25lU2Vzc2lvbiA6IHNlc3Np
b25zKSB7CiAgICAgICAgIGlmIChvbmVTZXNzaW9uID09ICZzZXNzaW9uKQogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0xOTcsNyArMTk3LDcgQEAgYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogICAgIHJldHVy
biB0cnVlOwogfQogICAgIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVu
ZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikK
IHsKICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBs
YXliYWNrIC0gJXAiLCAmc2Vzc2lvbik7CiAgICAgCkBAIC0yMDcsMTcgKzIwNywxNyBAQCB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9u
JiBzZXNzaW9uKQogICAgIHNpemVfdCBwYXVzaW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CiAg
ICAgc2l6ZV90IGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3Nlc3Npb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE1lZGlh
U2Vzc2lvbiogb25lU2Vzc2lvbiA9IG1fc2Vzc2lvbnNbaV07CisgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uKiBvbmVTZXNzaW9uID0gbV9zZXNzaW9uc1tpXTsKICAgICAgICAgCiAgICAgICAg
IGlmIChvbmVTZXNzaW9uID09ICZzZXNzaW9uKSB7CiAgICAgICAgICAgICBwYXVzaW5nU2Vzc2lv
bkluZGV4ID0gaTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlm
IChvbmVTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6UGxheWluZykgeworICAgICAg
ICBpZiAob25lU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWlu
ZykgewogICAgICAgICAgICAgbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXggPSBpOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG9uZVNlc3Npb24tPnN0YXRlKCkg
IT0gTWVkaWFTZXNzaW9uOjpQbGF5aW5nKQorICAgICAgICBpZiAob25lU2Vzc2lvbi0+c3RhdGUo
KSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykKICAgICAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBpZiAobGFzdFBsYXlpbmdTZXNzaW9uSW5kZXggPT0gbm90Rm91bmQgfHwgcGF1
c2luZ1Nlc3Npb25JbmRleCA9PSBub3RGb3VuZCkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxs
RW5kUGxheWJhY2sgLSBzZXNzaW9uIG1vdmVkIGZyb20gaW5kZXggJXp1IHRvICV6dSIsIHBhdXNp
bmdTZXNzaW9uSW5kZXgsIGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4KTsKIH0KIAotdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbihNZWRpYVNlc3Npb24mIHNlc3Npb24p
Cit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVk
aWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldEN1cnJlbnRTZXNzaW9uIC0gJXAiLCAmc2Vzc2lvbik7CiAgICAgCkBAIC0yNTAsNyAr
MjUwLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbihNZWRp
YVNlc3Npb24mIHNlc3Npb24pCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2V0Q3VycmVudFNlc3Npb24gLSBzZXNzaW9uIG1vdmVkIGZyb20gaW5kZXggJXp1IHRvIDAiLCBp
bmRleCk7CiB9CiAgICAgCi1NZWRpYVNlc3Npb24qIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJl
bnRTZXNzaW9uKCkKK1BsYXRmb3JtTWVkaWFTZXNzaW9uKiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpj
dXJyZW50U2Vzc2lvbigpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25zLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yNTgsMzcgKzI1OCwzNyBAQCBNZWRpYVNlc3Npb24qIE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uc1sw
XTsKIH0KICAgICAKLWJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvblJlc3RyaWN0c0lu
bGluZVZpZGVvUGxheWJhY2soY29uc3QgTWVkaWFTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAorYm9v
bCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uUmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFj
ayhjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKIHsKLSAgICBNZWRp
YVNlc3Npb246Ok1lZGlhVHlwZSBzZXNzaW9uVHlwZSA9IHNlc3Npb24ucHJlc2VudGF0aW9uVHlw
ZSgpOwotICAgIGlmIChzZXNzaW9uVHlwZSAhPSBNZWRpYVNlc3Npb246OlZpZGVvKQorICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgc2Vzc2lvblR5cGUgPSBzZXNzaW9uLnByZXNl
bnRhdGlvblR5cGUoKTsKKyAgICBpZiAoc2Vzc2lvblR5cGUgIT0gUGxhdGZvcm1NZWRpYVNlc3Np
b246OlZpZGVvKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbV9yZXN0cmlj
dGlvbnNbc2Vzc2lvblR5cGVdICYgSW5saW5lVmlkZW9QbGF5YmFja1Jlc3RyaWN0ZWQ7CiB9CiAK
LWJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbkNhbkxvYWRNZWRpYShjb25zdCBNZWRp
YVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Citib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Np
b25DYW5Mb2FkTWVkaWEoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHNlc3Npb24uc3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlBsYXlpbmcg
fHwgIXNlc3Npb24uaXNIaWRkZW4oKSB8fCBzZXNzaW9uLmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5
YmFja1RhcmdldCgpOworICAgIHJldHVybiBzZXNzaW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRp
YVNlc3Npb246OlBsYXlpbmcgfHwgIXNlc3Npb24uaXNIaWRkZW4oKSB8fCBzZXNzaW9uLmlzUGxh
eWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpOwogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0CiB7CiAgICAgTE9H
KE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3Jv
dW5kIik7Ci0gICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsK
KyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7
CiAgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbnMpIHsKICAgICAgICAgaWYgKG1fcmVz
dHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAmIEJhY2tncm91bmRQcm9jZXNzUGxheWJh
Y2tSZXN0cmljdGVkKQotICAgICAgICAgICAgc2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oTWVk
aWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOworICAgICAgICAgICAgc2Vzc2lvbi0+YmVn
aW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dyb3VuZCk7
CiAgICAgfQogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZCgpIGNvbnN0CiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFu
YWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kIik7Ci0gICAgVmVjdG9yPE1lZGlh
U2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRp
YVNlc3Npb24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CiAgICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogc2Vzc2lvbnMpIHsKICAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlh
VHlwZSgpXSAmIEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQotICAgICAgICAg
ICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWlu
Zyk7CisgICAgICAgICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOwogICAgIH0KIH0KIApAQCAtMjk4LDkgKzI5OCw5IEBA
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKIH0KICNlbmRp
ZgogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQordm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQogewot
ICAgIE1lZGlhU2Vzc2lvbiogYWN0aXZlU2Vzc2lvbiA9IGN1cnJlbnRTZXNzaW9uKCk7CisgICAg
UGxhdGZvcm1NZWRpYVNlc3Npb24qIGFjdGl2ZVNlc3Npb24gPSBjdXJyZW50U2Vzc2lvbigpOwog
ICAgIGlmICghYWN0aXZlU2Vzc2lvbiB8fCAhYWN0aXZlU2Vzc2lvbi0+Y2FuUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kcygpKQogICAgICAgICByZXR1cm47CiAgICAgYWN0aXZlU2Vzc2lvbi0+
ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmQpOwpAQCAtMzEyLDcgKzMxMiw3
IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtV2lsbFNsZWVwKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgZm9yIChhdXRvIHNlc3Npb24gOiBtX3Nlc3Npb25zKQotICAgICAgICBz
ZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihNZWRpYVNlc3Npb246OlN5c3RlbVNsZWVwKTsKKyAg
ICAgICAgc2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5
c3RlbVNsZWVwKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1EaWRXYWtl
KCkKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbURp
ZFdha2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8gc2Vzc2lvbiA6IG1fc2Vz
c2lvbnMpCi0gICAgICAgIHNlc3Npb24tPmVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246Ok1h
eVJlc3VtZVBsYXlpbmcpOworICAgICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOwogfQogCiB2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggZDk0MGQ1YWY2
ZDVlYzVhYWNhNDQzMTQ3ZDA1NjZhZmM3ZTY4ZGYzZi4uZDE1MGE5ODVkYzY3NGZhN2NjZWY1NTI3
NTExZmYyZGQ4M2Q3NGEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBNZWRp
YVNlc3Npb25NYW5hZ2VyX2gKIAogI2luY2x1ZGUgIkF1ZGlvSGFyZHdhcmVMaXN0ZW5lci5oIgot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTeXN0ZW1TbGVlcExpc3RlbmVyLmgiCkBAIC0zNyw3ICszNyw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Ci1jbGFzcyBN
ZWRpYVNlc3Npb247CitjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjsKIGNsYXNzIFJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjsKIAogY2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlciA6IHByaXZhdGUgUmVt
b3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50LCBwcml2YXRlIFN5c3RlbVNsZWVwTGlzdGVuZXI6OkNs
aWVudCwgcHJpdmF0ZSBBdWRpb0hhcmR3YXJlTGlzdGVuZXI6OkNsaWVudCB7CkBAIC00NiwxMiAr
NDYsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNZWRpYVNlc3Npb25N
YW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7CiAgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uTWFuYWdl
cigpIHsgfQogCi0gICAgYm9vbCBoYXMoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpIGNvbnN0Owot
ICAgIGludCBjb3VudChNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7CisgICAgYm9vbCBo
YXMoUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7CisgICAgaW50IGNvdW50
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpIGNvbnN0OwogICAgIGJvb2wgYWN0aXZl
QXVkaW9TZXNzaW9uUmVxdWlyZWQoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YmVnaW5JbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246OkVuZEludGVy
cnVwdGlvbkZsYWdzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJy
dXB0aW9uRmxhZ3MpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0
aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0OwpAQCAtNjgsMzQgKzY4LDM0IEBAIHB1Ymxp
YzoKICAgICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgU2Vzc2lvblJlc3RyaWN0aW9uczsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpNZWRp
YVR5cGUsIFNlc3Npb25SZXN0cmljdGlvbnMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUsIFNlc3Npb25SZXN0cmljdGlv
bnMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25z
KE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFJl
c3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUsIFNlc3Npb25SZXN0cmlj
dGlvbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyk7CisgICAgV0VC
Q09SRV9FWFBPUlQgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMoUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok1lZGlhVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UmVzdHJpY3Rpb25z
KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vz
c2lvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vz
c2lvbiYpOworICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soUGxhdGZv
cm1NZWRpYVNlc3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5YmFj
ayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwogCi0gICAgYm9vbCBzZXNzaW9uUmVzdHJpY3RzSW5s
aW5lVmlkZW9QbGF5YmFjayhjb25zdCBNZWRpYVNlc3Npb24mKSBjb25zdDsKKyAgICBib29sIHNl
c3Npb25SZXN0cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNz
aW9uJikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbkNhbkxvYWRNZWRpYShjb25z
dCBNZWRpYVNlc3Npb24mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbkNhbkxvYWRN
ZWRpYShjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIHZpcnR1YWwgdm9pZCBjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3Jpbmco
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzZXRDdXJyZW50U2Vzc2lvbihNZWRp
YVNlc3Npb24mKTsKLSAgICBNZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uKCk7CisgICAgdm9p
ZCBzZXRDdXJyZW50U2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOworICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lvbigpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgZnJpZW5k
IGNsYXNzIE1lZGlhU2Vzc2lvbjsKKyAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Np
b247CiAgICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uTWFuYWdlcigpOwogCi0gICAgdm9pZCBhZGRT
ZXNzaW9uKE1lZGlhU2Vzc2lvbiYpOwotICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihNZWRpYVNlc3Np
b24mKTsKKyAgICB2b2lkIGFkZFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKKyAgICB2
b2lkIHJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKIAotICAgIFZlY3RvcjxN
ZWRpYVNlc3Npb24qPiBzZXNzaW9ucygpIHsgcmV0dXJuIG1fc2Vzc2lvbnM7IH0KKyAgICBWZWN0
b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBzZXNzaW9ucygpIHsgcmV0dXJuIG1fc2Vzc2lvbnM7
IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSW50ZXJuYWxzOwpAQCAtMTAzLDcgKzEw
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIAogICAgIC8v
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBBdWRpb0hhcmR3
YXJlTGlzdGVuZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgYXVkaW9IYXJkd2FyZURpZEJlY29t
ZUFjdGl2ZSgpIG92ZXJyaWRlIHsgfQpAQCAtMTE0LDggKzExNCw4IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHN5c3RlbVdpbGxTbGVlcCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBzeXN0ZW1EaWRXYWtlKCkgb3ZlcnJpZGU7CiAKLSAgICBTZXNzaW9uUmVzdHJpY3Rpb25zIG1f
cmVzdHJpY3Rpb25zW01lZGlhU2Vzc2lvbjo6V2ViQXVkaW8gKyAxXTsKLSAgICBWZWN0b3I8TWVk
aWFTZXNzaW9uKj4gbV9zZXNzaW9uczsKKyAgICBTZXNzaW9uUmVzdHJpY3Rpb25zIG1fcmVzdHJp
Y3Rpb25zW1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyArIDFdOworICAgIFZlY3RvcjxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbio+IG1fc2Vzc2lvbnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNvbW1hbmRMaXN0ZW5lcj4gbV9yZW1vdGVDb21tYW5kTGlzdGVuZXI7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFN5c3RlbVNsZWVwTGlzdGVuZXI+IG1fc3lzdGVtU2xlZXBMaXN0ZW5lcjsKICAg
ICBSZWZQdHI8QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjkzYTZmNjk5MGJhZWViZDUyYWYxYmUzMmQ2MjFmNTli
YjRiMGNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCkBAIC0wLDAgKzEsMjQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24u
aCIKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAi
TWVkaWFTZXNzaW9uTWFuYWdlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGRv
dWJsZSBrQ2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyVGhyb3R0bGVEZWxheSA9IDAuMTsKKworI2lm
ICFMT0dfRElTQUJMRUQKK3N0YXRpYyBjb25zdCBjaGFyKiBzdGF0ZU5hbWUoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlN0YXRlIHN0YXRlKQoreworI2RlZmluZSBDQVNFKHN0YXRlKSBjYXNlIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpzdGF0ZTogcmV0dXJuICNzdGF0ZQorICAgIHN3aXRjaCAoc3RhdGUp
IHsKKyAgICBDQVNFKElkbGUpOworICAgIENBU0UoUGxheWluZyk7CisgICAgQ0FTRShQYXVzZWQp
OworICAgIENBU0UoSW50ZXJydXB0ZWQpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiAiIjsKK30KKyNlbmRpZgorCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1NZWRpYVNlc3Npb24+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbj4oY2xpZW50KTsKK30KKworUGxhdGZvcm1NZWRpYVNlc3Npb246
OlBsYXRmb3JtTWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQp
CisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1l
cigqdGhpcywgJlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJG
aXJlZCkKKyAgICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1fc3RhdGVUb1Jlc3RvcmUoSWRsZSkK
KyAgICAsIG1fbm90aWZ5aW5nQ2xpZW50KGZhbHNlKQoreworICAgIEFTU0VSVChtX2NsaWVudC5t
ZWRpYVR5cGUoKSA+PSBOb25lICYmIG1fY2xpZW50Lm1lZGlhVHlwZSgpIDw9IFdlYkF1ZGlvKTsK
KyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhp
cyk7Cit9CisKK1BsYXRmb3JtTWVkaWFTZXNzaW9uOjp+UGxhdGZvcm1NZWRpYVNlc3Npb24oKQor
eworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9u
KCp0aGlzKTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2V0U3RhdGUoU3RhdGUg
c3RhdGUpCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OnNldFN0YXRl
KCVwKSAtICVzIiwgdGhpcywgc3RhdGVOYW1lKHN0YXRlKSk7CisgICAgbV9zdGF0ZSA9IHN0YXRl
OworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihJbnRl
cnJ1cHRpb25UeXBlIHR5cGUpCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Np
b246OmJlZ2luSW50ZXJydXB0aW9uKCVwKSwgc3RhdGUgPSAlcywgaW50ZXJydXB0aW9uIGNvdW50
ID0gJWkiLCB0aGlzLCBzdGF0ZU5hbWUobV9zdGF0ZSksIG1faW50ZXJydXB0aW9uQ291bnQpOwor
CisgICAgaWYgKCsrbV9pbnRlcnJ1cHRpb25Db3VudCA+IDEgfHwgKHR5cGUgPT0gRW50ZXJpbmdC
YWNrZ3JvdW5kICYmIGNsaWVudCgpLm92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rp
b24oKSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBzdGF0ZSgp
OworICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0gdHJ1ZTsKKyAgICBzZXRTdGF0ZShJbnRlcnJ1cHRl
ZCk7CisgICAgY2xpZW50KCkuc3VzcGVuZFBsYXliYWNrKCk7CisgICAgbV9ub3RpZnlpbmdDbGll
bnQgPSBmYWxzZTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0
aW9uKEVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oJXApIC0gZmxhZ3MgPSAlaSwgc3RhdGVU
b1Jlc3RvcmUgPSAlcywgaW50ZXJydXB0aW9uIGNvdW50ID0gJWkiLCB0aGlzLCAoaW50KWZsYWdz
LCBzdGF0ZU5hbWUobV9zdGF0ZVRvUmVzdG9yZSksIG1faW50ZXJydXB0aW9uQ291bnQpOworCisg
ICAgaWYgKCFtX2ludGVycnVwdGlvbkNvdW50KSB7CisgICAgICAgIExPRyhNZWRpYSwgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oJXApIC0gISEgaWdub3Jpbmcgc3B1cmlv
dXMgaW50ZXJydXB0aW9uIGVuZCAhISIsIHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKC0tbV9pbnRlcnJ1cHRpb25Db3VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
U3RhdGUgc3RhdGVUb1Jlc3RvcmUgPSBtX3N0YXRlVG9SZXN0b3JlOworICAgIG1fc3RhdGVUb1Jl
c3RvcmUgPSBJZGxlOworICAgIHNldFN0YXRlKFBhdXNlZCk7CisKKyAgICBib29sIHNob3VsZFJl
c3VtZSA9IGZsYWdzICYgTWF5UmVzdW1lUGxheWluZyAmJiBzdGF0ZVRvUmVzdG9yZSA9PSBQbGF5
aW5nOworICAgIGNsaWVudCgpLm1heVJlc3VtZVBsYXliYWNrKHNob3VsZFJlc3VtZSk7Cit9CisK
K2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCkKK3sK
KyAgICBpZiAobV9ub3RpZnlpbmdDbGllbnQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
aWYgKCFNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbldpbGxCZWdp
blBsYXliYWNrKCp0aGlzKSkgeworICAgICAgICBpZiAoc3RhdGUoKSA9PSBJbnRlcnJ1cHRlZCkK
KyAgICAgICAgICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBQbGF5aW5nOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgc2V0U3RhdGUoUGxheWluZyk7CisgICAgdXBkYXRlQ2xpZW50
RGF0YUJ1ZmZlcmluZygpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpjbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpCit7CisgICAgaWYgKG1fbm90aWZ5
aW5nQ2xpZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIExPRyhNZWRpYSwgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpjbGllbnRXaWxsUGF1c2VQbGF5YmFjayglcCktIHN0YXRlID0gJXMi
LCB0aGlzLCBzdGF0ZU5hbWUobV9zdGF0ZSkpOworICAgIGlmIChzdGF0ZSgpID09IEludGVycnVw
dGVkKSB7CisgICAgICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBQYXVzZWQ7CisgICAgICAgIExPRyhN
ZWRpYSwgIiAgICAgIHNldHRpbmcgc3RhdGVUb1Jlc3RvcmUgdG8gXCJQYXVzZWRcIiIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHNldFN0YXRlKFBhdXNlZCk7Cisg
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25XaWxsRW5kUGxh
eWJhY2soKnRoaXMpOworICAgIGlmICghbV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXIuaXNBY3Rp
dmUoKSkKKyAgICAgICAgbV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXIuc3RhcnRPbmVTaG90KGtD
bGllbnREYXRhQnVmZmVyaW5nVGltZXJUaHJvdHRsZURlbGF5KTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCkKK3sKKyAgICBM
T0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCVwKSIsIHRoaXMp
OworICAgIG1fY2xpZW50LnN1c3BlbmRQbGF5YmFjaygpOworfQorCitQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6TWVkaWFUeXBlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjptZWRpYVR5cGUoKSBjb25zdAor
eworICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVR5cGUoKTsKK30KKworUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1lZGlhVHlwZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6cHJlc2VudGF0aW9uVHlwZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LnByZXNlbnRhdGlvblR5cGUoKTsKK30KKwor
U3RyaW5nIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjp0aXRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fY2xpZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCk7Cit9CisKK2RvdWJsZSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6ZHVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNl
c3Npb25EdXJhdGlvbigpOworfQorCitkb3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OmN1cnJl
bnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uQ3VycmVu
dFRpbWUoKTsKK30KKyAgICAKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNhblJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5jYW5S
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNl
c3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUgY29tbWFuZCkKK3sKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENv
bW1hbmQoY29tbWFuZCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OnZpc2liaWxp
dHlDaGFuZ2VkKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgIG1fY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLnN0YXJ0T25lU2hvdChr
Q2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyVGhyb3R0bGVEZWxheSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1NZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKCkKK3sKKyAgICBM
T0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVy
RmlyZWQoJXApLSB2aXNpYmxlID0gJXMiLCB0aGlzLCBtX2NsaWVudC5lbGVtZW50SXNIaWRkZW4o
KSA/ICJmYWxzZSIgOiAidHJ1ZSIpOworCisgICAgdXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygp
OworCisgICAgaWYgKG1fc3RhdGUgIT0gUGxheWluZyB8fCAhbV9jbGllbnQuZWxlbWVudElzSGlk
ZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNlc3Np
b25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLnJlc3RyaWN0aW9ucyhtZWRpYVR5cGUoKSk7CisgICAgaWYgKChyZXN0cmljdGlv
bnMgJiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVk
KSA9PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVk
KQorICAgICAgICBwYXVzZVNlc3Npb24oKTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpCit7CisgICAgaWYgKG1fY2xpZW50RGF0YUJ1
ZmZlcmluZ1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fY2xpZW50RGF0YUJ1ZmZlcmluZ1Rp
bWVyLnN0b3AoKTsKKworICAgIG1fY2xpZW50LnNldFNob3VsZEJ1ZmZlckRhdGEoTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25DYW5Mb2FkTWVkaWEoKnRoaXMpKTsK
K30KKworYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4oKSBjb25zdAoreworICAg
IHJldHVybiBtX2NsaWVudC5lbGVtZW50SXNIaWRkZW4oKTsKK30KKworUGxhdGZvcm1NZWRpYVNl
c3Npb246OkRpc3BsYXlUeXBlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpkaXNwbGF5VHlwZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmRpc3BsYXlUeXBlKCk7Cit9CisKK1N0cmluZyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdAorewor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworZG91YmxlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xp
ZW50OjptZWRpYVNlc3Npb25EdXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhUGxh
eWVyOjppbnZhbGlkVGltZSgpOworfQorCitkb3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGll
bnQ6Om1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OmludmFsaWRUaW1lKCk7Cit9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAw
MTk0N2Y0ZTg2ZGNkNTgyZmU4YjYyNDY4MmZhZjgyNDRiNjA5ZGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCkBA
IC0wLDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uX2gKKyNkZWZpbmUgUGxhdGZvcm1NZWRpYVNlc3Npb25faAorCisjaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDbGll
bnQuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhUGxheWJh
Y2tUYXJnZXQ7CitjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDsKKworY2xhc3MgUGxh
dGZvcm1NZWRpYVNlc3Npb24KKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQor
ICAgIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQKKyNlbmRpZgoreworcHVibGlj
OgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IGNyZWF0
ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYpOworCisgICAgUGxhdGZvcm1NZWRpYVNlc3Np
b24oUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbigpOworCisgICAgZW51bSBNZWRpYVR5cGUgeworICAgICAgICBOb25lID0gMCwK
KyAgICAgICAgVmlkZW8sCisgICAgICAgIEF1ZGlvLAorICAgICAgICBXZWJBdWRpbywKKyAgICB9
OworICAgIE1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdDsKKyAgICBNZWRpYVR5cGUgcHJlc2Vu
dGF0aW9uVHlwZSgpIGNvbnN0OworCisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIElkbGUsCisg
ICAgICAgIFBsYXlpbmcsCisgICAgICAgIFBhdXNlZCwKKyAgICAgICAgSW50ZXJydXB0ZWQsCisg
ICAgfTsKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2
b2lkIHNldFN0YXRlKFN0YXRlKTsKKworICAgIGVudW0gSW50ZXJydXB0aW9uVHlwZSB7CisgICAg
ICAgIFN5c3RlbVNsZWVwLAorICAgICAgICBFbnRlcmluZ0JhY2tncm91bmQsCisgICAgICAgIFN5
c3RlbUludGVycnVwdGlvbiwKKyAgICB9OworICAgIGVudW0gRW5kSW50ZXJydXB0aW9uRmxhZ3Mg
eworICAgICAgICBOb0ZsYWdzID0gMCwKKyAgICAgICAgTWF5UmVzdW1lUGxheWluZyA9IDEgPDwg
MCwKKyAgICB9OworICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSk7
CisgICAgdm9pZCBlbmRJbnRlcnJ1cHRpb24oRW5kSW50ZXJydXB0aW9uRmxhZ3MpOworCisgICAg
dm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKSBjb25zdDsKKyAgICB2b2lkIGFw
cGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0OworCisgICAgYm9vbCBjbGllbnRX
aWxsQmVnaW5QbGF5YmFjaygpOworICAgIGJvb2wgY2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsK
KworICAgIHZvaWQgcGF1c2VTZXNzaW9uKCk7CisgICAgCisgICAgdm9pZCB2aXNpYmlsaXR5Q2hh
bmdlZCgpOworCisgICAgU3RyaW5nIHRpdGxlKCkgY29uc3Q7CisgICAgZG91YmxlIGR1cmF0aW9u
KCkgY29uc3Q7CisgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7CisKKyAgICBlbnVtIFJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSB7CisgICAgICAgIE5vQ29tbWFuZCwKKyAgICAgICAgUGxh
eUNvbW1hbmQsCisgICAgICAgIFBhdXNlQ29tbWFuZCwKKyAgICAgICAgU3RvcENvbW1hbmQsCisg
ICAgICAgIFRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQsCisgICAgICAgIEJlZ2luU2Vla2luZ0JhY2t3
YXJkQ29tbWFuZCwKKyAgICAgICAgRW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwKKyAgICAgICAg
QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAgICAgIEVuZFNlZWtpbmdGb3J3YXJkQ29t
bWFuZCwKKyAgICB9OworICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygp
IGNvbnN0OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSk7CisKKyAgICBlbnVtIERpc3BsYXlUeXBlIHsKKyAgICAgICAgTm9y
bWFsLAorICAgICAgICBGdWxsc2NyZWVuLAorICAgICAgICBPcHRpbWl6ZWQsCisgICAgfTsKKyAg
ICBEaXNwbGF5VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OworCisgICAgYm9vbCBpc0hpZGRlbigp
IGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdU
b1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICAvLyBNZWRpYVBsYXliYWNrVGFy
Z2V0Q2xpZW50CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdmly
dHVhbCB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJyaWRlIHsg
fQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29sIHJlcXVpcmVz
UGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
I2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xp
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGNs
aWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKCk7CisgICAgdm9pZCB1cGRhdGVDbGllbnREYXRh
QnVmZmVyaW5nKCk7CisKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgbV9jbGllbnQ7
CisgICAgVGltZXIgbV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXI7CisgICAgU3RhdGUgbV9zdGF0
ZTsKKyAgICBTdGF0ZSBtX3N0YXRlVG9SZXN0b3JlOworICAgIGludCBtX2ludGVycnVwdGlvbkNv
dW50IHsgMCB9OworICAgIGJvb2wgbV9ub3RpZnlpbmdDbGllbnQ7Cit9OworCitjbGFzcyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGxhdGZv
cm1NZWRpYVNlc3Npb25DbGllbnQpOworcHVibGljOgorICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
Q2xpZW50KCkgeyB9CisgICAgCisgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb3JtYWw7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzdXNwZW5kUGxheWJhY2soKSA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBtZWRp
YVNlc3Npb25UaXRsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhU2Vzc2lvbkR1
cmF0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgbWVkaWFTZXNzaW9uQ3VycmVudFRp
bWUoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRCdWZmZXJEYXRhKGJvb2wp
IHsgfQorICAgIHZpcnR1YWwgYm9vbCBlbGVtZW50SXNIaWRkZW4oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgdmlydHVhbCBib29sIG92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVz
dHJpY3Rpb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NSb3V0ZXNB
dmFpbGFibGVEaWRDaGFuZ2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgeyB9CisgICAgdmlydHVhbCBi
b29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldChib29sKSB7IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBs
YXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50KCkgeyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAppbmRleCA5M2VjYmNlYzY0YjBl
YTc1MWVkNjYxNDBkZTIxYmYzNjIxMzBkZWVhLi5kYzg2MjFmOWUwN2NlZmU3NDM2NWY3ZTFiNDQ3
NDAwNTQ5NjM4YmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKQEAgLTUzLDggKzUzLDggQEAgcHJp
dmF0ZToKIAogICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEVuZFBs
YXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCB1
cGRhdGVOb3dQbGF5aW5nSW5mbygpOwogICAgIApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCB2b2lkIGNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgTWVk
aWFTZXNzaW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5M
b2FkTWVkaWEoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdCBvdmVycmlkZTsKICAg
ICAKICAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPiBtX29iamNPYnNlcnZlcjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFT
ZXNzaW9uTWFuYWdlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9N
ZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCmluZGV4IDA0NDQyNzFjNjFjMDQyYWJlMGVjMjQ1YTVl
ZTBmN2FhMGM3ODk2NGQuLjA3YWEyMDJkNTVlMjc0ZGJiNjE5NGExMGU2YTZlNGI4ZGNiMTE4Nzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9N
ZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0ICJMb2dn
aW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllci5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJTUEku
aCIKLSNpbXBvcnQgIk1lZGlhU2Vzc2lvbi5oIgorI2ltcG9ydCAiUGxhdGZvcm1NZWRpYVNlc3Np
b24uaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJTeXN0ZW1NZW1vcnkuaCIK
ICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKQEAgLTEzOCwyNyArMTM4LDI3IEBA
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVzZXRSZXN0cmljdGlvbnMoKQogCiAgICAg
c3RhdGljIHdrRGV2aWNlQ2xhc3MgZGV2aWNlQ2xhc3MgPSBpb3NEZXZpY2VDbGFzcygpOwogICAg
IGlmIChkZXZpY2VDbGFzcyA9PSB3a0RldmljZUNsYXNzaVBob25lIHx8IGRldmljZUNsYXNzID09
IHdrRGV2aWNlQ2xhc3NpUG9kKQotICAgICAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246
OlZpZGVvLCBJbmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZCk7CisgICAgICAgIGFkZFJlc3Ry
aWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbywgSW5saW5lVmlkZW9QbGF5YmFja1Jl
c3RyaWN0ZWQpOwogCiAgICAgaWYgKHJhbVNpemUoKSA8IHN5c3RlbU1lbW9yeVJlcXVpcmVkRm9y
VmlkZW9JbkJhY2tncm91bmRUYWJzKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25zIC0gcmVzdHJpY3RpbmcgdmlkZW8gaW4gYmFj
a2dyb3VuZCB0YWJzIGJlY2F1c2Ugc3lzdGVtIG1lbW9yeSA9ICV6dWwiLCByYW1TaXplKCkpOwot
ICAgICAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBCYWNrZ3JvdW5kVGFi
UGxheWJhY2tSZXN0cmljdGVkKTsKKyAgICAgICAgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRp
YVNlc3Npb246OlZpZGVvLCBCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKTsKICAgICB9
CiAKLSAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBDb25jdXJyZW50UGxh
eWJhY2tOb3RQZXJtaXR0ZWQpOwotICAgIGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6Vmlk
ZW8sIEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKTsKKyAgICBhZGRSZXN0cmlj
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8sIENvbmN1cnJlbnRQbGF5YmFja05vdFBl
cm1pdHRlZCk7CisgICAgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVv
LCBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCk7CiAKLSAgICByZW1vdmVSZXN0
cmljdGlvbihNZWRpYVNlc3Npb246OkF1ZGlvLCBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0
ZWQpOwotICAgIHJlbW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6QXVkaW8sIEJhY2tncm91
bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKTsKKyAgICByZW1vdmVSZXN0cmljdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW8sIENvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZCk7
CisgICAgcmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvLCBCYWNr
Z3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCk7CiAKLSAgICByZW1vdmVSZXN0cmljdGlv
bihNZWRpYVNlc3Npb246OldlYkF1ZGlvLCBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQp
OwotICAgIHJlbW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8sIEJhY2tncm91
bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKTsKKyAgICByZW1vdmVSZXN0cmljdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8sIENvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRl
ZCk7CisgICAgcmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlv
LCBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCk7CiAKLSAgICByZW1vdmVSZXN0
cmljdGlvbihNZWRpYVNlc3Npb246OkF1ZGlvLCBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0
ZWQpOwotICAgIHJlbW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6VmlkZW8sIE1ldGFkYXRh
UHJlbG9hZGluZ05vdFBlcm1pdHRlZCk7CisgICAgcmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkF1ZGlvLCBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOworICAg
IHJlbW92ZVJlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbywgTWV0YWRhdGFQ
cmVsb2FkaW5nTm90UGVybWl0dGVkKTsKIAotICAgIGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lv
bjo6QXVkaW8sIEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkKTsKLSAgICBhZGRSZXN0cmljdGlv
bihNZWRpYVNlc3Npb246OlZpZGVvLCBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCk7CisgICAg
YWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvLCBBdXRvUHJlbG9hZGlu
Z05vdFBlcm1pdHRlZCk7CisgICAgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OlZpZGVvLCBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCk7CiB9CiAKIGJvb2wgTWVkaWFTZXNz
aW9uTWFuYWdlcmlPUzo6aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCkKQEAgLTE4Niw3ICsx
ODYsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFy
Z2V0TW9uaXRvcmluZygpCiAgICAgICAgIFttX29iamNPYnNlcnZlciBzdG9wTW9uaXRvcmluZ0Fp
clBsYXlSb3V0ZXNdOwogfQogCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25X
aWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCitib29sIE1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lv
biYgc2Vzc2lvbikKIHsKICAgICBpZiAoIU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxs
QmVnaW5QbGF5YmFjayhzZXNzaW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk1LDcg
KzE5NSw3IEBAIGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxCZWdpblBs
YXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAK
LXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhNZWRp
YVNlc3Npb24mIHNlc3Npb24pCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25X
aWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhzZXNzaW9uKTsKICAgICB1
cGRhdGVOb3dQbGF5aW5nSW5mbygpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlcmlPUzo6dXBkYXRlTm93UGxheWluZ0luZm8oKQogICAgIExPRyhNZWRpYSwgIk1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvIik7CiAKICAgICBNUE5v
d1BsYXlpbmdJbmZvQ2VudGVyICpub3dQbGF5aW5nID0gKE1QTm93UGxheWluZ0luZm9DZW50ZXIg
KilbZ2V0TVBOb3dQbGF5aW5nSW5mb0NlbnRlckNsYXNzKCkgZGVmYXVsdENlbnRlcl07Ci0gICAg
Y29uc3QgTWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lvbiA9IHRoaXMtPmN1cnJlbnRTZXNzaW9u
KCk7CisgICAgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uID0gdGhp
cy0+Y3VycmVudFNlc3Npb24oKTsKICAgICAKICAgICBpZiAoIWN1cnJlbnRTZXNzaW9uKSB7CiAg
ICAgICAgIFtub3dQbGF5aW5nIHNldE5vd1BsYXlpbmdJbmZvOm5pbF07CkBAIC0yMjcsMTMgKzIy
NywxMyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnVwZGF0ZU5vd1BsYXlpbmdJbmZv
KCkKICAgICBpZiAoc3RkOjppc2Zpbml0ZShjdXJyZW50VGltZSkgJiYgY3VycmVudFRpbWUgIT0g
TWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpCiAgICAgICAgIFtpbmZvIHNldFZhbHVlOkAoY3Vy
cmVudFRpbWUpIGZvcktleTpNUE5vd1BsYXlpbmdJbmZvUHJvcGVydHlFbGFwc2VkUGxheWJhY2tU
aW1lXTsKICAgICAKLSAgICBbaW5mbyBzZXRWYWx1ZTooY3VycmVudFNlc3Npb24tPnN0YXRlKCkg
PT0gTWVkaWFTZXNzaW9uOjpQbGF5aW5nID8gQFlFUyA6IEBOTykgZm9yS2V5Ok1QTm93UGxheWlu
Z0luZm9Qcm9wZXJ0eVBsYXliYWNrUmF0ZV07CisgICAgW2luZm8gc2V0VmFsdWU6KGN1cnJlbnRT
ZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nID8gQFlFUyA6
IEBOTykgZm9yS2V5Ok1QTm93UGxheWluZ0luZm9Qcm9wZXJ0eVBsYXliYWNrUmF0ZV07CiAgICAg
W25vd1BsYXlpbmcgc2V0Tm93UGxheWluZ0luZm86aW5mby5nZXQoKV07CiB9CiAKLWJvb2wgTWVk
aWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbkNhbkxvYWRNZWRpYShjb25zdCBNZWRpYVNlc3Np
b24mIHNlc3Npb24pIGNvbnN0Citib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25D
YW5Mb2FkTWVkaWEoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHNlc3Npb24uc3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlBsYXlpbmcgfHwg
IXNlc3Npb24uaXNIaWRkZW4oKSB8fCBzZXNzaW9uLmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFTZXNz
aW9uOjpPcHRpbWl6ZWQ7CisgICAgcmV0dXJuIHNlc3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UGxheWluZyB8fCAhc2Vzc2lvbi5pc0hpZGRlbigpIHx8IHNlc3Npb24uZGlz
cGxheVR5cGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6T3B0aW1pemVkOwogfQogCiB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKCkKQEAgLTM4MywxOSArMzgzLDE5IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlP
Uzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKQogICAgICAgICByZXR1
cm47CiAKICAgICBOU1VJbnRlZ2VyIHR5cGUgPSBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9i
amVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVLZXldIHVuc2lnbmVkSW50
ZWdlclZhbHVlXTsKLSAgICBNZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdz
ID0gTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJ
bnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOwog
CiAgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uXSAt
IHR5cGUgPSAlaSIsIChpbnQpdHlwZSk7CiAKICAgICBpZiAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lv
bkludGVycnVwdGlvblR5cGVFbmRlZCAmJiBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVj
dEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvbktleV0gdW5zaWduZWRJbnRl
Z2VyVmFsdWVdID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uU2hvdWxkUmVzdW1l
KQotICAgICAgICBmbGFncyA9IE1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZzsKKyAgICAg
ICAgZmxhZ3MgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZzsKIAogICAg
IFdlYlRocmVhZFJ1biheewogICAgICAgICBpZiAoIV9jYWxsYmFjaykKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBpZiAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5
cGVCZWdhbikKLSAgICAgICAgICAgIF9jYWxsYmFjay0+YmVnaW5JbnRlcnJ1cHRpb24oTWVkaWFT
ZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb24pOworICAgICAgICAgICAgX2NhbGxiYWNrLT5iZWdp
bkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3lzdGVtSW50ZXJydXB0aW9uKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgX2NhbGxiYWNrLT5lbmRJbnRlcnJ1cHRpb24oZmxh
Z3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVk
aWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKaW5kZXggZjViMjg4NTBkZDQxOGU3ZjAzZjYx
NTcxMGY1YWY3MTNmZTgxZDlkNS4uZTI3NDQxODgwOWI3ZDQ1MTUyZmZhM2JkYWMwOWY2NGU2Mjli
NDE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlh
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcApAQCAtMzksMTEgKzM5LDExIEBAIHN0YXRp
YyBjb25zdCBzaXplX3Qga0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplID0gNDA5NjsKIAogdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKQogewotICAgIExPRyhNZWRp
YSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6IFZp
ZGVvKCVkKSwgQXVkaW8oJWQpLCBXZWJBdWRpbyglZCkiLCBjb3VudChNZWRpYVNlc3Npb246OlZp
ZGVvKSwgY291bnQoTWVkaWFTZXNzaW9uOjpBdWRpbyksIGNvdW50KE1lZGlhU2Vzc2lvbjo6V2Vi
QXVkaW8pKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNz
aW9uU3RhdGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVkaW8oJWQpIiwg
Y291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvKSwgY291bnQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OkF1ZGlvKSwgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKSk7CiAK
LSAgICBpZiAoaGFzKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pKQorICAgIGlmIChoYXMoUGxhdGZv
cm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKSkKICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRT
ZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrV2ViQXVkaW9CdWZmZXJTaXplKTsKLSAg
ICBlbHNlIGlmICgoaGFzKE1lZGlhU2Vzc2lvbjo6VmlkZW8pIHx8IGhhcyhNZWRpYVNlc3Npb246
OkF1ZGlvKSkgJiYgU2V0dGluZ3M6Omxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVk
KCkpIHsKKyAgICBlbHNlIGlmICgoaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbykgfHwg
aGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbykpICYmIFNldHRpbmdzOjpsb3dQb3dlclZp
ZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDov
L3dlYmtpdC5vcmcvYi8xMTY3MjU+IEZpZ3VyZSBvdXQgd2h5IGVuYWJsaW5nIHRoZSBjb2RlIGJl
bG93CiAgICAgICAgIC8vIGNhdXNlcyBtZWRpYSBMYXlvdXRUZXN0cyB0byBmYWlsIG9uIDEwLjgu
CiAKQEAgLTYwLDkgKzYwLDkgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNz
aW9uU3RhdGUoKQogICAgIGlmICghU2V0dGluZ3M6OnNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNh
dGVnb3J5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChoYXMoTWVkaWFTZXNzaW9uOjpW
aWRlbykgfHwgaGFzKE1lZGlhU2Vzc2lvbjo6QXVkaW8pKQorICAgIGlmIChoYXMoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlZpZGVvKSB8fCBoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvKSkK
ICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0Q2F0ZWdvcnkoQXVkaW9T
ZXNzaW9uOjpNZWRpYVBsYXliYWNrKTsKLSAgICBlbHNlIGlmIChoYXMoTWVkaWFTZXNzaW9uOjpX
ZWJBdWRpbykpCisgICAgZWxzZSBpZiAoaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRp
bykpCiAgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldENhdGVnb3J5KEF1
ZGlvU2Vzc2lvbjo6QW1iaWVudFNvdW5kKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDcwYWMxNzI2ODAyMmZi
NDliYzljZDgxYjc1ZmFjMWE1MWIyNmM0YmEuLjdlODk0MDY0MTUwYjhkNjE2ZTZkZWRjNjRlODA5
NWQ3YTVmYTQyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTEzNDcsNyArMTM0Nyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OnNo
b3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVu
dGljCiAgICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhUGxheWVyU2hvdWxkV2FpdEZvclJlc3BvbnNl
VG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyOjpoYW5kbGVQbGF5YmFja0NvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUgY29tbWFuZCkKK3ZvaWQgTWVkaWFQbGF5ZXI6OmhhbmRsZVBsYXliYWNrQ29tbWFu
ZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQp
CiB7CiAgICAgbV9jbGllbnQubWVkaWFQbGF5ZXJIYW5kbGVQbGF5YmFja0NvbW1hbmQoY29tbWFu
ZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAppbmRleCA5MjgzZThmN2Q2YTdkMjMzZDMzNWQzYTA1YWRjM2Y3YmQxYTkwNWJjLi4xNjY1MTMw
MGVmZjZkNzc0N2JkNTJhNTFmN2I3ZGQ2NmNjOWUyOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTM2LDEwICszNiwxMCBAQAogI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJNZWRpYVBs
YXllckVudW1zLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTmF0aXZl
SW1hZ2VQdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24u
aCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAj
aW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CkBAIC0yNjgsNyArMjY4LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgCiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyU2hvdWxkV2FpdEZv
clJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
SGFuZGxlUGxheWJhY2tDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJIYW5kbGVQbGF5YmFja0NvbW1h
bmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgeyB9CiAK
ICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIApAQCAtNTk0LDcgKzU5NCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBzaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAg
dm9pZCBoYW5kbGVQbGF5YmFja0NvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUpOworICAgIHZvaWQgaGFuZGxlUGxheWJhY2tDb21tYW5kKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpOwogICAgIFN0cmluZyBzb3VyY2VBcHBs
aWNhdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRB
dWRpb0NoYXJhY3RlcmlzdGljcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDc5YWUyZmZiNTdmMjQ1
NmQ0YzAxYjY5NzIzYzkxZTEyYzI4ODY5MGQuLmIyYTdjMWJiOTBjMWVlODhlZWQ1MDM4NmMwMzJi
ODhiZTI5YWZmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uY3BwCkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OnJhdGVDaGFuZ2VkKCkKIHsKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAmJiBQTEFURk9STShJT1MpCiAgICAgaWYgKGlzQ3VycmVudFBs
YXliYWNrVGFyZ2V0V2lyZWxlc3MoKSkKLSAgICAgICAgbV9wbGF5ZXItPmhhbmRsZVBsYXliYWNr
Q29tbWFuZChyYXRlKCkgPyBNZWRpYVNlc3Npb246OlBsYXlDb21tYW5kIDogTWVkaWFTZXNzaW9u
OjpQYXVzZUNvbW1hbmQpOworICAgICAgICBtX3BsYXllci0+aGFuZGxlUGxheWJhY2tDb21tYW5k
KHJhdGUoKSA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCA6IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQpOwogI2VuZGlmCiAKICAgICBtX3BsYXllci0+cmF0ZUNo
YW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVD
b21tYW5kTGlzdGVuZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3Rl
Q29tbWFuZExpc3RlbmVySU9TLm1tCmluZGV4IGNiY2U1ZTMzNjA4MWVmNmE3YTMwYTlkODIzYjg4
MzBjNDAwNTJmYWMuLjdkMTQ0MjE3ZDc4Yzc4MmJhOGFhMmNjY2M1YTZmZTU2ZTlkMzZkMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lcklPUy5tbQpAQCAtNTUsNyArNTUsNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6
OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmCiAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5t
X2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNzaW9uOjpQYXVz
ZUNvbW1hbmQpOworICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kKTsKICAg
ICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuIE1QUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNT
dWNjZXNzOwpAQCAtNjUsNyArNjUsNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6OlJlbW90
ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmCiAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVu
dC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFu
ZCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCk7CiAgICAgICAgIH0p
OwogCiAgICAgICAgIHJldHVybiBNUFJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzU3VjY2VzczsK
QEAgLTc1LDcgKzc1LDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21tYW5k
TGlzdGVuZXJJT1MoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JgogICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVj
ZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29t
bWFuZCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5k
KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuIE1QUmVtb3RlQ29tbWFuZEhhbmRsZXJT
dGF0dXNTdWNjZXNzOwpAQCAtODUsNyArODUsNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6
OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmCiAg
ICAgICAgIEFTU0VSVChbZXZlbnQgaXNLaW5kT2ZDbGFzczpnZXRNUFNlZWtDb21tYW5kRXZlbnRD
bGFzcygpXSk7CiAKICAgICAgICAgTVBTZWVrQ29tbWFuZEV2ZW50KiBzZWVrRXZlbnQgPSBzdGF0
aWNfY2FzdDxNUFNlZWtDb21tYW5kRXZlbnQgKj4oZXZlbnQpOwotICAgICAgICBNZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kID0gW3NlZWtFdmVudCB0eXBlXSA9
PSBNUFNlZWtDb21tYW5kRXZlbnRUeXBlQmVnaW5TZWVraW5nID8gTWVkaWFTZXNzaW9uOjpCZWdp
blNlZWtpbmdCYWNrd2FyZENvbW1hbmQgOiBNZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2Fy
ZENvbW1hbmQ7CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUgY29tbWFuZCA9IFtzZWVrRXZlbnQgdHlwZV0gPT0gTVBTZWVrQ29tbWFuZEV2ZW50
VHlwZUJlZ2luU2Vla2luZyA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNr
d2FyZENvbW1hbmQgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0JhY2t3YXJkQ29t
bWFuZDsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgY29tbWFuZF0gewog
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTEwMCw3ICsxMDAsNyBAQCBSZW1vdGVDb21t
YW5kTGlzdGVuZXJJT1M6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlz
dGVuZXJDbGllbnQmCiAgICAgICAgIEFTU0VSVChbZXZlbnQgaXNLaW5kT2ZDbGFzczpnZXRNUFNl
ZWtDb21tYW5kRXZlbnRDbGFzcygpXSk7CiAgICAgICAgIE1QU2Vla0NvbW1hbmRFdmVudCogc2Vl
a0V2ZW50ID0gc3RhdGljX2Nhc3Q8TVBTZWVrQ29tbWFuZEV2ZW50ICo+KGV2ZW50KTsKIAotICAg
ICAgICBNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kID0gW3Nl
ZWtFdmVudCB0eXBlXSA9PSBNUFNlZWtDb21tYW5kRXZlbnRUeXBlQmVnaW5TZWVraW5nID8gTWVk
aWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCA6IE1lZGlhU2Vzc2lvbjo6RW5k
U2Vla2luZ0ZvcndhcmRDb21tYW5kOworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQgPSBbc2Vla0V2ZW50IHR5cGVdID09IE1QU2Vl
a0NvbW1hbmRFdmVudFR5cGVCZWdpblNlZWtpbmcgPyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVn
aW5TZWVraW5nRm9yd2FyZENvbW1hbmQgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2lu
Z0ZvcndhcmRDb21tYW5kOwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzLCBj
b21tYW5kXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDA3ZjhjYmQ4ODQ3MGIyMTI4NTlkMDM1MmEwNWRkMDBiZTQzMjVm
YjkuLjkyZjRmN2E4NDc1MGQyMzMxYjUyZDNlZWE2YjcxOWE1ZDZkZDg0ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI1NzgsMTUgKzI1NzgsMTUgQEAgVmVjdG9yPFN0
cmluZz4gSW50ZXJuYWxzOjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKFNvdXJjZUJ1ZmZlciog
YnVmZmVyLCBjb25zdAogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgSW50ZXJuYWxzOjpiZWdpbk1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvbigpCiB7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLmJlZ2luSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6U3lzdGVtSW50ZXJy
dXB0aW9uKTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYmVnaW5J
bnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7CiB9
CiAKIHZvaWQgSW50ZXJuYWxzOjplbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oY29uc3QgU3Ry
aW5nJiBmbGFnc1N0cmluZykKIHsKLSAgICBNZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZs
YWdzIGZsYWdzID0gTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOworICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpO
b0ZsYWdzOwogCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZsYWdzU3RyaW5nLCAiTWF5UmVz
dW1lUGxheWluZyIpKQotICAgICAgICBmbGFncyA9IE1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxh
eWluZzsKKyAgICAgICAgZmxhZ3MgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxh
eWluZzsKICAgICAKICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZW5k
SW50ZXJydXB0aW9uKGZsYWdzKTsKIH0KQEAgLTI2MDMsMTMgKzI2MDMsMTMgQEAgdm9pZCBJbnRl
cm5hbHM6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0CiAKIHZvaWQgSW50
ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoY29uc3QgU3RyaW5nJiBtZWRpYVR5
cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVzdHJpY3Rpb25zU3RyaW5nLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUgPSBNZWRpYVNl
c3Npb246Ok5vbmU7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5
cGUgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UobWVkaWFUeXBlU3RyaW5nLCAiVmlkZW8iKSkKLSAgICAgICAgbWVkaWFUeXBlID0gTWVkaWFT
ZXNzaW9uOjpWaWRlbzsKKyAgICAgICAgbWVkaWFUeXBlID0gUGxhdGZvcm1NZWRpYVNlc3Npb246
OlZpZGVvOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1lZGlhVHlwZVN0cmluZywg
IkF1ZGlvIikpCi0gICAgICAgIG1lZGlhVHlwZSA9IE1lZGlhU2Vzc2lvbjo6QXVkaW87CisgICAg
ICAgIG1lZGlhVHlwZSA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbzsKICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShtZWRpYVR5cGVTdHJpbmcsICJXZWJBdWRpbyIpKQotICAgICAg
ICBtZWRpYVR5cGUgPSBNZWRpYVNlc3Npb246OldlYkF1ZGlvOworICAgICAgICBtZWRpYVR5cGUg
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87CiAgICAgZWxzZSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0yNjgyLDI0ICsyNjgy
LDI0IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRNZWRpYUVsZW1lbnRSZXN0cmljdGlvbnMoSFRNTE1l
ZGlhRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyCiAKIHZvaWQgSW50ZXJuYWxzOjpwb3N0UmVt
b3RlQ29udHJvbENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kU3RyaW5nLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKLSAgICBNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBj
b21tYW5kOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGUgY29tbWFuZDsKICAgICAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29tbWFuZFN0cmlu
ZywgIlBsYXkiKSkKLSAgICAgICAgY29tbWFuZCA9IE1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQ7
CisgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQ7CiAg
ICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29tbWFuZFN0cmluZywgIlBhdXNlIikpCi0g
ICAgICAgIGNvbW1hbmQgPSBNZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZDsKKyAgICAgICAgY29t
bWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQ7CiAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoY29tbWFuZFN0cmluZywgIlN0b3AiKSkKLSAgICAgICAgY29tbWFu
ZCA9IE1lZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQ7CisgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoY29tbWFuZFN0cmluZywgIlRvZ2dsZVBsYXlQYXVzZSIpKQotICAgICAgICBjb21tYW5kID0g
TWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kOworICAgICAgICBjb21tYW5kID0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQ7CiAgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29tbWFuZFN0cmluZywgIkJlZ2luU2Vla2luZ0JhY2t3YXJk
IikpCi0gICAgICAgIGNvbW1hbmQgPSBNZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJk
Q29tbWFuZDsKKyAgICAgICAgY29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNl
ZWtpbmdCYWNrd2FyZENvbW1hbmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29t
bWFuZFN0cmluZywgIkVuZFNlZWtpbmdCYWNrd2FyZCIpKQotICAgICAgICBjb21tYW5kID0gTWVk
aWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kOworICAgICAgICBjb21tYW5kID0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ7CiAgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29tbWFuZFN0cmluZywgIkJlZ2luU2Vla2luZ0Zvcndh
cmQiKSkKLSAgICAgICAgY29tbWFuZCA9IE1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2Fy
ZENvbW1hbmQ7CisgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5T
ZWVraW5nRm9yd2FyZENvbW1hbmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29t
bWFuZFN0cmluZywgIkVuZFNlZWtpbmdGb3J3YXJkIikpCi0gICAgICAgIGNvbW1hbmQgPSBNZWRp
YVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZDsKKyAgICAgICAgY29tbWFuZCA9IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ7CiAgICAgZWxzZSB7
CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253885</attachid>
            <date>2015-05-28 18:21:31 -0700</date>
            <delta_ts>2015-05-29 14:53:51 -0700</delta_ts>
            <desc>Patch (fixes Windows and iOS build)</desc>
            <filename>bug-145447-20150528182118.patch</filename>
            <type>text/plain</type>
            <size>99070</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTc5ODYyMzA1NjY0MjIy
MzEwODIxMmQwYTZjYjUyOGRkNTUyOGNlYi4uNWQyNGI5NzAxOGVlMzQ3OTg0OWJjOGVkNjI0MzYz
Y2RmZTUyODQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxNS0wNS0yOCAgTWF0
dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIE1lZGlhU2Vzc2lv
biBhbmQgTWVkaWFTZXNzaW9uQ2xpZW50IHRvIFBsYXRmb3JtTWVkaWFTZXNzaW9uIGFuZCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCBzbyB3ZSBjYW4gdXNlIE1lZGlhU2Vzc2lvbiBmb3IgdGhl
IGZvcm1hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTWVkaWEgU2Vzc2lvbiBzcGVjLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NDQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5
YmFjayk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cHJlc2VudGF0aW9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpkaXNwbGF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpIVE1MTWVkaWFTZXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OnJlcXVpcmVzRnVsbHNjcmVl
bkZvclZpZGVvUGxheWJhY2spOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6
cmVzZXRSZXN0cmljdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdl
cjo6aGFzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFjdGl2ZUF1
ZGlvU2Vzc2lvblJlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmJlZ2lu
SW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OmVu
ZEludGVycnVwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92
ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUmVz
dHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
UmVzdHJpY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVz
dHJpY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Np
b25XaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25SZXN0cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Mb2FkTWVkaWEp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxs
RW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtV2lsbFNsZWVwKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbURpZFdha2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwLgorICAgICAgICAoV2ViQ29yZTo6c3Rh
dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjp+UGxhdGZv
cm1NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246
OnNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdp
bkludGVycnVwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjbGllbnRXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246OnBhdXNlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVkaWFUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpwcmVzZW50YXRpb25UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFTZXNzaW9uOjp0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNl
c3Npb246OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnZpc2liaWxpdHlDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVm
ZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb246OmRpc3BsYXlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uRHVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvbkN1cnJlbnRU
aW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgu
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNhblBsYXlUb1dpcmVsZXNzUGxheWJh
Y2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmlzUGxh
eWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6cmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6
ZGlzcGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGll
bnQ6OnNldFNob3VsZEJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQ6OmVsZW1lbnRJc0hpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6OnNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Np
b25DbGllbnQ6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6OmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5
YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVu
dDo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6On5QbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxs
QmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25DYW5Mb2FkTWVkaWEpOgorICAgICAgICAoLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uOl0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcDoKKyAgICAgICAgKE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Omhh
bmRsZVBsYXliYWNrQ29tbWFuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXll
ckhhbmRsZVBsYXliYWNrQ29tbWFuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnJhdGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjplbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQpOgorCiAy
MDE1LTA1LTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3Vi
cGl4ZWwgcmVuZGVyaW5nOiBQaXhlbCBjcmFjayBpbiB0ZXh0IHNlbGVjdGlvbiBvZiBzaW1wbGUg
dGV4dCBpbiA8dGV4dGFyZWE+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiYTZhNTA0NThlZmJh
Yjc3YjM2M2NhZjIwOWMzY2Q1MWZmNDY3NTc2Li42YWY4NGQzMmQyYzI5Nzk0OWMwMjIyMzBhZmRj
YTJhMWJlNTkyNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEwMSwxMCArMjEwMSwxMCBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5j
cHAKICAgICBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlv
L0hSVEZQYW5uZXIuY3BwCi0gICAgcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAogICAg
IHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVk
aW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1Bhbm5lci5j
cHAKKyAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKICAgICBwbGF0
Zm9ybS9hdWRpby9SZXZlcmIuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0
aW9uQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRl
eCBjOGY2ZDUxMzczNDZjZWI5YTkxMGE3OTgxY2IyODQwMmRkMDFjNWZlLi45MGFjNDkwYTI3ZjI4
NTI1NjIxMGE0YThlM2QxMjk4Njg3ZTA4ZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgUmVmUHRy
PEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBF
eGNlcHRpb25Db2RlJiBlYykKIC8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1
ZGlvIGhhcmR3YXJlLgogQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKLSAgICAsIG1fbWVkaWFTZXNz
aW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fbWVkaWFTZXNzaW9uKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9ldmVudFF1ZXVlKHN0
ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKICAgICAsIG1fZ3JhcGhP
d25lclRocmVhZChVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyKQogewpAQCAtMTQ1LDcgKzE0NSw3
IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKIEF1ZGlv
Q29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQogICAg
IDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKICAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0
cnVlKQotICAgICwgbV9tZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQor
ICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykp
CiAgICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4o
KnRoaXMpKQogICAgICwgbV9ncmFwaE93bmVyVGhyZWFkKFVuZGVmaW5lZFRocmVhZElkZW50aWZp
ZXIpCiB7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBs
YXliYWNrKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1
c3BlbmRlZCkgewotICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gTWVkaWFT
ZXNzaW9uOjpJbnRlcnJ1cHRlZCkKKyAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgp
ID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCkKICAgICAgICAgICAgIHNldFN0
YXRlKFN0YXRlOjpJbnRlcnJ1cHRlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjA5
LDcgKzEyMDksNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBsYXliYWNrKCkKIAogICAg
IFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgbV9kZXN0aW5hdGlv
bk5vZGUtPnN1c3BlbmQoW3N0cm9uZ1RoaXNdIHsKLSAgICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9
IHN0cm9uZ1RoaXMtPm1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50
ZXJydXB0ZWQ7CisgICAgICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBzdHJvbmdUaGlzLT5tX21lZGlh
U2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CiAg
ICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6OkludGVycnVw
dGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA5ZmYzNTMyNTE1MjgyNGRiN2Ji
YjM1Yzg4NzQzNDI1Yzk0NTZkOTlmLi40Mzk2OGYyZmJhOTJhY2RjOTVkMmNiYjRjNGE1MDNlZjky
MjQ2ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1
ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIK
LSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lv
bi5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC03Niw3ICs3Niw3IEBAIGNsYXNzIFBlcmlvZGljV2F2
ZTsKIC8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBB
UEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCiAvLyBGb3IgdGhyZWFk
IHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQg
aGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLiAKIAotY2xhc3MgQXVkaW9D
b250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPEF1ZGlvQ29udGV4dD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJs
aWMgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgTWVkaWFQcm9kdWNlciwgcHJpdmF0ZSBN
ZWRpYVNlc3Npb25DbGllbnQgeworY2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURP
TU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4sIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgTWVkaWFDYW5TdGFydExpc3RlbmVy
LCBwdWJsaWMgTWVkaWFQcm9kdWNlciwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGFuIEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVyaW5n
IHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KICAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvQ29udGV4dD4g
Y3JlYXRlKERvY3VtZW50JiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMzA4LDEzICszMDgsMTMgQEAg
cHJpdmF0ZToKICAgICAvLyBNYWtlIHN1cmUgdG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgogICAg
IHZvaWQgZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKTsKIAotICAgIC8vIE1lZGlhU2Vzc2lv
bkNsaWVudAotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQotICAgIHZp
cnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0KKyAgICAvLyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbkNsaWVudAorICAgIHZpcnR1YWwgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1l
ZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6V2ViQXVkaW87IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQogICAgIHZpcnR1YWwgdm9pZCBtYXlSZXN1bWVQ
bGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN1
c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgYm9vbCBv
dmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIEV2ZW50VGFyZ2V0CkBAIC0zNjMsNyArMzYzLDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlz
dDsKICAgICBWZWN0b3I8VmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4+IG1fc3RhdGVSZWFj
dGlvbnM7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lv
bjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNz
aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVl
OwogCiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdldDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGNkZjk2YzkzMDBm
Y2EwMWNjYWIwOWJkNjAwM2ViNjAxMDBiMGU5OWYuLjkyYjliM2ZmOTliMWQwNzE4M2E3NTdlZGM0
NzlhODBmMzhjNzk3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagpAQCAtNzM5NSw3ICs3Mzk1LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxjZlxXZWJDb3JlQVZDRlJlc291
cmNlTG9hZGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXElTT1ZUVEN1ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxhdWRpb1xBdWRpb1Nlc3Npb24uY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cYXVkaW9cTWVkaWFTZXNzaW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
QU5HTEVXZWJLaXRCcmlkZ2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmXEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNG
LmNwcCIgLz4KQEAgLTE5NzY0LDcgKzE5NzY0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXEZsb2F0Q29udmVyc2lvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cR2VuZXJpY1Rhc2tRdWV1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cQXVkaW9TZXNzaW9uLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNlc3Npb24uaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXFBsYXRmb3JtTWVkaWFTZXNzaW9uLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRpYVNlc3Np
b25NYW5hZ2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xBTkdMRVdlYktpdEJyaWRnZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcQXVkaW9UcmFja1ByaXZhdGUuaCIgLz4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRl
eCA3YTcxMTMxYWY2OTczNDY5OTBmNTk4OWI1ZjI3MGNhNjU0NjVhNjJmLi4zNDlhNjllNjAwMzZj
OGM3M2U1MjhiNjZkYjdmYTZjMTZjYThhMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03MDUxLDcgKzcw
NTEsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXGxpbmVcTGluZUlu
Zm8uY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXGxpbmU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlh
U2Vzc2lvbi5jcHAiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9c
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cYXVkaW88
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIj4KQEAgLTE0NDk4LDcgKzE0NDk4
LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGF1ZGlvPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRp
b1xNZWRpYVNlc3Npb24uaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxh
dWRpb1xQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cYXVk
aW88L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcZ2FtZXBhZFxOYXZpZ2F0b3JHYW1lcGFkLmgiPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRhNzk2MDMwMGE0ZjUw
NWNmMzVhOTdjMWQ5NGE2MTc4NmM1NTU3NDUuLjAzMWQ5YTRmYTA1ZWM1YzA0YWY4ZTFiYjJhZWQy
ZjVmMThkMTg1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTExOSw4ICsxMTksOCBAQAogCQkwNzA5RDc5MzFBRTU1NTdFMDA0
RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwOUQ3OTExQUU1NTU3RTAwNEU0MkY4IC8qIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwNzA5RDc5NTFBRTU1QTI5MDA0RTQyRjggLyogV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcwOUQ3OTQxQUU1NUEyOTAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1h
bmFnZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwNzA5RkM0RTEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwOUZDNEQx
MDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLzsgfTsKLQkJMDcwRTA5
MTkxODc1RUVGQzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIE1l
ZGlhU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTA5MUExODc1RUY3
MTAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5jcHAgKi87IH07CisJCTA3MEUwOTE5MTg3NUVFRkMw
MDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIFBsYXRm
b3JtTWVkaWFTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMDcwRTA5MUIxODc1RUY3MTAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNz
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgKi87IH07
CiAJCTA3MEY1NDk4MTdGMTJGNkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFs
aWRhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwRjU0OTcxN0YxMkY2QjAwMTY5RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWludHNW
YWxpZGF0aW9uQ2xpZW50LmggKi87IH07CiAJCTA3MEY1NDlFMTdGMjQwMjcwMDE2OUUwNCAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MEY1NDlEMTdGMjQwMjcwMDE2OUUwNCAvKiBBdWRpb0Rlc3RpbmF0
aW9uQ29uc3VtZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwNzExNTg5MTE3REY2RjY2MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MTE1ODhG
MTdERjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwICovOyB9OwpAQCAtNzEz
NCw4ICs3MTM0LDggQEAKIAkJMDcwOUQ3OTQxQUU1NUEyOTAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2xpZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEREOEY1MEYwMTg2ODAwMDcyN0RFQiAvKiBtZWRp
YUNvbnRyb2xzLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtZWRpYUNvbnRyb2xzLmNzczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8q
IE1lZGlhU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNl
c3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcwRTA5MUExODc1RUY3MTAw
M0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
NzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Npb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1NZWRpYVNlc3Npb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwRTA5MUExODc1RUY3MTAwM0ExRDNDIC8qIFBsYXRm
b3JtTWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDcwRjU0OTcxN0YxMkY2QjAwMTY5RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0
aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFt
Q29uc3RyYWludHNWYWxpZGF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3MEY1NDlEMTdGMjQwMjcwMDE2OUUwNCAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbkNvbnN1
bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MTE1ODhGMTdERjYzMzcwMEVE
RkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIzNTQ4LDE0ICsyMzU0OCwxNCBAQAogCQkJCUZEMzE2MDY5MTJCMDI2RjcwMEMx
QTM1OSAvKiBIUlRGS2VybmVsLmggKi8sCiAJCQkJRkQzMTYwNkExMkIwMjZGNzAwQzFBMzU5IC8q
IEhSVEZQYW5uZXIuY3BwICovLAogCQkJCUZEMzE2MDZCMTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRG
UGFubmVyLmggKi8sCi0JCQkJMDcwRTA5MUExODc1RUY3MTAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lv
bi5jcHAgKi8sCi0JCQkJMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5o
ICovLAogCQkJCUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2Vy
LmNwcCAqLywKIAkJCQlDREFFOEMwODE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFu
YWdlci5oICovLAogCQkJCUZEQjE3MDAzMTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxS
ZXNhbXBsZXIuY3BwICovLAogCQkJCUZEQjE3MDA0MTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0aUNo
YW5uZWxSZXNhbXBsZXIuaCAqLywKIAkJCQlGRDMxNjA2QzEyQjAyNkY3MDBDMUEzNTkgLyogUGFu
bmVyLmNwcCAqLywKIAkJCQlGRDMxNjA2RDEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggKi8s
CisJCQkJMDcwRTA5MUExODc1RUY3MTAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNw
cCAqLywKKwkJCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Np
b24uaCAqLywKIAkJCQlGRDMxNjA2RTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiLmNwcCAqLywK
IAkJCQlGRDMxNjA2RjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiLmggKi8sCiAJCQkJRkQzMTYw
NzAxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5jcHAgKi8sCkBA
IC0yNTc5OSw3ICsyNTc5OSw2IEBACiAJCQkJRDNBQTEwRjQxMjNBOThBQTAwOTIxNTJCIC8qIE1l
ZGlhUXVlcnlNYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUVGQ0Q3QTE5REIzMUY3MDAz
ODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RCRUFF
QUQxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkwNzBFMDkxOTE4NzVFRUZDMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogTWVkaWFTZXNz
aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2MzhBOTkxODg0NDg3MjAwRTE1QTFC
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTVG
MTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjAy
Myw2ICsyNjAyMiw3IEBACiAJCQkJMDU2MkY5NjExNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3Jt
TGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NDRGNzg5MTVDRkIyQTgwMEFGMzNBOCAvKiBQ
bGF0Zm9ybUxvY2FsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0MxOURCMzNEQzAwMzg3
NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzI4NzFDMDBCMjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1NZW51RGVz
Y3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQkY3MDEwMEZFODZGNjEwMDVFOERFQyAv
KiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3
NjkwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yOTM3OCw3ICsyOTM3OCw2IEBACiAJCQkJRDNBQTEwRjMxMjNBOThBQTAwOTIxNTJCIC8q
IE1lZGlhUXVlcnlNYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFRUZDRDc5MTlEQjMx
RjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNEQkVBRUFDMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5t
bSBpbiBTb3VyY2VzICovLAotCQkJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAvKiBNZWRpYVNl
c3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBRThDMDkxNzQ2Qjk1NzAwNTMyRDc4IC8q
IE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0
NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQkwN0VEQzNFRTFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI5NTQ5LDYgKzI5NTQ4LDcgQEAKIAkJCQkyNjYwMUVDMDE0
QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0gaW4gU291cmNlcyAq
LywKIAkJCQlCQ0FBNDg2RjE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMzQTggLyogUGxh
dGZvcm1Mb2NhbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwRTA5MUIxODc1RUY3MTAwM0Ex
RDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxQkY3
MDBGMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDNTI3OEIwQzE3RjIxMkVBMDAzQTI5OTggLyogUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU5ODkwMkUxNEU5QjBGODAwRThEMThC
IC8qIFBsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdWRpb0VsZW1lbnQuaAppbmRleCBjZGVjZjBmYzJlNTkzMGZhZTk2NGQ3Mjk2MGZl
MzY0ZDBmZDY2OTgyLi43NWM2NzU1YWI4YjllZDBjZDlmM2Y0YTU0ZWU2ZmZhNDkyMjYwZTBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaApAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxBdWRpb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50JiwgYm9vbCk7CiAKLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFU
eXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYVNlc3Np
b246OkF1ZGlvOyB9CisgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBl
IHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6QXVkaW87IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE2MmMyODQyODQ5ZjZhMjZkODcw
MzcyOWM4ZDlhNDIzZWJjOTFmMGYuLjk5ZjQwYmFhMDU2NTQzMGU3ZDliNDQ3NTBlNmY1MjAwZDEw
NjU0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDUz
Myw3ICs0NTMzLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wcGVkRHVlVG9FcnJvcnMo
KSBjb25zdAogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZEZvclVzZXJJbnRlcmFjdGlv
bigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vz
c2lvbjo6SW50ZXJydXB0ZWQpCisgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTY3LDMzICs2MTY3LDMzIEBAIHVuc2lnbmVkIGxvbmcg
bG9uZyBIVE1MTWVkaWFFbGVtZW50OjpmaWxlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9
CiAKLU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhVHlwZSgp
IGNvbnN0CitQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhVHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fcGxheWVyICYmIG1fcmVhZHlTdGF0ZSA+
PSBIQVZFX01FVEFEQVRBKQotICAgICAgICByZXR1cm4gaGFzVmlkZW8oKSA/IE1lZGlhU2Vzc2lv
bjo6VmlkZW8gOiBNZWRpYVNlc3Npb246OkF1ZGlvOworICAgICAgICByZXR1cm4gaGFzVmlkZW8o
KSA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbyA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpB
dWRpbzsKIAogICAgIHJldHVybiBwcmVzZW50YXRpb25UeXBlKCk7CiB9CiAKLU1lZGlhU2Vzc2lv
bjo6TWVkaWFUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXNlbnRhdGlvblR5cGUoKSBjb25zdAor
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBIVE1MTWVkaWFFbGVtZW50OjpwcmVzZW50
YXRpb25UeXBlKCkgY29uc3QKIHsKICAgICBpZiAoaGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVv
VGFnKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6VmlkZW87CisgICAgICAgIHJldHVy
biBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW87CiAKLSAgICByZXR1cm4gTWVkaWFTZXNzaW9u
OjpBdWRpbzsKKyAgICByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvOwogfQogCi1N
ZWRpYVNlc3Npb246OkRpc3BsYXlUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BsYXlUeXBlKCkg
Y29uc3QKK1BsYXRmb3JtTWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlwZSBIVE1MTWVkaWFFbGVtZW50
OjpkaXNwbGF5VHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9
PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCi0gICAgICAgIHJldHVybiBNZWRpYVNlc3Np
b246OkZ1bGxzY3JlZW47CisgICAgICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RnVs
bHNjcmVlbjsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlICYgVmlkZW9GdWxsc2NyZWVu
TW9kZU9wdGltaXplZCkKLSAgICAgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6T3B0aW1pemVkOwor
ICAgICAgICByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok9wdGltaXplZDsKICAgICBpZiAo
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKQotICAgICAg
ICByZXR1cm4gTWVkaWFTZXNzaW9uOjpOb3JtYWw7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Tm9ybWFsOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIE1lZGlhU2Vzc2lvbjo6Tm9ybWFsOworICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6Tm9ybWFsOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKQEAgLTYyMjUsMjggKzYy
MjUsMjggQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhU2Vzc2lvblRpdGxlKCkgY29u
c3QKICAgICByZXR1cm4gbV9jdXJyZW50U3JjOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSBjb21tYW5kKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSBjb21tYW5kKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCglcCkgLSAlaSIsIHRoaXMsIHN0YXRpY19j
YXN0PGludD4oY29tbWFuZCkpOwogCiAgICAgc3dpdGNoIChjb21tYW5kKSB7Ci0gICAgY2FzZSBN
ZWRpYVNlc3Npb246OlBsYXlDb21tYW5kOgorICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlBsYXlDb21tYW5kOgogICAgICAgICBwbGF5KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQ6CisgICAgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UGF1c2VDb21tYW5kOgogICAgICAgICBwYXVzZSgpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIE1lZGlhU2Vzc2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFuZDoKKyAgICBjYXNlIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kOgogICAgICAgICBjYW5QbGF5
KCkgPyBwbGF5KCkgOiBwYXVzZSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhU2Vz
c2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kOgorICAgIGNhc2UgUGxhdGZvcm1NZWRp
YVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDoKICAgICAgICAgYmVnaW5TY2Fu
bmluZyhCYWNrd2FyZCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTZXNzaW9uOjpC
ZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZDoKKyAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZDoKICAgICAgICAgYmVnaW5TY2FubmluZyhGb3J3
YXJkKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OkVuZFNlZWtpbmdC
YWNrd2FyZENvbW1hbmQ6Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJk
Q29tbWFuZDoKKyAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dh
cmRDb21tYW5kOgorICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3
YXJkQ29tbWFuZDoKICAgICAgICAgZW5kU2Nhbm5pbmcoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZGY0NDVm
ODlkMzM0NzhmZDdiOTY5ODFkNzU5ZTRjODFjNmE0YWRmZi4uNzA4MGNjOGU1MmUwMDJkYmJkYWM3
OTFmZDRjYzgwZTU3MDJlOTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW07CiAKIGNsYXNzIEhUTUxNZWRp
YUVsZW1lbnQKICAgICA6IHB1YmxpYyBIVE1MRWxlbWVudAotICAgICwgcHJpdmF0ZSBNZWRpYVBs
YXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2YXRl
IE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1l
ZGlhQ29udHJvbGxlckludGVyZmFjZSAsIHB1YmxpYyBNZWRpYVNlc3Npb25DbGllbnQsIHByaXZh
dGUgTWVkaWFQcm9kdWNlcgorICAgICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVudCwgcHVibGlj
IE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0
ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVy
ZmFjZSAsIHB1YmxpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCwgcHJpdmF0ZSBNZWRpYVBy
b2R1Y2VyCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBBdWRpb1RyYWNr
Q2xpZW50CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudApAQCAtNTY4LDcgKzU2OCw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZFdh
aXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJIYW5k
bGVQbGF5YmFja0NvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUg
Y29tbWFuZCkgb3ZlcnJpZGUgeyBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFu
ZCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJIYW5kbGVQbGF5YmFja0NvbW1hbmQo
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKSBv
dmVycmlkZSB7IGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsgfQogICAg
IHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBtZWRpYVBsYXllclBy
ZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTY5MCwx
NyArNjkwLDE3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0
ZWRTY3JpcHQoKTsKICNlbmRpZgogCi0gICAgLy8gTWVkaWFTZXNzaW9uQ2xpZW50IE92ZXJyaWRl
cwotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRp
b25UeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246OkRpc3Bs
YXlUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgLy8gUGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQgT3ZlcnJpZGVzCisgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RGlzcGxheVR5cGUgZGlz
cGxheVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBsYXli
YWNrKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wg
c2hvdWxkUmVzdW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVNlc3Npb25U
aXRsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhU2Vzc2lvbkR1
cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZHVyYXRpb24oKTsgfQogICAgIHZpcnR1
YWwgZG91YmxlIG1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gY3VycmVudFRpbWUoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29u
dHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1v
dGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIG92ZXJyaWRlQmFja2dy
b3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
dm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBlOGQ2Y2Q5MDA2NjIyOTdkY2MzNzdmNzZiOWI0YzA1
ZWQwYzY1ODE4Li5hZWE2YmE4YjgyZDBmMTc5OGM1ZWJlNmIzMGM2MmQzN2YzMmU4YTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBv
bGREb2N1bWVudCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldERpc3BsYXlNb2RlKERp
c3BsYXlNb2RlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhU2Vzc2lv
bjo6VmlkZW87IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUg
cHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpWaWRlbzsgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhUTUxJbWFnZUxvYWRlcj4g
bV9pbWFnZUxvYWRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5jcHAKaW5kZXggZTA4OTkzOWQzODIwM2U2ZTlmODUxZDMwN2Q3ODQ5YjM1ZTkwM2M4Zi4uMWE5
ZTlhMTJkOWE1NTQ1MjRiNGMzYzM2ZjY2MmE3YTcwOTlkYjRlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC03OCw4ICs3OCw4IEBAIHN0YXRpYyBT
dHJpbmcgcmVzdHJpY3Rpb25OYW1lKE1lZGlhRWxlbWVudFNlc3Npb246OkJlaGF2aW9yUmVzdHJp
Y3Rpb25zIHJlc3RyaWN0CiB9CiAjZW5kaWYKIAotTWVkaWFFbGVtZW50U2Vzc2lvbjo6TWVkaWFF
bGVtZW50U2Vzc2lvbihNZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKLSAgICA6IE1lZGlhU2Vz
c2lvbihjbGllbnQpCitNZWRpYUVsZW1lbnRTZXNzaW9uOjpNZWRpYUVsZW1lbnRTZXNzaW9uKFBs
YXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCisgICAgOiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbihjbGllbnQpCiAgICAgLCBtX3Jlc3RyaWN0aW9ucyhOb1Jlc3RyaWN0aW9ucykKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgICwgbV90YXJnZXRBdmFpbGFiaWxp
dHlDaGFuZ2VkVGltZXIoKnRoaXMsICZNZWRpYUVsZW1lbnRTZXNzaW9uOjp0YXJnZXRBdmFpbGFi
aWxpdHlDaGFuZ2VkVGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmgKaW5kZXggNTZkMTkzYTBjN2U0NTZlZjVhNDdkZTAxZGE1M2VlZmUxNmJmYzY4OS4u
Zjk0MzU1MWU5NzE1Yzc5OTdjZDgxN2E4MWJkYjg2ZTk3ZWRjYWRmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFC
TEUoVklERU8pCiAKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgotI2luY2x1ZGUgIk1lZGlhU2Vz
c2lvbi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsMTAgKzM4LDEwIEBAIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFNvdXJjZUJ1ZmZlcjsKIAot
Y2xhc3MgTWVkaWFFbGVtZW50U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVNlc3Npb24gewor
Y2xhc3MgTWVkaWFFbGVtZW50U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgTWVkaWFFbGVtZW50U2Vzc2lvbihNZWRpYVNlc3Npb25DbGllbnQmKTsKKyAgICBleHBsaWNp
dCBNZWRpYUVsZW1lbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Jik7CiAgICAg
dmlydHVhbCB+TWVkaWFFbGVtZW50U2Vzc2lvbigpIHsgfQogCiAgICAgdm9pZCByZWdpc3Rlcldp
dGhEb2N1bWVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oCmluZGV4IDljNmEyNDY2NTRkNDRiNjk3
ZGU2YjkzZDY3ZDExZmJmMzIyZmExNTguLmI3ZDkxMjA0YmYzYjY4NmJmYjdiZmEwMjFjNjFkOTNh
NTgxNTk0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1h
bmRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFJlbW90ZUNvbW1hbmRMaXN0ZW5l
cl9oCiAjZGVmaW5lIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcl9oCiAKLSNpbmNsdWRlICJNZWRpYVNl
c3Npb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVtb3RlQ29tbWFuZExpc3RlbmVy
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250
cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
KSA9IDA7CiB9OwogCiBjbGFzcyBSZW1vdGVDb21tYW5kTGlzdGVuZXIgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDY5Yjg0NmYyY2ZjZmQ5NDdkMWVhMDYyMDIyZTU2NWFkNTM4MjBhY2EuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiTWVkaWFTZXNzaW9uLmgiCi0KLSNpZiBFTkFCTEUoVklERU8pCi0jaW5jbHVkZSAiSFRNTE1l
ZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jb25zdCBkb3VibGUga0NsaWVudERhdGFCdWZmZXJpbmdUaW1lclRocm90dGxlRGVs
YXkgPSAwLjE7Ci0KLSNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMgY29uc3QgY2hhciogc3RhdGVO
YW1lKE1lZGlhU2Vzc2lvbjo6U3RhdGUgc3RhdGUpCi17Ci0jZGVmaW5lIENBU0Uoc3RhdGUpIGNh
c2UgTWVkaWFTZXNzaW9uOjpzdGF0ZTogcmV0dXJuICNzdGF0ZQotICAgIHN3aXRjaCAoc3RhdGUp
IHsKLSAgICBDQVNFKElkbGUpOwotICAgIENBU0UoUGxheWluZyk7Ci0gICAgQ0FTRShQYXVzZWQp
OwotICAgIENBU0UoSW50ZXJydXB0ZWQpOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiAiIjsKLX0KLSNlbmRpZgotCi1zdGQ6OnVuaXF1ZV9wdHI8TWVkaWFT
ZXNzaW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShNZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkK
LXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVNlc3Npb24+KGNsaWVudCk7Ci19
Ci0KLU1lZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50
KQotICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9jbGllbnREYXRhQnVmZmVyaW5nVGlt
ZXIoKnRoaXMsICZNZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKQot
ICAgICwgbV9zdGF0ZShJZGxlKQotICAgICwgbV9zdGF0ZVRvUmVzdG9yZShJZGxlKQotICAgICwg
bV9ub3RpZnlpbmdDbGllbnQoZmFsc2UpCi17Ci0gICAgQVNTRVJUKG1fY2xpZW50Lm1lZGlhVHlw
ZSgpID49IE5vbmUgJiYgbV9jbGllbnQubWVkaWFUeXBlKCkgPD0gV2ViQXVkaW8pOwotICAgIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRTZXNzaW9uKCp0aGlzKTsKLX0K
LQotTWVkaWFTZXNzaW9uOjp+TWVkaWFTZXNzaW9uKCkKLXsKLSAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlU2Vzc2lvbigqdGhpcyk7Ci19Ci0KLXZvaWQgTWVk
aWFTZXNzaW9uOjpzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkKLXsKLSAgICBMT0coTWVkaWEsICJNZWRp
YVNlc3Npb246OnNldFN0YXRlKCVwKSAtICVzIiwgdGhpcywgc3RhdGVOYW1lKHN0YXRlKSk7Ci0g
ICAgbV9zdGF0ZSA9IHN0YXRlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1
cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vz
c2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oJXApLCBzdGF0ZSA9ICVzLCBpbnRlcnJ1cHRpb24gY291
bnQgPSAlaSIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSwgbV9pbnRlcnJ1cHRpb25Db3VudCk7
Ci0KLSAgICBpZiAoKyttX2ludGVycnVwdGlvbkNvdW50ID4gMSB8fCAodHlwZSA9PSBFbnRlcmlu
Z0JhY2tncm91bmQgJiYgY2xpZW50KCkub3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmlj
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdGF0ZVRvUmVzdG9yZSA9IHN0YXRl
KCk7Ci0gICAgbV9ub3RpZnlpbmdDbGllbnQgPSB0cnVlOwotICAgIHNldFN0YXRlKEludGVycnVw
dGVkKTsKLSAgICBjbGllbnQoKS5zdXNwZW5kUGxheWJhY2soKTsKLSAgICBtX25vdGlmeWluZ0Ns
aWVudCA9IGZhbHNlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKEVu
ZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQotewotICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lv
bjo6ZW5kSW50ZXJydXB0aW9uKCVwKSAtIGZsYWdzID0gJWksIHN0YXRlVG9SZXN0b3JlID0gJXMs
IGludGVycnVwdGlvbiBjb3VudCA9ICVpIiwgdGhpcywgKGludClmbGFncywgc3RhdGVOYW1lKG1f
c3RhdGVUb1Jlc3RvcmUpLCBtX2ludGVycnVwdGlvbkNvdW50KTsKLQotICAgIGlmICghbV9pbnRl
cnJ1cHRpb25Db3VudCkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OmVuZElu
dGVycnVwdGlvbiglcCkgLSAhISBpZ25vcmluZyBzcHVyaW91cyBpbnRlcnJ1cHRpb24gZW5kICEh
IiwgdGhpcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoLS1tX2ludGVycnVw
dGlvbkNvdW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdGF0ZSBzdGF0ZVRvUmVzdG9yZSA9
IG1fc3RhdGVUb1Jlc3RvcmU7Ci0gICAgbV9zdGF0ZVRvUmVzdG9yZSA9IElkbGU7Ci0gICAgc2V0
U3RhdGUoUGF1c2VkKTsKLQotICAgIGJvb2wgc2hvdWxkUmVzdW1lID0gZmxhZ3MgJiBNYXlSZXN1
bWVQbGF5aW5nICYmIHN0YXRlVG9SZXN0b3JlID09IFBsYXlpbmc7Ci0gICAgY2xpZW50KCkubWF5
UmVzdW1lUGxheWJhY2soc2hvdWxkUmVzdW1lKTsKLX0KLQotYm9vbCBNZWRpYVNlc3Npb246OmNs
aWVudFdpbGxCZWdpblBsYXliYWNrKCkKLXsKLSAgICBpZiAobV9ub3RpZnlpbmdDbGllbnQpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKCp0aGlzKSkgewotICAgICAgICBp
ZiAoc3RhdGUoKSA9PSBJbnRlcnJ1cHRlZCkKLSAgICAgICAgICAgIG1fc3RhdGVUb1Jlc3RvcmUg
PSBQbGF5aW5nOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc2V0U3RhdGUo
UGxheWluZyk7Ci0gICAgdXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKQot
ewotICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCVwKS0g
c3RhdGUgPSAlcyIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSk7Ci0gICAgaWYgKHN0YXRlKCkg
PT0gSW50ZXJydXB0ZWQpIHsKLSAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBhdXNlZDsKLSAg
ICAgICAgTE9HKE1lZGlhLCAiICAgICAgc2V0dGluZyBzdGF0ZVRvUmVzdG9yZSB0byBcIlBhdXNl
ZFwiIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgc2V0U3RhdGUo
UGF1c2VkKTsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lv
bldpbGxFbmRQbGF5YmFjaygqdGhpcyk7Ci0gICAgaWYgKCFtX2NsaWVudERhdGFCdWZmZXJpbmdU
aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lci5zdGFy
dE9uZVNob3Qoa0NsaWVudERhdGFCdWZmZXJpbmdUaW1lclRocm90dGxlRGVsYXkpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCkKLXsKLSAg
ICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OnBhdXNlU2Vzc2lvbiglcCkiLCB0aGlzKTsKLSAg
ICBtX2NsaWVudC5zdXNwZW5kUGxheWJhY2soKTsKLX0KLQotTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGUgTWVkaWFTZXNzaW9uOjptZWRpYVR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVu
dC5tZWRpYVR5cGUoKTsKLX0KLQotTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgTWVkaWFTZXNzaW9u
OjpwcmVzZW50YXRpb25UeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQucHJlc2Vu
dGF0aW9uVHlwZSgpOwotfQotCi1TdHJpbmcgTWVkaWFTZXNzaW9uOjp0aXRsZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCk7Ci19Ci0KLWRvdWJsZSBN
ZWRpYVNlc3Npb246OmR1cmF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQubWVk
aWFTZXNzaW9uRHVyYXRpb24oKTsKLX0KLQotZG91YmxlIE1lZGlhU2Vzc2lvbjo6Y3VycmVudFRp
bWUoKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNlc3Npb25DdXJyZW50VGlt
ZSgpOwotfQotICAgIAotYm9vbCBNZWRpYVNlc3Npb246OmNhblJlY2VpdmVSZW1vdGVDb250cm9s
Q29tbWFuZHMoKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudC5jYW5SZWNlaXZlUmVtb3Rl
Q29udHJvbENvbW1hbmRzKCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpkaWRSZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmQoUmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCi17Ci0g
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmQpOwotfQot
Ci12b2lkIE1lZGlhU2Vzc2lvbjo6dmlzaWJpbGl0eUNoYW5nZWQoKQotewotICAgIGlmICghbV9j
bGllbnREYXRhQnVmZmVyaW5nVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9jbGllbnREYXRh
QnVmZmVyaW5nVGltZXIuc3RhcnRPbmVTaG90KGtDbGllbnREYXRhQnVmZmVyaW5nVGltZXJUaHJv
dHRsZURlbGF5KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdU
aW1lckZpcmVkKCkKLXsKLSAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OmNsaWVudERhdGFC
dWZmZXJpbmdUaW1lckZpcmVkKCVwKS0gdmlzaWJsZSA9ICVzIiwgdGhpcywgbV9jbGllbnQuZWxl
bWVudElzSGlkZGVuKCkgPyAiZmFsc2UiIDogInRydWUiKTsKLQotICAgIHVwZGF0ZUNsaWVudERh
dGFCdWZmZXJpbmcoKTsKLQotICAgIGlmIChtX3N0YXRlICE9IFBsYXlpbmcgfHwgIW1fY2xpZW50
LmVsZW1lbnRJc0hpZGRlbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZXN0cmljdGlvbnMobWVkaWFUeXBlKCkpOwotICAgIGlm
ICgocmVzdHJpY3Rpb25zICYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6QmFja2dyb3VuZFRhYlBsYXli
YWNrUmVzdHJpY3RlZCkgPT0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6QmFja2dyb3VuZFRhYlBsYXli
YWNrUmVzdHJpY3RlZCkKLSAgICAgICAgcGF1c2VTZXNzaW9uKCk7Ci19Ci0KLXZvaWQgTWVkaWFT
ZXNzaW9uOjp1cGRhdGVDbGllbnREYXRhQnVmZmVyaW5nKCkKLXsKLSAgICBpZiAobV9jbGllbnRE
YXRhQnVmZmVyaW5nVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9jbGllbnREYXRhQnVmZmVy
aW5nVGltZXIuc3RvcCgpOwotCi0gICAgbV9jbGllbnQuc2V0U2hvdWxkQnVmZmVyRGF0YShNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbkNhbkxvYWRNZWRpYSgqdGhp
cykpOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4oKSBjb25zdAotewotICAgIHJl
dHVybiBtX2NsaWVudC5lbGVtZW50SXNIaWRkZW4oKTsKLX0KLQotTWVkaWFTZXNzaW9uOjpEaXNw
bGF5VHlwZSBNZWRpYVNlc3Npb246OmRpc3BsYXlUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9jbGllbnQuZGlzcGxheVR5cGUoKTsKLX0KLQotU3RyaW5nIE1lZGlhU2Vzc2lvbkNsaWVudDo6
bWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdAotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQot
ZG91YmxlIE1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKTsKLX0KLQotZG91YmxlIE1l
ZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25zdAotewotICAg
IHJldHVybiBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKTsKLX0KLX0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWRlMDYwMThhMWZlNWQ1NzA5NzVmNmIyOTkwZmIyNzM2OGU1NzllMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDE4
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhU2Vzc2lvbl9oCi0jZGVm
aW5lIE1lZGlhU2Vzc2lvbl9oCi0KLSNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCi0jaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
Ci0jaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oIgotI2VuZGlmCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKLWNsYXNzIE1lZGlh
U2Vzc2lvbkNsaWVudDsKLQotY2xhc3MgTWVkaWFTZXNzaW9uCi0jaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKLSAgICA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50
Ci0jZW5kaWYKLXsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vz
c2lvbj4gY3JlYXRlKE1lZGlhU2Vzc2lvbkNsaWVudCYpOwotCi0gICAgTWVkaWFTZXNzaW9uKE1l
ZGlhU2Vzc2lvbkNsaWVudCYpOwotICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbigpOwotCi0gICAg
ZW51bSBNZWRpYVR5cGUgewotICAgICAgICBOb25lID0gMCwKLSAgICAgICAgVmlkZW8sCi0gICAg
ICAgIEF1ZGlvLAotICAgICAgICBXZWJBdWRpbywKLSAgICB9OwotICAgIE1lZGlhVHlwZSBtZWRp
YVR5cGUoKSBjb25zdDsKLSAgICBNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0Owot
Ci0gICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIElkbGUsCi0gICAgICAgIFBsYXlpbmcsCi0gICAg
ICAgIFBhdXNlZCwKLSAgICAgICAgSW50ZXJydXB0ZWQsCi0gICAgfTsKLSAgICBTdGF0ZSBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICB2b2lkIHNldFN0YXRlKFN0YXRlKTsK
LQotICAgIGVudW0gSW50ZXJydXB0aW9uVHlwZSB7Ci0gICAgICAgIFN5c3RlbVNsZWVwLAotICAg
ICAgICBFbnRlcmluZ0JhY2tncm91bmQsCi0gICAgICAgIFN5c3RlbUludGVycnVwdGlvbiwKLSAg
ICB9OwotICAgIGVudW0gRW5kSW50ZXJydXB0aW9uRmxhZ3MgewotICAgICAgICBOb0ZsYWdzID0g
MCwKLSAgICAgICAgTWF5UmVzdW1lUGxheWluZyA9IDEgPDwgMCwKLSAgICB9OwotICAgIHZvaWQg
YmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSk7Ci0gICAgdm9pZCBlbmRJbnRlcnJ1
cHRpb24oRW5kSW50ZXJydXB0aW9uRmxhZ3MpOwotCi0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQoKSBjb25zdDsKLSAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyQmFj
a2dyb3VuZCgpIGNvbnN0OwotCi0gICAgYm9vbCBjbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpOwot
ICAgIGJvb2wgY2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKLQotICAgIHZvaWQgcGF1c2VTZXNz
aW9uKCk7Ci0gICAgCi0gICAgdm9pZCB2aXNpYmlsaXR5Q2hhbmdlZCgpOwotCi0gICAgU3RyaW5n
IHRpdGxlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3Q7Ci0gICAgZG91Ymxl
IGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0KLSAgICBlbnVtIFJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZSB7Ci0gICAgICAgIE5vQ29tbWFuZCwKLSAgICAgICAgUGxheUNvbW1hbmQsCi0gICAgICAgIFBh
dXNlQ29tbWFuZCwKLSAgICAgICAgU3RvcENvbW1hbmQsCi0gICAgICAgIFRvZ2dsZVBsYXlQYXVz
ZUNvbW1hbmQsCi0gICAgICAgIEJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwKLSAgICAgICAg
RW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwKLSAgICAgICAgQmVnaW5TZWVraW5nRm9yd2FyZENv
bW1hbmQsCi0gICAgICAgIEVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKLSAgICB9OwotICAgIGJv
b2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0OwotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7Ci0K
LSAgICBlbnVtIERpc3BsYXlUeXBlIHsKLSAgICAgICAgTm9ybWFsLAotICAgICAgICBGdWxsc2Ny
ZWVuLAotICAgICAgICBPcHRpbWl6ZWQsCi0gICAgfTsKLSAgICBEaXNwbGF5VHlwZSBkaXNwbGF5
VHlwZSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0OwotCi0gICAgdmlydHVh
bCBib29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKLSAgICAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50Ci0gICAgdmlydHVh
bCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVy
cmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVE
aWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJyaWRlIHsgfQotI2VuZGlmCi0KLSNpZiBQTEFU
Rk9STShJT1MpCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1v
bml0b3JpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlmCi0KLXByb3RlY3RlZDoK
LSAgICBNZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
OyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCgp
OwotICAgIHZvaWQgdXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpOwotCi0gICAgTWVkaWFTZXNz
aW9uQ2xpZW50JiBtX2NsaWVudDsKLSAgICBUaW1lciBtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1l
cjsKLSAgICBTdGF0ZSBtX3N0YXRlOwotICAgIFN0YXRlIG1fc3RhdGVUb1Jlc3RvcmU7Ci0gICAg
aW50IG1faW50ZXJydXB0aW9uQ291bnQgeyAwIH07Ci0gICAgYm9vbCBtX25vdGlmeWluZ0NsaWVu
dDsKLX07Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbkNsaWVudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTWVkaWFTZXNzaW9uQ2xpZW50KTsKLXB1YmxpYzoKLSAgICBNZWRpYVNlc3Npb25DbGll
bnQoKSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlh
VHlwZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHBy
ZXNlbnRhdGlvblR5cGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246OkRp
c3BsYXlUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpOb3Jt
YWw7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJl
c3VtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kUGxheWJhY2soKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIFN0cmluZyBtZWRpYVNlc3Npb25UaXRsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwg
ZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBkb3VibGUg
bWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkQnVm
ZmVyRGF0YShib29sKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZWxlbWVudElzSGlkZGVuKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91
bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHdp
cmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIHsgfQot
ICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgeyB9Ci0KLXByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25DbGllbnQoKSB7IH0KLX07Ci0KLX0KLQotI2VuZGlmIC8v
IE1lZGlhU2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IGY1NzA0Nzc5OGVkNTk2MjkyOTMxZWQ3MTMz
ZDQxZmYwZTM1MTRkZDMuLmUxNzcwNTNmZDY2MTAzMjI1YjgxOWJlN2RmZmE0NWY4NWM2ZTRjZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5j
bHVkZSAiTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSwxNCArNTEsMTQgQEAgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdlcigpCiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
cjo6cmVzZXRSZXN0cmljdGlvbnMoKQogewotICAgIG1fcmVzdHJpY3Rpb25zW01lZGlhU2Vzc2lv
bjo6VmlkZW9dID0gTm9SZXN0cmljdGlvbnM7Ci0gICAgbV9yZXN0cmljdGlvbnNbTWVkaWFTZXNz
aW9uOjpBdWRpb10gPSBOb1Jlc3RyaWN0aW9uczsKLSAgICBtX3Jlc3RyaWN0aW9uc1tNZWRpYVNl
c3Npb246OldlYkF1ZGlvXSA9IE5vUmVzdHJpY3Rpb25zOworICAgIG1fcmVzdHJpY3Rpb25zW1Bs
YXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlb10gPSBOb1Jlc3RyaWN0aW9uczsKKyAgICBtX3Jlc3Ry
aWN0aW9uc1tQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW9dID0gTm9SZXN0cmljdGlvbnM7Cisg
ICAgbV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvXSA9IE5vUmVz
dHJpY3Rpb25zOwogfQogCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmhhcyhNZWRpYVNlc3Np
b246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAorYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMo
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAogewotICAgIEFTU0VS
VCh0eXBlID49IE1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IE1lZGlhU2Vzc2lvbjo6V2Vi
QXVkaW8pOworICAgIEFTU0VSVCh0eXBlID49IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb25lICYm
IHR5cGUgPD0gUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKIAogICAgIGZvciAoYXV0
byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPm1lZGlhVHlw
ZSgpID09IHR5cGUpCkBAIC03MSwxNiArNzEsMTYgQEAgYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpoYXMoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKIGJvb2wgTWVkaWFTZXNz
aW9uTWFuYWdlcjo6YWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSBjb25zdAogewogICAgIGZv
ciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKLSAgICAgICAgaWYgKHNlc3Npb24tPm1l
ZGlhVHlwZSgpICE9IE1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiBzZXNzaW9uLT5zdGF0ZSgpID09IE1l
ZGlhU2Vzc2lvbjo6U3RhdGU6OlBsYXlpbmcpCisgICAgICAgIGlmIChzZXNzaW9uLT5tZWRpYVR5
cGUoKSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiBzZXNzaW9uLT5zdGF0ZSgpID09
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdGF0ZTo6UGxheWluZykKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWludCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpjb3VudChNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zdAor
aW50IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvdW50KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRp
YVR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBU1NFUlQodHlwZSA+PSBNZWRpYVNlc3Npb246Ok5v
bmUgJiYgdHlwZSA8PSBNZWRpYVNlc3Npb246OldlYkF1ZGlvKTsKKyAgICBBU1NFUlQodHlwZSA+
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpXZWJBdWRpbyk7CiAKICAgICBpbnQgY291bnQgPSAwOwogICAgIGZvciAoYXV0byogc2Vz
c2lvbiA6IG1fc2Vzc2lvbnMpIHsKQEAgLTkxLDM0ICs5MSwzNCBAQCBpbnQgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6Y291bnQoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkgY29uc3QKICAgICBy
ZXR1cm4gY291bnQ7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YmVnaW5JbnRlcnJ1
cHRpb24oTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCit2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRl
cnJ1cHRpb25UeXBlIHR5cGUpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdl
cjo6YmVnaW5JbnRlcnJ1cHRpb24iKTsKIAogICAgIG1faW50ZXJydXB0ZWQgPSB0cnVlOwotICAg
IFZlY3RvcjxNZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CisgICAgVmVjdG9y
PFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwogICAgIGZvciAo
YXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKQogICAgICAgICBzZXNzaW9uLT5iZWdpbkludGVycnVw
dGlvbih0eXBlKTsKICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIH0KIAotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRp
b25GbGFncyBmbGFncykKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZW5kSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykKIHsKICAg
ICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjplbmRJbnRlcnJ1cHRpb24iKTsKIAog
ICAgIG1faW50ZXJydXB0ZWQgPSBmYWxzZTsKLSAgICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4gc2Vz
c2lvbnMgPSBtX3Nlc3Npb25zOworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNl
c3Npb25zID0gbV9zZXNzaW9uczsKICAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBzZXNzaW9ucykK
ICAgICAgICAgc2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKIH0KIAotdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK3ZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vz
c2lvbikKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRTZXNzaW9u
IC0gJXAiLCAmc2Vzc2lvbik7CiAgICAgCiAgICAgbV9zZXNzaW9ucy5hcHBlbmQoJnNlc3Npb24p
OwogICAgIGlmIChtX2ludGVycnVwdGVkKQotICAgICAgICBzZXNzaW9uLnNldFN0YXRlKE1lZGlh
U2Vzc2lvbjo6SW50ZXJydXB0ZWQpOworICAgICAgICBzZXNzaW9uLnNldFN0YXRlKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCk7CiAKICAgICBpZiAoIW1fcmVtb3RlQ29tbWFuZExp
c3RlbmVyKQogICAgICAgICBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lciA9IFJlbW90ZUNvbW1hbmRM
aXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFkZFNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogICAgIHVwZGF0
ZVNlc3Npb25TdGF0ZSgpOwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNl
c3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpy
ZW1vdmVTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIExPRyhN
ZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24gLSAlcCIsICZzZXNzaW9u
KTsKICAgICAKQEAgLTE0OCwzMyArMTQ4LDMzIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6
cmVtb3ZlU2Vzc2lvbihNZWRpYVNlc3Npb24mIHNlc3Npb24pCiAgICAgdXBkYXRlU2Vzc2lvblN0
YXRlKCk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUmVzdHJpY3Rpb24oTWVk
aWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlv
bikKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok1lZGlhVHlwZSB0eXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9u
KQogewotICAgIEFTU0VSVCh0eXBlID4gTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gTWVk
aWFTZXNzaW9uOjpXZWJBdWRpbyk7CisgICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CiAg
ICAgbV9yZXN0cmljdGlvbnNbdHlwZV0gfD0gcmVzdHJpY3Rpb247CiB9CiAKLXZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6cmVtb3ZlUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUg
dHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKK3ZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlw
ZSB0eXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKQogewotICAgIEFTU0VSVCh0
eXBlID4gTWVkaWFTZXNzaW9uOjpOb25lICYmIHR5cGUgPD0gTWVkaWFTZXNzaW9uOjpXZWJBdWRp
byk7CisgICAgQVNTRVJUKHR5cGUgPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBl
IDw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CiAgICAgbV9yZXN0cmljdGlvbnNb
dHlwZV0gJj0gfnJlc3RyaWN0aW9uOwogfQogCi1NZWRpYVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9u
UmVzdHJpY3Rpb25zIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3RyaWN0aW9ucyhNZWRpYVNlc3Np
b246Ok1lZGlhVHlwZSB0eXBlKQorTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0
aW9ucyBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlvbnMoUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok1lZGlhVHlwZSB0eXBlKQogewotICAgIEFTU0VSVCh0eXBlID4gTWVkaWFTZXNzaW9uOjpO
b25lICYmIHR5cGUgPD0gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyk7CisgICAgQVNTRVJUKHR5cGUg
PiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZSAmJiB0eXBlIDw9IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpXZWJBdWRpbyk7CiAgICAgcmV0dXJuIG1fcmVzdHJpY3Rpb25zW3R5cGVdOwogfQogCi1i
b29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNl
c3Npb24mIHNlc3Npb24pCitib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsQmVn
aW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBMT0coTWVk
aWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2sgLSAlcCIs
ICZzZXNzaW9uKTsKICAgICAKICAgICBzZXRDdXJyZW50U2Vzc2lvbihzZXNzaW9uKTsKIAotICAg
IE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHNlc3Npb25UeXBlID0gc2Vzc2lvbi5tZWRpYVR5cGUo
KTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHNlc3Npb25UeXBlID0gc2Vz
c2lvbi5tZWRpYVR5cGUoKTsKICAgICBTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9
IG1fcmVzdHJpY3Rpb25zW3Nlc3Npb25UeXBlXTsKLSAgICBpZiAoc2Vzc2lvbi5zdGF0ZSgpID09
IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQgJiYgcmVzdHJpY3Rpb25zICYgSW50ZXJydXB0ZWRQ
bGF5YmFja05vdFBlcm1pdHRlZCkKKyAgICBpZiAoc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCAmJiByZXN0cmljdGlvbnMgJiBJbnRlcnJ1cHRlZFBs
YXliYWNrTm90UGVybWl0dGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoQVVE
SU9fU0VTU0lPTikKQEAgLTE4Myw5ICsxODMsOSBAQCBib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCiAjZW5kaWYK
IAogICAgIGlmIChtX2ludGVycnVwdGVkKQotICAgICAgICBlbmRJbnRlcnJ1cHRpb24oTWVkaWFT
ZXNzaW9uOjpOb0ZsYWdzKTsKKyAgICAgICAgZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpOb0ZsYWdzKTsKIAotICAgIFZlY3RvcjxNZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9
IG1fc2Vzc2lvbnM7CisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMg
PSBtX3Nlc3Npb25zOwogICAgIGZvciAoYXV0byogb25lU2Vzc2lvbiA6IHNlc3Npb25zKSB7CiAg
ICAgICAgIGlmIChvbmVTZXNzaW9uID09ICZzZXNzaW9uKQogICAgICAgICAgICAgY29udGludWU7
CkBAIC0xOTcsNyArMTk3LDcgQEAgYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2ls
bEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogICAgIHJldHVybiB0cnVlOwog
fQogICAgIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNr
KE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lv
bldpbGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBM
T0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrIC0g
JXAiLCAmc2Vzc2lvbik7CiAgICAgCkBAIC0yMDcsMTcgKzIwNywxNyBAQCB2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9u
KQogICAgIHNpemVfdCBwYXVzaW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CiAgICAgc2l6ZV90
IGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4ID0gbm90Rm91bmQ7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3Nlc3Npb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE1lZGlhU2Vzc2lvbiog
b25lU2Vzc2lvbiA9IG1fc2Vzc2lvbnNbaV07CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
KiBvbmVTZXNzaW9uID0gbV9zZXNzaW9uc1tpXTsKICAgICAgICAgCiAgICAgICAgIGlmIChvbmVT
ZXNzaW9uID09ICZzZXNzaW9uKSB7CiAgICAgICAgICAgICBwYXVzaW5nU2Vzc2lvbkluZGV4ID0g
aTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChvbmVTZXNz
aW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6UGxheWluZykgeworICAgICAgICBpZiAob25l
U2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykgewogICAg
ICAgICAgICAgbGFzdFBsYXlpbmdTZXNzaW9uSW5kZXggPSBpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG9uZVNlc3Npb24tPnN0YXRlKCkgIT0gTWVkaWFT
ZXNzaW9uOjpQbGF5aW5nKQorICAgICAgICBpZiAob25lU2Vzc2lvbi0+c3RhdGUoKSAhPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBpZiAobGFzdFBsYXlpbmdTZXNzaW9uSW5kZXggPT0gbm90Rm91bmQgfHwgcGF1c2luZ1Nlc3Np
b25JbmRleCA9PSBub3RGb3VuZCkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQog
ICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJh
Y2sgLSBzZXNzaW9uIG1vdmVkIGZyb20gaW5kZXggJXp1IHRvICV6dSIsIHBhdXNpbmdTZXNzaW9u
SW5kZXgsIGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4KTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbihNZWRpYVNlc3Npb24mIHNlc3Npb24pCit2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
JiBzZXNzaW9uKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1
cnJlbnRTZXNzaW9uIC0gJXAiLCAmc2Vzc2lvbik7CiAgICAgCkBAIC0yNTAsNyArMjUwLDcgQEAg
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbihNZWRpYVNlc3Npb24m
IHNlc3Npb24pCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVu
dFNlc3Npb24gLSBzZXNzaW9uIG1vdmVkIGZyb20gaW5kZXggJXp1IHRvIDAiLCBpbmRleCk7CiB9
CiAgICAgCi1NZWRpYVNlc3Npb24qIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9u
KCkKK1BsYXRmb3JtTWVkaWFTZXNzaW9uKiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vz
c2lvbigpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0yNTgsMzcgKzI1OCwzNyBAQCBNZWRpYVNlc3Npb24qIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OmN1cnJlbnRTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uc1swXTsKIH0KICAg
ICAKLWJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVv
UGxheWJhY2soY29uc3QgTWVkaWFTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAorYm9vbCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzZXNzaW9uUmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKIHsKLSAgICBNZWRpYVNlc3Npb246
Ok1lZGlhVHlwZSBzZXNzaW9uVHlwZSA9IHNlc3Npb24ucHJlc2VudGF0aW9uVHlwZSgpOwotICAg
IGlmIChzZXNzaW9uVHlwZSAhPSBNZWRpYVNlc3Npb246OlZpZGVvKQorICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpNZWRpYVR5cGUgc2Vzc2lvblR5cGUgPSBzZXNzaW9uLnByZXNlbnRhdGlvblR5
cGUoKTsKKyAgICBpZiAoc2Vzc2lvblR5cGUgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVv
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbV9yZXN0cmljdGlvbnNbc2Vz
c2lvblR5cGVdICYgSW5saW5lVmlkZW9QbGF5YmFja1Jlc3RyaWN0ZWQ7CiB9CiAKLWJvb2wgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbkNhbkxvYWRNZWRpYShjb25zdCBNZWRpYVNlc3Npb24m
IHNlc3Npb24pIGNvbnN0Citib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Mb2Fk
TWVkaWEoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHNlc3Npb24uc3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlBsYXlpbmcgfHwgIXNlc3Np
b24uaXNIaWRkZW4oKSB8fCBzZXNzaW9uLmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1Rhcmdl
dCgpOworICAgIHJldHVybiBzZXNzaW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246
OlBsYXlpbmcgfHwgIXNlc3Npb24uaXNIaWRkZW4oKSB8fCBzZXNzaW9uLmlzUGxheWluZ1RvV2ly
ZWxlc3NQbGF5YmFja1RhcmdldCgpOwogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFw
cGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0CiB7CiAgICAgTE9HKE1lZGlhLCAi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kIik7Ci0g
ICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKKyAgICBWZWN0
b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CiAgICAgZm9y
IChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbnMpIHsKICAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25z
W3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAmIEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmlj
dGVkKQotICAgICAgICAgICAgc2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9u
OjpFbnRlcmluZ0JhY2tncm91bmQpOworICAgICAgICAgICAgc2Vzc2lvbi0+YmVnaW5JbnRlcnJ1
cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dyb3VuZCk7CiAgICAgfQog
fQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZCgpIGNvbnN0CiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kIik7Ci0gICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+
IHNlc3Npb25zID0gbV9zZXNzaW9uczsKKyAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24q
PiBzZXNzaW9ucyA9IG1fc2Vzc2lvbnM7CiAgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lv
bnMpIHsKICAgICAgICAgaWYgKG1fcmVzdHJpY3Rpb25zW3Nlc3Npb24tPm1lZGlhVHlwZSgpXSAm
IEJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKQotICAgICAgICAgICAgc2Vzc2lv
bi0+ZW5kSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAg
ICAgICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1h
eVJlc3VtZVBsYXlpbmcpOwogICAgIH0KIH0KIApAQCAtMjk4LDkgKzI5OCw5IEBAIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKIH0KICNlbmRpZgogCi12b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQordm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQogewotICAgIE1lZGlh
U2Vzc2lvbiogYWN0aXZlU2Vzc2lvbiA9IGN1cnJlbnRTZXNzaW9uKCk7CisgICAgUGxhdGZvcm1N
ZWRpYVNlc3Npb24qIGFjdGl2ZVNlc3Npb24gPSBjdXJyZW50U2Vzc2lvbigpOwogICAgIGlmICgh
YWN0aXZlU2Vzc2lvbiB8fCAhYWN0aXZlU2Vzc2lvbi0+Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xD
b21tYW5kcygpKQogICAgICAgICByZXR1cm47CiAgICAgYWN0aXZlU2Vzc2lvbi0+ZGlkUmVjZWl2
ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmQpOwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtV2lsbFNsZWVwKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZm9yIChhdXRvIHNlc3Npb24gOiBtX3Nlc3Npb25zKQotICAgICAgICBzZXNzaW9uLT5i
ZWdpbkludGVycnVwdGlvbihNZWRpYVNlc3Npb246OlN5c3RlbVNsZWVwKTsKKyAgICAgICAgc2Vz
c2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbVNsZWVw
KTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1EaWRXYWtlKCkKQEAgLTMy
MSw3ICszMjEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbURpZFdha2UoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8gc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpCi0g
ICAgICAgIHNlc3Npb24tPmVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246Ok1heVJlc3VtZVBs
YXlpbmcpOworICAgICAgICBzZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOwogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggZDk0MGQ1YWY2ZDVlYzVhYWNh
NDQzMTQ3ZDA1NjZhZmM3ZTY4ZGYzZi4uZDE1MGE5ODVkYzY3NGZhN2NjZWY1NTI3NTExZmYyZGQ4
M2Q3NGEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFT
ZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlh
U2Vzc2lvbk1hbmFnZXIuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBNZWRpYVNlc3Npb25N
YW5hZ2VyX2gKIAogI2luY2x1ZGUgIkF1ZGlvSGFyZHdhcmVMaXN0ZW5lci5oIgotI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5j
bHVkZSAiUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTeXN0ZW1TbGVlcExpc3RlbmVyLmgiCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Ci1jbGFzcyBNZWRpYVNlc3Np
b247CitjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjsKIGNsYXNzIFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcjsKIAogY2xhc3MgTWVkaWFTZXNzaW9uTWFuYWdlciA6IHByaXZhdGUgUmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ2xpZW50LCBwcml2YXRlIFN5c3RlbVNsZWVwTGlzdGVuZXI6OkNsaWVudCwgcHJp
dmF0ZSBBdWRpb0hhcmR3YXJlTGlzdGVuZXI6OkNsaWVudCB7CkBAIC00NiwxMiArNDYsMTIgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNZWRpYVNlc3Npb25NYW5hZ2VyJiBz
aGFyZWRNYW5hZ2VyKCk7CiAgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uTWFuYWdlcigpIHsgfQog
Ci0gICAgYm9vbCBoYXMoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpIGNvbnN0OwotICAgIGludCBj
b3VudChNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7CisgICAgYm9vbCBoYXMoUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7CisgICAgaW50IGNvdW50KFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpIGNvbnN0OwogICAgIGJvb2wgYWN0aXZlQXVkaW9TZXNz
aW9uUmVxdWlyZWQoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5JbnRl
cnJ1cHRpb24oTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZs
YWdzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxh
Z3MpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVu
dGVyQmFja2dyb3VuZCgpIGNvbnN0OwpAQCAtNjgsMzQgKzY4LDM0IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIHR5cGVkZWYgdW5zaWduZWQgU2Vzc2lvblJlc3RyaWN0aW9uczsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYWRkUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUsIFNl
c3Npb25SZXN0cmljdGlvbnMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUmVzdHJp
Y3Rpb24oTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUsIFNlc3Npb25SZXN0cmljdGlvbnMpOwotICAg
IFdFQkNPUkVfRVhQT1JUIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKE1lZGlhU2Vz
c2lvbjo6TWVkaWFUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFJlc3RyaWN0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUsIFNlc3Npb25SZXN0cmljdGlvbnMpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1lZGlhVHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMoUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UmVzdHJpY3Rpb25zKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpOwor
ICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soUGxhdGZvcm1NZWRpYVNl
c3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5YmFjayhQbGF0Zm9y
bU1lZGlhU2Vzc2lvbiYpOwogCi0gICAgYm9vbCBzZXNzaW9uUmVzdHJpY3RzSW5saW5lVmlkZW9Q
bGF5YmFjayhjb25zdCBNZWRpYVNlc3Npb24mKSBjb25zdDsKKyAgICBib29sIHNlc3Npb25SZXN0
cmljdHNJbmxpbmVWaWRlb1BsYXliYWNrKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJikgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbkNhbkxvYWRNZWRpYShjb25zdCBNZWRpYVNl
c3Npb24mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbkNhbkxvYWRNZWRpYShjb25z
dCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IHZpcnR1YWwgdm9pZCBjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKSB7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCkgeyByZXR1cm4gZmFs
c2U7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzZXRDdXJyZW50U2Vzc2lvbihNZWRpYVNlc3Npb24m
KTsKLSAgICBNZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uKCk7CisgICAgdm9pZCBzZXRDdXJy
ZW50U2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOworICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uKiBjdXJyZW50U2Vzc2lvbigpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgZnJpZW5kIGNsYXNzIE1l
ZGlhU2Vzc2lvbjsKKyAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb247CiAgICAg
ZXhwbGljaXQgTWVkaWFTZXNzaW9uTWFuYWdlcigpOwogCi0gICAgdm9pZCBhZGRTZXNzaW9uKE1l
ZGlhU2Vzc2lvbiYpOwotICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihNZWRpYVNlc3Npb24mKTsKKyAg
ICB2b2lkIGFkZFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKKyAgICB2b2lkIHJlbW92
ZVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKIAotICAgIFZlY3RvcjxNZWRpYVNlc3Np
b24qPiBzZXNzaW9ucygpIHsgcmV0dXJuIG1fc2Vzc2lvbnM7IH0KKyAgICBWZWN0b3I8UGxhdGZv
cm1NZWRpYVNlc3Npb24qPiBzZXNzaW9ucygpIHsgcmV0dXJuIG1fc2Vzc2lvbnM7IH0KIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgSW50ZXJuYWxzOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIAogICAgIC8vIFJlbW90ZUNv
bW1hbmRMaXN0ZW5lckNsaWVudAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBBdWRpb0hhcmR3YXJlTGlzdGVu
ZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgYXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgp
IG92ZXJyaWRlIHsgfQpAQCAtMTE0LDggKzExNCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHN5c3RlbVdpbGxTbGVlcCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1E
aWRXYWtlKCkgb3ZlcnJpZGU7CiAKLSAgICBTZXNzaW9uUmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rp
b25zW01lZGlhU2Vzc2lvbjo6V2ViQXVkaW8gKyAxXTsKLSAgICBWZWN0b3I8TWVkaWFTZXNzaW9u
Kj4gbV9zZXNzaW9uczsKKyAgICBTZXNzaW9uUmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rpb25zW1Bs
YXRmb3JtTWVkaWFTZXNzaW9uOjpXZWJBdWRpbyArIDFdOworICAgIFZlY3RvcjxQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbio+IG1fc2Vzc2lvbnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1h
bmRMaXN0ZW5lcj4gbV9yZW1vdGVDb21tYW5kTGlzdGVuZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFN5c3RlbVNsZWVwTGlzdGVuZXI+IG1fc3lzdGVtU2xlZXBMaXN0ZW5lcjsKICAgICBSZWZQdHI8
QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NjkzYTZmNjk5MGJhZWViZDUyYWYxYmUzMmQ2MjFmNTliYjRiMGNhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb24uY3BwCkBAIC0wLDAgKzEsMjQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKworI2lm
IEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNz
aW9uTWFuYWdlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGRvdWJsZSBrQ2xp
ZW50RGF0YUJ1ZmZlcmluZ1RpbWVyVGhyb3R0bGVEZWxheSA9IDAuMTsKKworI2lmICFMT0dfRElT
QUJMRUQKK3N0YXRpYyBjb25zdCBjaGFyKiBzdGF0ZU5hbWUoUGxhdGZvcm1NZWRpYVNlc3Npb246
OlN0YXRlIHN0YXRlKQoreworI2RlZmluZSBDQVNFKHN0YXRlKSBjYXNlIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpzdGF0ZTogcmV0dXJuICNzdGF0ZQorICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBD
QVNFKElkbGUpOworICAgIENBU0UoUGxheWluZyk7CisgICAgQ0FTRShQYXVzZWQpOworICAgIENB
U0UoSW50ZXJydXB0ZWQpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiAiIjsKK30KKyNlbmRpZgorCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNl
c3Npb24+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25D
bGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbj4oY2xpZW50KTsKK30KKworUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCisgICAgOiBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2NsaWVudERhdGFCdWZmZXJpbmdUaW1lcigqdGhpcywg
JlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCkKKyAg
ICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1fc3RhdGVUb1Jlc3RvcmUoSWRsZSkKKyAgICAsIG1f
bm90aWZ5aW5nQ2xpZW50KGZhbHNlKQoreworICAgIEFTU0VSVChtX2NsaWVudC5tZWRpYVR5cGUo
KSA+PSBOb25lICYmIG1fY2xpZW50Lm1lZGlhVHlwZSgpIDw9IFdlYkF1ZGlvKTsKKyAgICBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7Cit9CisK
K1BsYXRmb3JtTWVkaWFTZXNzaW9uOjp+UGxhdGZvcm1NZWRpYVNlc3Npb24oKQoreworICAgIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTZXNzaW9uKCp0aGlzKTsK
K30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2V0U3RhdGUoU3RhdGUgc3RhdGUpCit7
CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OnNldFN0YXRlKCVwKSAtICVz
IiwgdGhpcywgc3RhdGVOYW1lKHN0YXRlKSk7CisgICAgbV9zdGF0ZSA9IHN0YXRlOworfQorCit2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25U
eXBlIHR5cGUpCit7CisgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OmJlZ2lu
SW50ZXJydXB0aW9uKCVwKSwgc3RhdGUgPSAlcywgaW50ZXJydXB0aW9uIGNvdW50ID0gJWkiLCB0
aGlzLCBzdGF0ZU5hbWUobV9zdGF0ZSksIG1faW50ZXJydXB0aW9uQ291bnQpOworCisgICAgaWYg
KCsrbV9pbnRlcnJ1cHRpb25Db3VudCA+IDEgfHwgKHR5cGUgPT0gRW50ZXJpbmdCYWNrZ3JvdW5k
ICYmIGNsaWVudCgpLm92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBzdGF0ZSgpOworICAgIG1f
bm90aWZ5aW5nQ2xpZW50ID0gdHJ1ZTsKKyAgICBzZXRTdGF0ZShJbnRlcnJ1cHRlZCk7CisgICAg
Y2xpZW50KCkuc3VzcGVuZFBsYXliYWNrKCk7CisgICAgbV9ub3RpZnlpbmdDbGllbnQgPSBmYWxz
ZTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKEVuZElu
dGVycnVwdGlvbkZsYWdzIGZsYWdzKQoreworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oJXApIC0gZmxhZ3MgPSAlaSwgc3RhdGVUb1Jlc3RvcmUg
PSAlcywgaW50ZXJydXB0aW9uIGNvdW50ID0gJWkiLCB0aGlzLCAoaW50KWZsYWdzLCBzdGF0ZU5h
bWUobV9zdGF0ZVRvUmVzdG9yZSksIG1faW50ZXJydXB0aW9uQ291bnQpOworCisgICAgaWYgKCFt
X2ludGVycnVwdGlvbkNvdW50KSB7CisgICAgICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oJXApIC0gISEgaWdub3Jpbmcgc3B1cmlvdXMgaW50ZXJy
dXB0aW9uIGVuZCAhISIsIHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KC0tbV9pbnRlcnJ1cHRpb25Db3VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RhdGUgc3Rh
dGVUb1Jlc3RvcmUgPSBtX3N0YXRlVG9SZXN0b3JlOworICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBJ
ZGxlOworICAgIHNldFN0YXRlKFBhdXNlZCk7CisKKyAgICBib29sIHNob3VsZFJlc3VtZSA9IGZs
YWdzICYgTWF5UmVzdW1lUGxheWluZyAmJiBzdGF0ZVRvUmVzdG9yZSA9PSBQbGF5aW5nOworICAg
IGNsaWVudCgpLm1heVJlc3VtZVBsYXliYWNrKHNob3VsZFJlc3VtZSk7Cit9CisKK2Jvb2wgUGxh
dGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICBpZiAo
bV9ub3RpZnlpbmdDbGllbnQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbldpbGxCZWdpblBsYXliYWNr
KCp0aGlzKSkgeworICAgICAgICBpZiAoc3RhdGUoKSA9PSBJbnRlcnJ1cHRlZCkKKyAgICAgICAg
ICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBQbGF5aW5nOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgc2V0U3RhdGUoUGxheWluZyk7CisgICAgdXBkYXRlQ2xpZW50RGF0YUJ1ZmZl
cmluZygpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpCit7CisgICAgaWYgKG1fbm90aWZ5aW5nQ2xpZW50
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpjbGllbnRXaWxsUGF1c2VQbGF5YmFjayglcCktIHN0YXRlID0gJXMiLCB0aGlzLCBz
dGF0ZU5hbWUobV9zdGF0ZSkpOworICAgIGlmIChzdGF0ZSgpID09IEludGVycnVwdGVkKSB7Cisg
ICAgICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBQYXVzZWQ7CisgICAgICAgIExPRyhNZWRpYSwgIiAg
ICAgIHNldHRpbmcgc3RhdGVUb1Jlc3RvcmUgdG8gXCJQYXVzZWRcIiIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHNldFN0YXRlKFBhdXNlZCk7CisgICAgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25XaWxsRW5kUGxheWJhY2soKnRo
aXMpOworICAgIGlmICghbV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXIuaXNBY3RpdmUoKSkKKyAg
ICAgICAgbV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXIuc3RhcnRPbmVTaG90KGtDbGllbnREYXRh
QnVmZmVyaW5nVGltZXJUaHJvdHRsZURlbGF5KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCkKK3sKKyAgICBMT0coTWVkaWEs
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCVwKSIsIHRoaXMpOworICAgIG1f
Y2xpZW50LnN1c3BlbmRQbGF5YmFjaygpOworfQorCitQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjptZWRpYVR5cGUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NsaWVudC5tZWRpYVR5cGUoKTsKK30KKworUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1l
ZGlhVHlwZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6cHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fY2xpZW50LnByZXNlbnRhdGlvblR5cGUoKTsKK30KKworU3RyaW5nIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjp0aXRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50
Lm1lZGlhU2Vzc2lvblRpdGxlKCk7Cit9CisKK2RvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
ZHVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNlc3Npb25EdXJh
dGlvbigpOworfQorCitkb3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OmN1cnJlbnRUaW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKTsK
K30KKyAgICAKK2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNhblJlY2VpdmVSZW1vdGVDb250
cm9sQ29tbWFuZHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5jYW5SZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmRzKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmRp
ZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29t
bWFuZCkKK3sKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29t
bWFuZCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OnZpc2liaWxpdHlDaGFuZ2Vk
KCkKK3sKKyAgICBpZiAoIW1fY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLmlzQWN0aXZlKCkpCisg
ICAgICAgIG1fY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLnN0YXJ0T25lU2hvdChrQ2xpZW50RGF0
YUJ1ZmZlcmluZ1RpbWVyVGhyb3R0bGVEZWxheSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKCkKK3sKKyAgICBMT0coTWVkaWEs
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmlyZWQoJXAp
LSB2aXNpYmxlID0gJXMiLCB0aGlzLCBtX2NsaWVudC5lbGVtZW50SXNIaWRkZW4oKSA/ICJmYWxz
ZSIgOiAidHJ1ZSIpOworCisgICAgdXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpOworCisgICAg
aWYgKG1fc3RhdGUgIT0gUGxheWluZyB8fCAhbV9jbGllbnQuZWxlbWVudElzSGlkZGVuKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OlNlc3Npb25SZXN0cmlj
dGlvbnMgcmVzdHJpY3Rpb25zID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LnJlc3RyaWN0aW9ucyhtZWRpYVR5cGUoKSk7CisgICAgaWYgKChyZXN0cmljdGlvbnMgJiBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKSA9PSBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKQorICAgICAg
ICBwYXVzZVNlc3Npb24oKTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6dXBkYXRl
Q2xpZW50RGF0YUJ1ZmZlcmluZygpCit7CisgICAgaWYgKG1fY2xpZW50RGF0YUJ1ZmZlcmluZ1Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyLnN0b3Ao
KTsKKworICAgIG1fY2xpZW50LnNldFNob3VsZEJ1ZmZlckRhdGEoTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25DYW5Mb2FkTWVkaWEoKnRoaXMpKTsKK30KKworYm9v
bCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6aXNIaWRkZW4oKSBjb25zdAoreworICAgIHJldHVybiBt
X2NsaWVudC5lbGVtZW50SXNIaWRkZW4oKTsKK30KKworUGxhdGZvcm1NZWRpYVNlc3Npb246OkRp
c3BsYXlUeXBlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpkaXNwbGF5VHlwZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY2xpZW50LmRpc3BsYXlUeXBlKCk7Cit9CisKK1N0cmluZyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdAoreworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKworZG91YmxlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRp
YVNlc3Npb25EdXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZh
bGlkVGltZSgpOworfQorCitkb3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlh
U2Vzc2lvbkN1cnJlbnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Omlu
dmFsaWRUaW1lKCk7Cit9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMTk0N2Y0ZTg2
ZGNkNTgyZmU4YjYyNDY4MmZhZjgyNDRiNjA5ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCkBAIC0wLDAgKzEs
MTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtTWVkaWFTZXNzaW9uX2gK
KyNkZWZpbmUgUGxhdGZvcm1NZWRpYVNlc3Npb25faAorCisjaW5jbHVkZSAiTWVkaWFQcm9kdWNl
ci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQuaCIKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7
CitjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDsKKworY2xhc3MgUGxhdGZvcm1NZWRp
YVNlc3Npb24KKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIDogcHVi
bGljIE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQKKyNlbmRpZgoreworcHVibGljOgorICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IGNyZWF0ZShQbGF0Zm9y
bU1lZGlhU2Vzc2lvbkNsaWVudCYpOworCisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb25DbGllbnQmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1lZGlhU2Vzc2lv
bigpOworCisgICAgZW51bSBNZWRpYVR5cGUgeworICAgICAgICBOb25lID0gMCwKKyAgICAgICAg
VmlkZW8sCisgICAgICAgIEF1ZGlvLAorICAgICAgICBXZWJBdWRpbywKKyAgICB9OworICAgIE1l
ZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdDsKKyAgICBNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlw
ZSgpIGNvbnN0OworCisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIElkbGUsCisgICAgICAgIFBs
YXlpbmcsCisgICAgICAgIFBhdXNlZCwKKyAgICAgICAgSW50ZXJydXB0ZWQsCisgICAgfTsKKyAg
ICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2b2lkIHNldFN0
YXRlKFN0YXRlKTsKKworICAgIGVudW0gSW50ZXJydXB0aW9uVHlwZSB7CisgICAgICAgIFN5c3Rl
bVNsZWVwLAorICAgICAgICBFbnRlcmluZ0JhY2tncm91bmQsCisgICAgICAgIFN5c3RlbUludGVy
cnVwdGlvbiwKKyAgICB9OworICAgIGVudW0gRW5kSW50ZXJydXB0aW9uRmxhZ3MgeworICAgICAg
ICBOb0ZsYWdzID0gMCwKKyAgICAgICAgTWF5UmVzdW1lUGxheWluZyA9IDEgPDwgMCwKKyAgICB9
OworICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSk7CisgICAgdm9p
ZCBlbmRJbnRlcnJ1cHRpb24oRW5kSW50ZXJydXB0aW9uRmxhZ3MpOworCisgICAgdm9pZCBhcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKSBjb25zdDsKKyAgICB2b2lkIGFwcGxpY2F0aW9u
V2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0OworCisgICAgYm9vbCBjbGllbnRXaWxsQmVnaW5Q
bGF5YmFjaygpOworICAgIGJvb2wgY2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKKworICAgIHZv
aWQgcGF1c2VTZXNzaW9uKCk7CisgICAgCisgICAgdm9pZCB2aXNpYmlsaXR5Q2hhbmdlZCgpOwor
CisgICAgU3RyaW5nIHRpdGxlKCkgY29uc3Q7CisgICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3Q7
CisgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7CisKKyAgICBlbnVtIFJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSB7CisgICAgICAgIE5vQ29tbWFuZCwKKyAgICAgICAgUGxheUNvbW1hbmQs
CisgICAgICAgIFBhdXNlQ29tbWFuZCwKKyAgICAgICAgU3RvcENvbW1hbmQsCisgICAgICAgIFRv
Z2dsZVBsYXlQYXVzZUNvbW1hbmQsCisgICAgICAgIEJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFu
ZCwKKyAgICAgICAgRW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwKKyAgICAgICAgQmVnaW5TZWVr
aW5nRm9yd2FyZENvbW1hbmQsCisgICAgICAgIEVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKKyAg
ICB9OworICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0Owor
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21t
YW5kVHlwZSk7CisKKyAgICBlbnVtIERpc3BsYXlUeXBlIHsKKyAgICAgICAgTm9ybWFsLAorICAg
ICAgICBGdWxsc2NyZWVuLAorICAgICAgICBPcHRpbWl6ZWQsCisgICAgfTsKKyAgICBEaXNwbGF5
VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OworCisgICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0Owor
CisgICAgdmlydHVhbCBib29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNz
UGxheWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50
CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFy
Z2V0PiYmKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJyaWRlIHsgfQorI2VuZGlm
CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzUGxheWJhY2tU
YXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisK
K3Byb3RlY3RlZDoKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGNsaWVudERhdGFC
dWZmZXJpbmdUaW1lckZpcmVkKCk7CisgICAgdm9pZCB1cGRhdGVDbGllbnREYXRhQnVmZmVyaW5n
KCk7CisKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgbV9jbGllbnQ7CisgICAgVGlt
ZXIgbV9jbGllbnREYXRhQnVmZmVyaW5nVGltZXI7CisgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICBT
dGF0ZSBtX3N0YXRlVG9SZXN0b3JlOworICAgIGludCBtX2ludGVycnVwdGlvbkNvdW50IHsgMCB9
OworICAgIGJvb2wgbV9ub3RpZnlpbmdDbGllbnQ7Cit9OworCitjbGFzcyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGxhdGZvcm1NZWRpYVNl
c3Npb25DbGllbnQpOworcHVibGljOgorICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50KCkg
eyB9CisgICAgCisgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1l
ZGlhVHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb3JtYWw7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtYXlS
ZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
dXNwZW5kUGxheWJhY2soKSA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVNlc3Npb25U
aXRsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgbWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25z
dDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xD
b21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpID0g
MDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRCdWZmZXJEYXRhKGJvb2wpIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBlbGVtZW50SXNIaWRkZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
CisgICAgdmlydHVhbCBib29sIG92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24o
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVE
aWRDaGFuZ2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1Rhcmdl
dChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgeyB9CisgICAgdmlydHVhbCBib29sIGNhblBs
YXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFj
a1RhcmdldChib29sKSB7IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBsYXRmb3JtTWVk
aWFTZXNzaW9uQ2xpZW50KCkgeyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAppbmRleCA5M2VjYmNlYzY0YjBlYTc1MWVkNjYx
NDBkZTIxYmYzNjIxMzBkZWVhLi5kYzg2MjFmOWUwN2NlZmU3NDM2NWY3ZTFiNDQ3NDAwNTQ5NjM4
YmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFT
ZXNzaW9uTWFuYWdlcklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKQEAgLTUzLDggKzUzLDggQEAgcHJpdmF0ZToKIAog
ICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9u
V2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBib29sIHNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lv
biYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKFBs
YXRmb3JtTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVOb3dQ
bGF5aW5nSW5mbygpOwogICAgIApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCB2b2lkIGNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3QgTWVkaWFTZXNzaW9u
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEo
Y29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICBS
ZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPiBtX29iamNPYnNlcnZlcjsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLm1tCmluZGV4IDA0NDQyNzFjNjFjMDQyYWJlMGVjMjQ1YTVlZTBmN2FhMGM3
ODk2NGQuLjYxNzU1Y2VmMzYzYjNjZjBkYzk5NDUzNjUwYzcyNWEzYmE5OTUzMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLm1tCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAj
aW1wb3J0ICJNZWRpYVBsYXllci5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJTUEkuaCIKLSNpbXBv
cnQgIk1lZGlhU2Vzc2lvbi5oIgorI2ltcG9ydCAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNp
bXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJTeXN0ZW1NZW1vcnkuaCIKICNpbXBvcnQg
IldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKQEAgLTEzOCwyNyArMTM4LDI3IEBAIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVzZXRSZXN0cmljdGlvbnMoKQogCiAgICAgc3RhdGljIHdr
RGV2aWNlQ2xhc3MgZGV2aWNlQ2xhc3MgPSBpb3NEZXZpY2VDbGFzcygpOwogICAgIGlmIChkZXZp
Y2VDbGFzcyA9PSB3a0RldmljZUNsYXNzaVBob25lIHx8IGRldmljZUNsYXNzID09IHdrRGV2aWNl
Q2xhc3NpUG9kKQotICAgICAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBJ
bmxpbmVWaWRlb1BsYXliYWNrUmVzdHJpY3RlZCk7CisgICAgICAgIGFkZFJlc3RyaWN0aW9uKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbywgSW5saW5lVmlkZW9QbGF5YmFja1Jlc3RyaWN0ZWQp
OwogCiAgICAgaWYgKHJhbVNpemUoKSA8IHN5c3RlbU1lbW9yeVJlcXVpcmVkRm9yVmlkZW9JbkJh
Y2tncm91bmRUYWJzKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6OnJlc2V0UmVzdHJpY3Rpb25zIC0gcmVzdHJpY3RpbmcgdmlkZW8gaW4gYmFja2dyb3VuZCB0
YWJzIGJlY2F1c2Ugc3lzdGVtIG1lbW9yeSA9ICV6dWwiLCByYW1TaXplKCkpOwotICAgICAgICBh
ZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBCYWNrZ3JvdW5kVGFiUGxheWJhY2tS
ZXN0cmljdGVkKTsKKyAgICAgICAgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OlZpZGVvLCBCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkKTsKICAgICB9CiAKLSAgICBh
ZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBDb25jdXJyZW50UGxheWJhY2tOb3RQ
ZXJtaXR0ZWQpOwotICAgIGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6VmlkZW8sIEJhY2tn
cm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkKTsKKyAgICBhZGRSZXN0cmljdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8sIENvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZCk7
CisgICAgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvLCBCYWNrZ3Jv
dW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCk7CiAKLSAgICByZW1vdmVSZXN0cmljdGlvbihN
ZWRpYVNlc3Npb246OkF1ZGlvLCBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQpOwotICAg
IHJlbW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6QXVkaW8sIEJhY2tncm91bmRQcm9jZXNz
UGxheWJhY2tSZXN0cmljdGVkKTsKKyAgICByZW1vdmVSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6QXVkaW8sIENvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZCk7CisgICAgcmVt
b3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvLCBCYWNrZ3JvdW5kUHJv
Y2Vzc1BsYXliYWNrUmVzdHJpY3RlZCk7CiAKLSAgICByZW1vdmVSZXN0cmljdGlvbihNZWRpYVNl
c3Npb246OldlYkF1ZGlvLCBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQpOwotICAgIHJl
bW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8sIEJhY2tncm91bmRQcm9jZXNz
UGxheWJhY2tSZXN0cmljdGVkKTsKKyAgICByZW1vdmVSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6V2ViQXVkaW8sIENvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZCk7CisgICAg
cmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvLCBCYWNrZ3Jv
dW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCk7CiAKLSAgICByZW1vdmVSZXN0cmljdGlvbihN
ZWRpYVNlc3Npb246OkF1ZGlvLCBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOwotICAg
IHJlbW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6VmlkZW8sIE1ldGFkYXRhUHJlbG9hZGlu
Z05vdFBlcm1pdHRlZCk7CisgICAgcmVtb3ZlUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246OkF1ZGlvLCBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOworICAgIHJlbW92ZVJl
c3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbywgTWV0YWRhdGFQcmVsb2FkaW5n
Tm90UGVybWl0dGVkKTsKIAotICAgIGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6QXVkaW8s
IEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkKTsKLSAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNl
c3Npb246OlZpZGVvLCBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCk7CisgICAgYWRkUmVzdHJp
Y3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvLCBBdXRvUHJlbG9hZGluZ05vdFBlcm1p
dHRlZCk7CisgICAgYWRkUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvLCBB
dXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCk7CiB9CiAKIGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCkKQEAgLTE2OCw3ICsxNjgsNyBAQCBi
b29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6Omhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgp
CiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y29uZmlndXJlV2lyZUxlc3NUYXJnZXRN
b25pdG9yaW5nKCkKIHsKLSAgICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSB0aGlz
LT5zZXNzaW9ucygpOworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25z
ID0gdGhpcy0+c2Vzc2lvbnMoKTsKICAgICBib29sIHJlcXVpcmVzTW9uaXRvcmluZyA9IGZhbHNl
OwogCiAgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbnMpIHsKQEAgLTE4Niw3ICsxODYs
NyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0
TW9uaXRvcmluZygpCiAgICAgICAgIFttX29iamNPYnNlcnZlciBzdG9wTW9uaXRvcmluZ0FpclBs
YXlSb3V0ZXNdOwogfQogCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxs
QmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCitib29sIE1lZGlhU2Vzc2lvbk1h
bmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYg
c2Vzc2lvbikKIHsKICAgICBpZiAoIU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsQmVn
aW5QbGF5YmFjayhzZXNzaW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk1LDcgKzE5
NSw3IEBAIGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxCZWdpblBsYXli
YWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLXZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhNZWRpYVNl
c3Npb24mIHNlc3Npb24pCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxs
RW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhzZXNzaW9uKTsKICAgICB1cGRh
dGVOb3dQbGF5aW5nSW5mbygpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcmlPUzo6dXBkYXRlTm93UGxheWluZ0luZm8oKQogICAgIExPRyhNZWRpYSwgIk1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvIik7CiAKICAgICBNUE5vd1Bs
YXlpbmdJbmZvQ2VudGVyICpub3dQbGF5aW5nID0gKE1QTm93UGxheWluZ0luZm9DZW50ZXIgKilb
Z2V0TVBOb3dQbGF5aW5nSW5mb0NlbnRlckNsYXNzKCkgZGVmYXVsdENlbnRlcl07Ci0gICAgY29u
c3QgTWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lvbiA9IHRoaXMtPmN1cnJlbnRTZXNzaW9uKCk7
CisgICAgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uID0gdGhpcy0+
Y3VycmVudFNlc3Npb24oKTsKICAgICAKICAgICBpZiAoIWN1cnJlbnRTZXNzaW9uKSB7CiAgICAg
ICAgIFtub3dQbGF5aW5nIHNldE5vd1BsYXlpbmdJbmZvOm5pbF07CkBAIC0yMjcsMTggKzIyNywx
OCBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKCkK
ICAgICBpZiAoc3RkOjppc2Zpbml0ZShjdXJyZW50VGltZSkgJiYgY3VycmVudFRpbWUgIT0gTWVk
aWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpCiAgICAgICAgIFtpbmZvIHNldFZhbHVlOkAoY3VycmVu
dFRpbWUpIGZvcktleTpNUE5vd1BsYXlpbmdJbmZvUHJvcGVydHlFbGFwc2VkUGxheWJhY2tUaW1l
XTsKICAgICAKLSAgICBbaW5mbyBzZXRWYWx1ZTooY3VycmVudFNlc3Npb24tPnN0YXRlKCkgPT0g
TWVkaWFTZXNzaW9uOjpQbGF5aW5nID8gQFlFUyA6IEBOTykgZm9yS2V5Ok1QTm93UGxheWluZ0lu
Zm9Qcm9wZXJ0eVBsYXliYWNrUmF0ZV07CisgICAgW2luZm8gc2V0VmFsdWU6KGN1cnJlbnRTZXNz
aW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nID8gQFlFUyA6IEBO
TykgZm9yS2V5Ok1QTm93UGxheWluZ0luZm9Qcm9wZXJ0eVBsYXliYWNrUmF0ZV07CiAgICAgW25v
d1BsYXlpbmcgc2V0Tm93UGxheWluZ0luZm86aW5mby5nZXQoKV07CiB9CiAKLWJvb2wgTWVkaWFT
ZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbkNhbkxvYWRNZWRpYShjb25zdCBNZWRpYVNlc3Npb24m
IHNlc3Npb24pIGNvbnN0Citib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25DYW5M
b2FkTWVkaWEoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHNlc3Npb24uc3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlBsYXlpbmcgfHwgIXNl
c3Npb24uaXNIaWRkZW4oKSB8fCBzZXNzaW9uLmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFTZXNzaW9u
OjpPcHRpbWl6ZWQ7CisgICAgcmV0dXJuIHNlc3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UGxheWluZyB8fCAhc2Vzc2lvbi5pc0hpZGRlbigpIHx8IHNlc3Npb24uZGlzcGxh
eVR5cGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6T3B0aW1pemVkOwogfQogCiB2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hh
bmdlKCkKIHsKLSAgICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbkxpc3QgPSBzZXNzaW9u
cygpOworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IHNlc3Npb25MaXN0ID0gc2Vz
c2lvbnMoKTsKICAgICBib29sIGhhdmVUYXJnZXRzID0gW21fb2JqY09ic2VydmVyIGhhc1dpcmVs
ZXNzVGFyZ2V0c0F2YWlsYWJsZV07CiAgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogc2Vzc2lvbkxp
c3QpCiAgICAgICAgIHNlc3Npb24tPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hh
bmdlKGhhdmVUYXJnZXRzKTsKQEAgLTM4MywxOSArMzgzLDE5IEBAIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBOU1VJbnRlZ2VyIHR5cGUgPSBbW1tub3RpZmljYXRpb24gdXNl
ckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVLZXldIHVu
c2lnbmVkSW50ZWdlclZhbHVlXTsKLSAgICBNZWRpYVNlc3Npb246OkVuZEludGVycnVwdGlvbkZs
YWdzIGZsYWdzID0gTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOworICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpO
b0ZsYWdzOwogCiAgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJy
dXB0aW9uXSAtIHR5cGUgPSAlaSIsIChpbnQpdHlwZSk7CiAKICAgICBpZiAodHlwZSA9PSBBVkF1
ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVFbmRlZCAmJiBbW1tub3RpZmljYXRpb24gdXNlcklu
Zm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvbktleV0gdW5z
aWduZWRJbnRlZ2VyVmFsdWVdID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uU2hv
dWxkUmVzdW1lKQotICAgICAgICBmbGFncyA9IE1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWlu
ZzsKKyAgICAgICAgZmxhZ3MgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWlu
ZzsKIAogICAgIFdlYlRocmVhZFJ1biheewogICAgICAgICBpZiAoIV9jYWxsYmFjaykKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVy
cnVwdGlvblR5cGVCZWdhbikKLSAgICAgICAgICAgIF9jYWxsYmFjay0+YmVnaW5JbnRlcnJ1cHRp
b24oTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb24pOworICAgICAgICAgICAgX2NhbGxi
YWNrLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3lzdGVtSW50ZXJy
dXB0aW9uKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgX2NhbGxiYWNrLT5lbmRJbnRlcnJ1
cHRpb24oZmxhZ3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKaW5kZXggZjViMjg4NTBkZDQx
OGU3ZjAzZjYxNTcxMGY1YWY3MTNmZTgxZDlkNS4uZTI3NDQxODgwOWI3ZDQ1MTUyZmZhM2JkYWMw
OWY2NGU2MjliNDE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcApAQCAtMzksMTEgKzM5LDEx
IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qga0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplID0gNDA5NjsK
IAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKQogewotICAg
IExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpIC0g
dHlwZXM6IFZpZGVvKCVkKSwgQXVkaW8oJWQpLCBXZWJBdWRpbyglZCkiLCBjb3VudChNZWRpYVNl
c3Npb246OlZpZGVvKSwgY291bnQoTWVkaWFTZXNzaW9uOjpBdWRpbyksIGNvdW50KE1lZGlhU2Vz
c2lvbjo6V2ViQXVkaW8pKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjp1
cGRhdGVTZXNzaW9uU3RhdGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVk
aW8oJWQpIiwgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvKSwgY291bnQoUGxhdGZv
cm1NZWRpYVNlc3Npb246OkF1ZGlvKSwgY291bnQoUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1
ZGlvKSk7CiAKLSAgICBpZiAoaGFzKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pKQorICAgIGlmICho
YXMoUGxhdGZvcm1NZWRpYVNlc3Npb246OldlYkF1ZGlvKSkKICAgICAgICAgQXVkaW9TZXNzaW9u
OjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrV2ViQXVkaW9CdWZmZXJT
aXplKTsKLSAgICBlbHNlIGlmICgoaGFzKE1lZGlhU2Vzc2lvbjo6VmlkZW8pIHx8IGhhcyhNZWRp
YVNlc3Npb246OkF1ZGlvKSkgJiYgU2V0dGluZ3M6Omxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNp
emVFbmFibGVkKCkpIHsKKyAgICBlbHNlIGlmICgoaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpW
aWRlbykgfHwgaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbykpICYmIFNldHRpbmdzOjps
b3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZCgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTY3MjU+IEZpZ3VyZSBvdXQgd2h5IGVuYWJsaW5nIHRo
ZSBjb2RlIGJlbG93CiAgICAgICAgIC8vIGNhdXNlcyBtZWRpYSBMYXlvdXRUZXN0cyB0byBmYWls
IG9uIDEwLjguCiAKQEAgLTYwLDkgKzYwLDkgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp1
cGRhdGVTZXNzaW9uU3RhdGUoKQogICAgIGlmICghU2V0dGluZ3M6OnNob3VsZE1hbmFnZUF1ZGlv
U2Vzc2lvbkNhdGVnb3J5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChoYXMoTWVkaWFT
ZXNzaW9uOjpWaWRlbykgfHwgaGFzKE1lZGlhU2Vzc2lvbjo6QXVkaW8pKQorICAgIGlmIChoYXMo
UGxhdGZvcm1NZWRpYVNlc3Npb246OlZpZGVvKSB8fCBoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246
OkF1ZGlvKSkKICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0Q2F0ZWdv
cnkoQXVkaW9TZXNzaW9uOjpNZWRpYVBsYXliYWNrKTsKLSAgICBlbHNlIGlmIChoYXMoTWVkaWFT
ZXNzaW9uOjpXZWJBdWRpbykpCisgICAgZWxzZSBpZiAoaGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpXZWJBdWRpbykpCiAgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldENh
dGVnb3J5KEF1ZGlvU2Vzc2lvbjo6QW1iaWVudFNvdW5kKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDcwYWMx
NzI2ODAyMmZiNDliYzljZDgxYjc1ZmFjMWE1MWIyNmM0YmEuLjdlODk0MDY0MTUwYjhkNjE2ZTZk
ZWRjNjRlODA5NWQ3YTVmYTQyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTEzNDcsNyArMTM0Nyw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXI6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29u
c3QgQXV0aGVudGljCiAgICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhUGxheWVyU2hvdWxkV2FpdEZv
clJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwogfQogCi12b2lk
IE1lZGlhUGxheWVyOjpoYW5kbGVQbGF5YmFja0NvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3ZvaWQgTWVkaWFQbGF5ZXI6OmhhbmRsZVBsYXli
YWNrQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
IGNvbW1hbmQpCiB7CiAgICAgbV9jbGllbnQubWVkaWFQbGF5ZXJIYW5kbGVQbGF5YmFja0NvbW1h
bmQoY29tbWFuZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAppbmRleCA5MjgzZThmN2Q2YTdkMjMzZDMzNWQzYTA1YWRjM2Y3YmQxYTkwNWJj
Li4xNjY1MTMwMGVmZjZkNzc0N2JkNTJhNTFmN2I3ZGQ2NmNjOWUyOTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTM2LDEwICszNiwx
MCBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRl
ICJNZWRpYVBsYXllckVudW1zLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2VQdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVNlc3Npb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2
YXRlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CkBAIC0yNjgsNyArMjY4LDcg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgCiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyU2hv
dWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVySGFuZGxlUGxheWJhY2tDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJIYW5kbGVQbGF5
YmFja0NvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZSkgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZUFwcGxpY2F0aW9u
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIApAQCAtNTk0LDcg
KzU5NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBzaG91bGRXYWl0Rm9yUmVzcG9u
c2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jik7Ci0gICAgdm9pZCBoYW5kbGVQbGF5YmFja0NvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUpOworICAgIHZvaWQgaGFuZGxlUGxheWJhY2tDb21tYW5kKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpOwogICAgIFN0cmluZyBz
b3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICBWZWN0b3I8U3RyaW5nPiBw
cmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDc5YWUy
ZmZiNTdmMjQ1NmQ0YzAxYjY5NzIzYzkxZTEyYzI4ODY5MGQuLmIyYTdjMWJiOTBjMWVlODhlZWQ1
MDM4NmMwMzJiODhiZTI5YWZmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnJhdGVDaGFuZ2VkKCkKIHsKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiBQTEFURk9STShJT1MpCiAgICAgaWYgKGlz
Q3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSkKLSAgICAgICAgbV9wbGF5ZXItPmhhbmRs
ZVBsYXliYWNrQ29tbWFuZChyYXRlKCkgPyBNZWRpYVNlc3Npb246OlBsYXlDb21tYW5kIDogTWVk
aWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQpOworICAgICAgICBtX3BsYXllci0+aGFuZGxlUGxheWJh
Y2tDb21tYW5kKHJhdGUoKSA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCA6IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQpOwogI2VuZGlmCiAKICAgICBtX3BsYXll
ci0+cmF0ZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCmluZGV4IGNiY2U1ZTMzNjA4MWVmNmE3YTMw
YTlkODIzYjg4MzBjNDAwNTJmYWMuLjdkMTQ0MjE3ZDc4Yzc4MmJhOGFhMmNjY2M1YTZmZTU2ZTlk
MzZkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21t
YW5kTGlzdGVuZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQpAQCAtNTUsNyArNTUsNyBAQCBSZW1vdGVDb21tYW5kTGlz
dGVuZXJJT1M6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJD
bGllbnQmCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdl
YWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNz
aW9uOjpQYXVzZUNvbW1hbmQpOworICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21t
YW5kKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuIE1QUmVtb3RlQ29tbWFuZEhhbmRs
ZXJTdGF0dXNTdWNjZXNzOwpAQCAtNjUsNyArNjUsNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJJ
T1M6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQm
CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdlYWtUaGlz
LT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNzaW9uOjpQ
bGF5Q29tbWFuZCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCk7CiAg
ICAgICAgIH0pOwogCiAgICAgICAgIHJldHVybiBNUFJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVz
U3VjY2VzczsKQEAgLTc1LDcgKzc1LDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1v
dGVDb21tYW5kTGlzdGVuZXJJT1MoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JgogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGll
bnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6VG9nZ2xlUGxh
eVBhdXNlQ29tbWFuZCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2
ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1
c2VDb21tYW5kKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuIE1QUmVtb3RlQ29tbWFu
ZEhhbmRsZXJTdGF0dXNTdWNjZXNzOwpAQCAtODUsNyArODUsNyBAQCBSZW1vdGVDb21tYW5kTGlz
dGVuZXJJT1M6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJD
bGllbnQmCiAgICAgICAgIEFTU0VSVChbZXZlbnQgaXNLaW5kT2ZDbGFzczpnZXRNUFNlZWtDb21t
YW5kRXZlbnRDbGFzcygpXSk7CiAKICAgICAgICAgTVBTZWVrQ29tbWFuZEV2ZW50KiBzZWVrRXZl
bnQgPSBzdGF0aWNfY2FzdDxNUFNlZWtDb21tYW5kRXZlbnQgKj4oZXZlbnQpOwotICAgICAgICBN
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kID0gW3NlZWtFdmVu
dCB0eXBlXSA9PSBNUFNlZWtDb21tYW5kRXZlbnRUeXBlQmVnaW5TZWVraW5nID8gTWVkaWFTZXNz
aW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQgOiBNZWRpYVNlc3Npb246OkVuZFNlZWtp
bmdCYWNrd2FyZENvbW1hbmQ7CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCA9IFtzZWVrRXZlbnQgdHlwZV0gPT0gTVBTZWVrQ29t
bWFuZEV2ZW50VHlwZUJlZ2luU2Vla2luZyA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNl
ZWtpbmdCYWNrd2FyZENvbW1hbmQgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0Jh
Y2t3YXJkQ29tbWFuZDsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgY29t
bWFuZF0gewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTEwMCw3ICsxMDAsNyBAQCBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVD
b21tYW5kTGlzdGVuZXJDbGllbnQmCiAgICAgICAgIEFTU0VSVChbZXZlbnQgaXNLaW5kT2ZDbGFz
czpnZXRNUFNlZWtDb21tYW5kRXZlbnRDbGFzcygpXSk7CiAgICAgICAgIE1QU2Vla0NvbW1hbmRF
dmVudCogc2Vla0V2ZW50ID0gc3RhdGljX2Nhc3Q8TVBTZWVrQ29tbWFuZEV2ZW50ICo+KGV2ZW50
KTsKIAotICAgICAgICBNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21t
YW5kID0gW3NlZWtFdmVudCB0eXBlXSA9PSBNUFNlZWtDb21tYW5kRXZlbnRUeXBlQmVnaW5TZWVr
aW5nID8gTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCA6IE1lZGlhU2Vz
c2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kOworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQgPSBbc2Vla0V2ZW50IHR5cGVd
ID09IE1QU2Vla0NvbW1hbmRFdmVudFR5cGVCZWdpblNlZWtpbmcgPyBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kOwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dl
YWtUaGlzLCBjb21tYW5kXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDA3ZjhjYmQ4ODQ3MGIyMTI4NTlkMDM1MmEwNWRk
MDBiZTQzMjVmYjkuLjkyZjRmN2E4NDc1MGQyMzMxYjUyZDNlZWE2YjcxOWE1ZDZkZDg0ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI1NzgsMTUgKzI1NzgsMTUgQEAg
VmVjdG9yPFN0cmluZz4gSW50ZXJuYWxzOjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKFNvdXJj
ZUJ1ZmZlciogYnVmZmVyLCBjb25zdAogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgSW50ZXJuYWxz
OjpiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpCiB7Ci0gICAgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2hhcmVkTWFuYWdlcigpLmJlZ2luSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6U3lz
dGVtSW50ZXJydXB0aW9uKTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVw
dGlvbik7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24o
Y29uc3QgU3RyaW5nJiBmbGFnc1N0cmluZykKIHsKLSAgICBNZWRpYVNlc3Npb246OkVuZEludGVy
cnVwdGlvbkZsYWdzIGZsYWdzID0gTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOworICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpOb0ZsYWdzOwogCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZsYWdzU3RyaW5n
LCAiTWF5UmVzdW1lUGxheWluZyIpKQotICAgICAgICBmbGFncyA9IE1lZGlhU2Vzc2lvbjo6TWF5
UmVzdW1lUGxheWluZzsKKyAgICAgICAgZmxhZ3MgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5
UmVzdW1lUGxheWluZzsKICAgICAKICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkuZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKIH0KQEAgLTI2MDMsMTMgKzI2MDMsMTMgQEAg
dm9pZCBJbnRlcm5hbHM6OmFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNvbnN0CiAK
IHZvaWQgSW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoY29uc3QgU3RyaW5n
JiBtZWRpYVR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVzdHJpY3Rpb25zU3RyaW5nLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUg
PSBNZWRpYVNlc3Npb246Ok5vbmU7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlw
ZSBtZWRpYVR5cGUgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9uZTsKICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UobWVkaWFUeXBlU3RyaW5nLCAiVmlkZW8iKSkKLSAgICAgICAgbWVkaWFUeXBl
ID0gTWVkaWFTZXNzaW9uOjpWaWRlbzsKKyAgICAgICAgbWVkaWFUeXBlID0gUGxhdGZvcm1NZWRp
YVNlc3Npb246OlZpZGVvOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1lZGlhVHlw
ZVN0cmluZywgIkF1ZGlvIikpCi0gICAgICAgIG1lZGlhVHlwZSA9IE1lZGlhU2Vzc2lvbjo6QXVk
aW87CisgICAgICAgIG1lZGlhVHlwZSA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdWRpbzsKICAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtZWRpYVR5cGVTdHJpbmcsICJXZWJBdWRpbyIp
KQotICAgICAgICBtZWRpYVR5cGUgPSBNZWRpYVNlc3Npb246OldlYkF1ZGlvOworICAgICAgICBt
ZWRpYVR5cGUgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87CiAgICAgZWxzZSB7CiAg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0yNjgy
LDI0ICsyNjgyLDI0IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRNZWRpYUVsZW1lbnRSZXN0cmljdGlv
bnMoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyCiAKIHZvaWQgSW50ZXJuYWxz
Ojpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kU3RyaW5nLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21t
YW5kVHlwZSBjb21tYW5kOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9s
Q29tbWFuZFR5cGUgY29tbWFuZDsKICAgICAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29t
bWFuZFN0cmluZywgIlBsYXkiKSkKLSAgICAgICAgY29tbWFuZCA9IE1lZGlhU2Vzc2lvbjo6UGxh
eUNvbW1hbmQ7CisgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNv
bW1hbmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29tbWFuZFN0cmluZywgIlBh
dXNlIikpCi0gICAgICAgIGNvbW1hbmQgPSBNZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZDsKKyAg
ICAgICAgY29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQ7CiAgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29tbWFuZFN0cmluZywgIlN0b3AiKSkKLSAgICAg
ICAgY29tbWFuZCA9IE1lZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQ7CisgICAgICAgIGNvbW1hbmQg
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoY29tbWFuZFN0cmluZywgIlRvZ2dsZVBsYXlQYXVzZSIpKQotICAgICAgICBj
b21tYW5kID0gTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kOworICAgICAgICBj
b21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQ7CiAg
ICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29tbWFuZFN0cmluZywgIkJlZ2luU2Vla2lu
Z0JhY2t3YXJkIikpCi0gICAgICAgIGNvbW1hbmQgPSBNZWRpYVNlc3Npb246OkJlZ2luU2Vla2lu
Z0JhY2t3YXJkQ29tbWFuZDsKKyAgICAgICAgY29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoY29tbWFuZFN0cmluZywgIkVuZFNlZWtpbmdCYWNrd2FyZCIpKQotICAgICAgICBjb21t
YW5kID0gTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kOworICAgICAgICBj
b21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ7
CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29tbWFuZFN0cmluZywgIkJlZ2luU2Vl
a2luZ0ZvcndhcmQiKSkKLSAgICAgICAgY29tbWFuZCA9IE1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVr
aW5nRm9yd2FyZENvbW1hbmQ7CisgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoY29tbWFuZFN0cmluZywgIkVuZFNlZWtpbmdGb3J3YXJkIikpCi0gICAgICAgIGNvbW1h
bmQgPSBNZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZDsKKyAgICAgICAgY29t
bWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1
cm47Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>