<?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>70346</bug_id>
          
          <creation_ts>2011-10-18 11:58:54 -0700</creation_ts>
          <short_desc>Rename some &quot;Cue&quot; classes to &quot;TextTrack&quot;</short_desc>
          <delta_ts>2011-10-20 11:05:26 -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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>annacc</cc>
    
    <cc>japhet</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>486206</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-18 11:58:54 -0700</bug_when>
    <thetext>As suggested in bug 70269, rename CueLoader -&gt; TextTrackLoader and CachedCues -&gt; CachedTextTrack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486207</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-10-18 11:59:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/10305321&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486284</commentid>
    <comment_count>2</comment_count>
      <attachid>111496</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-18 13:45:02 -0700</bug_when>
    <thetext>Created attachment 111496
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486297</commentid>
    <comment_count>3</comment_count>
      <attachid>111496</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-18 14:03:53 -0700</bug_when>
    <thetext>Comment on attachment 111496
Proposed patch

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

&gt; Source/WebCore/GNUmakefile.list.am:1643
&gt;  	Source/WebCore/html/ColorInputType.h \
&gt; -	Source/WebCore/html/CueIndex.cpp \
&gt; -	Source/WebCore/html/CueIndex.h \
&gt; +	Source/WebCore/html/TextTrackCueIndex.cpp \
&gt; +	Source/WebCore/html/TextTrackCueIndex.h \
&gt;  	Source/WebCore/html/DateInputType.cpp \

Probably better to keep these sorted alphabetically.

&gt; Source/WebCore/WebCore.gypi:2771
&gt;              &apos;loader/CrossOriginPreflightResultCache.cpp&apos;,
&gt; -            &apos;loader/CueLoader.cpp&apos;,
&gt; -            &apos;loader/CueLoader.h&apos;,
&gt; +            &apos;loader/TextTrackLoader.cpp&apos;,
&gt; +            &apos;loader/TextTrackLoader.h&apos;,
&gt;              &apos;loader/DocumentLoader.cpp&apos;,

Probably better to keep these sorted alphabetically.

&gt; Source/WebCore/WebCore.gypi:5363
&gt;              &apos;html/ColorInputType.h&apos;,
&gt; -            &apos;html/CueIndex.cpp&apos;,
&gt; -            &apos;html/CueIndex.h&apos;,
&gt; +            &apos;html/TextTrackCueIndex.cpp&apos;,
&gt; +            &apos;html/TextTrackCueIndex.h&apos;,
&gt;              &apos;html/DOMFormData.cpp&apos;,

Probably better to keep these sorted alphabetically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486420</commentid>
    <comment_count>4</comment_count>
      <attachid>111496</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-10-18 16:26:19 -0700</bug_when>
    <thetext>Comment on attachment 111496
Proposed patch

And Qt? It&apos;s missing the change in the WebCore.pro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486949</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-19 13:29:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 111496 [details])
&gt; And Qt? It&apos;s missing the change in the WebCore.pro.

My mistake - I assumed the project file didn&apos;t have any of these files because the feature isn&apos;t enabled but I see that it does have some of the .h files for some reason. I will fix it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487711</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-20 11:05:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/98000</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111496</attachid>
            <date>2011-10-18 13:45:02 -0700</date>
            <delta_ts>2011-10-18 16:26:19 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_rename_classes.txt</filename>
            <type>text/plain</type>
            <size>83301</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3Nzg0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTEtMTAtMTggIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIHNvbWUgQ3Vl
IGNsYXNzZXMgdG8gVGV4dFRyYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MDM0NgorCisgICAgICAgIFJlbmFtZSBDdWVMb2FkZXIgLT4gVGV4dFRy
YWNrTG9hZGVyLCBDYWNoZWRDdWVzIC0+IENhY2hlZFRleHRUcmFjaywgYW5kIEN1ZUluZGV4IC0+
IFRleHRUcmFja0luZGV4LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVuYW1lIG9ubHkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaHRtbC9DdWVJbmRleC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9DdWVJ
bmRleC5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmxvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmN1ZUxvYWRpbmdTdGFydGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKToKKyAgICAgICAg
KiBodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRl
eHRUcmFjazo6c2hvdWxkTG9hZEN1ZXMpOgorICAgICAgICAqIGh0bWwvTXV0YWJsZVRleHRUcmFj
ay5oOgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrSW5kZXguY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0N1ZUluZGV4LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZVNldDo6ZGlmZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVTZXQ6
OnVuaW9uU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZVNldDo6YWRkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZVNldDo6Y29udGFpbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlU2V0OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlU2V0Ojppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZVNldDo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tJbmRleDo6ZmV0Y2hOZXdDdWVzRnJv
bUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tJbmRleDo6cmVtb3ZlQ3Vlc0Zy
b21JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tJbmRleDo6dmlzaWJsZUN1ZXNB
dFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrSW5kZXg6OmFkZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tJbmRleDo6cmVtb3ZlKToKKyAgICAgICAgKiBodG1sL1RleHRU
cmFja0luZGV4Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VlSW5kZXguaC4K
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZVNldDo6VGV4dFRyYWNrQ3VlU2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZVNldDo6flRleHRUcmFja0N1ZVNldCk6CisgICAg
ICAgICogbG9hZGVyL0N1ZUxvYWRlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogbG9hZGVyL0N1
ZUxvYWRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcC4KKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6VGV4dFRyYWNrTG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6flRleHRUcmFja0xvYWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OmN1ZUxvYWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0xvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6
Om5ld0N1ZXNQYXJzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpnZXRO
ZXdDdWVzKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0xvYWRlckNsaWVudDo6flRleHRUcmFja0xvYWRlckNsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEN1ZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRD
dWVzLmg6IFJlbW92ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Q3Vlcyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDdWVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6
Q2FjaGVkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6fkNh
Y2hlZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRhdGEp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEN1ZXMuaC4KKwogMjAxMS0xMC0xOCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gRml4IHNodXRkb3duIHJhY2Ugd2hlbiBwb3N0aW5nIG1haW4gdGhyZWFkIHRhc2sgdG8gQ0NU
aHJlYWRQcm94eSBhbmQgZW5hYmxlIHRlc3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gOTc3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMjA0Myw3ICsyMDQzLDcgQEAgRU5ESUYgKCkKIAogSUYgKEVOQUJMRV9WSURFT19U
UkFDSykKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKLSAgICAgICAgaHRtbC9DdWVJ
bmRleC5jcHAKKyAgICAgICAgaHRtbC9UZXh0VHJhY2tDdWVJbmRleC5jcHAKICAgICAgICAgaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcAogICAgICAgICBodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNw
cAogICAgICAgICBodG1sL011dGFibGVUZXh0VHJhY2suY3BwCkBAIC0yMDUyLDggKzIwNTIsOCBA
QCBJRiAoRU5BQkxFX1ZJREVPX1RSQUNLKQogICAgICAgICBodG1sL1RleHRUcmFja0N1ZUxpc3Qu
Y3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAogICAgICAgICBodG1sL3Ry
YWNrL1dlYlZUVFRva2VuaXplci5jcHAKLSAgICAgICAgbG9hZGVyL0N1ZUxvYWRlci5jcHAKLSAg
ICAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZEN1ZXMuY3BwCisgICAgICAgIGxvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwCisgICAgICAgIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCiAg
ICAgKQogRU5ESUYoKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlz
aW9uIDk3NzczKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTYzOCw4ICsxNjM4LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
Q29sb3JJbnB1dFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBl
LmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VlSW5kZXguY3BwIFwKLQlTb3VyY2UvV2ViQ29y
ZS9odG1sL0N1ZUluZGV4LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlSW5k
ZXguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUluZGV4LmggXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0ZUlucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRU
eXBlLmNwcCBcCkBAIC0yMTE0LDggKzIxMTQsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBcCi0JU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEN1ZXMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQ3Vlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggXAogCVNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgXApAQCAtMjEzNSw2ICsy
MTMzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVl
dENsaWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggXAogCVNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIFwKQEAgLTIxNDQsOCArMjE0
NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggXAotCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9D
dWVMb2FkZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmggXApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gOTc3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTI3NjYsOCArMjc2Niw4IEBACiAgICAgICAgICAgICAn
bG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAnLAogICAgICAgICAgICAgJ2xvYWRl
ci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwJywKLSAgICAgICAgICAgICdsb2FkZXIvQ3Vl
TG9hZGVyLmNwcCcsCi0gICAgICAgICAgICAnbG9hZGVyL0N1ZUxvYWRlci5oJywKKyAgICAgICAg
ICAgICdsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCcsCisgICAgICAgICAgICAnbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
JywKICAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oJywKQEAgLTI4MzYs
OCArMjgzNiw2IEBACiAgICAgICAgICAgICAnbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgnLAot
ICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRDdWVzLmNwcCcsCi0gICAgICAgICAgICAn
bG9hZGVyL2NhY2hlL0NhY2hlZEN1ZXMuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oJywK
ICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwJywKQEAgLTI4NDksNiAr
Mjg0Nyw4IEBACiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVz
dC5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwJywKICAg
ICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgnLAorICAgICAgICAgICAgJ2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwJywKKyAgICAgICAgICAgICdsb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCcs
CkBAIC01MzU4LDggKzUzNTgsOCBAQAogICAgICAgICAgICAgJ2h0bWwvQ29sbGVjdGlvbkNhY2hl
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9Db2xvcklucHV0VHlwZS5jcHAnLAogICAgICAgICAg
ICAgJ2h0bWwvQ29sb3JJbnB1dFR5cGUuaCcsCi0gICAgICAgICAgICAnaHRtbC9DdWVJbmRleC5j
cHAnLAotICAgICAgICAgICAgJ2h0bWwvQ3VlSW5kZXguaCcsCisgICAgICAgICAgICAnaHRtbC9U
ZXh0VHJhY2tDdWVJbmRleC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrQ3VlSW5k
ZXguaCcsCiAgICAgICAgICAgICAnaHRtbC9ET01Gb3JtRGF0YS5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvRE9NRm9ybURhdGEuaCcsCiAgICAgICAgICAgICAnaHRtbC9ET01TZXR0YWJsZVRva2Vu
TGlzdC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTc3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg1LDggKzg1
LDggQEAKIAkJMDcwOUZDNEUxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDlGQzRE
MTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi87IH07CiAJCTA3MkM4
QjExMTMxQzUxODYwMEE0RkNFOSAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMDkx
MkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi87
IH07CiAJCTA3MzVFRTZBMEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM1RUU2OTBGNDBD
NUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBD
YWNoZWRDdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmNwcCAqLzsgfTsKLQkJ
MDc1Mzg2MDMxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAv
KiBDYWNoZWRDdWVzLmggKi87IH07CisJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNo
ZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87
IH07CisJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAxMTQ0ODlF
OTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKIAkJMDc2RjBEMEUxMkI4MTky
NzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2
QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OwogCQkwN0IwMTEz
RjEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjAxMTNFMTAzMjI0MjIw
MEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oICovOyB9OwogCQkwODA2RTU3
QTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODA2RTU3OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0
cml4LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTQxMzEsOCArNDEzMSw4IEBACiAJCUIxNDM1M0Y4MTM4RUE5NUIwMEQ1MzI3NiAvKiBKU01lZGlh
U3RyZWFtTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMTQzNTNGNjEzOEVBOTVCMDBENTMyNzYgLyogSlNNZWRpYVN0cmVhbUxpc3QuY3BwICov
OyB9OwogCQlCMTQzNTNGOTEzOEVBOTVCMDBENTMyNzYgLyogSlNNZWRpYVN0cmVhbUxpc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxNDM1M0Y3MTM4
RUE5NUIwMEQ1MzI3NiAvKiBKU01lZGlhU3RyZWFtTGlzdC5oICovOyB9OwogCQlCMTgyNzQ5MzEz
NENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMTgyNzQ5MjEzNENBNEMxMDBCOThDMkQgLyog
Q2FsbGJhY2tGdW5jdGlvbi5jcHAgKi87IH07Ci0JCUIxQUQ0RTVDMTNBMTJBMEIwMDg0NkIyNyAv
KiBDdWVJbmRleC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMUFENEU0QjEzQTEyQTBCMDA4NDZCMjcgLyogQ3VlSW5kZXguY3BwICovOyB9OwotCQlC
MUFENEU1RDEzQTEyQTBCMDA4NDZCMjcgLyogQ3VlSW5kZXguaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTRDMTNBMTJBMEIwMDg0NkIyNyAvKiBD
dWVJbmRleC5oICovOyB9OworCQlCMUFENEU1QzEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNr
Q3VlSW5kZXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjFBRDRFNEIxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUluZGV4LmNwcCAqLzsg
fTsKKwkJQjFBRDRFNUQxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUluZGV4LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU0QzEzQTEy
QTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlSW5kZXguaCAqLzsgfTsKIAkJQjFBRDRFNUUxM0Ex
MkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTREMTNBMTJBMEIwMDg0NkIyNyAvKiBM
b2FkYWJsZVRleHRUcmFjay5jcHAgKi87IH07CiAJCUIxQUQ0RTVGMTNBMTJBMEIwMDg0NkIyNyAv
KiBMb2FkYWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjFBRDRFNEUxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNr
LmggKi87IH07CiAJCUIxQUQ0RTYyMTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0
RTUxMTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrLmNwcCAqLzsgfTsKQEAgLTQx
NDMsOCArNDE0Myw4IEBACiAJCUIxQUQ0RTY5MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tD
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0
RTU4MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWUuaCAqLzsgfTsKIAkJQjFBRDRFNkEx
M0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNTkxM0ExMkEwQjAwODQ2QjI3IC8q
IFRleHRUcmFja0N1ZUxpc3QuY3BwICovOyB9OwogCQlCMUFENEU2QjEzQTEyQTBCMDA4NDZCMjcg
LyogVGV4dFRyYWNrQ3VlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjFBRDRFNUExM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3Qu
aCAqLzsgfTsKLQkJQjFBRDRFNzMxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU3MTEzQTEy
QTQ2MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmNwcCAqLzsgfTsKLQkJQjFBRDRFNzQxM0ExMkE0NjAw
ODQ2QjI3IC8qIEN1ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjFBRDRFNzIxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5oICovOyB9
OworCQlCMUFENEU3MzEzQTEyQTQ2MDA4NDZCMjcgLyogVGV4dFRyYWNrTG9hZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTcxMTNBMTJB
NDYwMDg0NkIyNyAvKiBUZXh0VHJhY2tMb2FkZXIuY3BwICovOyB9OworCQlCMUFENEU3NDEzQTEy
QTQ2MDA4NDZCMjcgLyogVGV4dFRyYWNrTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU3MjEzQTEyQTQ2MDA4NDZCMjcgLyogVGV4dFRy
YWNrTG9hZGVyLmggKi87IH07CiAJCUIxRDVFQ0I1MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFj
a0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMUQ1RUNCNDEzNEI1OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9Owog
CQlCMUU1NDU3QTEzNDYyOTFGMDA5MkE1NDUgLyogTG9jYWxNZWRpYVN0cmVhbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU3MTEzNDYyOTFG
MDA5MkE1NDUgLyogTG9jYWxNZWRpYVN0cmVhbS5jcHAgKi87IH07CiAJCUIxRTU0NTdCMTM0NjI5
MUYwMDkyQTU0NSAvKiBMb2NhbE1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU3MjEzNDYyOTFGMDA5MkE1NDUgLyogTG9jYWxN
ZWRpYVN0cmVhbS5oICovOyB9OwpAQCAtNzA4OCw4ICs3MDg4LDggQEAKIAkJMDcwOUZDNEQxMDI1
REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNsaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzBERDhGNTBGMDE4NjgwMDA3MjdERUIgLyogbWVkaWFDb250cm9scy5jc3Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWVkaWFDb250cm9scy5jc3M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUy
IC8qIENhY2hlZEN1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FjaGVkQ3Vlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NTM4NjAxMTQ0
ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENhY2hlZEN1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc1Mzg2
MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzUzODYwMTE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRy
YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFRleHRUcmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQg
LyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTIyMiw4ICsxMTIyMiw4IEBA
CiAJCUIxNDM1M0Y2MTM4RUE5NUIwMEQ1MzI3NiAvKiBKU01lZGlhU3RyZWFtTGlzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU3RyZWFtTGlzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxNDM1M0Y3MTM4RUE5NUIwMEQ1MzI3NiAv
KiBKU01lZGlhU3RyZWFtTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01lZGlhU3RyZWFtTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMTgyNzQ5
MjEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsYmFja0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQjFBRDRFNEIxM0ExMkEwQjAwODQ2QjI3IC8qIEN1ZUluZGV4LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1ZUluZGV4LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjFBRDRFNEMxM0ExMkEwQjAwODQ2QjI3IC8qIEN1
ZUluZGV4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1ZUluZGV4Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxQUQ0RTRCMTNBMTJBMEIwMDg0NkIyNyAvKiBU
ZXh0VHJhY2tDdWVJbmRleC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUZXh0VHJhY2tDdWVJbmRleC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIx
QUQ0RTRDMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVJbmRleC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tDdWVJbmRleC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMUFENEU0RDEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0
VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9hZGFibGVU
ZXh0VHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMUFENEU0RTEzQTEy
QTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTG9hZGFibGVUZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjFBRDRFNTExM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YWJsZVRleHRUcmFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTIzNCw4ICsxMTIzNCw4IEBACiAJCUIx
QUQ0RTU4MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrQ3VlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIxQUQ0RTU5MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVMaXN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRUcmFja0N1ZUxpc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMUFENEU1QTEzQTEyQTBCMDA4NDZCMjcg
LyogVGV4dFRyYWNrQ3VlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0VHJhY2tDdWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIxQUQ0RTcx
MTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ3VlTG9hZGVyLmNwcDsgcGF0aCA9IGxvYWRlci9DdWVMb2FkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07Ci0JCUIxQUQ0RTcyMTNBMTJBNDYwMDg0NkIy
NyAvKiBDdWVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VlTG9h
ZGVyLmg7IHBhdGggPSBsb2FkZXIvQ3VlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKKwkJQjFBRDRFNzExM0ExMkE0NjAwODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUZXh0VHJhY2tMb2FkZXIuY3Bw
OyBwYXRoID0gbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKKwkJQjFBRDRFNzIxM0ExMkE0NjAwODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0VHJhY2tMb2FkZXIuaDsgcGF0
aCA9IGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQlCMUQ1RUNCNDEzNEI1OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tGdW5jdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NTcxMTM0NjI5MUYwMDkyQTU0NSAvKiBMb2NhbE1l
ZGlhU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2Fs
TWVkaWFTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMUU1NDU3MjEz
NDYyOTFGMDA5MkE1NDUgLyogTG9jYWxNZWRpYVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMb2NhbE1lZGlhU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNzAwNCw4ICsxNzAwNCw2IEBACiAJCQkJOTNDNDQxRkYwRjgxM0FFMTAwQzFBNjM0
IC8qIENvbGxlY3Rpb25UeXBlLmggKi8sCiAJCQkJRjU1QjNEN0YxMjUxRjEyRDAwM0VGMjY5IC8q
IENvbG9ySW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q4MDEyNTFGMTJEMDAzRUYyNjkgLyog
Q29sb3JJbnB1dFR5cGUuaCAqLywKLQkJCQlCMUFENEU0QjEzQTEyQTBCMDA4NDZCMjcgLyogQ3Vl
SW5kZXguY3BwICovLAotCQkJCUIxQUQ0RTRDMTNBMTJBMEIwMDg0NkIyNyAvKiBDdWVJbmRleC5o
ICovLAogCQkJCUY1NUIzRDgxMTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlSW5wdXRUeXBlLmNwcCAq
LywKIAkJCQlGNTVCM0Q4MjEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZUlucHV0VHlwZS5oICovLAog
CQkJCUY1NUIzRDgzMTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUlucHV0VHlwZS5jcHAgKi8s
CkBAIC0xNzMzNyw2ICsxNzMzNSw4IEBACiAJCQkJQjFBRDRFNTYxM0ExMkEwQjAwODQ2QjI3IC8q
IFRleHRUcmFjay5oICovLAogCQkJCUIxQUQ0RTU3MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJh
Y2tDdWUuY3BwICovLAogCQkJCUIxQUQ0RTU4MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tD
dWUuaCAqLywKKwkJCQlCMUFENEU0QjEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlSW5k
ZXguY3BwICovLAorCQkJCUIxQUQ0RTRDMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVJ
bmRleC5oICovLAogCQkJCUIxQUQ0RTU5MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVM
aXN0LmNwcCAqLywKIAkJCQlCMUFENEU1QTEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3Vl
TGlzdC5oICovLAogCQkJCUY1NUIzREE3MTI1MUYxMkQwMDNFRjI2OSAvKiBUaW1lSW5wdXRUeXBl
LmNwcCAqLywKQEAgLTE4NDI2LDggKzE4NDI2LDggQEAKIAkJQThEMkIyNTIxMjg3QTU2MDAwQUY0
RERBIC8qIGNhY2hlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQkwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkQ3Vlcy5jcHAgKi8sCi0JCQkJ
MDc1Mzg2MDExNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuaCAqLywKKwkJCQkwNzUzODYw
MDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLywKKwkJCQkwNzUzODYw
MTE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggKi8sCiAJCQkJQkNCMTZDMDAw
OTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuY3BwICovLAogCQkJCUJDQjE2
QzAxMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmggKi8sCiAJCQkJQkM2
NEI0QzkwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuY3BwICovLApAQCAtMTk4MjUsOCAr
MTk4MjUsOCBAQAogCQkJCUUxQzQxNjExMEY2NTYyRkQwMDkyRDJGQiAvKiBDcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuaCAqLywKIAkJCQlFMUM0MTVERDBGNjU1RDdDMDA5MkQyRkIgLyogQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgKi8sCiAJCQkJRTFDNDE1RDkwRjY1NUQ2RjAw
OTJEMkZCIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCAqLywKLQkJCQlCMUFE
NEU3MTEzQTEyQTQ2MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmNwcCAqLywKLQkJCQlCMUFENEU3MjEz
QTEyQTQ2MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmggKi8sCisJCQkJQjFBRDRFNzExM0ExMkE0NjAw
ODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5jcHAgKi8sCisJCQkJQjFBRDRFNzIxM0ExMkE0NjAw
ODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5oICovLAogCQkJCTkzRTIyN0RCMEFGNTg5QUQwMEQ0
ODMyNCAvKiBEb2N1bWVudExvYWRlci5jcHAgKi8sCiAJCQkJNjU2RDM3MUUwQURCQTVERTAwQTQ1
NTREIC8qIERvY3VtZW50TG9hZGVyLmggKi8sCiAJCQkJOEExMkUzNUMxMUZBMzMyODAwMjU4MzZB
IC8qIERvY3VtZW50TG9hZFRpbWluZy5oICovLApAQCAtMjE4NjksOCArMjE4NjksNiBAQAogCQkJ
CTY1NjU4MTUxMDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODBFNkNFOTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MDFCQTlFMjEzOTNDRUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBl
cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjFBRDRFNUQxM0ExMkEwQjAwODQ2QjI3IC8qIEN1ZUlu
ZGV4LmggaW4gSGVhZGVycyAqLywKLQkJCQlCMUFENEU3NDEzQTEyQTQ2MDA4NDZCMjcgLyogQ3Vl
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTkyRjA4MjQ1RTU5MDAxRTlBQkMgLyog
Q3Vyc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzJBMjBFODJFODdDMDBFN0Y5NzUgLyog
Q3Vyc29yRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMjcyQUQwRTgyRThGMzAwRTdGOTc1
IC8qIEN1cnNvckxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjQzODAsNyArMjQzNzgsOSBAQAog
CQkJCUIyQzNEQTRCMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0U3RyZWFtLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMUFENEU2NzEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMUFENEU2OTEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlCMUFENEU1RDEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3Vl
SW5kZXguaCBpbiBIZWFkZXJzICovLAogCQkJCUIxQUQ0RTZCMTNBMTJBMEIwMDg0NkIyNyAvKiBU
ZXh0VHJhY2tDdWVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUFENEU3NDEzQTEyQTQ2MDA4
NDZCMjcgLyogVGV4dFRyYWNrTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTg3NzBGMTEy
NDJDNTM1MDAyMjI2QkEgLyogVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzg0QTUx
MjM3MERDODAwMEM2MTYxIC8qIFRleHRWaWV3U291cmNlUGFyc2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0U2NThGRjBFQTkyNDhBMDA3RTQ1MzMgLyogVGhlbWUuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQ2MTQsNyArMjQ2MTQsNyBAQAogCQkJCTlCMzc1RURCMTQ0NzhBMDEwMEYzQ0FFNSAvKiBN
aWNyb0RhdGFJdGVtTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRjJENjkxNDQzNUQwNTAw
MTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFD
Q0I0OUQxNDQ4MjRBQzAwQzY3NkQ2IC8qIEltYWdlQnlTaXplQ2FjaGUuaCBpbiBIZWFkZXJzICov
LAotCQkJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwNzUzODYwMzE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4QUE2MUQwMDE0NEQ1OTVCMDBGMzczNTAgLyogQ1NTUmVnaW9u
U3R5bGVSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTI1MTk1LDggKzI1MTk1LDYgQEAKIAkJCQkxQUJBNzZD
QjExRDIwRTU3MDA0QzIwMUMgLyogQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODBFNkNFNDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUwRTU2NkQ2MTM5RTM4QzUwMDIxNDQzMyAvKiBDU1NXcmFwU2hhcGVzLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUIxQUQ0RTVDMTNBMTJBMEIwMDg0NkIyNyAvKiBDdWVJbmRl
eC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMUFENEU3MzEzQTEyQTQ2MDA4NDZCMjcgLyogQ3Vl
TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMUFGMTUxMTFCOUExQTMwMDgwNTEwMyAv
KiBDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBMjYwODI0NUU1OTAwMUU5QUJD
IC8qIEN1cnNvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTYyQ0QzMjU5MTE1N0U1N0MwMDYz
QjBBNyAvKiBDdXN0b21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3Mjc0LDcgKzI3Mjcy
LDkgQEAKIAkJCQlCMkMzREE0QTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dFN0cmVhbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMUFENEU2NjEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIxQUQ0RTY4MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJh
Y2tDdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFBRDRFNUMxM0ExMkEwQjAwODQ2QjI3IC8q
IFRleHRUcmFja0N1ZUluZGV4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxQUQ0RTZBMTNBMTJB
MEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIx
QUQ0RTczMTNBMTJBNDYwMDg0NkIyNyAvKiBUZXh0VHJhY2tMb2FkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDk4NzcwRjAxMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTdCQzg0QTQxMjM3MERDODAwMEM2MTYxIC8qIFRleHRWaWV3U291cmNlUGFy
c2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTY1RDMyMEVBRDEyMTEwMDdFNDUzMyAvKiBU
aGVtZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3NDY3LDcgKzI3NDY3LDcgQEAKIAkJCQk0OUFG
MkQ2QzE0NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5RkM3QTUwMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVz
aE1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzFDQ0I0OUMxNDQ4MjRBQzAwQzY3NkQ2
IC8qIEltYWdlQnlTaXplQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDc1Mzg2MDIxNDQ4
OUU5ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc1Mzg2
MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4QUE2MUNGRjE0NEQ1OTVCMDBGMzczNTAgLyogQ1NTUmVnaW9uU3R5bGVSdWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRleC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRleC5jcHAJKHJldmlzaW9uIDk3NzY5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQotCi0jaW5jbHVkZSAiQ3VlSW5kZXguaCIKLQotI2luY2x1ZGUgIlRleHRU
cmFja0N1ZS5oIgotI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1DdWVTZXQgQ3VlU2V0OjpkaWZmZXJlbmNlKGNvbnN0IEN1ZVNldCYpIGNvbnN0
Ci17Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIEN1ZVNldCgp
OwotfQotCi1DdWVTZXQgQ3VlU2V0Ojp1bmlvblNldChjb25zdCBDdWVTZXQmKSBjb25zdAotewot
ICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50LgotICAgIHJldHVybiBDdWVTZXQoKTsKLX0K
LQotdm9pZCBDdWVTZXQ6OmFkZChjb25zdCBUZXh0VHJhY2tDdWUmKQotewotICAgIC8vIEZJWE1F
KDYyODgzKTogSW1wbGVtZW50LgotfQotCi1ib29sIEN1ZVNldDo6Y29udGFpbnMoY29uc3QgVGV4
dFRyYWNrQ3VlJikgY29uc3QKLXsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgQ3VlU2V0OjpyZW1vdmUoY29uc3QgVGV4dFRyYWNr
Q3VlJikKLXsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KLX0KLQotYm9vbCBDdWVT
ZXQ6OmlzRW1wdHkoKSBjb25zdAotewotICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50Lgot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW50IEN1ZVNldDo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAg
Ly8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgQ3Vl
SW5kZXg6OmZldGNoTmV3Q3Vlc0Zyb21Mb2FkZXIoQ3VlTG9hZGVyKikKLXsKLSAgICAvLyBGSVhN
RSg2Mjg4Myk6IEltcGxlbWVudC4KLX0KLQotdm9pZCBDdWVJbmRleDo6cmVtb3ZlQ3Vlc0Zyb21J
bmRleChjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikKLXsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IElt
cGxlbWVudC4KLX0KLQotQ3VlU2V0IEN1ZUluZGV4Ojp2aXNpYmxlQ3Vlc0F0VGltZShkb3VibGUp
IGNvbnN0Ci17Ci0gICAgLy8gRklYTUUoNjI4NTUpOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIEN1
ZVNldCgpOwotfQotCi12b2lkIEN1ZUluZGV4OjphZGQoVGV4dFRyYWNrQ3VlKikKLXsKLSAgICAv
LyBGSVhNRSg2Mjg5MCk6IEltcGxlbWVudC4KLX0KLQotdm9pZCBDdWVJbmRleDo6cmVtb3ZlKFRl
eHRUcmFja0N1ZSopCi17Ci0gICAgLy8gRklYTUUoNjI4OTApOiBJbXBsZW1lbnQuCi19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0N1ZUluZGV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRleC5o
CShyZXZpc2lvbiA5Nzc2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VlSW5kZXguaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQ3VlSW5kZXhf
aAotI2RlZmluZSBDdWVJbmRleF9oCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KLSNpbmNs
dWRlICJDdWVMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFRleHRUcmFja0N1ZTsKLWNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7
Ci0KLWNsYXNzIEN1ZVNldCB7Ci1wdWJsaWM6Ci0gICAgQ3VlU2V0KCkgeyB9Ci0gICAgfkN1ZVNl
dCgpIHsgfQotICAgIEN1ZVNldCBkaWZmZXJlbmNlKGNvbnN0IEN1ZVNldCYpIGNvbnN0OwotICAg
IEN1ZVNldCB1bmlvblNldChjb25zdCBDdWVTZXQmKSBjb25zdDsKLSAgICB2b2lkIGFkZChjb25z
dCBUZXh0VHJhY2tDdWUmKTsKLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFRleHRUcmFja0N1ZSYp
IGNvbnN0OwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFRleHRUcmFja0N1ZSYpOwotICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0OwotICAgIGludCBzaXplKCkgY29uc3Q7Ci1wcml2YXRlOgotICAgIEhh
c2hTZXQ8VGV4dFRyYWNrQ3VlKj4gbV9zZXQ7Ci19OwotCi1jbGFzcyBDdWVJbmRleCA6IHB1Ymxp
YyBDdWVMb2FkZXJDbGllbnQgewotcHVibGljOgotICAgIC8vIEN1ZUxvYWRlckNsaWVudCBtZXRo
b2RzLgotICAgIHZvaWQgZmV0Y2hOZXdDdWVzRnJvbUxvYWRlcihDdWVMb2FkZXIqKTsKLSAgICB2
b2lkIHJlbW92ZUN1ZXNGcm9tSW5kZXgoY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOwotCi0gICAg
Ly8gUmV0dXJucyBzZXQgb2YgY3VlcyB2aXNpYmxlIGF0IGEgdGltZSBpbiBzZWNvbmRzLgotICAg
IEN1ZVNldCB2aXNpYmxlQ3Vlc0F0VGltZShkb3VibGUpIGNvbnN0OwotICAgIHZvaWQgYWRkKFRl
eHRUcmFja0N1ZSopOwotICAgIHZvaWQgcmVtb3ZlKFRleHRUcmFja0N1ZSopOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAJKHJldmlzaW9uIDk3NzczKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDI4ICs0NCwyOCBAQCBMb2FkYWJsZVRleHRUcmFjazo6fkxvYWRhYmxlVGV4dFRyYWNrKCkKIAog
dm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bG9hZChjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgaWYgKCFtX2N1ZUxvYWRlcikKLSAgICAgICAg
bV9jdWVMb2FkZXIgPSBDdWVMb2FkZXI6OmNyZWF0ZSh0aGlzLCBjb250ZXh0KTsKLSAgICBtX2N1
ZUxvYWRlci0+bG9hZCh1cmwpOworICAgIGlmICghbV9sb2FkZXIpCisgICAgICAgIG1fbG9hZGVy
ID0gVGV4dFRyYWNrTG9hZGVyOjpjcmVhdGUodGhpcywgY29udGV4dCk7CisgICAgbV9sb2FkZXIt
PmxvYWQodXJsKTsKIH0KIAotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0F2YWlsYWJs
ZShDdWVMb2FkZXIqIGxvYWRlcikKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFp
bGFibGUoVGV4dFRyYWNrTG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChsb2Fk
ZXIsIG1fY3VlTG9hZGVyID09IGxvYWRlcik7CisgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIG1f
bG9hZGVyID09IGxvYWRlcik7CiAKICAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KIH0K
IAotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ1N0YXJ0ZWQoQ3VlTG9hZGVyKiBs
b2FkZXIpCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nU3RhcnRlZChUZXh0VHJh
Y2tMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbV9jdWVMb2Fk
ZXIgPT0gbG9hZGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbV9sb2FkZXIgPT0gbG9h
ZGVyKTsKICAgICAKICAgICBzZXRSZWFkeVN0YXRlKFRleHRUcmFjazo6TG9hZGluZyk7CiB9CiAK
LXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmN1ZUxvYWRpbmdDb21wbGV0ZWQoQ3VlTG9hZGVyKiBs
b2FkZXIsIGJvb2wpCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVk
KFRleHRUcmFja0xvYWRlciogbG9hZGVyLCBib29sKQogewotICAgIEFTU0VSVF9VTlVTRUQobG9h
ZGVyLCBtX2N1ZUxvYWRlciA9PSBsb2FkZXIpOworICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCBt
X2xvYWRlciA9PSBsb2FkZXIpOwogCiAgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCShyZXZpc2lvbiA5
Nzc3MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCi0j
aW5jbHVkZSAiQ3VlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCisjaW5jbHVkZSAi
VGV4dFRyYWNrTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB0ZXh0VHJhY2tMb2FkaW5nQ29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCAv
KiBsb2FkaW5nRmFpbGVkICovKSA9IDA7CiB9OwogCi1jbGFzcyBMb2FkYWJsZVRleHRUcmFjayA6
IHB1YmxpYyBUZXh0VHJhY2ssIHByaXZhdGUgQ3VlTG9hZGVyQ2xpZW50IHsKK2NsYXNzIExvYWRh
YmxlVGV4dFRyYWNrIDogcHVibGljIFRleHRUcmFjaywgcHJpdmF0ZSBUZXh0VHJhY2tMb2FkZXJD
bGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNr
PiBjcmVhdGUoVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVudCwgVGV4dFRyYWNrTG9hZGluZ0Ns
aWVudCogbG9hZGluZ0NsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxh
YmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKICAgICB7CkBAIC01
OCwxNSArNTgsMTUgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmlu
ZyYpOwogCiBwcml2YXRlOgotICAgIC8vIEN1ZUxvYWRlckNsaWVudAotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRMb2FkQ3VlcyhDdWVMb2FkZXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIG5ld0N1ZXNBdmFpbGFibGUoQ3VlTG9hZGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGN1
ZUxvYWRpbmdTdGFydGVkKEN1ZUxvYWRlciopOwotICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5n
Q29tcGxldGVkKEN1ZUxvYWRlciosIGJvb2wgbG9hZGluZ0ZhaWxlZCk7CisgICAgLy8gVGV4dFRy
YWNrTG9hZGVyQ2xpZW50CisgICAgdmlydHVhbCBib29sIHNob3VsZExvYWRDdWVzKFRleHRUcmFj
a0xvYWRlciopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc0F2YWls
YWJsZShUZXh0VHJhY2tMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ1N0YXJ0
ZWQoVGV4dFRyYWNrTG9hZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdDb21wbGV0
ZWQoVGV4dFRyYWNrTG9hZGVyKiwgYm9vbCBsb2FkaW5nRmFpbGVkKTsKIAogICAgIExvYWRhYmxl
VGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCosIFRleHRUcmFja0xvYWRpbmdDbGllbnQqLCBjb25z
dCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UsIGJvb2wgaXNEZWZhdWx0KTsKIAotICAgIE93blB0cjxDdWVMb2FkZXI+IG1fY3VlTG9hZGVy
OworICAgIE93blB0cjxUZXh0VHJhY2tMb2FkZXI+IG1fbG9hZGVyOwogICAgIFRleHRUcmFja0xv
YWRpbmdDbGllbnQqIG1fbG9hZGluZ0NsaWVudDsKICAgICBib29sIG1faXNEZWZhdWx0OwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5oCShyZXZpc2lvbiA5Nzc3
MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNpbmNs
dWRlICJDdWVMb2FkZXIuaCIKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKKyNpbmNsdWRlICJUZXh0
VHJhY2tMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVJbmRl
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVJbmRl
eC5jcHAJKHJldmlzaW9uIDk3NzY5KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0N1ZUluZGV4
LmNwcDo5Nzc2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlSW5kZXguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkN1ZUluZGV4
LmgiCisKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWVM
aXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ3VlU2V0IEN1ZVNldDo6ZGlmZmVyZW5j
ZShjb25zdCBDdWVTZXQmKSBjb25zdAoreworICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50
LgorICAgIHJldHVybiBDdWVTZXQoKTsKK30KKworQ3VlU2V0IEN1ZVNldDo6dW5pb25TZXQoY29u
c3QgQ3VlU2V0JikgY29uc3QKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KKyAg
ICByZXR1cm4gQ3VlU2V0KCk7Cit9CisKK3ZvaWQgQ3VlU2V0OjphZGQoY29uc3QgVGV4dFRyYWNr
Q3VlJikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KK30KKworYm9vbCBDdWVT
ZXQ6OmNvbnRhaW5zKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0Cit7CisgICAgLy8gRklYTUUo
NjI4ODMpOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEN1ZVNldDo6
cmVtb3ZlKGNvbnN0IFRleHRUcmFja0N1ZSYpCit7CisgICAgLy8gRklYTUUoNjI4ODMpOiBJbXBs
ZW1lbnQuCit9CisKK2Jvb2wgQ3VlU2V0Ojppc0VtcHR5KCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RSg2Mjg4Myk6IEltcGxlbWVudC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2ludCBDdWVTZXQ6
OnNpemUoKSBjb25zdAoreworICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50LgorICAgIHJl
dHVybiAwOworfQorCit2b2lkIEN1ZUluZGV4OjpmZXRjaE5ld0N1ZXNGcm9tTG9hZGVyKEN1ZUxv
YWRlciopCit7CisgICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgQ3Vl
SW5kZXg6OnJlbW92ZUN1ZXNGcm9tSW5kZXgoY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopCit7Cisg
ICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCit9CisKK0N1ZVNldCBDdWVJbmRleDo6dmlz
aWJsZUN1ZXNBdFRpbWUoZG91YmxlKSBjb25zdAoreworICAgIC8vIEZJWE1FKDYyODU1KTogSW1w
bGVtZW50LgorICAgIHJldHVybiBDdWVTZXQoKTsKK30KKwordm9pZCBDdWVJbmRleDo6YWRkKFRl
eHRUcmFja0N1ZSopCit7CisgICAgLy8gRklYTUUoNjI4OTApOiBJbXBsZW1lbnQuCit9CisKK3Zv
aWQgQ3VlSW5kZXg6OnJlbW92ZShUZXh0VHJhY2tDdWUqKQoreworICAgIC8vIEZJWE1FKDYyODkw
KTogSW1wbGVtZW50LgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVJbmRleC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVJbmRleC5jcHAJKHJldmlzaW9uIDk3
NzY5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVJbmRleC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDc1ICsyNyw3NSBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQog
Ci0jaW5jbHVkZSAiQ3VlSW5kZXguaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWVJbmRleC5oIgog
CiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUN1ZVNldCBDdWVTZXQ6OmRpZmZlcmVuY2UoY29u
c3QgQ3VlU2V0JikgY29uc3QKK1RleHRUcmFja0N1ZVNldCBUZXh0VHJhY2tDdWVTZXQ6OmRpZmZl
cmVuY2UoY29uc3QgVGV4dFRyYWNrQ3VlU2V0JikgY29uc3QKIHsKICAgICAvLyBGSVhNRSg2Mjg4
Myk6IEltcGxlbWVudC4KLSAgICByZXR1cm4gQ3VlU2V0KCk7CisgICAgcmV0dXJuIFRleHRUcmFj
a0N1ZVNldCgpOwogfQogCi1DdWVTZXQgQ3VlU2V0Ojp1bmlvblNldChjb25zdCBDdWVTZXQmKSBj
b25zdAorVGV4dFRyYWNrQ3VlU2V0IFRleHRUcmFja0N1ZVNldDo6dW5pb25TZXQoY29uc3QgVGV4
dFRyYWNrQ3VlU2V0JikgY29uc3QKIHsKICAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4K
LSAgICByZXR1cm4gQ3VlU2V0KCk7CisgICAgcmV0dXJuIFRleHRUcmFja0N1ZVNldCgpOwogfQog
Ci12b2lkIEN1ZVNldDo6YWRkKGNvbnN0IFRleHRUcmFja0N1ZSYpCit2b2lkIFRleHRUcmFja0N1
ZVNldDo6YWRkKGNvbnN0IFRleHRUcmFja0N1ZSYpCiB7CiAgICAgLy8gRklYTUUoNjI4ODMpOiBJ
bXBsZW1lbnQuCiB9CiAKLWJvb2wgQ3VlU2V0Ojpjb250YWlucyhjb25zdCBUZXh0VHJhY2tDdWUm
KSBjb25zdAorYm9vbCBUZXh0VHJhY2tDdWVTZXQ6OmNvbnRhaW5zKGNvbnN0IFRleHRUcmFja0N1
ZSYpIGNvbnN0CiB7CiAgICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIEN1ZVNldDo6cmVtb3ZlKGNvbnN0IFRleHRUcmFja0N1ZSYpCit2
b2lkIFRleHRUcmFja0N1ZVNldDo6cmVtb3ZlKGNvbnN0IFRleHRUcmFja0N1ZSYpCiB7CiAgICAg
Ly8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCiB9CiAKLWJvb2wgQ3VlU2V0Ojppc0VtcHR5KCkg
Y29uc3QKK2Jvb2wgVGV4dFRyYWNrQ3VlU2V0Ojppc0VtcHR5KCkgY29uc3QKIHsKICAgICAvLyBG
SVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWludCBDdWVT
ZXQ6OnNpemUoKSBjb25zdAoraW50IFRleHRUcmFja0N1ZVNldDo6c2l6ZSgpIGNvbnN0CiB7CiAg
ICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
Q3VlSW5kZXg6OmZldGNoTmV3Q3Vlc0Zyb21Mb2FkZXIoQ3VlTG9hZGVyKikKK3ZvaWQgVGV4dFRy
YWNrQ3VlSW5kZXg6OmZldGNoTmV3Q3Vlc0Zyb21Mb2FkZXIoVGV4dFRyYWNrTG9hZGVyKikKIHsK
ICAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KIH0KIAotdm9pZCBDdWVJbmRleDo6cmVt
b3ZlQ3Vlc0Zyb21JbmRleChjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikKK3ZvaWQgVGV4dFRyYWNr
Q3VlSW5kZXg6OnJlbW92ZUN1ZXNGcm9tSW5kZXgoY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopCiB7
CiAgICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCiB9CiAKLUN1ZVNldCBDdWVJbmRleDo6
dmlzaWJsZUN1ZXNBdFRpbWUoZG91YmxlKSBjb25zdAorVGV4dFRyYWNrQ3VlU2V0IFRleHRUcmFj
a0N1ZUluZGV4Ojp2aXNpYmxlQ3Vlc0F0VGltZShkb3VibGUpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUUoNjI4NTUpOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIEN1ZVNldCgpOworICAgIHJldHVybiBU
ZXh0VHJhY2tDdWVTZXQoKTsKIH0KIAotdm9pZCBDdWVJbmRleDo6YWRkKFRleHRUcmFja0N1ZSop
Cit2b2lkIFRleHRUcmFja0N1ZUluZGV4OjphZGQoVGV4dFRyYWNrQ3VlKikKIHsKICAgICAvLyBG
SVhNRSg2Mjg5MCk6IEltcGxlbWVudC4KIH0KIAotdm9pZCBDdWVJbmRleDo6cmVtb3ZlKFRleHRU
cmFja0N1ZSopCit2b2lkIFRleHRUcmFja0N1ZUluZGV4OjpyZW1vdmUoVGV4dFRyYWNrQ3VlKikK
IHsKICAgICAvLyBGSVhNRSg2Mjg5MCk6IEltcGxlbWVudC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrQ3VlSW5kZXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRUcmFja0N1ZUluZGV4LmgJKHJldmlzaW9uIDk3NzY5KQkoZnJvbSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0N1ZUluZGV4Lmg6OTc3NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRUcmFja0N1ZUluZGV4LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEN1ZUluZGV4X2gKKyNkZWZpbmUgQ3VlSW5kZXhfaAorCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ3VlTG9hZGVyLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2tDdWU7Citj
bGFzcyBUZXh0VHJhY2tDdWVMaXN0OworCitjbGFzcyBDdWVTZXQgeworcHVibGljOgorICAgIEN1
ZVNldCgpIHsgfQorICAgIH5DdWVTZXQoKSB7IH0KKyAgICBDdWVTZXQgZGlmZmVyZW5jZShjb25z
dCBDdWVTZXQmKSBjb25zdDsKKyAgICBDdWVTZXQgdW5pb25TZXQoY29uc3QgQ3VlU2V0JikgY29u
c3Q7CisgICAgdm9pZCBhZGQoY29uc3QgVGV4dFRyYWNrQ3VlJik7CisgICAgYm9vbCBjb250YWlu
cyhjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZShjb25zdCBUZXh0
VHJhY2tDdWUmKTsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKyAgICBpbnQgc2l6ZSgpIGNv
bnN0OworcHJpdmF0ZToKKyAgICBIYXNoU2V0PFRleHRUcmFja0N1ZSo+IG1fc2V0OworfTsKKwor
Y2xhc3MgQ3VlSW5kZXggOiBwdWJsaWMgQ3VlTG9hZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAv
LyBDdWVMb2FkZXJDbGllbnQgbWV0aG9kcy4KKyAgICB2b2lkIGZldGNoTmV3Q3Vlc0Zyb21Mb2Fk
ZXIoQ3VlTG9hZGVyKik7CisgICAgdm9pZCByZW1vdmVDdWVzRnJvbUluZGV4KGNvbnN0IFRleHRU
cmFja0N1ZUxpc3QqKTsKKworICAgIC8vIFJldHVybnMgc2V0IG9mIGN1ZXMgdmlzaWJsZSBhdCBh
IHRpbWUgaW4gc2Vjb25kcy4KKyAgICBDdWVTZXQgdmlzaWJsZUN1ZXNBdFRpbWUoZG91YmxlKSBj
b25zdDsKKyAgICB2b2lkIGFkZChUZXh0VHJhY2tDdWUqKTsKKyAgICB2b2lkIHJlbW92ZShUZXh0
VHJhY2tDdWUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlSW5kZXguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUluZGV4LmgJKHJldmlzaW9u
IDk3NzY5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVJbmRleC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywxMiArMjMsMTIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgQ3VlSW5kZXhfaAotI2RlZmluZSBDdWVJbmRleF9oCisjaWZuZGVmIFRleHRUcmFja0N1
ZUluZGV4X2gKKyNkZWZpbmUgVGV4dFRyYWNrQ3VlSW5kZXhfaAogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogCi0jaW5jbHVkZSAiQ3VlTG9hZGVyLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrTG9h
ZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzYsMTIgKzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHRUcmFja0N1
ZTsKIGNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CiAKLWNsYXNzIEN1ZVNldCB7CitjbGFzcyBUZXh0
VHJhY2tDdWVTZXQgewogcHVibGljOgotICAgIEN1ZVNldCgpIHsgfQotICAgIH5DdWVTZXQoKSB7
IH0KLSAgICBDdWVTZXQgZGlmZmVyZW5jZShjb25zdCBDdWVTZXQmKSBjb25zdDsKLSAgICBDdWVT
ZXQgdW5pb25TZXQoY29uc3QgQ3VlU2V0JikgY29uc3Q7CisgICAgVGV4dFRyYWNrQ3VlU2V0KCkg
eyB9CisgICAgflRleHRUcmFja0N1ZVNldCgpIHsgfQorICAgIFRleHRUcmFja0N1ZVNldCBkaWZm
ZXJlbmNlKGNvbnN0IFRleHRUcmFja0N1ZVNldCYpIGNvbnN0OworICAgIFRleHRUcmFja0N1ZVNl
dCB1bmlvblNldChjb25zdCBUZXh0VHJhY2tDdWVTZXQmKSBjb25zdDsKICAgICB2b2lkIGFkZChj
b25zdCBUZXh0VHJhY2tDdWUmKTsKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFRleHRUcmFja0N1
ZSYpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFRleHRUcmFja0N1ZSYpOwpAQCAtNTEs
MTQgKzUxLDE0IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxUZXh0VHJhY2tDdWUqPiBtX3NldDsK
IH07CiAKLWNsYXNzIEN1ZUluZGV4IDogcHVibGljIEN1ZUxvYWRlckNsaWVudCB7CitjbGFzcyBU
ZXh0VHJhY2tDdWVJbmRleCA6IHB1YmxpYyBUZXh0VHJhY2tMb2FkZXJDbGllbnQgewogcHVibGlj
OgotICAgIC8vIEN1ZUxvYWRlckNsaWVudCBtZXRob2RzLgotICAgIHZvaWQgZmV0Y2hOZXdDdWVz
RnJvbUxvYWRlcihDdWVMb2FkZXIqKTsKKyAgICAvLyBUZXh0VHJhY2tMb2FkZXJDbGllbnQgbWV0
aG9kcy4KKyAgICB2b2lkIGZldGNoTmV3Q3Vlc0Zyb21Mb2FkZXIoVGV4dFRyYWNrTG9hZGVyKik7
CiAgICAgdm9pZCByZW1vdmVDdWVzRnJvbUluZGV4KGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsK
IAogICAgIC8vIFJldHVybnMgc2V0IG9mIGN1ZXMgdmlzaWJsZSBhdCBhIHRpbWUgaW4gc2Vjb25k
cy4KLSAgICBDdWVTZXQgdmlzaWJsZUN1ZXNBdFRpbWUoZG91YmxlKSBjb25zdDsKKyAgICBUZXh0
VHJhY2tDdWVTZXQgdmlzaWJsZUN1ZXNBdFRpbWUoZG91YmxlKSBjb25zdDsKICAgICB2b2lkIGFk
ZChUZXh0VHJhY2tDdWUqKTsKICAgICB2b2lkIHJlbW92ZShUZXh0VHJhY2tDdWUqKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcAkocmV2aXNpb24gOTc3NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwx
OTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCi0KLSNpbmNsdWRlICJDdWVMb2FkZXIuaCIKLQotI2luY2x1ZGUgIkNhY2hl
ZEN1ZXMuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLUN1ZUxvYWRlcjo6Q3VlTG9hZGVyKEN1ZUxv
YWRlckNsaWVudCogY2xpZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAg
IDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRl
eHQpCi0gICAgLCBtX2N1ZUxvYWRUaW1lcih0aGlzLCAmQ3VlTG9hZGVyOjpjdWVMb2FkVGltZXJG
aXJlZCkKLSAgICAsIG1fc3RhdGUoSWRsZSkKLSAgICAsIG1fcGFyc2VPZmZzZXQoMCkKLSAgICAs
IG1fbmV3Q3Vlc0F2YWlsYWJsZShmYWxzZSkKLXsKLX0KLQotQ3VlTG9hZGVyOjp+Q3VlTG9hZGVy
KCkKLXsKLSAgICBpZiAobV9jYWNoZWRDdWVEYXRhKQotICAgICAgICBtX2NhY2hlZEN1ZURhdGEt
PnJlbW92ZUNsaWVudCh0aGlzKTsKLX0KLQotdm9pZCBDdWVMb2FkZXI6OmN1ZUxvYWRUaW1lckZp
cmVkKFRpbWVyPEN1ZUxvYWRlcj4qIHRpbWVyKQotewotICAgIEFTU0VSVF9VTlVTRUQodGltZXIs
IHRpbWVyID09ICZtX2N1ZUxvYWRUaW1lcik7Ci0gICAgCi0gICAgaWYgKG1fbmV3Q3Vlc0F2YWls
YWJsZSkgewotICAgICAgICBtX25ld0N1ZXNBdmFpbGFibGUgPSBmYWxzZTsKLSAgICAgICAgbV9j
bGllbnQtPm5ld0N1ZXNBdmFpbGFibGUodGhpcyk7IAotICAgIH0KLSAgICAKLSAgICBpZiAobV9z
dGF0ZSA+PSBGaW5pc2hlZCkKLSAgICAgICAgbV9jbGllbnQtPmN1ZUxvYWRpbmdDb21wbGV0ZWQo
dGhpcywgbV9zdGF0ZSA9PSBGYWlsZWQpOwotfQotCi12b2lkIEN1ZUxvYWRlcjo6cHJvY2Vzc05l
d0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIEFTU0VSVChtX2NhY2hl
ZEN1ZURhdGEgPT0gcmVzb3VyY2UpOwotICAgIAotICAgIGlmIChtX3N0YXRlID09IEZhaWxlZCB8
fCAhcmVzb3VyY2UtPmRhdGEoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFNoYXJlZEJ1
ZmZlciogYnVmZmVyID0gcmVzb3VyY2UtPmRhdGEoKTsKLSAgICBpZiAobV9wYXJzZU9mZnNldCA9
PSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3QgY2hhciogZGF0
YTsKLSAgICB1bnNpZ25lZCBsZW5ndGg7Ci0gICAgCi0gICAgaWYgKCFtX2N1ZVBhcnNlcikgewot
ICAgICAgICBpZiAocmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSA9PSAidGV4dC92dHQi
KQotICAgICAgICAgICAgbV9jdWVQYXJzZXIgPSBXZWJWVFRQYXJzZXI6OmNyZWF0ZSh0aGlzLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8v
IERvbid0IHByb2NlZWQgdW50aWwgd2UgaGF2ZSBlbm91Z2ggZGF0YSB0byBjaGVjayBmb3IgdGhl
IFdlYlZUVCBtYWdpYyBpZGVudGlmaWVyLgotICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmll
ckxlbmd0aCA9IFdlYlZUVFBhcnNlcjo6ZmlsZUlkZW50aWZpZXJNYXhpbXVtTGVuZ3RoKCk7Ci0g
ICAgICAgICAgICBpZiAoYnVmZmVyLT5zaXplKCkgPCBpZGVudGlmaWVyTGVuZ3RoKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPGNoYXI+
IGlkZW50aWZpZXI7Ci0gICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgICAgICAg
ICAgd2hpbGUgKG9mZnNldCA8IGlkZW50aWZpZXJMZW5ndGggJiYgKGxlbmd0aCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoZGF0YSwgb2Zmc2V0KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAobGVuZ3Ro
ID4gaWRlbnRpZmllckxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gaWRlbnRp
Zmllckxlbmd0aDsKLSAgICAgICAgICAgICAgICBpZGVudGlmaWVyLmFwcGVuZChkYXRhLCBsZW5n
dGgpOwotICAgICAgICAgICAgICAgIG9mZnNldCArPSBsZW5ndGg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghV2ViVlRUUGFyc2VyOjpoYXNSZXF1aXJlZEZp
bGVJZGVudGlmaWVyKGlkZW50aWZpZXIuZGF0YSgpLCBpZGVudGlmaWVyLnNpemUoKSkpIHsKLSAg
ICAgICAgICAgICAgICBMT0coTWVkaWEsICJDdWVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIC0gZmls
ZSBcIiVzXCIgZG9lcyBub3QgaGF2ZSBXZWJWVFQgbWFnaWMgaGVhZGVyIiwgCi0gICAgICAgICAg
ICAgICAgICAgIHJlc291cmNlLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBGYWlsZWQ7Ci0gICAgICAgICAgICAgICAg
bV9jdWVMb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jdWVQYXJzZXIgPSBX
ZWJWVFRQYXJzZXI6OmNyZWF0ZSh0aGlzLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIAotICAgIEFTU0VSVChtX2N1ZVBhcnNlcik7Ci0gICAgCi0gICAg
d2hpbGUgKChsZW5ndGggPSBidWZmZXItPmdldFNvbWVEYXRhKGRhdGEsIG1fcGFyc2VPZmZzZXQp
KSkgewotICAgICAgICBtX2N1ZVBhcnNlci0+cGFyc2VCeXRlcyhkYXRhLCBsZW5ndGgpOwotICAg
ICAgICBtX3BhcnNlT2Zmc2V0ICs9IGxlbmd0aDsKLSAgICB9Ci0gICAgCi19Ci0KLXZvaWQgQ3Vl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAg
QVNTRVJUKG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7Ci0gICAgCi0gICAgaWYgKCFyZXNv
dXJjZS0+ZGF0YSgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgcHJvY2Vzc05ld0N1ZURh
dGEocmVzb3VyY2UpOwotfQotCi12b2lkIEN1ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIEFTU0VSVChtX2NhY2hlZEN1ZURhdGEgPT0gcmVz
b3VyY2UpOwotCi0gICAgcHJvY2Vzc05ld0N1ZURhdGEocmVzb3VyY2UpOwotCi0gICAgbV9zdGF0
ZSA9IHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgPyBGYWlsZWQgOiBGaW5pc2hlZDsKLQotICAg
IGlmICghbV9jdWVMb2FkVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9jdWVMb2FkVGltZXIu
c3RhcnRPbmVTaG90KDApOwotICAgIAotICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3ZlQ2xpZW50
KHRoaXMpOwotICAgIG1fY2FjaGVkQ3VlRGF0YSA9IDA7Ci19Ci0KLWJvb2wgQ3VlTG9hZGVyOjps
b2FkKGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LT5zaG91bGRMb2FkQ3Vl
cyh0aGlzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGlmIChtX2NhY2hlZEN1
ZURhdGEpIHsKLSAgICAgICAgbV9jYWNoZWRDdWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0g
ICAgICAgIG1fY2FjaGVkQ3VlRGF0YSA9IDA7Ci0gICAgfQotICAgIAotICAgIEFTU0VSVChtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwot
ICAgIAotICAgIFJlc291cmNlUmVxdWVzdCBjdWVSZXF1ZXN0KGRvY3VtZW50LT5jb21wbGV0ZVVS
TCh1cmwpKTsKLSAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIg
PSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBtX2NhY2hlZEN1ZURhdGEg
PSBzdGF0aWNfY2FzdDxDYWNoZWRDdWVzKj4oY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RD
dWVzKGN1ZVJlcXVlc3QpKTsKLSAgICBpZiAobV9jYWNoZWRDdWVEYXRhKQotICAgICAgICBtX2Nh
Y2hlZEN1ZURhdGEtPmFkZENsaWVudCh0aGlzKTsKLSAgICAKLSAgICBtX2NsaWVudC0+Y3VlTG9h
ZGluZ1N0YXJ0ZWQodGhpcyk7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgQ3Vl
TG9hZGVyOjpuZXdDdWVzUGFyc2VkKCkKLXsKLSAgICBpZiAobV9jdWVMb2FkVGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9uZXdDdWVzQXZhaWxhYmxlID0gdHJ1ZTsK
LSAgICBtX2N1ZUxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgQ3VlTG9hZGVy
OjpnZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKQot
ewotICAgIEFTU0VSVChtX2N1ZVBhcnNlcik7Ci0gICAgaWYgKG1fY3VlUGFyc2VyKQotICAgICAg
ICBtX2N1ZVBhcnNlci0+Z2V0TmV3Q3VlcyhvdXRwdXRDdWVzKTsKLX0KLQotfQotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmgJKHJldmlzaW9uIDk3NzczKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDk2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEN1ZUxvYWRlcl9oCi0jZGVmaW5lIEN1ZUxvYWRl
cl9oCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KLSNpbmNsdWRlICJDYWNoZWRDdWVzLmgi
Ci0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiVGltZXIuaCIK
LSNpbmNsdWRlICJXZWJWVFRQYXJzZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ3VlTG9hZGVyOwotY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKLQotY2xhc3MgQ3VlTG9hZGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5DdWVMb2FkZXJDbGllbnQoKSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
TG9hZEN1ZXMoQ3VlTG9hZGVyKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzQXZhaWxh
YmxlKEN1ZUxvYWRlciopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ1N0YXJ0ZWQo
Q3VlTG9hZGVyKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nQ29tcGxldGVkKEN1
ZUxvYWRlciosIGJvb2wgbG9hZGluZ0ZhaWxlZCkgPSAwOwotfTsKLQotY2xhc3MgQ3VlTG9hZGVy
IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50LCBwcml2YXRlIFdlYlZUVFBhcnNlckNsaWVu
dCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VlTG9hZGVyKTsgCi0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3VlTG9hZGVy
PiBjcmVhdGUoQ3VlTG9hZGVyQ2xpZW50KiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEN1ZUxvYWRlcihj
bGllbnQsIGNvbnRleHQpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+Q3VlTG9hZGVyKCk7Ci0gICAg
Ci0gICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmKTsKLSAgICB2b2lkIGdldE5ld0N1ZXMoVmVjdG9y
PFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1ZXMpOwotICAgIAotcHJpdmF0ZToKLQot
ICAgIC8vIENhY2hlZFJlc291cmNlQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKENh
Y2hlZFJlc291cmNlKik7Ci0gICAgCi0gICAgLy8gV2ViVlRUUGFyc2VyQ2xpZW50Ci0gICAgdmly
dHVhbCB2b2lkIG5ld0N1ZXNQYXJzZWQoKTsKLSAgICAKLSAgICBDdWVMb2FkZXIoQ3VlTG9hZGVy
Q2xpZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIAotICAgIHZvaWQgcHJvY2Vz
c05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIGN1ZUxvYWRUaW1lckZpcmVk
KFRpbWVyPEN1ZUxvYWRlcj4qKTsKLQotICAgIGVudW0gU3RhdGUgeyBJZGxlLCBMb2FkaW5nLCBG
aW5pc2hlZCwgRmFpbGVkIH07Ci0gICAgCi0gICAgQ3VlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsK
LSAgICBPd25QdHI8V2ViVlRUUGFyc2VyPiBtX2N1ZVBhcnNlcjsKLSAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRDdWVzPiBtX2NhY2hlZEN1ZURhdGE7Ci0gICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFRpbWVyPEN1ZUxvYWRlcj4g
bV9jdWVMb2FkVGltZXI7Ci0gICAgU3RhdGUgbV9zdGF0ZTsKLSAgICB1bnNpZ25lZCBtX3BhcnNl
T2Zmc2V0OwotICAgIGJvb2wgbV9uZXdDdWVzQXZhaWxhYmxlOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAJKHJldmlzaW9uIDk3NzczKQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcDo5Nzc3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKwor
I2luY2x1ZGUgIkN1ZUxvYWRlci5oIgorCisjaW5jbHVkZSAiQ2FjaGVkQ3Vlcy5oIgorI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJWVFRQYXJzZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworICAgIAorQ3VlTG9hZGVyOjpDdWVMb2FkZXIoQ3VlTG9hZGVyQ2xpZW50KiBjbGll
bnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2NsaWVudChjbGll
bnQpCisgICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1fY3Vl
TG9hZFRpbWVyKHRoaXMsICZDdWVMb2FkZXI6OmN1ZUxvYWRUaW1lckZpcmVkKQorICAgICwgbV9z
dGF0ZShJZGxlKQorICAgICwgbV9wYXJzZU9mZnNldCgwKQorICAgICwgbV9uZXdDdWVzQXZhaWxh
YmxlKGZhbHNlKQoreworfQorCitDdWVMb2FkZXI6On5DdWVMb2FkZXIoKQoreworICAgIGlmICht
X2NhY2hlZEN1ZURhdGEpCisgICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3ZlQ2xpZW50KHRo
aXMpOworfQorCit2b2lkIEN1ZUxvYWRlcjo6Y3VlTG9hZFRpbWVyRmlyZWQoVGltZXI8Q3VlTG9h
ZGVyPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fY3Vl
TG9hZFRpbWVyKTsKKyAgICAKKyAgICBpZiAobV9uZXdDdWVzQXZhaWxhYmxlKSB7CisgICAgICAg
IG1fbmV3Q3Vlc0F2YWlsYWJsZSA9IGZhbHNlOworICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc0F2
YWlsYWJsZSh0aGlzKTsgCisgICAgfQorICAgIAorICAgIGlmIChtX3N0YXRlID49IEZpbmlzaGVk
KQorICAgICAgICBtX2NsaWVudC0+Y3VlTG9hZGluZ0NvbXBsZXRlZCh0aGlzLCBtX3N0YXRlID09
IEZhaWxlZCk7Cit9CisKK3ZvaWQgQ3VlTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgQVNTRVJUKG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNv
dXJjZSk7CisgICAgCisgICAgaWYgKG1fc3RhdGUgPT0gRmFpbGVkIHx8ICFyZXNvdXJjZS0+ZGF0
YSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgU2hhcmVkQnVmZmVyKiBidWZmZXIgPSBy
ZXNvdXJjZS0+ZGF0YSgpOworICAgIGlmIChtX3BhcnNlT2Zmc2V0ID09IGJ1ZmZlci0+c2l6ZSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBjaGFyKiBkYXRhOworICAgIHVuc2lnbmVk
IGxlbmd0aDsKKyAgICAKKyAgICBpZiAoIW1fY3VlUGFyc2VyKSB7CisgICAgICAgIGlmIChyZXNv
dXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpID09ICJ0ZXh0L3Z0dCIpCisgICAgICAgICAgICBt
X2N1ZVBhcnNlciA9IFdlYlZUVFBhcnNlcjo6Y3JlYXRlKHRoaXMsIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRG9uJ3QgcHJvY2VlZCB1
bnRpbCB3ZSBoYXZlIGVub3VnaCBkYXRhIHRvIGNoZWNrIGZvciB0aGUgV2ViVlRUIG1hZ2ljIGlk
ZW50aWZpZXIuCisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTGVuZ3RoID0gV2ViVlRU
UGFyc2VyOjpmaWxlSWRlbnRpZmllck1heGltdW1MZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChi
dWZmZXItPnNpemUoKSA8IGlkZW50aWZpZXJMZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgCisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gaWRlbnRpZmllcjsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgICAgICAgICB3aGlsZSAob2Zmc2V0
IDwgaWRlbnRpZmllckxlbmd0aCAmJiAobGVuZ3RoID0gYnVmZmVyLT5nZXRTb21lRGF0YShkYXRh
LCBvZmZzZXQpKSkgeworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiBpZGVudGlmaWVyTGVu
Z3RoKQorICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBpZGVudGlmaWVyTGVuZ3RoOworICAg
ICAgICAgICAgICAgIGlkZW50aWZpZXIuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgb2Zmc2V0ICs9IGxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKCFXZWJWVFRQYXJzZXI6Omhhc1JlcXVpcmVkRmlsZUlkZW50aWZpZXIoaWRl
bnRpZmllci5kYXRhKCksIGlkZW50aWZpZXIuc2l6ZSgpKSkgeworICAgICAgICAgICAgICAgIExP
RyhNZWRpYSwgIkN1ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEgLSBmaWxlIFwiJXNcIiBkb2VzIG5v
dCBoYXZlIFdlYlZUVCBtYWdpYyBoZWFkZXIiLCAKKyAgICAgICAgICAgICAgICAgICAgcmVzb3Vy
Y2UtPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IEZhaWxlZDsKKyAgICAgICAgICAgICAgICBtX2N1ZUxvYWRUaW1lci5z
dGFydE9uZVNob3QoMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBtX2N1ZVBhcnNlciA9IFdlYlZUVFBhcnNlcjo6Y3Jl
YXRlKHRoaXMsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgQVNTRVJUKG1fY3VlUGFyc2VyKTsKKyAgICAKKyAgICB3aGlsZSAoKGxlbmd0aCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoZGF0YSwgbV9wYXJzZU9mZnNldCkpKSB7CisgICAgICAgIG1f
Y3VlUGFyc2VyLT5wYXJzZUJ5dGVzKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcGFyc2VPZmZz
ZXQgKz0gbGVuZ3RoOworICAgIH0KKyAgICAKK30KKwordm9pZCBDdWVMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBBU1NFUlQobV9jYWNoZWRD
dWVEYXRhID09IHJlc291cmNlKTsKKyAgICAKKyAgICBpZiAoIXJlc291cmNlLT5kYXRhKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBwcm9jZXNzTmV3Q3VlRGF0YShyZXNvdXJjZSk7Cit9
CisKK3ZvaWQgQ3VlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UpCit7CisgICAgQVNTRVJUKG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7CisKKyAgICBw
cm9jZXNzTmV3Q3VlRGF0YShyZXNvdXJjZSk7CisKKyAgICBtX3N0YXRlID0gcmVzb3VyY2UtPmVy
cm9yT2NjdXJyZWQoKSA/IEZhaWxlZCA6IEZpbmlzaGVkOworCisgICAgaWYgKCFtX2N1ZUxvYWRU
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2N1ZUxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7
CisgICAgCisgICAgbV9jYWNoZWRDdWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgbV9j
YWNoZWRDdWVEYXRhID0gMDsKK30KKworYm9vbCBDdWVMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYg
dXJsKQoreworICAgIGlmICghbV9jbGllbnQtPnNob3VsZExvYWRDdWVzKHRoaXMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1fY2FjaGVkQ3VlRGF0YSkgeworICAgICAg
ICBtX2NhY2hlZEN1ZURhdGEtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgbV9jYWNoZWRD
dWVEYXRhID0gMDsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgCisgICAgUmVzb3Vy
Y2VSZXF1ZXN0IGN1ZVJlcXVlc3QoZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCkpOworICAgIENh
Y2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50LT5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpOworICAgIG1fY2FjaGVkQ3VlRGF0YSA9IHN0YXRpY19jYXN0PENh
Y2hlZEN1ZXMqPihjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdEN1ZXMoY3VlUmVxdWVzdCkp
OworICAgIGlmIChtX2NhY2hlZEN1ZURhdGEpCisgICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+YWRk
Q2xpZW50KHRoaXMpOworICAgIAorICAgIG1fY2xpZW50LT5jdWVMb2FkaW5nU3RhcnRlZCh0aGlz
KTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDdWVMb2FkZXI6Om5ld0N1ZXNQ
YXJzZWQoKQoreworICAgIGlmIChtX2N1ZUxvYWRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX25ld0N1ZXNBdmFpbGFibGUgPSB0cnVlOworICAgIG1fY3VlTG9hZFRp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBDdWVMb2FkZXI6OmdldE5ld0N1ZXMoVmVj
dG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1ZXMpCit7CisgICAgQVNTRVJUKG1f
Y3VlUGFyc2VyKTsKKyAgICBpZiAobV9jdWVQYXJzZXIpCisgICAgICAgIG1fY3VlUGFyc2VyLT5n
ZXROZXdDdWVzKG91dHB1dEN1ZXMpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAJKHJldmlzaW9uIDk3NzY5KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDEwICsyNywxMCBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCi0jaW5jbHVkZSAi
Q3VlTG9hZGVyLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJD
YWNoZWRDdWVzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRl
ICJDYWNoZWRUZXh0VHJhY2suaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAtMzksMjMgKzM5LDIzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLUN1ZUxvYWRlcjo6Q3VlTG9hZGVyKEN1ZUxv
YWRlckNsaWVudCogY2xpZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorVGV4
dFRyYWNrTG9hZGVyOjpUZXh0VHJhY2tMb2FkZXIoVGV4dFRyYWNrTG9hZGVyQ2xpZW50KiBjbGll
bnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX2NsaWVudChjbGll
bnQpCiAgICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKLSAgICAsIG1fY3Vl
TG9hZFRpbWVyKHRoaXMsICZDdWVMb2FkZXI6OmN1ZUxvYWRUaW1lckZpcmVkKQorICAgICwgbV9j
dWVMb2FkVGltZXIodGhpcywgJlRleHRUcmFja0xvYWRlcjo6Y3VlTG9hZFRpbWVyRmlyZWQpCiAg
ICAgLCBtX3N0YXRlKElkbGUpCiAgICAgLCBtX3BhcnNlT2Zmc2V0KDApCiAgICAgLCBtX25ld0N1
ZXNBdmFpbGFibGUoZmFsc2UpCiB7CiB9CiAKLUN1ZUxvYWRlcjo6fkN1ZUxvYWRlcigpCitUZXh0
VHJhY2tMb2FkZXI6On5UZXh0VHJhY2tMb2FkZXIoKQogewogICAgIGlmIChtX2NhY2hlZEN1ZURh
dGEpCiAgICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCi12
b2lkIEN1ZUxvYWRlcjo6Y3VlTG9hZFRpbWVyRmlyZWQoVGltZXI8Q3VlTG9hZGVyPiogdGltZXIp
Cit2b2lkIFRleHRUcmFja0xvYWRlcjo6Y3VlTG9hZFRpbWVyRmlyZWQoVGltZXI8VGV4dFRyYWNr
TG9hZGVyPiogdGltZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1f
Y3VlTG9hZFRpbWVyKTsKICAgICAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBDdWVMb2FkZXI6OmN1
ZUxvYWRUaW1lckZpcmVkKFRpbWVyPAogICAgICAgICBtX2NsaWVudC0+Y3VlTG9hZGluZ0NvbXBs
ZXRlZCh0aGlzLCBtX3N0YXRlID09IEZhaWxlZCk7CiB9CiAKLXZvaWQgQ3VlTG9hZGVyOjpwcm9j
ZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIFRleHRUcmFja0xv
YWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogewogICAg
IEFTU0VSVChtX2NhY2hlZEN1ZURhdGEgPT0gcmVzb3VyY2UpOwogICAgIApAQCAtMTAxLDcgKzEw
MSw3IEBAIHZvaWQgQ3VlTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWQKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFXZWJWVFRQYXJzZXI6Omhhc1Jl
cXVpcmVkRmlsZUlkZW50aWZpZXIoaWRlbnRpZmllci5kYXRhKCksIGlkZW50aWZpZXIuc2l6ZSgp
KSkgewotICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkN1ZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEgLSBmaWxlIFwiJXNcIiBkb2VzIG5vdCBoYXZlIFdlYlZUVCBtYWdpYyBoZWFkZXIiLCAKKyAg
ICAgICAgICAgICAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
IC0gZmlsZSBcIiVzXCIgZG9lcyBub3QgaGF2ZSBXZWJWVFQgbWFnaWMgaGVhZGVyIiwgCiAgICAg
ICAgICAgICAgICAgICAgIHJlc291cmNlLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBGYWlsZWQ7CiAgICAgICAgICAg
ICAgICAgbV9jdWVMb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOwpAQCAtMTIxLDcgKzEyMSw3IEBA
IHZvaWQgQ3VlTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWQKICAgICAKIH0KIAotdm9p
ZCBDdWVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3Zv
aWQgVGV4dFRyYWNrTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UpCiB7CiAgICAgQVNTRVJUKG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7CiAgICAgCkBA
IC0xMzEsNyArMTMxLDcgQEAgdm9pZCBDdWVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKENhY2hlZFJl
cwogICAgIHByb2Nlc3NOZXdDdWVEYXRhKHJlc291cmNlKTsKIH0KIAotdm9pZCBDdWVMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgVGV4dFRyYWNr
TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7CiAgICAg
QVNTRVJUKG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7CiAKQEAgLTE0Niw3ICsxNDYsNyBA
QCB2b2lkIEN1ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzCiAgICAgbV9jYWNoZWRD
dWVEYXRhID0gMDsKIH0KIAotYm9vbCBDdWVMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQor
Ym9vbCBUZXh0VHJhY2tMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQogewogICAgIGlmICgh
bV9jbGllbnQtPnNob3VsZExvYWRDdWVzKHRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xNjEsNyArMTYxLDcgQEAgYm9vbCBDdWVMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQog
ICAgIAogICAgIFJlc291cmNlUmVxdWVzdCBjdWVSZXF1ZXN0KGRvY3VtZW50LT5jb21wbGV0ZVVS
TCh1cmwpKTsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIg
PSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBtX2NhY2hlZEN1ZURhdGEg
PSBzdGF0aWNfY2FzdDxDYWNoZWRDdWVzKj4oY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RD
dWVzKGN1ZVJlcXVlc3QpKTsKKyAgICBtX2NhY2hlZEN1ZURhdGEgPSBzdGF0aWNfY2FzdDxDYWNo
ZWRUZXh0VHJhY2sqPihjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdEN1ZXMoY3VlUmVxdWVz
dCkpOwogICAgIGlmIChtX2NhY2hlZEN1ZURhdGEpCiAgICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+
YWRkQ2xpZW50KHRoaXMpOwogICAgIApAQCAtMTcwLDcgKzE3MCw3IEBAIGJvb2wgQ3VlTG9hZGVy
Ojpsb2FkKGNvbnN0IEtVUkwmIHVybCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDdWVM
b2FkZXI6Om5ld0N1ZXNQYXJzZWQoKQordm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5ld0N1ZXNQYXJz
ZWQoKQogewogICAgIGlmIChtX2N1ZUxvYWRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1
cm47CkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBDdWVMb2FkZXI6Om5ld0N1ZXNQYXJzZWQoKQog
ICAgIG1fY3VlTG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBDdWVMb2FkZXI6
OmdldE5ld0N1ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1ZXMpCit2
b2lkIFRleHRUcmFja0xvYWRlcjo6Z2V0TmV3Q3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1
ZT4gPiYgb3V0cHV0Q3VlcykKIHsKICAgICBBU1NFUlQobV9jdWVQYXJzZXIpOwogICAgIGlmICht
X2N1ZVBhcnNlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJ
KHJldmlzaW9uIDk3NzczKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmg6
OTc3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VlTG9hZGVy
X2gKKyNkZWZpbmUgQ3VlTG9hZGVyX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIkNhY2hlZEN1ZXMuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgor
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIldlYlZUVFBhcnNlci5oIgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDdWVMb2FkZXI7
CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBDdWVMb2FkZXJDbGllbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgfkN1ZUxvYWRlckNsaWVudCgpIHsgfQorICAgIAorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRMb2FkQ3VlcyhDdWVMb2FkZXIqKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG5ld0N1ZXNBdmFpbGFibGUoQ3VlTG9hZGVyKikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjdWVMb2FkaW5nU3RhcnRlZChDdWVMb2FkZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1
ZUxvYWRpbmdDb21wbGV0ZWQoQ3VlTG9hZGVyKiwgYm9vbCBsb2FkaW5nRmFpbGVkKSA9IDA7Cit9
OworCitjbGFzcyBDdWVMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHByaXZh
dGUgV2ViVlRUUGFyc2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdWVMb2Fk
ZXIpOyAKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxDdWVMb2FkZXI+IGNyZWF0ZShDdWVMb2FkZXJDbGllbnQqIGNsaWVudCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ3VlTG9hZGVyKGNsaWVudCwgY29udGV4dCkpOworICAgIH0KKyAgICB2aXJ0dWFs
IH5DdWVMb2FkZXIoKTsKKyAgICAKKyAgICBib29sIGxvYWQoY29uc3QgS1VSTCYpOworICAgIHZv
aWQgZ2V0TmV3Q3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYgb3V0cHV0Q3Vlcyk7
CisgICAgCitwcml2YXRlOgorCisgICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKKyAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICAKKyAgICAvLyBXZWJWVFRQ
YXJzZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpOworICAgIAorICAg
IEN1ZUxvYWRlcihDdWVMb2FkZXJDbGllbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisg
ICAgCisgICAgdm9pZCBwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSopOworICAgIHZv
aWQgY3VlTG9hZFRpbWVyRmlyZWQoVGltZXI8Q3VlTG9hZGVyPiopOworCisgICAgZW51bSBTdGF0
ZSB7IElkbGUsIExvYWRpbmcsIEZpbmlzaGVkLCBGYWlsZWQgfTsKKyAgICAKKyAgICBDdWVMb2Fk
ZXJDbGllbnQqIG1fY2xpZW50OworICAgIE93blB0cjxXZWJWVFRQYXJzZXI+IG1fY3VlUGFyc2Vy
OworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEN1ZXM+IG1fY2FjaGVkQ3VlRGF0YTsK
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cisg
ICAgVGltZXI8Q3VlTG9hZGVyPiBtX2N1ZUxvYWRUaW1lcjsKKyAgICBTdGF0ZSBtX3N0YXRlOwor
ICAgIHVuc2lnbmVkIG1fcGFyc2VPZmZzZXQ7CisgICAgYm9vbCBtX25ld0N1ZXNBdmFpbGFibGU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5oCShyZXZpc2lvbiA5Nzc2OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsMTQgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBDdWVMb2FkZXJfaAotI2RlZmluZSBDdWVMb2FkZXJfaAorI2lmbmRlZiBU
ZXh0VHJhY2tMb2FkZXJfaAorI2RlZmluZSBUZXh0VHJhY2tMb2FkZXJfaAogCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogCi0jaW5jbHVkZSAiQ2FjaGVkQ3Vlcy5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNp
bmNsdWRlICJDYWNoZWRUZXh0VHJhY2suaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCkBAIC0zOCwyOCArMzgsMjgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDdWVMb2FkZXI7CitjbGFzcyBUZXh0
VHJhY2tMb2FkZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFzcyBDdWVM
b2FkZXJDbGllbnQgeworY2xhc3MgVGV4dFRyYWNrTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5DdWVMb2FkZXJDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIH5UZXh0VHJhY2tM
b2FkZXJDbGllbnQoKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTG9hZEN1ZXMo
Q3VlTG9hZGVyKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzQXZhaWxhYmxlKEN1ZUxv
YWRlciopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ1N0YXJ0ZWQoQ3VlTG9hZGVy
KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nQ29tcGxldGVkKEN1ZUxvYWRlcios
IGJvb2wgbG9hZGluZ0ZhaWxlZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRMb2FkQ3Vl
cyhUZXh0VHJhY2tMb2FkZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNBdmFpbGFi
bGUoVGV4dFRyYWNrTG9hZGVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nU3Rh
cnRlZChUZXh0VHJhY2tMb2FkZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdD
b21wbGV0ZWQoVGV4dFRyYWNrTG9hZGVyKiwgYm9vbCBsb2FkaW5nRmFpbGVkKSA9IDA7CiB9Owog
Ci1jbGFzcyBDdWVMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHByaXZhdGUg
V2ViVlRUUGFyc2VyQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdWVMb2FkZXIp
OyAKK2NsYXNzIFRleHRUcmFja0xvYWRlciA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCwg
cHJpdmF0ZSBXZWJWVFRQYXJzZXJDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRl
eHRUcmFja0xvYWRlcik7IAogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEN1ZUxvYWRlcj4gY3JlYXRlKEN1ZUxvYWRlckNsaWVudCog
Y2xpZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPFRleHRUcmFja0xvYWRlcj4gY3JlYXRlKFRleHRUcmFja0xvYWRlckNsaWVudCogY2xp
ZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDdWVMb2FkZXIoY2xpZW50LCBjb250ZXh0KSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgVGV4dFRyYWNrTG9hZGVyKGNsaWVudCwgY29udGV4dCkpOwogICAg
IH0KLSAgICB2aXJ0dWFsIH5DdWVMb2FkZXIoKTsKKyAgICB2aXJ0dWFsIH5UZXh0VHJhY2tMb2Fk
ZXIoKTsKICAgICAKICAgICBib29sIGxvYWQoY29uc3QgS1VSTCYpOwogICAgIHZvaWQgZ2V0TmV3
Q3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYgb3V0cHV0Q3Vlcyk7CkBAIC03Mywx
OCArNzMsMTggQEAgcHJpdmF0ZToKICAgICAvLyBXZWJWVFRQYXJzZXJDbGllbnQKICAgICB2aXJ0
dWFsIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpOwogICAgIAotICAgIEN1ZUxvYWRlcihDdWVMb2FkZXJD
bGllbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgVGV4dFRyYWNrTG9hZGVyKFRl
eHRUcmFja0xvYWRlckNsaWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICAKICAg
ICB2b2lkIHByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCBjdWVM
b2FkVGltZXJGaXJlZChUaW1lcjxDdWVMb2FkZXI+Kik7CisgICAgdm9pZCBjdWVMb2FkVGltZXJG
aXJlZChUaW1lcjxUZXh0VHJhY2tMb2FkZXI+Kik7CiAKICAgICBlbnVtIFN0YXRlIHsgSWRsZSwg
TG9hZGluZywgRmluaXNoZWQsIEZhaWxlZCB9OwogICAgIAotICAgIEN1ZUxvYWRlckNsaWVudCog
bV9jbGllbnQ7CisgICAgVGV4dFRyYWNrTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBPd25Q
dHI8V2ViVlRUUGFyc2VyPiBtX2N1ZVBhcnNlcjsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRDdWVzPiBtX2NhY2hlZEN1ZURhdGE7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkVGV4dFRyYWNrPiBtX2NhY2hlZEN1ZURhdGE7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFRpbWVyPEN1ZUxvYWRlcj4gbV9jdWVM
b2FkVGltZXI7CisgICAgVGltZXI8VGV4dFRyYWNrTG9hZGVyPiBtX2N1ZUxvYWRUaW1lcjsKICAg
ICBTdGF0ZSBtX3N0YXRlOwogICAgIHVuc2lnbmVkIG1fcGFyc2VPZmZzZXQ7CiAgICAgYm9vbCBt
X25ld0N1ZXNBdmFpbGFibGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ3Vlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEN1ZXMuY3BwCShyZXZpc2lvbiA5Nzc2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
Ci0jaW5jbHVkZSAiQ2FjaGVkQ3Vlcy5oIgotCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgotI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1DYWNoZWRDdWVzOjpDYWNoZWRDdWVzKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQotICAgIDogQ2FjaGVkUmVzb3VyY2UocmVzb3Vy
Y2VSZXF1ZXN0LCBDdWVSZXNvdXJjZSkKLXsKLX0KLQotQ2FjaGVkQ3Vlczo6fkNhY2hlZEN1ZXMo
KQotewotfQotCi12b2lkIENhY2hlZEN1ZXM6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAg
c2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKLQotICAg
IENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIo
bV9jbGllbnRzKTsKLSAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQgKmNsaWVudCA9IHdh
bGtlci5uZXh0KCkpCi0gICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcyk7Ci0KLSAg
ICBpZiAoIWFsbERhdGFSZWNlaXZlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNldExv
YWRpbmcoZmFsc2UpOwotICAgIGNoZWNrTm90aWZ5KCk7Ci19Ci0KLX0KLQotI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ3Vlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDdWVzLmgJKHJldmlzaW9uIDk3NzY5
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEN1ZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDYWNoZWRDdWVzX2gK
LSNkZWZpbmUgQ2FjaGVkQ3Vlc19oCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KLSNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZS5oIgotI2luY2x1ZGUgIkZvbnRPcmllbnRhdGlvbi5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLQotY2xhc3MgQ2FjaGVk
Q3VlcyA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgQ2FjaGVkQ3Vlcyhj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2aXJ0dWFsIH5DYWNoZWRDdWVzKCk7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwotfTsKLQotfQotCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiA5Nzc2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSNp
bmNsdWRlICJDYWNoZWRDdWVzLmgiCisjaW5jbHVkZSAiQ2FjaGVkVGV4dFRyYWNrLmgiCiAjZW5k
aWYKIAogI2RlZmluZSBQUkVMT0FEX0RFQlVHIDAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIENh
Y2hlZFJlc291cmNlKiBjcmVhdGVSZXNvdXJjZShDYQogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkN1ZVJlc291cmNlOgotICAgICAgICBy
ZXR1cm4gbmV3IENhY2hlZEN1ZXMocmVxdWVzdCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVk
VGV4dFRyYWNrKHJlcXVlc3QpOwogI2VuZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTYyLDkgKzE2Miw5IEBAIENhY2hlZEZvbnQqIENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXMKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLUNhY2hlZEN1ZXMqIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Q3VlcyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitD
YWNoZWRUZXh0VHJhY2sqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Q3VlcyhSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZEN1ZXMq
PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkN1ZVJlc291cmNlLCByZXF1ZXN0LCBT
dHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PENhY2hlZFRleHRUcmFjayo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZTo6Q3VlUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCkpKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gOTc3NjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ2FjaGVkQ3VlczsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRG
b250OwogY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNz
IENhY2hlZFNjcmlwdDsKK2NsYXNzIENhY2hlZFRleHRUcmFjazsKIGNsYXNzIENhY2hlZFhTTFN0
eWxlU2hlZXQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtNzUsNyArNzUsNyBA
QCBwdWJsaWM6CiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RMaW5rUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0g
UmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkKTsKICNlbmRpZgogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKLSAgICBDYWNoZWRDdWVzKiByZXF1ZXN0Q3VlcyhSZXNvdXJjZVJlcXVlc3QmKTsK
KyAgICBDYWNoZWRUZXh0VHJhY2sqIHJlcXVlc3RDdWVzKFJlc291cmNlUmVxdWVzdCYpOwogI2Vu
ZGlmCiAKICAgICAvLyBMb2dzIGFuIGFjY2VzcyBkZW5pZWQgbWVzc2FnZSB0byB0aGUgY29uc29s
ZSBmb3IgdGhlIHNwZWNpZmllZCBVUkwuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gOTc3NjkpCShmcm9tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDdWVzLmNwcDo5Nzc2OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDYWNoZWRDdWVzLmgiCisKKyNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50
V2Fsa2VyLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhY2hlZEN1ZXM6OkNh
Y2hlZEN1ZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCisgICAgOiBD
YWNoZWRSZXNvdXJjZShyZXNvdXJjZVJlcXVlc3QsIEN1ZVJlc291cmNlKQoreworfQorCitDYWNo
ZWRDdWVzOjp+Q2FjaGVkQ3VlcygpCit7Cit9CisKK3ZvaWQgQ2FjaGVkQ3Vlczo6ZGF0YShQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAg
bV9kYXRhID0gZGF0YTsKKyAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEt
PnNpemUoKSA6IDApOworCisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVz
b3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOworICAgIHdoaWxlIChDYWNoZWRSZXNvdXJj
ZUNsaWVudCAqY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKKyAgICAgICAgY2xpZW50LT5kaWRSZWNl
aXZlRGF0YSh0aGlzKTsKKworICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgc2V0TG9hZGluZyhmYWxzZSk7CisgICAgY2hlY2tOb3RpZnkoKTsKK30K
KworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suY3BwCShyZXZpc2lvbiA5Nzc2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw3IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNpbmNsdWRlICJDYWNoZWRDdWVz
LmgiCisjaW5jbHVkZSAiQ2FjaGVkVGV4dFRyYWNrLmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCkBA
IC0zOCwxNiArMzgsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DYWNoZWRDdWVzOjpD
YWNoZWRDdWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorQ2FjaGVk
VGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShyZXNvdXJjZVJlcXVlc3QsIEN1ZVJlc291
cmNlKQogewogfQogCi1DYWNoZWRDdWVzOjp+Q2FjaGVkQ3VlcygpCitDYWNoZWRUZXh0VHJhY2s6
On5DYWNoZWRUZXh0VHJhY2soKQogewogfQogCi12b2lkIENhY2hlZEN1ZXM6OmRhdGEoUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewogICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2RlZFNpemUo
bV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgJKHJldmlzaW9uIDk3NzY5KQkoZnJv
bSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ3Vlcy5oOjk3NzY5KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENhY2hlZEN1ZXNfaAorI2Rl
ZmluZSBDYWNoZWRDdWVzX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSAiRm9udE9yaWVudGF0aW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBDYWNoZWRDdWVz
IDogcHVibGljIENhY2hlZFJlc291cmNlIHsKK3B1YmxpYzoKKyAgICBDYWNoZWRDdWVzKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOworICAgIHZpcnR1YWwgfkNhY2hlZEN1ZXMoKTsKKworICAgIHZp
cnR1YWwgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCk7Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCShyZXZpc2lvbiA5Nzc2OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgQ2FjaGVkQ3Vlc19oCi0jZGVmaW5lIENhY2hlZEN1ZXNfaAor
I2lmbmRlZiBDYWNoZWRUZXh0VHJhY2tfaAorI2RlZmluZSBDYWNoZWRUZXh0VHJhY2tfaAogCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCkBAIC0zNSwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKLWNsYXNzIENhY2hlZEN1ZXMgOiBwdWJs
aWMgQ2FjaGVkUmVzb3VyY2UgeworY2xhc3MgQ2FjaGVkVGV4dFRyYWNrIDogcHVibGljIENhY2hl
ZFJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBDYWNoZWRDdWVzKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwotICAgIHZpcnR1YWwgfkNhY2hlZEN1ZXMoKTsKKyAgICBDYWNoZWRUZXh0VHJhY2soY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdmlydHVhbCB+Q2FjaGVkVGV4dFRyYWNrKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOwogfTsK
</data>
<flag name="review"
          id="109341"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>